{"version":3,"sources":["../../../../../../libs/core/components/web/jobs/node_modules/@bryntum/schedulerpro/schedulerpro.module.js"],"names":["productName","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","BrowserHelper","[object Object]","platform","navigator","userAgent","me","this","_isLinux","Boolean","match","_isMac","_isWindows","_isWebkit","_firefoxVersion","getVersion","_isFirefox","_chromeVersion","_isChrome","_isSafari","_isMobileSafari","_safariVersion","_isAndroid","supportsOverflowClip","_supportsOverflowClip","div","document","createElement","style","overflow","display","documentElement","appendChild","ownerDocument","defaultView","getComputedStyle","getPropertyValue","remove","supportsSticky","versionRe","parseFloat","isTouchDevice","_isTouchDevice","globalThis","matchMedia","matches","supportsPointerEvents","PointerEvent","MSPointerEvent","isHoverableDevice","_isHoverableDevice","undefined","isBrowserEnv","window","isMac","isWindows","isLinux","isAndroid","isWebkit","isChrome","chromeVersion","isFirefox","firefoxVersion","isSafari","safariVersion","isMobileSafari","supportsPassive","supportsRandomUUID","_supportsRandomUUID","crypto","randomUUID","e","storageAvailable","storage","x","localStorage","setItem","removeItem","DOMException","code","name","getItem","paramName","defaultValue","search","location","re","RegExp","nameEq","encodeURIComponent","cookieItems","cookie","split","c","charAt","substring","indexOf","decodeURIComponent","filename","url","a","download","href","cssText","body","click","removeChild","blob","URL","createObjectURL","revokeObjectURL","queryString","_Object$fromEntries","params","searchParams","fromEntries","call","entries","success","textArea","height","width","select","execCommand","searchStrings","_searchStrings","Array","isArray","test","host","some","str","isCSP","bryntum","CSP","querySelector","cacheFlags","_$name","charsToEncode","entitiesToDecode","htmlEncodeRe","htmlDecodeRe","camelLettersRe","crlfRe","escapeRegExpRe","htmlRe$1","idRe","whiteSpaceRe$1","domIdRe","htmlDecoder","m","captured","toLowerCase","String","fromCharCode","parseInt","substr","htmlEncoder","hyphenateCamelLetters","all","g1","g2","separateCamelLetters","replaceNonIdChar","map","ch","charCodeAt","toString","join","hyphenateCache","separatedCache","StringHelper","string","toUpperCase","cached","replace","capitalize","inString","id","replaceValue","flags","ret","_StringHelper$encodeH","encodeHtml","text","mappings","&",">","<","\"","'","chars","reduce","prev","val","includes","values","parsed","JSON","parse","replacer","space","result","stringify","paths","pathSeparator","delimiter","trim","strings","buf","encodeHtmlBR","options","type","Objects","typeOf","safeJsonStringify","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","v","toJavaScriptValue","toJavaScriptString","contents","startsWith","prototype","hasOwnProperty","$name","_options$level","level","intendSize","repeat","attr","_globalThis$crypto","getRandomValues","Uint8Array","Date","now","fakeNodeUUIDIndex","initHtmlEntities","hasOwnProperty$6","toString$3","isFrozen","afterRe","beforeRe","blendOptions","typeCache","emptyObject$c","freeze","dest","sources","clone","merge","blend","s","destValue","isObject","handler","cloned","isDate","getTime","path","index","every","_object$prototype","constructor","getUTCDate","Promise","resolve","then","Error","p","C","getPrototypeOf","src","anchor","delta","indexMap","shuffle","srcVal","mergeItems","_indexMap","set","size","Map","k","get","item","pop","array","isLast","trueType","isBase","slice","hasOwn","property","isSiesta","_globalThis$parent","parent","Siesta","process","StartTest","VersionHelper","product","version","VH","otherVersion","semanticCompareVersion","bundleFor","globalKey","silenceBundleException","BUNDLE_EXCEPTION","errorProduct","capitalized","version1","version2","comparison","version1Arr","version2Arr","isLower","normalizeArr","arr","maxLength","states","res","Number","isNaN","compareArr","Math","max","arr1","arr2","invalidAsOfVersion","message","justWarn","checkVersion","console","warn","isTestEnv","isDebug","bind","deprecate","defineProperty$8","getOwnPropertyDescriptor$1","Reflect","hasOwnProperty$5","toString$2","instancePropertiesSymbol$1","Symbol","configuringSymbol$1","lazyConfigValues","DATE_TYPE$1","whitespace","createClsProps","cls","Config","cache","baseCfg","cfg","makeCacheKey","extend","cap","base","field","capName","changer","initializing","updater","descriptor","_descriptor","makeDescriptor","initDescriptor","_initDescriptor","makeInitter","value1","value2","assign","create","equal","equalityMethods","endsWith","makeArrayEquals","mergeMethods","existing","properties","lazyValues","prop","lazy","fn","sort","splice","config","_this$configObserver","configObserver","was","applied","newValue","resolvedValue","_me$owner","owner","resolveProperty","onConfigChange","$nullFn","makeLazyInitter","makeBasicInitter","removeInitter","configDone","isDestroying","instance","instanceProperty","delete","currentValue","setConfig","configuring","instanceProperties","lazyConfigs","strict","oldValue","nullify","render","MetaClass","_this$super","super","getInherited","getPrototypeOf$1","hasOwn$3","defineProperty$7","metaSymbol","mixinTagSymbol","originalConfigSymbol","configuringSymbol","instancePropertiesSymbol","lazyConfigsSymbol","defaultConfigOptions","simple","emptyFn$3","newMeta","o","setupNames","emptyObject$b","emptyArray$a","Base$1","declarable","args","construct","afterConstruct","isConstructing","configs","configure","afterConfigure","shredder","destroy","doDestroy","setPrototypeOf","isDestroyed","getter","$$name","thisObject","thisObj","resolveCallback","propertyPath","hasPath","getPath","enforceCallability","inHandler","inThisObj","delay","setTimeout","invoker","$meta","propertyValue","_propertyValue","beforeConfigure","fullConfig","getDefaultConfiguration","initialConfig","isConfiguring","getProperties","wasConfiguring","defineInitter","startConfigure","_configs$key","finishConfigure","_me$lazyConfigsSymbol","lazyConfig","has","triggered","getConfig","group","triggerConfig","myConfig","processConfigValue","visited","getCurrentConfig","HTMLElement","DocumentFragment","_me$$meta$configs$nam","Set","depth","add","preProcessCurrentConfigs","getConfigValue","Product","isGantt","isSchedulerPro","isCalendar","isScheduler","isGrid","isTaskBoard","bundlePath","preamble","postamble","import","getConfigString","output","app","getTestCase","escape","class","meta","setupClass","baseConfig","classConfigs","mixins","mixin","tag","onClassMixedIn","_base$nullify","names","proto","declarables","forkConfigs","hierarchy","isName","defineIsProperty","decl","setupName","classConfigValues","setDefault","wasNullify","$config","createTruthyKeys","default","define","setupConfigs","defaultConfig","forked","prototypeProperties","fork","testConfig","__applyTestConfigs","superclass","topClass","_detachers","detachers","$detachers","detacher","bucket","eventer","proto$2","emptyFn","setVersion","ArrayHelper","iterable","it","items","removed","comparatorFn","lexicalCompare","len","beforeCheck","afterCheck","binarySearch","begin","end","compareFn","middle","Function","lhs","rhs","count","itemOrArray","processedItem","oneBased","Proxy","receiver","b","useRelativeNaming","toAdd","toRemove","toKeep","onlyInA","onlyInB","inBoth","bSet","arrayOrObject","from","keyGetter","valueGetter","identity","getKey","getValue","dict","next","commaSepRe","decompiledSym","fnRe1","fnRe2","fnRe3","hasOwnProperty$4","FunctionHelper","method","named","withReturn","return","hook","origResult","$nextHook","hookResult","hookMethod","func","curried","args2","concat","original","interceptor","sequence","sequenceResult","buffer","extraArgs","alt","lastCallTime","MAX_VALUE","callArgs","timerId","invoke","performance","elapsed","clearTimeout","cancel","isPending","_body","_body2","exec","decompiled","t","async","f","_Object$getPrototypeO","_f","duration","easing","start","iterate","progress","min","delayable","easingFunctions","requestAnimationFrame","half","e1","e2","e3","e4","e5","e6","e7","e8","e9","e10","e11","e12","s1","s2","linear","easeInQuad","pow","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","PI","easeOutSine","sin","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeOutBounce","easeInBack","easeOutBack","easeInOutBack","v1","elastic","swingFromTo","v2","swingFrom","swingTo","bounce","bouncePast","easeFromTo","easeFrom","easeTo","isArray$1","hasOwnProperty$3","specialProperties","detachable","once","prio","expires","throttle","priorityComparator","Events","Target","deprecatedEvents","eventName","listeners","bubbleEvents","trigger","_config","configuredListeners","processConfiguredListeners","removeAllListeners","onListen","onUnlisten","oldThisObj","addListener","deprecatedEvent","events","eventListeners","listenerSpec","listener","catchAll","un","called","callback","isDelayable","cancelOutstanding","$firing","findInsertionIndex","relayAll","attachAutoDetacher","removeListener","_thisObj","listenerName","trackDetacher","on","l","oldListeners","listenerToRemove","findListener","detachAutoDetacher","listenerToFind","defaultThisObj","_this$eventListeners","listenerEntry","_this$eventListeners2","through","prefix","transformCase","relayAllTargets","r","event","_thisObj2","untrackDetachers","eventNames","listenerConfig","autoDetachers","oldDestructor","dispatcher","destructorName","$autoDetachers","$oldDestructor","destructorInterceptor","find","checkLog","resetLog","_me$_triggered","_triggered","clearLog","argsOk","param","_me$eventListeners","_me$eventListeners2","_me$bubbleEvents","_handlerPromises","eventsSuspended","callOnFunctions","handlerPromises","shouldQueue","queue","catchall","isExtensible","bubbles","fnName","_me$pluginFunctionCha","inhibit","isPromise","pluginFunctionChain","myProto","bufferFn","createBuffered","throttledFn","createThrottled","promiseResults","finalResult","suspended","queued","AsyncHelper","millis","_BrowserHelper$queryS","paramValueRegExp","resourceRoot","DocsBrowserInstance","__resourceRoot","parseParams","paramString","nameValuePair","decodedName","decodedValue","paramValue","AjaxHelper","fetch","payload","FormData","headers","controller","AbortController","abortController","signal","credentials","queryParams","promise","reject","response","parseJson","json","parsedJson","catch","error","stack","abort","_controller","mockAjaxMap","originalFetch","mockAjaxFetch","urlAndParams","responseText","status","ok","Headers","statusText","synchronous","LocaleHelper","locales","locale","toTrim","silent","subKey","localeName","mergeLocales","LocaleManager","throwOnMissingLocale","scriptTag","defaultLocaleName","dataset","defaultLocale","extends","extendLocale","registerLocale","desc","localeDesc","applyLocale","localeConfigs","_locales","_locale","_me$locale","isDefault","isCurrent","isFirst","currentLocale","exclude","trimLocale","internalApplyLocale","_this$locale","localeConfig","forceApply","ignoreError","internalApply","loadLocale","parseLocale","_throwOnMissingLocale","LocaleManagerSingleton","ObjectProto","localeRe","capturelocaleRe","classMatchRe","escape$1","txt","unescape","emptyObject$a","Localizable","localeClass","localizable","localizableProperties","_cls$prototype","_cls$prototype2","_text","lastIndex","classMatch","localeKey","updateLocalization","_localeClass","_me$$meta$configs$pro","_me$fieldMap","_me$fieldMap$property","fieldMap","localizedValue","localize","setPath","isColumn","data","originalLocales","optionalL","_this$localizableProp","_this$trigger","localizeProperty","templateData","localeCls","clsName","parseLocaleString","translate","_locale$clsName","translation","getTranslation","localeClasses","_localeClasses","_localeClasses2","L","_localeClasses3","shouldThrow","preventThrow","localeManager","toString$1","DATE_TYPE","tempDate$1","MS_PER_HOUR","defValue","rangeFormatPartRe","enOrdinalSuffix","number","hasSpecialCase","n","suffix","lastDigit","1","2","3","useIntlFormat","date","formatter","intlFormatterCache","Intl","DateTimeFormat","locale$5","format","formatTime","isShort","strTime","getDayDiff","floor","getTimezoneOffset","validConversions","minute","millisecond","day","normalizeDay","msRegExp","msReplacer","ordinalSuffix","formatCache","parserCache","DEFAULT_YEAR","DEFAULT_MONTH","DEFAULT_DAY","formats","M","Mo","MM","padStart","MMM","month","MMMM","Q","ceil","Qo","D","Do","DD","DDD","DDDo","DDDD","d","getDay","do","d1","weekday","dd","ddd","dddd","E","W","DateHelper","getWeekNumber","Wo","WW","Wp","WWp","Wp0","WWp0","Y","YY","YYYY","A","H","HH","h","hh","kk","K","hour","KK","mm","ss","S","SS","SSS","z","timeZoneName","zz","Z","DH$2","getGMTOffset","LT","LST","LTS","second","year","LL","ll","LLL","lll","LLLL","llll","formatKeys","formatRegexp","emptyFn$2","isNumber","numberRegex","parseMilliseconds","milliseconds","padEnd","parsers","hours","minutes","seconds","amPm","timeZoneRegEx","timeZone","sign","parserKeys","parserRegexp","localeStrRegExp","decade","quarter","week","normalizedUnits","ms","mi","days","w","weeks","mo","mon","months","q","quarters","y","years","dec","decades","withDecimalsDurationRegex","noDecimalsDurationRegex","canonicalUnitNames","canonicalUnitAbbreviations","deltaUnits","dateProperties","parseNumber","unitMagnitudes","snapFns","step","round","keyCache","defaultFormat","_defaultFormat","defaultParseFormat","parseFormat","_defaultParseFormat","parts","parser","curr","localeParsers","nestedParsers","buildParser","lastItem","last","pattern","splitter","trunc","setTime","dateString","splitAt","part","rest","chunks","definition","def","invalid","useUTC","allNull","UTC","getUTCFullYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","formatMatch","predefined","localeFormats","dates","which","fmt","amount","unit","as","time","monthLength","daysInMonth","fraction","valueOf","startOf","getYear","intMonths","msInMonth","abbrev","unitName","deltaObj","getDelta","sep","separator","asString","done","precision","maxUnit","ignoreLocale","normalizeUnit","getUnit","getShortNameOfUnit","getLocalizedNameOfUnit","units","toUnit","fromUnit","parseDuration","magnitude","abs","stripEscapeRe","hourInfoRe","setDate","setHours","getLastDateOfMonth","getFirstDateOfMonth","setMonth","setFullYear","fractional","diff","dstDiff","weekStartDay","setMinutes","setSeconds","setMilliseconds","inclusive","clearTime","targetDate","sourceDate","jan","jul","first","compare","isEqual","date1Start","date1End","date2Start","date2End","betweenLesser","unit1","unit2","spanStart","spanEnd","otherSpanStart","otherSpanEnd","_weekStartDay","nonWorkingDays","nonWorkingDaysAsArray","weekends","fullYear","asMilliseconds","daysInYear","hoursInDay","increment","dt","noNeedToClearTime","nextDay","offsetNextDay","offsetDate","dateOnly","startDate","endDate","monthDesc","jan01","dec31","firstDay","lastDay","dayNumber","weekNumber","lastWeekOfLastYear","baseUnit","acceptEstimate","parseTimeUnit","unitLookup","plural","unitLower","doNotRound","majorUnit","minorUnit","snap","operation","snapFn","weekDay","asMonths","resultMonths","monthsToDate","tzChange","offset","allowDecimals","defaultUnit","_match$","durationRegEx","unitMatch","unitOrdinal","offsetInMinutes","tempDate","dayNames","_dayNames","dayShortNames","_dayShortNames","monthNames","_monthNames","monthShortNames","_monthShortNames","unitNames","unitAbbreviations","unitAbbrRegEx","abbreviations","unitNamesCfg","canonicalUnitName","single","j","canonicalAbbreviations","setupDurationRegEx","fillDayNames","fillMonthNames","hasOwn$2","toFixedFix","toFixed","fractionDigits","newNumber","ObjectHelper","arrayOfItems","namedItems","useIsDeeply","typeA","typeB","idx","OH","isDeeplyEqual","aKeys","ignore","bKeys","aKey","bKey","aVal","bVal","shouldEvaluate","evaluate","isBefore","isAfter","props","mapper","pathifyKeys","to","fromType","toType","isString","propertyName","newGetter","newSetter","deep","newProperty","existingProperty","getPropertyDescriptor","existingDesc","fieldName","baseDesc","keepNull","valueType","assertType","asNumber","digits","factor","keyPath","simpleKey","topKey","topValue","getPathDefault","allBorders","allMargins","allPaddings","borderNames","paddingNames","zeroBased","alignSpecRe$1","alignPointRe","edgeNames","edgeIndices","defaultAlignments","edgeAligments","bt","tb","lr","rl","zeroOffsets","matchDimensions","parseEdges","top","right","bottom","left","parseAlign","alignSpec","rtl","myEdge","targetEdge","mO","tO","myOffset","targetOffset","edgeAligned","myAlignmentPoint","targetAlignmentPoint","startZone","flipAlign","align","createOffsets","Rectangle","isRectangle","element","relativeTo","ignorePageScroll","_relativeTo","nodeType","Node","DOCUMENT_FRAGMENT_NODE","scrollLeft","scrollTop","isViewport","isSFViewport","offsetHeight","sfElRect","getBoundingClientRect","viewRect","parentElement","scrollHeight","innerWidth","innerHeight","scrollOffset","pageXOffset","pageYOffset","contains","borders","DomHelper","getStyleValue","padding","content","scrollbarWidth","scrollBarWidth","clientHeight","scrollWidth","clientWidth","margin","rectangles","current","devicePixelRatio","_x","roundPx","_y","_width","_height","assertNumber","isAlignRectangle","minHeight","minWidth","other","useBoolean","allowZeroDimensions","intersect","processor","center","Point","xDelta","yDelta","horizontal","area","_minWidth","_minHeight","adjust","constrainTo","originalHeight","originalY","spec","constrainPadding","matchSize","calculatedAnchorPosition","zone","resultZone","constrainingToViewport","deflate","targetOffsets","axisLock","anchorSize","anchorPosition","position","targetConstrainRect","constraintZones","zoneOrder","matchDimension","originalSize","pos","edge","moveTo","centerAligned","offsets","targetPoint","getAlignmentPoint","myPoint","overlap","requestedResult","solutions","largestZone","alignTo","s1TranslationDistance","s2TranslationDistance","isLeftOrRight","startValue","endValue","anchorStart","anchorEnd","alignmentPoint","margins","edgeOffset","highlightElement","highlight","asDomConfig","domConfig","z-index","valueSymbol","lengthSymbol","DomClassList","normalize","after","classes","returnEmpty","isDomClassList","_returnEmpty","_returnEmpty2","isEmpty","asArray","asObject","_cls","Element","ELEMENT_NODE","getAttribute","DOMTokenList","getTruthyKeys","clear","className","otherClasses","classList","temp","flag","touchPoints","changedTouches","screenX","screenY","pageY","into","touchProperties","isOption","delegate","capture","passive","throttled","autoDetach","block","returnTrueProp","normalizedKeyNames","Spacebar","Del","Esc","Left","Up","Right","Down","ignoreModifierKeys","Meta","Control","Alt","longpressMoveThreshold","specialKeyRe","getAccessorFromPrototype","accessor","EventHelper","copyPropertiesIf","touches","clientX","clientY","event1","event2","xy1","EH","getXY","xy2","pageX","handlerDetails","handlerSpec","targetElement","addElementListener","createContextMenuWrapper","removeEventListener","createInterceptor","defaults","createHandler","addEventListener","composedPath","_target$getRootNode","_event$relatedTarget","fixed","shadowRoot","getRootNode","getComposedPathTarget","originalTarget","normalizedKeyName","metaKey","ctrlKey","offsetX","offsetWidth","offsetY","DOCUMENT_NODE","elementFromPoint","TEXT_NODE","relatedTarget","relatedTargetElement","normalizeEvent","wrappedFn","rtlSource","playingDemo","isTrusted","fixEvent","originalarget","lastTarget","_event$target$closest","delegatedTarget","closest","animationName","mode","timerSource","runOnDestroy","callbackArgs","doCallback","endedAnimation","onTransitionEnd","tapholdStartTouch","tapholdTimer","touchMoveRemover","contextmenuEvent","MouseEvent","browserEvent","contextMenuTouchId","identifier","longPressTime","onMoveOrPointerUp","deltaX","deltaY","touchmove","touchend","pointermove","pointerup","startId","secondListenerDetacher","touchstart","secondStart","preventDefault","secondClick","targetRect","dblclickEventConfig","dblclickEvent","dblClickTime","mousedown","mouseup","dblclick","contextmenu","mouseover","mouseout","keyup","keydown","keypress","isTouchEvent","_rootEl$classList","rootEl","getRootElement","usingKeyboard","removeClsGlobally","_rootEl$classList2","rootElement","children","node","DEFAULT_FONT_SIZE","t0t0","isObject$1","numberRe","numberReSrc","translateMatrix2dRe","translateMatrix3dRe","translateMatrixRe","pxTtranslateXRe","pxTtranslateYRe","whiteSpaceRe","semicolonRe","colonRe","digitsRe$1","elementPropKey","elementCreateExpandos","elementData","for","retainElement","elementCreateProperties","html","tooltip","nextSibling","ns","reference","unmatched","onlyChildren","compareHtml","syncOptions","keepChildren","styleIgnoreProperties","parentRule","nativeEditableTags","INPUT","TEXTAREA","nativeFocusableTags","BUTTON","IFRAME","EMBED","OBJECT","SELECT","BODY","win","doc","emptyObject$9","arraySlice$1","immediatePromise$7","fontProps","isHiddenWidget","_hidden","parentNode","el","mergeChildren","isVisible","isShadowRoot","hasLayout","offsetParent","isInDocument","root","elementOrConfigToElement","elementOrConfig","DH$1","createElementFromTemplate","canonicalStyles","canonicalizeStyle","hasUnit","entry","hyphenate","getOffsetParent","ownerSVGElement","slideInAnimationName","idCounter","themeInfo","templateElement","htmlParser","scrollBarMeasureElement","direction","waitForTransitionEnd","skipAccessibilityCheck","Widget","fromElement","nodeName","contentEditable","isContentEditable","whole","caller","positioned","docRect","cOp","cOpR","scrollingElement","getViewportIntersection","peStyle","parentScroll","overflowX","overflowY","viewport","isTop","viewportRect","inner","Event","namedChildren","ignoreRefs","_domConfig$syncOption","child","kids","ref","normalizeChildren","_child","isWidget","isElement","px","multiplier","isCustomElement","childFromPoint","trueName","hasUnits","activeElement","_element","_element2","_el","_element$getRootNode","_element$getRootNode2","_element3","_from","_from2","elementOrSelector","attributes","getElement","removeAttribute","setAttribute","_element4","_value","mult","selector","getChild","querySelectorAll","childElementCount","childElement","parentRoot","childRoot","isDescendant","elementName","isNode","forEachSelector","possibleAncestorParents","outerElement","found","ancestor","parents","makeValidDomId","_options","_options$callback","_config$dataset","returnAll","ignoreChildRefs","ignoreRefOption","refOwner","refs","syncIdField","getElementById","createElementNS","setInnerText","innerHTML","attachTooltip","applyStyle","addChild","$refOwnerId","$reference","attachRef","role","isFocusable","htmlFor","action","syncId","syncIdMap","textNode","createTextNode","_config$syncOptions$i","_config$syncOptions","_child$dataset","ignoreRef","lastDomConfig","template","raw","fragment","supportsTemplate","cloneNode","DOMParser","parseFromString","nodes","childNodes","createDocumentFragment","isInView","dispatchEvent","insertBefore","firstElementChild","beforeElement","insertFirst","newElement","siblings","append","docFrag","transformStyle","transform","getTranslateX","getTranslateY","container","offsetLeft","offsetTop","getOffsetX","getOffsetY","resetScroll","scrollHierarchy","preventScrollSupported","focus","preventScroll","getParents","measure","NaN","scaleX","scaleY","setLength","setTranslateY","setTranslateX","is3d","setLeft","setTop","elXY","getTranslateXY","elRect","setTranslateXY","propName","inline","pseudo","styles","edgeStyle","edges","propVal","overwrite","unitize","setProperty","force","toggle","transitionProperty","durations","transitionDuration","scrollBarPadElement","sourceElement","useHTML","offScreenDiv","getMeasureElement","sourceElementStyle","htmlString","$domParser","textContent","performSync","outerHTML","syncAttributes","syncContent","syncChildren","specified","sourceAttributes","sourceNames","getSyncAttributes","targetAttributes","targetNames","hasDataset","toSync","getChildElementCount","innerText","firstChild","sourceNodes","targetNodes","sourceNode","shift","targetNode","tagName","logElement","newClasses","newClsArray","classCount","changed","newThemeName","defaultTheme","head","oldThemeName","getThemeInfo","oldThemeLinks","loaded","removeEachSelector","themeEvent","theme","replaceTheme","oldThemeLink","newThemeLink","rel","loading","bryntumTheme","link","GlobalEvents$1","testDiv","themeData","addTransition","removeTransition","scrollers","beforeElements","beforeMap","$depth","$scrollTop","globalBounds","localBounds","borderLeftWidth","afterElements","afterMap","styleProps","before","zIndex","beforeParent","parentChanged","copyProperties","$initial","bounds","$scrollPlaceholder","processed","opacity","afterBounds","sleep","script","onload","onerror","color","NodeFilter","sibling","clearTouchTimer","clearTouchEvent","setTouchEvent","elementFilter","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","_this$parentNode","CharacterData","DocumentType","isFloatingWidget","floating","GlobalEvents","focusEventsSuspended","observedElements","setupFocusListeners","detach","_detacher","globaltouchStart","stopImmediatePropagation","lastInteractionType","focusin","resetFloatRootScroll","toElement","fromWidget","toWidget","commonAncestor","getCommonAncestor","backwards","compareDocumentPosition","topVisibleModal","query","isTopVisibleModal","currentFocus","getActiveElement","_isRevertingFocus","owns","up","createWidgetEvent","onFocusOut","focusElement","focusDescendant","_commonAncestor$focus","_target$onFocusIn","_target","onFocusIn","commonAncestorEl","focusout","isTopModal","CustomEvent","getDescriptor","InstancePlugin","clientListeners","disabled","client","keyMap","mergeKeyMaps","uncapitalize","plugInto","plugins","PluginClass","enabled","_this$client","getFocusRevertTarget","applyPluginConfig","pluginConfig","chain","override","applyAssign","applyChain","applyOverride","fnNames","functions","intoName","overridden","hookName","chains","hookFn","functionChainRunner","intoFn","$this","$prio","$sorted","returnValue","disable","featureClass","_me$client","_me$client$element","doDisable","plugIntoName","pluginName","Pluggable","_plugins","initPlugins","pluginClassOrName","getPlugin","_this$plugins","widgetClass","defineProperty$6","performance$1","globalDelays","timeouts","intervals","animationFrames","idleCallbacks","includeIntervals","ignoreTimeouts","maxDelay","scopes","scope","isInteger","makeInvoker","wrapFn","appendArgs","calls","decorateWrapFn","cancelFn","flush","resume","suspend","immediate","Delayable","timeoutIds","_globalDelays","timeoutMap","intervalIds","_globalDelays2","clearInterval","animationFrameIds","_globalDelays3","cancelAnimationFrame","idleCallbackIds","_globalDelays4","cancelIdleCallback","_this$timeoutMap","_globalDelays6","timeoutId","_globalDelays5","idOrName","_this$timeoutIds","_globalDelays7","_this$intervalIds","_globalDelays8","_globalDelays9","intervalId","setInterval","_globalDelays11","frameId","_globalDelays10","_globalDelays13","requestIdleCallback","_globalDelays12","rafId","handle","_this$animationFrameI","_globalDelays14","_this$idleCallbackIds","_globalDelays15","bufferWrapFn","rafWrapFn","idleWrapFn","throttleWrapFn","setupDelayableMethods","statics","static","implName","StateStorage","empty","getKeys","Local","stateProvider","isLocal","Memory","isMemory","_data","nullStorage","storageTypes","local","memory","StateProvider","writeStatefuls","_instance","inst","nullProvider","isClass","self","setValue","stateful","pendingSaves","stateIds","saved","stateId","isSaveStatePending","saveState","primitiveRe","State","_class","loadState","finalizeInit","isStateful","isStatefulActive","statefulSuspended","isResponsivePending","isResponsiveUpdating","state","_state","getState","applyState","detachListeners","_me$on","statefulId","responsiveState","hasGeneratedId","statefulness","_stateProvider","pruneState","_me$initialConfig","reload","statefulLoaded","loadStatefulData","defaultState","_this$stateProvider","full","saveStateful","pruned","statefulEvents","idCounts$1","idTypes","Identifiable","identifiable","idMap","unregisterInstance","generateAutoId","oldId","registerGeneratedId","registerInstance","generateId","instanceId","disableThrow","registeredInstances","STM_PROP$1","unrecordedFields","parentIndex","ModelStm","stm","store","_super$unjoinStore","unjoinStore","inSetting","nonPersistableFields","getFieldDefinition","newDataCandidate","oldDataCandidate","fromRelationUpdate","_super$beforeSet","preResult","beforeSet","fName","beforeResult","afterSet","firstStore","oldIdMap","getById","wasSet","shouldRecord","newData","oldData","shouldRecordFieldChange","onModelUpdate","childRecords","beforeInsertChild","childRecord","inserted","_super$afterInsertChi","context","onModelInsertChild","afterInsertChild","isMove","beforeRemoveChild","_super$afterRemoveChi","onModelRemoveChild","afterRemoveChild","TreeNode","convertEmptyParentToLeaf","onLoad","onRemove","_convertEmptyParentToLeaf","stores","inProcessChildren","MyClass","isModel","createRecord","processRecord","sorter","createSorterFn","sorters","ingestChildren","childrenField","shouldConvert","isLeaf","isRoot","isExpanded","ancestorsExpanded","mapMeta","instanceMeta","collapsed","expanded","childLevel","isParent","isLoaded","descendantCount","getDescendantCount","visibleDescendantCount","onlyVisible","allChildren","lastChild","previousSiblingsTotalCount","task","previousSibling","_this$parent","parentId","isAutoRoot","newParent","rootNode","isBatchUpdating","batchChanges","parentIdField","_parentIdField","skipSelf","includeFilteredOutRecords","unfilteredChildren","traverse","goOn","traverseWhile","childOrId","bubbleWhile","insertChild","_ref","_before$parentIndex","_before","_me$children2","_me$beforeInsertChild","_me$afterInsertChild","returnArray","_me$children$before","_me$children","records","internalAppendInsert","convertToParent","wasLeaf","isLoading","signalNodeChanged","changes","record","recordsToInsert","beforeRecord","rootStore","isNoop","newRecordsCloned","insertAt","newRecord","oldParent","oldParentId","addToChildren","isChained","joinStore","onNodeAddChild","toSet","getDataSource","modified","oldParentIndex","deleteProperty","afterChange","isInserting","_me$beforeRemoveChild","_me$afterRemoveChild","allRemovedRecords","isLinked","removeFromChildren","onNodeRemoveChild","unfilteredIndex","originalData","newChildren","clearChildren","processChildren","unfiltered","_me$children3","removingAll","suspendEvents","resumeEvents","added","indexName","setData","newRecords","updateChildrenIndices","propertyOverrides","proxyConfig","proxyMeta","setDataOverride","setOverride","proxyRecord","originalRecord","ModelLink","$original","useConfig","generateUUID","linkedRecords","_this$proxyMeta","hasLinks","$links","linked","include","removeLink","$originalId","_this$meta$linkedReco","defineProperty$5","ownerSymbol","typeSplitRe","Factoryable","__BRYNTUM_EXAMPLE","factoryable","initClass","caseless","registry","types","lower","isType","typeCls","register","alias","superClass","defaultType","typeKey","replaceType","reconfigure","existingInstance","cleanup","mergeType","prepared","setup","_cleanup","resolveType","_cleanup2","mergeConfigs","optional","bases","DataField","compareItems","dataSource","alwaysWrite","nullable","nullText","nullValue","persist","readOnly","internal","itemA","itemB","_getOwnPropertyDescri","complexMapping","complexGet","batching","fields","printValue","ArrayDataField","BooleanDataField","DateDataField","StringDataField","DurationUnitDataField","compareUnits","IntegerDataField","rounding","ModelDataField","NumberDataField","scale","ObjectDataField","StoreDataField","_record","storeName","skipStack","modelClass","storeClass","verifyNoGeneratedIds","usesId","$currentValue","$isSettingStoreFieldData","_record2","_record3","allRecords","persistableData","_a","_b","isStore","defineProperty$4","hasOwn$1","_undefined","internalProps","abbreviationFields","fieldDataTypes","boolean","Model","idField","_assignedIdField","_idField","_childrenField","dataField","indexPath","indices","skipExpose","forceUseRaw","rawData","_ArrayHelper$asArray","_me$meta$initableValu","metaConfig","applyConfigs","useRawData","exposeProperties","overriddenIdField","addField","idFieldProcessed","_internalId","_internalIdCounter","unjoinedStores","processData","initableValues","assignInitables","generation","isCreating","onIsCreatingToggle","defs","subclass","ignoreDefaults","defaultValues","disableDefaultValue","disableTypeConversion","hasSource","complex","sourceExists","pathExists","useNameForValue","convert","converted","initable","initInitables","setupFields","_base$defs$slice","_base$exposed","_base$ordinals","_base$map","_base$sources","classFields","fieldsInfo","exposedData","exposed","ordinals","init","exposeRelations","allFields","fieldDataSourceMap","fieldMapProperty","autoExposeFields","dataProperty","fieldDef","fromData","propertiesExposed","definedBy","ordinal","defineAccessor","_nonPersistableFields","_alwaysWriteFields","relationConfig","relationsExposed","relations","relation","relationName","getForeign","setForeign","processedData","laterValues","fieldNames","_store$modelRelations","modelRelations","initRelations","relatedRecords","related","initRelation","updateRecordRelationCache","keyValue","foreign","placeHolder","relationCache","nullFieldOnRemove","_this$meta$relationCa","asId","flatGet","_field$dataSource","_field$dataSource2","_field$dataSource3","skipAccessors","inBatchSet","$silenceBatch","_me$beforeSet","_me$afterSet","inSet","cmp","fieldToKeys","processField","forEachLinked","triggerBeforeUpdate","_field$dataSource4","mapping","useProp","getRelationConfig","ignoreBag","storeFieldChange","applyValue","cacheRelatedRecord","_field","_field3","_field2","_field4","_field5","nestedName","onModelChange","isPersistable","isModified","hasPersistableChanges","rawModificationData","nameOrField","serialize","modifications","rawModifications","keySet","getFieldPersistentValue","modificationData","modificationDataToWrite","alwaysWriteFields","recordData","isCommitting","committing","includeDescendants","removeFromStoreChanges","noChanges","descendants","collectDescendants","rawChanges","phantomIdField","remote","rawChangesSimplePaths","ownChangesSimplePaths","idChanged","_field$name","clearChanges","change","internalId","isPhantom","model","jsonData","toJSON","nameField","_this$meta","_this$meta$batchChang","silentUpdates","_this$stores","newId","useDeep","copy","originalInternalId","fromRecord","propertiesAndValues","isSpecialRow","beforeRemove","_this$firstStore","_this$firstStore$mode","isValid","tree","isReplacing","_ref$forEach","unregister","uncacheRelatedRecord","isRemoved","isPartOfStore","instanceOrId","isGroupHeader","isGroupFooter","_this$meta2","specialRow","calculated","domId","superName","Duration","_magnitude","_unit","useAbbreviation","abbreviationFn","nestedValueReducer","relativeDateUnitRegExp","relativeDateOperators","CollectionFilter","operator","filterBy","caseSensitive","_id","propertyChanged","onFilterChanged","_filterBy","defaultFilterBy","candidate","candidateValue","_propertyItems","onChange","_filterValue","filterValue","_operator","_value$valueOf","isIncludedIn","isSameTime","isMoreThan","isLessThan","isPartial","between","getRelativeDateRange","relativeExpr","todayStart","tomorrowStart","oneTimeUnit","unitStart","timeUnit","getStartOfNextDay","filters","returnTrue","setRelativeDateValues","idCounts","IdHelper","CollectionSorter","sortFn","useLocaleSort","_sortFn","defaultSortFn","localeCompare","tieBreaker","isCollection","comp","return0","reverseNumericSortFn","filteredIndicesProperty","emptyArray$9","sortEvent","replaced","filterEvent","keyTypes","addItemToIndex","unique","removeItemFromIndex","doRebuildIndices","keyProps","indexCount","keyProp","Collection","idProperty","extraKeys","autoFilter","autoSort","_values","_me$_sorters","isFiltered","_filteredValues","_sorters","totalCount","_indicesInvalid","filteredValues","isNewDataset","replacedValues","replacedFilteredValues","filteredPassed","_filterFunction","filterFunction","invalidateIndices","iterator","ignoreFilters","allValues","beforeItem","itemIndex","beforeIndex","newIds","oldCount","mutated","idIndex","newItem","existingItem","existingIndex","removeIndex","contiguous","lastIdx","removeIndices","isNumeric","unshift","removeFromIndices","addToIndices","rep","isSorted","onSortersChanged","onFiltersChanged","member","existingMember","removeIndexEntry","addIndexEntry","getBy","findItem","addIndex","_this$_sorters","_sortFunction","sortFunction","generateSortFunction","_filters","isCollectionFilter","gone","oldDataset","generateFiltersFunction","indexConfig","_indices","dependentOn","hasCompositeIndex","_index$get","findIndex","rebuildIndices","filteredIndices","filteredIndex","getIndices","dependentIndex","_index$dependentOn","keysAndOldValues","_wasSet$o","oldIndex","buildIndexKey","nonPrimitives","WeakMap","safeIndexKey","substitute","Bag","nth","countOf","matchFn","StoreBag","StoreCRUD","autoCommit","isRemoving","suspendCount","isGrouped","recordsInCollapsedGroups","changedGroupParents","rec","groupParent","groupChildren","childCount","removingMultiple","firstRemoved","removeChildArgs","argBlock","isChild","doAutoCommit","_me$rootNode","_me$rootNode$unfilter","registeredRecords","_records2","autoTree","parentIdMap","parentIndexField","getFieldDataSource","insert","toInsert","processRecords","onRecordCreated","getAt","_records","removedAtIndex","previousIndex","_root$children","isTree","move","filterFn","reapplyFilterOnUpdate","acceptChanges","revertChanges","_autoCommit","auto","commit","doCommit","StoreChanges","otherStore","localRecord","transformFn","logChanges","_transformFn","updated","altered","idDataSource","log","_me$add","toUpdate","_data$phantomIdField","addedRecords","phantomId","applyChangeset","applyRemovals","removals","removedStash","removedEntry","StoreFilter","reapplyFilterOnAdd","enable","collection","_filtersFunction","filterConfig","filtersFunction","generatedFilterFunction","hitsCurrent","traverseFilter","traverseClearFilter","latestFilterField","remoteFilter","newFilters","fieldType","clearFilters","wasFiltered","addFilter","performFilter","newDataset","visible","replaceValues","includeCollapsed","excludeCollapsed","afterPerformFilter","isRemoteDataLoading","resetRelationCache","triggerFilterEvent","filtered","idOrInstance","_this$_filters","resortActions","StoreGroup","groupers","collapsedGroups","onDataChanged","_groupers","setGroupers","removeHeadersAndFooters","_idMap","groupRecords","groupId","expand","collapse","_super$onDataChange","prepareGroupRecords","onDataChange","getPrev","groupField","newGroupValue","beginBatch","endBatch","groupRecord","excludeGroupRecords","updateMap","includeGroupRecords","toCollapse","toExpand","groupedRecords","curGroup","curGroupRecord","addFooter","groupRowFor","createId","footer","groupFooterFor","_record$groupChildren","useGroupFooters","_this$groupers","ascending","performSort","newGrouper","_me$groupInfo","_me$groupInfo2","groupInfo","remoteSort","onAfterGrouping","grouper","clearGroupers","groupValue","_this$groupers$","parentGroupRec","isRecordInGroup","getDistinctValues","mapId","hiddenByCollapse","includeChildren","isAvailable","internalIncludeExcludeGroupRecords","includeHeaders","StoreProxy","objectify","proxy","safeJsonParse","StoreRelation","reset","storeDetacher","modelRelationConfig","relatedStore","dependentStore","storeProperty","dependentStoreConfigs","dependentConfigs","existingConfig","collectionName","initRelationCollection","updateDependentStores","collectionStore","collectionStores","initModelRelationCollection","useName","getCollection","setCollection","foreignId","recordOrId","old","uncacheId","relatedId","oldCache","uncacheIndex","relatedRecord","removeRelation","dependentRecords","dependentRecord","localRecords","StoreSum","sum","_record$field","_record$field2","getGroupRecords","findInString","matchFns","StoreSearch","formatters","searchAllRecords","getAllDataRecords","_comparison","distinct","usedValues","fieldValue","nestedRe","StoreSort","reapplySortersOnAdd","normalizeSorterConfig","currentSorters","currentDir","curSort","getCurrentSorterByField","_field$ascending","_me$modelClass","_me$modelClass$$meta$","sorterIndex","storeLocaleSort","nested","lhsValue","rhsValue","afterPerformSort","returnTrue$1","StoreChained","chainedFilterFn","chainedFields","masterStore","doRelayToMaster","dontRelayToMaster","keepUncommittedChanges","excludeCollapsedRecords","chainedStores","syncOrder","methodNamesToRelay","relayToMaster","removeAll","getRange","changePreCommit","onMasterDataChangedPreCommit","onMasterDataChanged","fillFromMaster","_chainedFilterFn","doIsArray","dontIsArray","isRecordFilter","idRegister","internalIdRegister","getChildren","doIncludeExclude","master","$masterEventhandled","$handled","_this$chainedFields","makeChained","_this$chainedStores","chainedStore","StoreState","cleanupProperties","emptyArray$8","StoreTree","transformFlatData","leaves","parentRecord","isRootLoad","toAddToUI","storeInsertionPoint","inCollapsedBranch","rootVisible","_me$afterLoadData","afterLoadData","wasMoved","toRemoveFromUI","removeUnfiltered","childrenToRemove","updateChildrenHiddenState","isExpand","isCollapse","_parentRecord$unfilte","hidden","idOrRecord","isLoadingChildren","onNodeCollapse","onNodeExpand","loadChildren","exception","internalToggleTreeSubRecords","transformed","_data$find","parentTransform","convertParents","newRoot","lastParent","_lastParent","lastParentPath","nodeMap","generatedParent","lv","rv","numeric","hasParentId","shouldTransform","transformToTree","WalkHelper","childrenFn","walkStack","reverse","inFn","outFn","StoreSync","syncDataOnLoad","toMove","syncTreeDataset","syncFlatDataset","threshold","surpassed","isSyncingDataOnLoad","clearParentId","thresholdSurpassed","syncInfo","usedIds","keepMissingValues","hitCount","allCount","treeifyFlatData","preWalkWithParent","childrenUpdated","oldChildrenValue","toggleCollapse","STM_PROP","StoreStm","_me$stm","hasStore","removeStore","addStore","_result","onStoreModelAdd","_result2","onStoreModelInsert","recordsOrIds","fromRemoveChild","_result3","recordsOrIdsNormalized","onStoreModelRemove","wasNotEmpty","onStoreRemoveAll","dataAddRemoveActions$2","Store","allowNoId","preventSubClassingModel","initProxy","storeId","converterFn","getStore","_me$_storage","_me$stm$removeStore","_rec","_storage","collectGroupRecords","newlyPersistable","isAddRemove","addedCount","removedCount","filtersWereReapplied","sortersWereReapplied","joinRecordsToStore","oldRecord","cancelBatch","_undoingInsertion","lowest","sorted","disableDuplicateIdCheck","collisions","batch","committable","updateModifiedBagForRecord","onItemMutation","updateDependentRecordIds","onRecordIdChange","onUpdateRecord","addedToBag","needsRebuild","processedRecords","visibleIndex","ClassDef","originalModelClass","ClassDefEx","changeId","duplicate","updateId","_tree","buildRootNode","storeModel","storeData","autoCreated","_rootNode","_rootNode$children","oldRoot","setStoreData","_data2","transformNamedObjectToArray","_remoteSortIndex","loadData","syncDataset","warnGenerated","isRaw","_recordData$idField","_recordData$idField$s","_recordData$idField2","onDataReplaced","isDataset","_useRawData","countProcessed","originalCount","_this$groupRecords","existingRec","visibleRecords","$store","linkedRecord","bubble","primitiveValue","formattedJSON","project","_this$rootNode$childr","_result$modelClass","getInlineData","asyncEvents","includeCollapsedGroupRecords","initialValue","topNode","skipTopNode","passedFn","wrap","skipSpecialRows","getNext","getNextLeaf","getPrevLeaf","processParamEntry","paramArray","immediatePromise$6","AjaxStore","fetchOptions","sendAsFormData","writeAllFields","parentIdParamName","responseSuccessProperty","responseDataProperty","responseTotalProperty","filterParamName","restfulFilter","sortParamName","pageParamName","pageStartParamName","pageSizeParamName","pageSize","useRestfulMethods","httpMethods","read","update","autoLoad","load","_isLoading","commitPromise","_pageParamName","_pageStartParamName","isPaged","remoteTotal","lastPage","paramObjects","hasParamsInUrl","internalLoad","currentPage","readUrl","successFn","allParams","buildReadUrl","encodeFilterParams","encodeSorterParams","page","Infinity","buildQueryString","requestedPage","exceptionType","responseOrError","Response","loadPage","pageParam","allPromises","commitState","commitRemoved","commitAdded","commitModified","createUrl","dataToSend","formData","post","processReturnedData","updateUrl","returnedData","isUpdating","recData","deleteUrl","ids","DomDataStore","_domData","throwAbstractMethodCall$1","ActionBase","throwAbstractMethodCall","throwInvalidMethodCall","StateBase","STATE_PROP","STORES_PROP","QUEUE_PROP","POS_PROP","TRANSACTION_PROP","TRANSACTION_TIMER_PROP","AUTO_RECORD_PROP","registerStmState","resolveStmState","Registry","resetQueue","undo","redo","newProps","notifyStoresAboutQueueReset","DisabledStateClass","autoRecord","DisabledState","ACTION_QUEUE_PROP","Transaction$1","title","ReadyStateClass","steps","curPos","newPos","notifyStoresAboutStateRestoringStart","notifyStoresAboutStateRestoringStop","transaction","notifyStoresAboutStateRecordingStart","ReadyState","RecordingStateClass","notifyStoresAboutStateRecordingStop","stopTransactionDelayed","getTransactionTitle","stop","rejected","addAction","makeModelUpdateAction","parentModel","childModel","previousParent","makeModelInsertChildAction","childModels","makeModelRemoveChildAction","models","makeStoreModelAddAction","makeStoreModelInsertAction","makeStoreModelRemoveAction","makeStoreRemoveAllAction","RecordingState","RestoringStateClass","RestoringState","AutoReadyStateClass","startTransaction","AutoReadyState","AutoRecordingStateClass","timer","stopTransaction","autoRecordTransactionStopTimeout","AutoRecordingState","MODEL_PROP","NEW_DATA_PROP","OLD_DATA_PROP","UpdateAction","$","PARENT_MODEL_PROP$1","CHILD_MODELS_PROP$1","INSERT_INDEX_PROP$1","CONTEXT_PROP$3","InsertChildAction","insertIndex","ctx","lhsParent","lhsIndex","rhsParent","rhsIndex","adjustedIndex","PARENT_MODEL_PROP","CHILD_MODELS_PROP","CONTEXT_PROP$2","RemoveChildAction","STORE_PROP$3","MODEL_LIST_PROP$2","AddAction","modelList","list","STORE_PROP$2","MODEL_LIST_PROP$1","INSERT_INDEX_PROP","CONTEXT_PROP$1","InsertAction","STORE_PROP$1","MODEL_LIST_PROP","CONTEXT_PROP","RemoveAction","STORE_PROP","ALL_RECORDS_PROP","RemoveAllAction","makeModelUpdateAction$1","stateTransition","oldState","newState","StateTrackingManager$1","onDisable","onEnable","isReady","await","isRecording","onAutoRecordOn","onAutoRecordOff","onStartTransaction","onStopTransaction","onStopTransactionDelayed","onRejectTransaction","isRestoring","canUndo","canRedo","waitForReadiness","onUndo","onRedo","onResetQueue","forEachStore","_store$onStmRecording","onStmRecordingStart","reason","_store$onStmRecording2","onStmRecordingStop","_store$onStmRestoring","onStmRestoringStart","_store$onStmRestoring2","onStmRestoringStop","_store$onStmQueueRese","onStmQueueReset","shiftKey","arraySlice","emptyArray$7","emptyObject$8","htmlRe","checkEqualityIgnore","makeCheckEqualityOptions","refsFound","classname","simpleTypes","bigint","function","symbol","syncIgnoreAttributes","isReleased","null","","addAndCacheCls","removeAndUncacheCls","DomSync","is","equalityCache","ignoreRefOpt","checkEquality","_syncOptions","_options$refsFound","optionsIn","refsWas","byRef","checkEqualityOptions","affected","detachRef","configIsEqual","configEquality","sameConfig","currentClasses","keep","sourceSyncAttrs","sourceAttr","syncClassList","targetAttr","syncStyles","parseStyle","_lastDomConfig$childr","newNode","_domConfig$html","_syncOptions$ignoreRe","releaseThreshold","cleanupNodes","nextNode","newSyncIdMap","sourceConfigs","releasedIdMap","nextTarget","syncChildOptions","sourceConfig","isTextNode","syncTargetElement","_callback","insertElement","beforeNode","cleanupNode","insertTextNode","_lastDomConfig$datase","_callback2","syncChildrenCleanup","releaseCount","syncIds","_element$syncIdMap","Fullscreen","prefixFn","msEventNames","prefixEvt","isFullscreen","resizeFireTimer","resizedQueue","isAbsolutelyPositioned","_n$ownerDocument$defa","ResizeMonitor","_bResizemonitor","handlers","hasWindowResizeListener","onWindowResize","ResizeObserver","resizeObserver","onElementResize","observe","monitors","shrink","onSizeMonitorScroll","targetMutationMonitor","MutationObserver","addedNodes","removedNodes","mr","changedNodes","childList","subtree","monitorElement","resizeMonitor","listenerCount","unobserve","disconnect","resizeObserverEntry","resizedElement","newRect","contentRect","rectangle","oldRect","resizeHandler","_document$body","monitorNode","fireResizeEvents","resizedEntry","scrollLiterals","true","false","hidden-scroll","clip","scrollerCls","defaultScrollOptions$4","immediatePromise$5","scrollPromise","scroll","xAxis$1","isScrollable","isScrollableConfig","allScroll","normalizeEdgeOffset","_edgeOffset$top","_edgeOffset$bottom","_edgeOffset$start","_edgeOffset$end","Scroller","widget","contentElement","onScrollEnd","isRTL","_this$rtlSource","hasOverflowX","hasOverflowY","axis","overflowSetting","otherAxis","dimension","vertical","clientSize","borderSize","difference","otherScroller","axes","partners","scroller","isPartneredWith","addPartner","removePartner","_this$partners","originalRect","getDeltaTo","scrollBy","focusWithoutScrolling","animate","scrollable","_globalScroller","deltas","totalX","totalY","positionDirty","absX","absY","scrollAnimation","isEnd","lastX","lastY","_me$scrollAnimation","_me$scrollAnimation2","xBefore","yBefore","toX","toY","_me$scrollAnimation3","_me$wheelListenerRemo","scrollHandler","wheelListenerRemover","mutations","scrollEvent","onScroll","isAnimating","syncOverflowState","animationEnd","vetoed","syncPartners","controllingPartner","propagate","sync","elementRect","scrollerRect","xOffset","yOffset","xFactor","maxX","maxY","oldElement","onElResize","_me$mutationObserver","mutationObserver","removeResizeListener","mutationHandler","onElMutation","addResizeListener","updateOverflowX","updateOverflowY","updateX","updateY","_this$widget","lastScrollLeft","oldOverflowX","otherAxisScrollable","enableWheel","oldOverflowY","wheel","_this$element$scrollW","_this$element","stretcher","widthStretcher","eachPartner","_this$element$scrollH","_this$element2","_this$element3","_this$element4","locale$4","Yes","No","Cancel","Ok","Week","Combo","noResults","recordNotCommitted","addNewValue","FilePicker","file","Field","badInput","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","invalidValue","minimumValueViolation","maximumValueViolation","fieldRequired","validateFilter","DateField","invalidDate","DatePicker","gotoPrevYear","gotoPrevMonth","gotoNextMonth","gotoNextYear","NumberFormat","currency","DurationField","invalidUnit","TimeField","invalidTime","TimePicker","List","GridBase","loadMask","syncMask","PagingToolbar","firstPage","prevPage","nextPage","noRecords","pageCountTemplate","summaryTemplate","PanelCollapser","Collapse","Expand","Popup","close","UndoRedo","Undo","Redo","UndoLastAction","RedoLastAction","NoActions","FieldFilterPicker","equals","doesNotEqual","isNotEmpty","doesNotContain","isOneOf","isNotOneOf","isGreaterThan","isGreaterThanOrEqualTo","isLessThanOrEqualTo","isBetween","isNotBetween","isToday","isTomorrow","isYesterday","isThisWeek","isNextWeek","isLastWeek","isThisMonth","isNextMonth","isLastMonth","isThisYear","isNextYear","isLastYear","isYearToDate","isTrue","isFalse","selectAProperty","selectAnOperator","and","dateFormat","selectOneOrMoreValues","enterAValue","enterANumber","selectADate","FieldFilterPickerGroup","0","6","TrialButton","downloadTrial","TrialPanel","email","company","submit","downloadStarting","Promissory","defineProperty$3","Renderable","refreshDom","renderConfigs","$renderConfigs","$iid","$idSeed","onDraw","initDrawable","renderContext","renderDom","fixRefOwnerId","intersector","IntersectionObserver","ent","isIntersecting","drawCounter","ev","Mask","autoClose","cover","icon","errorDefaults","showDelay","maxProgress","useTransition","deferredClose","delayedShow","syncCover","show","forEachChild","maskName","maskElement","b-mask","b-delayed-show","b-widget","b-progress","b-prevent-transitions","new","_element$mask","mask","_this$owner","_this$owner$syncMaskC","syncMaskCover","recompose","resize","_owner$onMaskAutoClos2","_owner$onMaskAutoClos","onMaskAutoClose","onMaskAutoClosing","hiding","shown","hide","KeyMap","keyMapElement","keyMapSubComponents","features","keyEvent","actionHandled","handled","keyCombination","keyString","requireAlt","requireShift","requireCtrl","actualKey","altKey","actions","_thisObj$isActionAvai","resolveKeyMapAction","isActionAvailable","component","actionName","_this$keyMapDetacher","keyMapDetacher","performKeyMapAction","subPrefix","mergedKeyMap","newAction","assignIf","currentKeyMapping","_newAction$weight","weight","RTL","getRenderContext","assignValueDefaults","onlyName","floatRoots","highlightExternalChange","isTransparent","textInputTypes","addElementListeners","refName","_listeners","_refListeners","mergeAnim","widgetTriggerPaint","triggerPaint","negationPseudo","nonFlowedPositions","isScaled","hasOwnProperty$2","defineProperty$2","immediatePromise$4","alignedClass","returnFalseProp","localizeRE","localizeTooltip","alignSpecRe","mergeAlign","ui","collapsify","contentElementCls","defaultCls","dock","forwardTwinEvents","tab","elementAttributes","htmlCls","b-html","ignoreParentReadOnly","adopt","appendTo","showTooltipWhenDisabled","preventTooltipOnTouch","monitorResize","masked","maskDefaults","draggable","centered","scrollAction","hideAnimation","showAnimation","scrollerClass","defaultBindProperty","defaultAction","overflowable","maxHeight","maxWidth","scaleToFitWidth","allowGrowWidth","flex","alignSelf","ripple","requireSize","textAlign","ignoreScrollDuration","recomposeAsync","htmlMutationObserver","ariaLabel","ariaDescription","ariaElement","ariaHasPopup","realignTimeout","innerItem","doHideOrRealign","_recomposeAsync","isComposable","domSyncCallback","configureAriaDescription","_isAnimatingCounter","alignConstrained","callRealign","realign","onTargetResize","onFullscreenChange","_isUserAction","adoptElement","updateElement","preExistingElements","_Widget$Tooltip","_me$dragEventDetacher","_me$dragOverEventDeta","sharedTooltip","_tooltip","_rootElement","Tooltip","getSharedTooltip","onExitFullscreen","scrollListenerTimeout","resizeListenerTimeout","removeTransientListeners","revertFocus","onParentElementResize","floatRoot","adoptedElementClassName","adoptedElementCssText","dragEventDetacher","dragOverEventDetacher","dragGhost","valueName","valueBindProperty","hec","getValueName","assignFieldValue","eachWidget","gatherValue","_forwardTwinEvents","overrides","_me$forwardTwinEvents","_overflowTwinOrigin","_me$forwardTwinEvents2","configureOverflowTwin","overflowTwin","info","onCreate","createOverflowTwin","compose","previousHolder","previousHolderAdopt","_contentRange","_listeners$un","ownerCmp","addRefAccessor","widgetClassList","composers","firstTime","childName","hoist","doCompose","setAttributes","hasChildContent","namedElements","uiClasses","_readOnly","noThrow","outerCls","_html","descElId","ariaDescEl","_ariaDescEl","aria-label","aria-haspopup","_this$ariaElement","_this$ariaElement2","_ariaElement","overlay","transitionRecompose","isTransitioningDom","transition","afterRecompose","changeElementRef","renderTo","emptyCache","syncElement","currentElement","rendered","_this$$meta$$renderCo","_style","_dragGhost","_constrainTo","_anchorElement","contentRange","Range","setStart","contentRangeStartOffset","setEnd","contentRangeEndOffset","placement","adjRect","rect","nextElementSibling","previous","previousElementSibling","titleElement","yCoord","_anchor","lastAlignSpec","xy","beforeAlignTo","monitorIntersection","intersectionObserver","isFinite","releaseSizeConstraints","passedTarget","myPosition","startWidth","startHeight","aligningToElement","realignTarget","allowTargetOut","targetOutOfView","anchoredTo","anchorPathElement","anchorElement","isAligning","configuredHeight","configuredWidth","newResult","setXY","_colourSource","colorMatchPoint","colourSource","DOCUMENT_POSITION_CONTAINED_BY","fillColour","defaultAnchorBackgroundColor","pointerEvents","documentScrollListener","targetRoot","targetRootScrollListener","targetResizeListener","constrainListeners","_intersectionObserver","onTargetIntersectionchange","onAlignTargetOutOfView","lastWidth","lastHeight","insideTarget","addTemporaryClass","realignTimout","rectangleOf","_toFrontRange","createRange","setStartBefore","setEndAfter","lastElementChild","extractContents","overflowElement","maxHeightElement","oldScrollable","isScroller","initializingElement","isClearing","updatingHtml","anchorEl","deleteContents","insertNode","startOffset","endOffset","_this$anchorElement","_anchorSize","borderWidth","borderColour","svgEl","pathElement","backgroundColour","themeChangeListener","useFilter","filterId","dx","dy","stdDeviation","flood-opacity","dragstart","dragend","dragDetacher","closestWidget","strips","_me$dragEventDetacher2","_me$dragOverEventDeta2","_me$dragDetacher","_ref2","validateDragStartEvent","myRect","dragStartX","dragStartY","scrollingPageElement","widgetX","widgetY","getOffsetXY","constrainRect","dragListeners","dragover","setDragImage","dataTransfer","effectAllowed","actualTarget","handleSelector","_negationPseudo$exec","blacklist","getPageX","getPageY","cx","cy","_lastWidth","_flex","measureSize","parseTRBL","oldAlign","placeholder","input","_lastHeight","onDisabled","request","_oldParent","exit","_me$_rootElement","unFullscreenChange","_Widget$Tooltip2","activeTarget","oldTooltip","isTooltip","_tooltip$html","newInstance","forElement","forSelector","showOnHover","innerHtmlUpdate","btip","tipConfig","tooltipText","containingWidget","toCallWhenVisible","styleProp","animProps","internalBeforeShow","cancelHideShowAnimation","updateCentered","_centered","transformOrigin","scaledAncestor","currentAnimation","showing","afterHideShowAnimate","afterShow","inShowBy","showBy","resolveFn","_me$owner$onChildShow","_configuredAnchorState","onChildShow","firstPaint","isPainted","_me$toCallWhenVisible","updateScale","hideBryntumDomMessage","isTaskBoardBase","isGridBase","Comment","Ripple","RippleClass","triggerConfigs","afterHideAnimation","_visibilitySuspended","takeRecords","afterHide","activeEl","newTarget","newX","newY","moved","_me$owner2","_me$owner2$onChildHid","onChildHide","rootScrollListener","constrainMutationMonitor","assignedId","_owner","_this$forElement","owningEl","getSibling","childItems","limit","limitType","numericLimit","selectorLimit","widgetMatches","oldMonitorResize","_originalReadOnly","widgets","control","down","_this$widgetMap","widgetMap","getWidgetByRef","containsFocus","focusInEvent","updateAriaLabel","updateAriaDescription","onInternalKeyDown","keyDownListenerRemover","activeElementWas","restore","captureFocusItem","scrollIntoView","activeElementNow","elementOrWidget","_me$focusInEvent","blur","searchDirection","toComponent","myIndex","topMostBase","widgetClassProperty","_widgetClassProperty","rootUiClass","staticClassList","getStaticWidgetClasses","_uiClasses","uiClassList","_uiClassList","maskInstance","_this$masked","msg","oldWidth","oldHeight","newWidth","newHeight","onFloatingWidgetResize","suspendResizeMonitor","onInternalResize","lastRect","heightChange","widthChange","failsConstraint","adjustedScale","documentRoot","_this$owner2","_me$owner3","elRoot","_me$owner4","_DomHelper$themeInfo","themeName","isValidFloatRootParent","screen","orientationchange","visualViewport","floatRootMaxZIndex","typeOfType","topmost","cmpId","eachAncestor","onFieldChange","isolateFieldChange","isolateFields","setupFocusListenersOnce","configOrText","updateRtl","proto$1","queryAll","Layout","containerCls","itemCls","ownerItemCls","itemCount","syncPendingConfigs","syncChildCount","fixChildIndices","indexOfChild","childIndex","_owner$contentElement","pendingConfigs","baseCls","syncConfigLater","lastTouchTime","hasRipple","old_element","viewBox","startRadius","radius","_me$listenerDetacher","rippleAnimation","circleElement","listenerDetacher","animationend","onMousedown","handleTriggerEvent","targetWidget","rippleCfg","point","getClientPoint","centreDelta","rippleStyle","rippleElement","borderRadius","emptyObject$7","returnWeight","sortByWeight","MAX_SAFE_INTEGER","isNotHidden","stylesToCheck","boxLayouts","box","Container","lazyItems","layoutStyle","layout","autoUpdateRecord","autoUpdateFields","hideWhenEmpty","contentElMutationObserver","defaultFocus","flexRowCls","flexColCls","initialItems","hasItems","firstItem","ensureItems","at","_items","childToRemove","onChildRemove","childToAdd","_childToAdd","createWidget","onChildAdd","newValues","renderChildren","oldItems","newItems","processItemsArray","processItemsObject","_createdBy","temporary","initializingItems","addDescendant","onChildAddLayout","_this$_items","_this$_items2","enforceHideWhenEmpty","visibleItems","visibleLength","visibleChildCount","shouldHide","childItem","updateTextContent","_textContent","_widgetMap","_me$recordUpdateDetac","recordUpdateDetacher","setValues","$highlight","onRecordUpdated","highlightChanges","userAction","hasNoChildren","itemsArray","lazyItemsArray","whichItems","_super$onPaint","onPaint","oldContentElMutationObserver","onContentElMutation","syncFlexDirection","existingLayout","widgetConfig","processWidgetConfig","setupWidgetConfig","oldDefaults","firstFocusable","_this$_items3","_widget$destroy","valid","assignValue","isSettingValues","assigningValues","_assigningValues","gatherValues","nostart","unitRe","getTransitions","$bryntum","transitions","_unitRe$exec","syncTransitions","completed","Anim","_delay","_duration","_retain","_timing","reverting","idSeed$1","startTime","_this$_delay","_this$_duration","Animator","defaultDuration","remaining","retain","_this$_retain","timing","_this$_timing","_this$owner3","_this$_unit","_this$owner4","AnimatorTransition","promissory","getCurrentStyleValue","finish","clearStyle","_this$promissory","setStyle","complete","_me$finish","finalize","prefinalize","fx","run","_me$items","anim","specialPropsRe","isInstantiated","_me$finish2","_me$prefinalize","_me$finalize","_options$start","revert","Transition","ClickRepeater","startRate","endRate","accelerateDuration","pressedCls","_this$mousedownRemove","mousedownRemover","_me$activeElement","_me$acceleration","_me$activeListenerRem","acceleration","activeListenerRemover","autoRepeatTimer","repeatTimer","_this$mousedownRemove2","triggerEvent","mousemove","mouseleave","mouseenter","buttons","fireClick","interval","startInterval","accelerationDelta","nextTick","clickEvent","autoRotateRe","inverted","TOP","RIGHT","BOTTOM","LEFT","canonicalDock","DOCK","Rotatable","rotate","invertRotate","b-rotate-vertical","Tool","b-icon","panel","isPanel","headerElement","domEvent","bryntumEvent","tool","keyName","cancelBubble","stopPropagation","_this$repeat","updateDisabled","oldRepeat","rightRe","autoAlign","collapsing","collapsible","CollapseTool","b-collapsed","syncAutoAlign","defaultedDirectionRe","emptyArray$6","emptySplit$1","revealerCls","sideDockRe","canonicalDirection","clipByDock","collapseDirectionByPlacement","hl","hr","vb","vt","crossAxis","dockByDirection","dockIsHorz$1","directionByDock","idSeed","animation","collapseTooltip","expandTooltip","supportAxis","_this$collapsible","onCollapseClick","collapsingExpanding","_this$currentOperatio","currentOperation","currentDock","_this$panel$header$do","_this$panel","_this$panel$header","_this$panel$header$do2","header","expanding","collapseTool","_this$panel2","_this$panel2$tools","tools","collapseDim","collapseDir","canonical","_panel$header","getCollapseDir","collapseDock","headerDock","hasHeader","expandedHeaderDock","toolsConfig","_collapsed","_currentOperation","_currentOperation$ani","_currentOperation2","_currentOperation2$an","_me$collapseFinalize","collapseFinalize","beforeCollapse","_me$collapseFinalize2","changingCollapse","onComplete","_me$collapseFinalize3","_panel$headerElement","collapseToolClasses","applyHeaderDock","panelRect","bodyWrapRect","lockInnerSize","bodyWrapClipRect","clipDir","headerRect","collapsedSize","bodyWrapElement","restoreConfiguredSize","_this$collapseTool","fromRect","toRect","_this$collapseTool2","innerElement","innerSizeElement","_supportAxis","fullSupport","lock","panelEl","headerEl","innerRect","innerStyle","_this$panel3","button","onRevealerClick","syncDirection","_which","_me$panelChangeDetach","panelChangeDetacher","maps","dockIsHorz","PENDING","DynamicObject","configName","created","factory","inferType","ownerName","proxyable","instances","instantiated","setDefaults","defineProp","_me$afterConfigureOwn","updating","afterConfigureOwner","inform","_me$created","members","emptyArray$5","emptyObject$6","toolConfigs","Toolable","toolDefaults","*","alignment","_tool$align$align","_tool","_tool$align","_tool2","isCollapsified","asWidget","asRefs","gatherTools","getStartTools","getEndTools","oldTools","manager","$tools","_instance$syncRotatio","_me$header","syncRotationToDock","directionCls","syncAlign","syncContentAlign","syncJustify","syncWrap","Box","contentAlign","justify","syncConfigStyle","_me$contentElement","VBox","Badge","badge","b-badge","bIcon$1","bFa$1","defaultToggleable","fullConfigKeys","Button","menuIcon","pressedIcon","iconAlign","toggleable","pressed","toggleGroup","menu","menuDefaults","autoShow","updateReadOnly","_constructor$resolveT","_constructor$resolveT2","_constructor$configur","peekConfig","hasMenu","hasConfig","iconCls","b-pressed","b-text","b-has-menu","aria-pressed","iconElement","aria-hidden","b-fa","label","menuIconElement","b-button-menu-icon","_this$_menu","_menu","_this$menu","oldMenu","beforeShow","btnEl","_menu$_minHeight","_menu$_minWidth","_this$_menu2","asElementRefs","onCreateTwin","isToolbar","itemScoreFn","minifiable","twinOverrides","twinOverridesHorz","_axisProps","clientSizeProp","edgeProp","flexDir","scrollSize","sizeProp","defaultRepeat","nonSyncedConfigs","Toolbar","syncOverflowVisibility","overflowMenuButton","b-overflow-button","overflowScrollEnd","b-icon-angle-right","overflowScrollStart","b-icon-angle-left","widgetCls","axisProps","endToolElementRefs","startToolElementRefs","toolbarContent","b-box-center","b-toolbar-content","_this$tools","overflowType","_item$syncRotationToD","processAddedLeafItem","onLeafItemConfigChange","isContainer","updateOverflow","_item$syncRotationToD2","oldOverflow","_me$overflowMenuButto","overflowMenu","overflowTools","_me$scrollable","syncScrollerState","menuOverflow","getAvailSpace","getContentSize","availableSpace","contentSize","eviction","evictionList","itemSize","minifiables","minified","overflowItems","inSyncOverflowVisibility","_toolbarOverflow","_toolbarMinified","_minifiables","getEvictionList","_toolbarOverflowWidth","_minified","syncOverflowMenuButton","_overflowMenuButton$_","addToMenu","overflowItemFilter","isMenu","existingMenu","scrollPos","maxScrollPos","overflowingItems","ensureOverflowTwin","toolbar","isTextField","acceptNode","FILTER_ACCEPT","FILTER_SKIP","emptyArray$4","emptyObject$5","emptySplit","finishBodyWrap","final","b-panel-bar-wrap","wrapBody","bodyWrapTag","barConfigs","dockDirection","pre-header","Panel","bodyCls","bodyTag","trapFocus","stripDefaults","bbar","tbar","revealed","aria-describedby","focusable","composeHeader","horz","composeBody","wrapCollapser","tabIndex","b-panel-collapsible","b-panel-has-header","b-panel-overlay-revealed","topFocusTrap","b-focus-trap","bottomFocusTrap","b-end-focus-trap","bodyConfig","byWeightSortFn","bar","hasVisibleTools","maximizable","suppressChildHeaders","_me$collapsible","splitHeaderItems","composeTitle","headerConfig","titleConfig","titleAlign","b-header-title","_me$_headerClickDetac","_headerClickDetacher","_me$trigger","_this$collapsible2","onHeaderClick","_this$collapsible3","onPanelPaint","asElement","endTools","startTools","byWeightReverseSortFn","_before$i$syncRotatio","_before$i","_after$i$syncRotation","_after$i","_bodyConfig","b-text-content","_me$collapsible2","before2","after2","oldStrips","$strips","_instance$layout","_this$collapsible4","_this$collapsible5","_this$collapsible6","recollapse","_this$collapsible7","_collapse","_this$_expandedHeader","_this$initialConfig$h","_expandedHeaderDock","_me$focusTrapListener","focusTrapListener","treeWalker","setupTreeWalker","SHOW_ELEMENT","whatToShow","createTreeWalker","currentNode","previousNode","bodyElement","showOnClick","closeAction","focusOnToFront","closable","modal","maximized","maximize","highlightReturnedFocus","initialAnchor","onHeaderDblClick","syncModalMask","b-text-popup","unmask","toggleClasses","isButton","modalMask","closeOnMaskTap","usingVirtualKeyboard","_super$onShow","addDocumentMouseDownListener","onShow","mouseDownRemover","globaltap","remainingModals","topModal","_me$mouseDownRemover","_super$onHide","onHide","toggleMaximized","_modalMask","bIcon","bFa","MenuItem","checked","closeParent","closeMenuDelay","isCheckItem","checkCls","hasCustomContent","b-has-submenu","b-checked","b-separator","b-menuitem-icon","textElement","b-menu-text","b-menu-custom-content","subMenuIcon","b-fw-icon","b-icon-sub-menu","itemEvent","newCheckedState","rootMenu","closeTimer","closeMenu","andFocus","uncheckToggleGroupMembers","otherElement","partnerCheckItem","getToggleGroupMembers","_closeParent","Menu","validKeys","ArrowUp","ArrowDown","ArrowRight","ArrowLeft","Enter","Escape","focusOnHover","hasSubmenu","hasIcon","_me$parentMenu","fromParentMenu","parentMenu","firstWidget","onDocumentMouseDown","_me$currentSubMenu","_me$currentSubMenu$hi","currentSubMenu","menuItem","triggerElement","fromItemElement","toItemElement","overItem","leavingToChild","targetCmp","shouldHideMenu","getAncestor","sourceWidget","isFromWidget","active","navigateFrom","enterSubMenu","exitSubMenu","toActivate","openSubMenu","openedMenu","isSubMenu","menuItemElement","doAction","subMenu","_item$onBeforeSubMenu","onBeforeSubMenu","selectedElement","lastSelected","_selectedElement","lastItemMenu","doFocus","_result$up","contextMenuKeyEvent","ContextMenuBase"," ","Ctrl+Space","_this$type","onElementEvent","originalEvent","internalShowContextMenu","isEditable","getKeyboardContextMenuTarget","triggerMouseEvent","getDataFromEvent","shouldShowMenu","showContextMenu","getTargetElementFromEvent","_me$_menu","isDOMEvent","menuContext","processItems","elCenter","feature","selection","selectedRecords","callChainablePopulateMenuMethod","baseItems","preventDefaultEvent","hasActiveMenuItems","populateItemsWithData","beforeContextMenuShow","_me$touchMoveDetacher","touchMoveDetacher","_baseItems","eventParams","_this$client2","_eventParams$event","contextMenuTriggerEvent","DragHelperContainer","containers","ignoreSelector","originalPosition","_outerWidgetEl$parent","floatRootOwner","dragElement","clonedNode","outerWidgetEl","dragProxyCls","draggingCls","dragProxy","dragging","dropPlaceholderCls","_context$dragging","started","containerElement","willLoseFocus","suspendFocusEvents","moveNextTo","revertPosition","resumeFocusEvents","draggedTo","minX","minY","lockX","lockY","touch","centerX","noScroll","DragHelperTranslate","positioning","skipUpdatingElement","isElementDraggable","targetSelector","getTarget","startPageX","startPageY","startClientX","startClientY","proxySelector","dragWithin","cloneTarget","grabbed","grabbedParent","proxyElementToClone","proxyX","proxyY","createProxy","autoSizeClonedTarget","proxyRect","dragWithinX","dragWithinY","localX","localY","hideOriginalElement","grabbedNextSibling","elementStartX","getX","elementStartY","getY","elementX","elementY","scrollX","scrollY","scrollManagerElementContainsDragProxy","updateTranslateProxy","_relatedElements","relatedElements","unifiedProxy","relatedElStartPos","relatedElDragFromPos","originalRelatedElements","relatedEl","proxyTemplateElement","relatedElementToDrag","unifiedOffset","constrain","constrainedX","constrainedY","scrollManagerConfig","getRelativeLeftScroll","getRelativeTopScroll","snapCoordinates","snapped","applyConstraints","xChanged","yChanged","ignoreSamePositionDrop","abortTranslateDrag","finalized","_me$scrollManager","_me$context","scrollManager","stopMonitoring","aborted","animateTo","getPropertyTransitionDuration","removeClonedProxies","removeProxyAfterDrop","cssClassesToRemove","rootElementListeners","docclick","DragHelper","invalidCls","dragThreshold","monitoringConfig","dropTargetSelector","dropTargetCls","startEvent","touchStartDelay","clickSwallowDuration","mouseMoveListenerElement","initListeners","isContainerDrag","initContainerDrag","initTranslateDrag","onScrollManagerScrollCallback","dragStartListeners","pointerdown","getMouseMoveListenerTarget","grabContainerDrag","grabTranslateDrag","pointerType","touchStartTimer","removeListeners","_event$target","scrollInitiated","distance","getDistanceBetween","abortTouchDrag","_me$onDragStarted","startContainerDrag","startTranslateDrag","startMonitoring","scrollables","outermostEl","getOutermostElement","onDragStarted","_this$context","lastMouseMoveEvent","isScroll","internalMove","getMouseMoveEventTarget","internallyValid","updateContainerProxy","updateContainerDrag","draggedElements","_context$relatedEleme","_me$scrollManager2","_me$scrollManager2$st","abortContainerDrag","cleanUp","onMouseUp","_me$scrollManager3","finalizing","finishContainerDrag","finishTranslateDrag","_this$context2","isDragging","_this$context3","documentListeners","ResizeHelper","resizingCls","handleSize","dynamicHandleSize","reservedSpace","touchHandleSize","allowResize","isElementResizable","leftHandle","rightHandle","topHandle","bottomHandle","handleContainerSelector","grab","handleVisibilityThreshold","skipTranslate","initResize","skip","cursorOffset","getCursorOffsetToElementEdge","elementWidth","elementHeight","startX","startY","_me$reset","internalStartResize","isTouch","removeDragListeners","_this$removeDragListe","canResize","grabResizeHandle","onPointerDown","checkResizeHandles","_me$removeDragListene","finishResize","_me$reset2","onPointerUp","parentRectangle","currentX","currentY","updateResize","_me$scrollManager3$st","abortResize","coordsFrom","overLeftHandle","overRightHandle","overTopHandle","overBottomHandle","_me$reset3","rectEl","over","highlightHandle","unHighlightHandle","allowEdgeSwitch","getExtremalSizePX","eventObject","_me$reset4","overStartHandle","overEndHandle","opposite","handleCount","getDynamicHandleSize","getPagePoint","tagSpaceRe","multiSpaceRe","TemplateHelper","ack","times","tpl","Toast","destroyTimeout","timeout","autoDestroy","showProgress","bottomMargin","b-toast-hide","progressElement","b-toast-progress","untoast","nextBottom","toasts","_toasts$0$nextBottom","_toasts$","hideTimeout","destroyTimer","toast","WidgetHelper","currentContextMenu","hasTooltipAttached","destroyTooltipAttached","RandomGenerator","random100","randomCache","rndIndex","randomNumbers","num","nextRandom","used","lorem","DataGenerator","rnd","rndTime","rndRating","randomHeight","initialId","addSkills","rowCallback","_count$initialId","rndText","firstNames","surNames","teams","foods","colors","cities","skills","_rowCallback","firstName","fromArray","surName","startDay","row","city","team","age","food","score","rank","percent","rating","relatedTo","notes","randomArray","additionalData","rowHeight","overrideRowCount","rows","generator","generate","generateData","hasOwnProperty$1","cacheKey","setParser","Default","defaultParse","Formatter","NULL","_cache","_null","initialize","resolvedOptions","Parser","Navigator","itemsTabbable","keyEventTarget","processEvent","itemSelector","activeItem","focusCls","allowCtrlKey","allowShiftKey","scrollDuration","datasetIdProperty","_activeItem","aria-activedescendant","navigationEvent","_navigationEvent","composedKeyName","getComposedKeyName","validTarget","inlineFlow","itemContainer","itemPositionStyle","itemDisplayStyle","itemFloatStyle","prevKey","nextKey","navigatePrevious","navigateNext","_me$keys","keyHandler","getDefaultNavigationItem","triggerNavigate","getAdjacent","skipScrollIntoView","previousActiveItem","fromWhere","_owner$previousSiblin","focusOutEvent","mouseDownEvent","itemsFocusable","onFocusGesture","_me$navigationEvent","skipNextClick","ignoreNavigation","oldActiveItem","isActive","needsFocus","_ownerCmp$scrollable","scrollSilently","oldTarget","onTargetChildListChange","_me$target$querySelec","_keyEventTarget","_this$ownerCmp","navEvent","oldItem","escapeRegExp","digitsRe","newFormatter","numFormatRe","unicodeMinus","NumberParser","numFmt","maximumFractionDigits","_decodeStyle","currencyDisplay","decimal","decimalRe","stripRe","dot","fmtDef","decFmt","zero","zeroDec","_as","truncator","loc","m2","m4","useGrouping","integer","_minMax","cacheAs","setMin","setMax","minimumFractionDigits","minimumIntegerDigits","maximumSignificantDigits","minimumSignificantDigits","significant","WebSocketManager","onWsOpen","onWsClose","onWsMessage","onWsError","autoConnect","address","open","connector","detachSocketListeners","isConnecting","_this$connector","readyState","webSocketImplementation","CONNECTING","isOpened","_this$connector2","OPEN","isClosing","_this$connector3","CLOSING","isClosed","_this$connector4","CLOSED","attachSocketListeners","_openPromise","createWebSocketConnector","destroyWebSocketConnector","command","_this$connector5","send","WebSocket","userName","Finalizable","finalizer","isFinalized","isFinalizing","_awaitFinalizer","doFinalize","ABORTED","INIT","DRAGGING","DROPPED","lockDirections","DragContext","itemElement","cleaners","endEvent","lastMoveEvent","previousTarget","scrollerAction","_valid","dropping","pending","peek","dragLeaveTarget","dragMove","dragEnterTarget","droppable","droppables","droppableSelector","dropRootElement","getId","endDrag","beforeDrag","cleaner","lastEvent","dragSwallowClickTime","syncFlags","track","dragDrop","isKey","isDragToggleKey","fakeKey","getDistance","draggingBodyCls","activeCls","dragLock","dragRootElement","startDrag","trackDrag","STATE","DragProxy","drag","Draggable","draggingClsSelector","dragDocumentListeners","dragItemSelector","dragItemOverCls","dragMinDistance","dragSameTargetDrop","dragSelector","dragTouchStartDelay","draggingItemCls","draggingStartedCls","draggableCls","activeDrag","dragEventer","draggingClassElement","dragEnd","finalizeDrag","dragOver","_nextDragId","dragStart","_drag$targetElement","moveDrag","configureListeners","beginDrag","_me$_dragRootDetacher","onDragItemMouseMove","_dragRootDetacher","_e$target$releasePoin","_e$target","pointerId","releasePointerCapture","onDragItemMouseEnter","onDragItemMouseLeave","enterLeaveEvent","oldOverItem","_me$onDragItemMouseLe","_me$onDragItemMouseEn","keyDown","keyUp","onDragPointerDown","setupDragContext","Droppable","dropEventer","droppableCls","_this$dropEventer","_this$dropEventer2","_this$dropEventer3","_this$dropEventer4","dragLeave","_dropping","dragEnter","removeCls","LoadMaskable","loadMaskDefaults","loadMaskError","MILLIS_PER_MINUTE","MILLIS_PER_HOUR","MILLIS_PER_DAY$1","timeRe","DayTime","timeOfDay","getTimeOfDay","startShift","endTime","isDayView","dayStartShift","dayStartTime","dayEndTime","timeStart","timeEnd","startHour","startTimeOffsetMs","today","startOfDay","outside","shiftDate","makeKey","date0","date1","_dateRangeArgs","timeRange","dayStart","eventRecord","start1","start2","endingDate","MIDNIGHT","MILLIS_PER_DAY","Month","hideNonWorkingDays","sixWeeks","updateDayNumbers","newDate","oldDate","dayColumnIndex","weekCount","monthStart","monthEnd","startWeekDay","endWeekDay","yearChanged","monthChanged","getWeekId","_year","_month","startDayOfMonth","endDayOfMonth","weekBase","calculateWeekBase","jan1","january","getOtherMonth","dec31Week","has53weeks","weekOfYear","getWeekStart","otherMonth","updateDate","_nonWorkingDays","dayCount","dayOfMonth","weekDates","weekNo","ownerMonth","dayTime","visibleColumnIndex","visibleDayColumnIndex","isNonWorking","isHiddenDay","columnIndex","isOtherMonth","tomorrow","dayOfDate","isRowStart","isRowEnd","visibleColumnCount","canonicalDayNumbers","canonicalDay","weekLength","ScrollManager","zoneWidth","scrollSpeed","startScrollDelay","stopScrollWhenPointerOut","activeScroll","monitoring","isScrolling","defaultDirection","attachedElements","createMonitor","_me$stopMonitoring","ScrollManagerMonitor","monitor","monitoredElement","scrollRelativeLeft","scrollRelativeTop","startScrollLeft","startScrollTop","pointerleave","stopScroll","scrolling","performScroll","scrollRequested","scrollTimeout","releaseScroll","speed","scrollDeltaX","scrollDeltaY","requestScroll","startScroll","oldScrollLeft","newScrollLeft","oldScrollTop","newScrollTop","_this$config","_this$config$callback","verticalElement","getRelativeScroll","realignTransitions","isBoolean","immediatePromise$3","mouseOffsetX","mouseOffsetY","getHtml","trackMouse","updateContentOnMouseMove","hideOnDelegateChange","anchorToTarget","hoverDelay","dismissDelay","hideDelay","loadingMsg","allowOver","pointerOverOutDetacher","pointerover","pointerout","_this$pointerOverOutD","_anchorToTarget","triggeredByEvent","timeStamp","abortDelayedShow","handleForElementOver","handleForElementOut","currentOverElement","_me$activeTarget","isNewTarget","needsHide","internalOnPointerOut","hasTimeout","abortDelayedHide","updateActiveTarget","updateContent","afterShowByTarget","delayShow","_me$currentAnimation","lastHidden","quickShowInterval","showByTarget","listeningForMouseMove","mouseMoveRemover","isOrphaned","inAfterShow","configuredAllowOver","allowOverlisteners","_me$allowOverlistener","tip","hasContent","_me$mouseMoveRemover","toFront","_me$activeTarget2","transitionEndDetacher","transitionend","_me$mouseMoveRemover2","_me$transitionEndDeta","_me$mouseMoveRemover3","_me$transitionEndDeta2","htmlOrPromise","showAsyncMessage","updateHtml","isHiding","hideVetoed","isWithinTarget","isElementOut","containingElement","forElementContainsTarget","skipCreating","_rootElement$bryntum","_rootElement$bryntum$","_rootElement$bryntum2","resetCfg","isShared","forComponent","gatherDataConfigs","configProp","DragTipProxy","_this$tooltip","Labelable","labelPosition","labelCls","labelWidth","hasLabel","b-has-label","lbl","labelElement","inputWrap","flexBasis","FieldContainer","collapser","syncableConfigs","syncConfigTriggers","syncChildConfigs","_this$owner$inline","togglingCollapse","_this$collapser","setCollapsedCls","setOwnerCls","_this$owner$element","destProp","afterSyncChildConfigs","autoLayout","collapseAnimation","containerWrapElement","byWeight","byWeightReverse","emptyArray$3","Field$1","labels","required","clearable","revertOnEscape","hint","hintHtml","inputWidth","keyStrokeChangeDelay","editable","triggers","autoSelect","autoComplete","spellCheck","validateOnInput","inputAttributes","inputType","inputAlign","updatedClsDuration","inputReadOnly","containerDefaults","containValues","highlightChanged","_me$inputListenerRemo","_me$keyListenerRemove","_me$container","errorTip","getSharedErrorTooltip","inputListenerRemover","keyListenerRemover","invalidValueError","doNotCreate","sharedErrorTooltip","errorTooltip","errors","getErrors","changeOnKeyStroke","internalOnChange","_fieldKeyMap","triggerName","_me$triggers$triggerN","valueOnFocus","validOnFocus","syncRequired","onEditComplete","innerElements","triggerInstances","startTriggers","endTriggers","setupLabel","innerChildren","b-has-start-trigger","b-no-input","b-readonly","b-field-container","b-field-container-inline","b-field-container-wrap","_me$keyListenerRemove2","syncEmpty","updateInputReadOnly","syncInvalid","keyEventElement","inputElement","inputCls","caretPos","textSelection","selectionStart","selectionEnd","selectionDirection","_input$value","hasTextSelection","selectAll","supportsTextSelection","setSelectionRange","createTextRange","range","_this$triggers","isEmptyInput","syncHint","hintValue","hintElement","updatingInvalid","onBeforeShow","syncInputReadOnly","$triggers","Trigger","stepTriggers","back","forward","validity","hasChanged","inputting","triggerChange","_lastValue","syncInputFieldValue","_overflowTwinSync","skipHighlight","inputValueAttr","inputValue","triggerFieldChange","_me$changeOnKeyStroke","fetchInputValue","needsInputSync","_this$inputValue","stopEvent","wasValid","valueChanged","clearError","_me$parent","setError","remover","focusOut","_errors","stateName","errorKeys","customError","validationMessage","containerCollapsed","_this$container","syncContainer","_this$container2","_this$container2$sync","storedValue","_storedValue","cvt","FieldTrigger","isKeyEvent","SpinTrigger","upButton","b-spin-up","downButton","b-spin-down","_this$clickRepeater","clickRepeater","doSpinUp","doSpinDown","TextField","PickerField","pickerAlignElement","autoExpand","picker","_this$globalTapListen","globalTapListener","updateEditable","_me$globalTapListener","nonEditableClickTarget","onTriggerClick","_this$constructor$res","oldPicker","_picker","autoClosePicker","pickerVisible","callSuper","hidePicker","internalOnKeyEvent","minChars","ignoreTriggerClick","togglePicker","showPicker","pickerHideShowListenersAdded","aria-controls","aria-expanded","focusPicker","pickerTapOutRemover","pickerKeyDownRemover","_me$pickerTapOutRemov","_me$pickerKeyDownRemo","forwardedEvent","KeyboardEvent","defaultPrevented","itemRange","selectedCls","selectIconCls","displayField","multiSelect","toggleAllIfCtrlPressed","selectAllItem","getItemStyle","getItemCls","groupHeaderTpl","groupName","allowGroupSelect","selected","activateOnMouseover","Ctrl+a","_me$store","refresh","_this$navigator","_e$_target","restoreActiveItem","allRecordsTpl","itemWrapperTpl","selectAllItemTpl","getItemClasses","itemContentTpl","itemIconTpl","itemTpl","allSelected","_me$_navigator","_navigator","groupHeaderCls","isSelected","_externallyOwnedSelection","toReplace","noMatches","deselectAll","encodeAttributeSelector","data-id","refreshItem","_me$navigator","paintListener","contentTpl","clearItems","refreshCount","updateSelectAllState","paint","setStartAfter","_recordOrId","oldSelected","initialSelection","_selected","_store","storeListeners","beforeLoad","afterRequest","groupchange","oldNavigator","minAlignHeight","retVal","alignZone","currentTarget","onItemClick","onSelectAllClick","lastClicked","unselectedCls","_this$element$querySe","toSelect","toDeselect","navigatorClass","ChipView","iconTpl","closeHandler","onClick","errorFieldRequired","errorValidateFilter","errorRecordNotCommitted","primaryFilter","valueField","pickerWidth","listItemTpl","displayValueRenderer","listCls","filterOnEnter","hideTrigger","overlayAnchor","keyStrokeFilterDelay","triggerAction","filterOperator","hidePickerOnSelect","chipView","chipStore","filterSelected","emptyText","valueCollection","clearTextOnPickerHide","destroyStore","multiValueSeparator","createOnUnmatched","inlinePicker","localizeDisplayFields","buildItems","queryLast","usingRecordAsValue","_chipView","_this$_chipView","chipViewElement","oldChipView","ComboChipView","_me$_chipViewEventDet","_chipViewEventDetacher","oldMultiSelect","fixValue","chipViewEl","mousedownEvent","filterOnInput","_minChars","_validateFilter","isItemStore","itemModel","valueFieldDefinition","usesChipView","_me$hidePickerOnSelec","_me$_chipView","isUserAction","isAjaxStore","arrayPassed","vcGen","oldValueCollection","noChange","storeFilters","selectedItemsFilter","oldStore","_this$_store","selectionCount","_me$triggerAction","activatePicker","doFilter","lastQuery","syncInputWidth","inputLen","inputPadding","_inputPadding","getEdgeSize","measureText","_me$filterPromise","disableFilter","onAfterFilter","filterPromise","_me$hidePickerOnSelec2","cacheCurrentValue","_picker$navigator","_picker2","navigate","addNewRecord","onPickerHide","remoteAutoCommit","_exception$response","_exception$response$p","defaultRecordCreater","localizedDisplayFieldsMap","_item$displayField","localeString","ComboChipNavigator","inClickHandler","onKeyDown","updateActiveItem","getRecordFromElement","UndoRedoBase","showZeroActionBadge","alignItems","flexFlow","undoBtn","onAction","transactionsCombo","redoBtn","updateUndoRedoControls","recordingstop","restoringstop","queueReset","changeItems","fillUndoRedoCombo","combo","_this$stm","stmPos","BooleanCombo","positiveValue","positiveText","negativeValue","negativeText","changeStore","ButtonGroup","resetValueCache","isSettingValue","columns","relayEvents","btn","valueSeparator","CalendarPanel","showWeekNumber","showWeekColumn","disabledDates","headerRenderer","weekRenderer","cellRenderer","disableWeekends","hideNonWorkingDaysCls","dayCellCls","dayHeaderCls","disabledCls","otherMonthCls","weekendCls","todayCls","nonWorkingDayCls","dayNameFormat","minRowHeight","minColumnWidth","disableOtherMonthCells","disableOtherMonthCellsCls","hideOtherMonthCells","hideOtherMonthCellsCls","animateTimeShift","weeksElement","_this$tip","minValue","weekElements","weekdayCells","cellElements","parseKey","existingTip","pointerOver","updateHideNonWorkingDays","weekDayElements","shortDayNames","_this$scrollable","_this$scrollable2","_this$scrollable3","_localeNonWorkingDays","_localeWeekends","_this$scrollable4","currentMonth","dateChange","getCell","slideIn","updateShowWeekColumn","doRefresh","cell","cellDay","cellClassList","rowIndex","cellIndex","lastWorkingColumn","eachWeek","weekDayElement","weekCells","isDisabledDate","b-last-working-day","b-first-visible-cell","firstVisibleDate","visibleWeekCount","weeksContainerChildren","fill","weekRow","updateDayNameFormat","updateWeekStartDay","whenNotChecked","Checkbox","autoCollapse","checkedValue","uncheckedValue","syncHasText","textLabelCls","textLabel","_values$valueName","checkedElement","inputEl","partnerCheckbox","prevented","YearPicker","getYearButton","startYear","clickedYear","minYear","maxYear","yearButtonCount","endYear","ingestYear","oldStartYear","b-yearpicker-year","b-selected","DisplayField","generateMonthNames","getMonthNames","dateSort","ReadOnlyCombo","activeDate","prevYear","prevMonth","monthField","yearButton","nextMonth","nextYear","yearPicker","titleClick","minDate","maxDate","focusDisabledDates","editMonth","alwaysRefreshOnMonthChange","outOfRangeCls","externalCellRenderer","internalCellRenderer","_activeDate","clamp","_this$_yearPicker","_yearPicker","_this$yearButton","_this$monthField","activeCell","longestMonth","updateActiveDate","isSelectedDate","isActiveDate","isStart","updateClassList","onUIDateSelect","onMonthDateChange","lastClickedDate","activatingEvent","handleMultiSelect","_selection","singleRange","rangeEnds","toggleFn","clickedRangeEnd","rangeStartDate","newSize","oldSelection","DateSet","_selection2","_selection2$forEach","changeDate","_yearpicker","isNavigating","oldActiveDate","wasActiveDate","wasActiveCell","oldMonth","goto","baseDate","firstDateOfNewMonth","lastDateOfNewMonth","_this$focusElement","oldYearPicker","_this$minDate","_this$maxDate","fallbackFormat","timeFormat","keepTime","pickerFormat","validateDateOnly","calendarContainerCls","onSelectionChange","_isPickerInput","backShiftDate","_step","forwardShiftDate","pickerConfig","isValidDate","MS_PER_DAY","transformTimeValue","timeValue","copyTimeValues","transformDateValue","changeValue","updateValue","NumberField","largeStep","decimalPrecision","leadingZeroes","spin","changeOnSpin","bufferedSpinChange","rawValue","accept","acceptValue","getAfterValue","afterValue","parseStrict","accepted","_changedBySilentSpin","okMin","okMax","applySpinChange","silenceChange","_me$triggers","_me$triggers$spin","_me$triggers$spin$cli","truncate","formatted","formatValue","decimals","decimalPlaces","internalOnInput","_formatter","_lastFormat","valueIsNaN","isRefreshing","pickerToTime","_pm","_super$onInternalKeyD","triggerTimeChange","_initialValue","pm","_is24Hour","_min","_max","is24HourFormat","amButton","pmButton","is24","b-icon-clock-live","keepDate","maxTime","minTime","_this$pickerKeyDownRe","onPickerShow","isRequired","animationDelay","_value2","DateTimeField","dateField","timeField","$settingValue","dateAndTime","_this$timeField","$isInternalChange","_this$dateField$weekS","_this$dateField","highlightDate","highlightTime","updateInvalid","inputTemplate","allowNegative","allowedUnits","allowedUnitsRe","calcValue","unitWithDefault","oldVal","_this$triggers$spin","_this$triggers$spin$c","newMagnitude","newUnit","parsedDuration","roundMagnitude","Fit","Editor","hideTarget","matchFont","fitTargetContent","inputField","blurAction","completeKey","cancelKey","invalidAction","completeOnChange","onTargetSizeChange","beforeHide","editObject","_inputField$clearErro","_inputField$focus","_inputField$value$","targetFontSize","targetFontFamily","updateSize","fontSize","fontFamily","editing","editingRecords","completeEdit","cancelEdit","allowMouseEvents","isFinishing","allowInvalid","_inputField$focus2","_inputField$focus3","_context$editorContex","editorContext","_inputField$focus4","finishEdit","setterName","createdInputField","oldInputField","targetEl","lastMatchSize","SUPPORTED_FIELD_DATA_TYPES","isSupportedDurationField","_field$column","column","EMPTY_STRING","defaultValueFieldPlaceholders","_fields","_filter","propertyPicker","operatorPicker","onPropertySelect","onOperatorSelect","onCaseSensitiveChange","propertyFieldConfig","operatorFieldConfig","allPropertyPickerClasses","allOperatorPickerClasses","populateUIFromFilter","allChildInputs","valueFields","newDisabled","newReadOnly","newPropertyLocked","newOperatorLocked","newOperators","operators","defaultOperators","outOperators","dataType","op","isMultiSelectValueField","_this$_filter","_this$propertyFieldCo","propertyLocked","_this$operatorFieldCo","operatorLocked","valueFieldCls","onValueChange","filterValues","operatorArgCount","valueFieldPlaceholders","valueFieldCfg","getUniqueDataValues","populate","flat","extraValuesToInclude","_me$_filter","uniqueValues","sortedValues","sortStrings","durationStr","sortDurations","sortNumerics","timestamp","_this$_filter2","_this$fields","_this$fields$find","propertyOptions","operatorOptions","_operatorArgCountLookup","operatorArgCountLookup","buildOperatorArgCountLookup","onFilterChange","newStore","_me$_store","onStoreRefresh","valueFieldRow","getValueFieldConfigs","_valueFields","refreshCaseSensitive","_me$_filter2","_me$_filter3","_event$record","_fieldType","refreshOperatorPicker","refreshValueFields","_event$record2","wasMultiSelectValueField","prevArgCount","forceRefreshValueFields","fieldIndex","_this$_filter3","newFieldType","missingValue","argCount","notEmpty","=","!=",">=","<=","notBetween","isNotIncludedIn","propertyAndOperator","keyBy","Label","validateConfig","addFilterButton","updateStore","someFiltersNotShown","newFields","pickers","oldFilters","newFilter","removeFilter","nextFilterId","getPickerRowConfig","canManageFilter","filterPicker","appendFiltersFromStore","newShow","newText","addFilterButtonDefaultText","_me$filters","canManage","appendFilter","limitToProperty","getFieldFilterPickerConfig","childPickerType","canDeleteFilter","separatorText","activeCheckbox","getFilterPickerConfig","removeButton","allInputs","childInputTypes","filterIndex","getFilterIndex","getFilterPicker","updateStoreFilter","eventSource","getPickerRow","_nextId","pickerRow","newFocusWidget","removeFilterAt","_me$store2","_isUpdatingStore","storeFiltersById","byId","storeFilter","filterRow","setAllActiveStatus","newActive","showAddFilterButton","addFilterButtonText","FieldSet","inlineInternal","legendElement","b-fieldset-legend","b-field","b-vbox","labelElement > headerElement","b-label","b-align-start","_this$inline","syncInlineInternal","FileField","multiple","files","_multiple","buttonConfig","fileFieldConfig","onButtonClick","fileField","onFileFieldChange","_thisIsAUsedExpression","fileTip","fileButton","_fileTip","pickFile","FilterField","MessageDialogConstructor","showClass","okButton","yesButton","cancelButton","showDialog","textField","oldShowClass","isPrompt","onCancelClick","onOkClick","doResolve","MessageDialog","firstPageButton","previousPageButton","pageNumber","pageCount","nextPageButton","lastPageButton","reloadButton","spacer","dataSummary","beforerequest","afterrequest","onStoreBeforeRequest","updateSummary","previousPage","clipByDir","collapseExposeEdge","emptyObject$4","translateByDir","PanelCollapserOverlay","autoCloseDelay","revealing","recollapseTool","toggleReveal","doAutoClose","innerElementRect","innerElementClipRect","_me$autoCloseLeaveDet","_me$autoCloseClickDet","autoCloseLeaveDetacher","autoCloseClickDetacher","_panel$focusInEvent","clipRect","expandEnd","expandRevert","overlayElement","inset","clipPath","srcElement","horzDirRe","dim","_panel$tools","b-panel-overlay","onOverlayTransitionDone","overlayHeaderElement","b-panel-header","b-panel-overlay-header","PasswordField","Radio","internalOnClick","RadioGroup","existingOptions","refPrefix","option","isRadio","isOurRadio","beforeChange","lastValue","wrapRadioEvent","convertOption","arrowKeys","Slider","showValue","showTooltip","thumbSize","triggerChangeOnInput","inputId","hasText","b-disabled","percentProgress","updateUI","_me$tooltip","thumbPosition","inflate","existingTooltip","_this$unit","roundTo","_me$unit","_me$_tooltip","_me$_tooltip2","SlideToggle","toggledCls","innerEls","toggleElement","slideThumb","classesHV","hasFlex","verticality","Splitter","orientation","nextNeighbor","previousNeighbor","syncState","_this$mouseDetacher","mouseDetacher","b-splitter","currentOrientation","nextWidget","previousWidget","_me$stateDetector","stateDetector","watchNeighbor","neighbor","_verticality$me$orien","flexDirection","prevRect","nextRect","topMost","bottomMost","_me$mouseDetacher","prevHasFlex","nextHasFlex","flexed","prevWidth","prevHeight","nextWidth","nextHeight","prevStyle","nextStyle","flexGrow","newPrevWidth","newNextWidth","newPrevHeight","newNextHeight","_me$mouseDetacher2","Tab","tabPanel","titleProperty","titleSource","setSize","tabindex","aria-selected","aria-setsize","aria-posinset","b-tabpanel-tab","b-active","b-tab-first","b-tab-last","_me$itemChangeDetache","_me$itemHideDetacher","itemChangeDetacher","itemHideDetacher","beforeChangeHidden","beforeUpdateDisabled","syncMinMax","_maxWidth","_maxHeight","tabMinWidth","tabMaxWidth","hidingChild","$isDeactivating","$isActivating","activateAvailableTab","disablingChild","isTab","TabBar","firstTab","tabAt","lastTab","tabCount","tabs","b-tabpanel-tabs","syncTabs","activeIndex","animationClasses","Card","hideChildHeaderCls","animateCardChange","_activeIndex","activateSiblingOf","showingChild","removeAt","prevActiveIndex","widgetPassed","prevActiveItem","newActiveItem","chatty","_owner$onBeginActiveI","prevItemElement","newActiveElement","animateDetacher","activeCardChange","onBeginActiveItemChange","cardChangeAnimation","wasMonitoringSize","setActiveItem","onActiveItemChange","oldActiveIndex","TabPanel","activeTab","animateTabChange","autoHeight","tabBar","activeTabItemIndex","_tabBar$tabs$activeTa","b-tabpanel-body","_activeTab$tab","tabPanelBody","makeTabConfig","tabBarItems","tabItems","_activeTab","isDisabledOrHiddenTab","findAvailableTab","oldActiveTab","indexOfTab","cardChange","updateActiveTab","_layout$setActiveItem","tabSelectionPromise","updateItems","_this$tabBar","_this$tabBar2","$measureHeight","applyAutoHeight","activeItemChangeEvent","TextAreaField","TextAreaPickerField","_this$_picker","displayElement","realInput","onPickerKeyDown","_me$value","ns$1","typePrio","outline","byDatasetOrder","order","getField","returnFalse","Histogram","series","preserveAspectRatio","omitZeroHeightBars","getRectClass","getBarTip","getBarText","getBarTextRenderData","getBarTextTip","scheduleRefresh","createOnFrame","_me$tip","_tip","svgElement","svgRect","scaledSvgGroup","contentTemplate","histogram","_series","_topValue","histogramElements","elConfig","drawText","unscaledSvgGroup","onBeforeTipShow","barStyle","defaultWidth","datum","rectConfig","barTip","coords","outlineElement","barWidth","command1","command2","barHeight","defaultY","unscaledSvgGroups","barText","renderData","Scale","scalePoints","scaleMaxPadding","oldHorizontal","scaleMax","posFactor","isLabelStep","tick","AvatarRendering","colorPrefix","failedUrls","_failedUrls","initials","imageUrl","defaultImageUrl","resourceRecord","getImageConfig","getIconConfig","getResourceInitialsConfig","b-resource-avatar","b-resource-image","b-resource-icon","namedColor","isNamedColor","hexColor","b-resource-initials","backgroundColor","initialsEl","replaceChild","productId","storeEmail","downloadId","productField","addToMailList","triggerDownload","trackingField","redirectField","listNameField","companyField","getCookie","gaScript","trackDownload","dataLayer","gtag","send_to","isBryntumOnline","Location","isLocation","grid","focusableSelector","columnId","_me$record","visibleColumns","actionTargets","_rowIndex","_store$getAt","hideHeaders","_column","_columnIndex","visibleRowIndex","rowManager","lastFullyVisibleTow","dataIndex","firstFullyVisibleTow","isSelectable","_this$column","_this$grid$columns$vi","where","rowMin","rowMax","colMax","atFirstRow","atLastRow","atFirstColumn","atLastColumn","PREV_CELL","NEXT_CELL","UP","DOWN","firstFullyVisibleRow","FIRST_COLUMN","LAST_COLUMN","FIRST_CELL","LAST_CELL","PREV_PAGE","NEXT_PAGE","_cell","_grid$columns$getById","_grid$columns$getAt","getRowById","getRow","focusableFinder","focusableFinderCell","isActionable","isColumnHeader","isCell","validWidth","Column","originalSortFn","columnOwned","_me$field","_grid","emptyCount","noFieldSpecified","hasComplexMapping","headerWidgets","initHeaderWidgets","visibleChildren","isCollapsible","_this$children","onCollapseChange","updateHeaderAriaLabel","updateCellAriaLabel","headerAriaLabel","cellAriaLabel","_this$location","_this$location2","_cellAriaLabel","_this$data","_this$data$editor","_this$data$editor$des","editor","destroyHeaderWidgets","headerWidgetMap","columnAutoCls","autoClsMap","cellContext","_Column$autoClsMap","cellCls","internalCellCls","autoCls","generateAutoCls","isEditing","b-cell-dirty","isFieldModified","b-focused","isFocused","b-auto-height","b-editing","locked","region","sortable","groupable","processCellEditor","defaultEditor","getRawValue","subGrid","_subGrid","_this$grid","getSubGridFromColumn","subGridElement","getHeaderElement","nextVisibleSibling","isLastInSubGrid","textWrapper","headerText","htmlEncodeHeaderText","hidingParent","isTogglingAll","anyVisible","_me$meta$visibleChild","forceVisible","_me$grid$columns","_me$grid$columns2","childColumn","collapseMode","toggleChildren","_me$grid$columns3","_me$grid$columns4","oldFlex","onToggle","generatedIdIndex","allIndex","_this$subGrid","calcMinWidth","minChildWidth","calculateMinWidth","widthMin","widthMax","fitMode","rowElement","cellElement","beginGridMeasuring","longest","updatingSingleRow","isMeasuring","resizeToFitIncludesHeader","$headerPadding","paddingLeft","topIndex","rowCount","renderCell","endGridMeasuring","focusedCell","navigateRight","_focusedCell","getAdjacentVisibleLeafColumn","refreshCell","_content","sealed","_this$sortable","renderer","internalRenderer","internalHeaderRenderer","columnDefinitions","lockedColumnSorters","ColumnStore","autoAddField","_columnStore","subGridCollapse","subGridExpand","onStoreChange","updateChainedStores","_modelClass","allColumns","totalFixedWidth","col","childCol","calculateFixedWidth","topColumns","_visibleColumns","clearCaches","_this$masterStore","columnOrId","bottomColumns","findRecord","_store$modelClass","_store$modelClass$fie","columnClass","getColumnClass","defaultRegion","fieldDefinition","usesAutoHeight","usesFlexAutoHeight","simpleRenderer","columnTypes","_this$grid$store","separate","columnType","columnResizeEvent","registerColumnType","ActionColumn","filterable","searchable","htmlEncode","resizable","groupHeaderReserved","updateAutoWidth","disableIfGridReadOnly","externalRenderer","callExternalRenderer","_column$actions","inGroupTitle","_this$externalRendere","b-action-ct","actionConfig","_tooltip$startsWith","showForGroup","customRendererData","encodeConfig","b-tool","b-action-item","_column$actions2","actionIndex","actionHandler","_me$actions","groupActions","oldActions","actionOriginal","actionsHtml","NumberColumn","filterType","AggregateColumn","includeParentInChangeSet","columnStore","configuredAlign","configuredEditor","getRowFor","isMathFn","WidgetColumn","cellInfo","isExport","clearCell","widgetCfg","_me$onBeforeWidgetSet","_me$onAfterWidgetSetV","widgetNextSibling","recreate","onBeforeWidgetCreate","onAfterWidgetCreate","isSelectionColumn","onBeforeWidgetSetValue","valueProperty","onAfterWidgetSetValue","CheckColumn","showCheckAll","externalHeaderRenderer","externalOnBeforeWidgetSetValue","externalOnAfterWidgetSetValue","internalOnBeforeWidgetSetValue","internalOnAfterWidgetSetValue","_this$headerCheckbox","headerCheckbox","updateRecord","_this$externalOnBefor","isInitialSet","_this$externalOnAfter","cellEdit","updateCheckAllState","checkbox","DateColumn","PercentColumn","lowThreshold","summaryRenderer","aria-Valuemin","aria-Valuemax","aria-Valuenow","b-percent-bar","b-zero","b-low","RatingColumn","emptyIcon","filledIcon","b-rating-cell-inner","b-not-editable","filled","b-rating-icon","b-filled","b-empty","starIndex","RowNumberColumn","bindStore","initial","asyncEventSuffix","resizeToFitContent","cellPadding","TemplateColumn","TimeColumn","currentParentHasIcon","TreeColumn","hideable","shouldHtmlEncode","originalRenderer","treeRenderer","gridMeta","isCollapsed","innerConfig","rowClasses","b-tree-parent-row","b-tree-collapsed","b-tree-expanded","b-loading-children","outputIsObject","_grid$hasFrameworkRen","rendererHtml","hasFrameworkRenderer","cellContent","_record$children","expanderIconCls","expandIconCls","collapseIconCls","folderIconCls","collapsedFolderIconCls","expandedFolderIconCls","b-tree-expander","b-empty-parent","leafIconCls","b-tree-icon","isRow","assignCls","subGrids","_record$children2","_record$children3","elements","aria-owns","indentSize","GridRowModel","consumerToFeatureMap","consumerToDefaultFeatureMap","DEFAULT_FOR_TYPE","remapToBase","Grid","Scheduler","SchedulerPro","Gantt","classNameFix","GridFeatureManager","onByDefault","forType","consumerFeaturesMap","consumerDefaultFeaturesMap","typeName","getTypeNameFeatures","isDefaultFeatureForTypeName","typeChain","validNonEditingKeys","F2","validEditingKeys","CellEdit","continueEditingOnCellClick","addNewAtEnd","autoEdit","editNextOnEnterPress","editorClass","touchEditDelay","focusCellAnimationDuration","gridListeners","renderRows","cellClick","changeTotalHeight","confirm","_column$_cellEditor","_cellEditor","cancelEditing","activeRecord","_this$editorContext","cellEditor","leftOffset","editTargetSelector","editorTarget","isEditor","getEditorListeners","onEditorKeydown","instantUpdate","cellEditValueSetter","wrapProperty","isDateField","rowId","focusIn","beforeComplete","beforeCancel","cellEditorContext","cellclick","removeEditingListeners","muteEvents","viewportResize","isForward","canEdit","newRecordConfig","displayRecordAtBottom","normalizeCellContext","_grid$focusedCell","firstVisibleRow","_cellContext$id","expandTo","getEditingContext","focusCell","getEditorForCell","addCls","startEdit","finishEditingPromise","bindCallback","finalizeCellEdit","waitForAnimations","cellSelector","finishEditing","startEditing","onCellClick","_lastCellClicked","_lastCellClickedTime","onTriggerEditEvent","_client$features$cell","cellMenu","refreshEdit","backspace","onEnterKeyPress","onTabKeyPress","nextCell","internalNextPrevRow","doAddNewAtEnd","getAdjacentEditableCell","currentEditableFinalizationResult","finalizationResult","isScrollbarOrRowBorderOrSplitterClick","toCell","isEditableCellClick","bodyContainer","registerFeature","CellMenu","doSelect","enableCellContextMenu","cellData","getCellDataFromEvent","removeRow","cellMenuItems","onItem","showMenu","CellTooltip","tooltipRenderer","processConfig","getTooltipContent","getColumnFromElement","initTip","arg","cellTooltip","lastRecord","lastRecordGeneration","lastColumn","storeListenerName$1","ColumnAutoWidth","unbindStore","lastSync","columnAutoWidthPending","_me$client$features$c","storeGeneration","syncAutoWidthColumns","autoWidth","resizingColumns","afterColumnsResized","ColumnDragToolbar","columnReorder","onColumnReorderBeforeDestroy","detachFromColumnReorder","initialized","reorderDetacher","showToolbar","gridheaderdrag","onDrag","gridheaderabort","hideToolbar","gridheaderdrop","onDrop","getColumnDragToolbarItems","groups","buttonHideTimer","_info$targetElement","hoveringButton","buttonEl","ColumnPicker","createColumnsFromModel","groupByRegion","regions","getSubGrid","buildColumnMenu","createAutoColumnItems","groupByTag","tags","getColumnsForTag","itemEl","refreshTagMenu","generateColumnForField","forColumn","subItem","currentRegion","visibleInRegion","itemConfig","menuCls","showColumnPicker","columnPicker","getColumnPickerItems","onColumnToggle","hideColumn","_features$headerMenu","_item$menu","siblingItems","hideItem","headerMenu","lastVisibleItem","siblingItem","parentItem","ColumnRename","_this$editor","rename","_this$client$getHeade","getHeaderDataFromEvent","ColumnReorder","_this$dragHelper","_this$dragHelper2","dragHelper","gridEl","headerContainer","ignoreSelectors","columnEl","beforeDragStart","onBeforeDragStart","onDragStart","drop","targetHeader","sealedColumns","columnDragToolbar","headerContainerBox","onInvalidDrop","onHeader","onColumn","toRegion","groupNode","ColumnResize","liveResize","resizer","beforeresizestart","onBeforeResizeStart","resizestart","onResizeStart","resizing","onResizing","onResize","_this$resizer","GridFieldFilterPicker","newGrid","_newGrid$store","_cachedFields","allowedFieldNames","modelFields","getModelClassFields","allowedNameSet","_this$_cachedFields","getColumnFields","GridFieldFilterPickerGroup","fieldTypeMap","int","Filter","prioritizeColumns","isMulti","filterBar","closeFilterEditor","_this$filterTip","_this$filterEditorPop","filterTip","filterEditorPopup","beforeFilter","reRenderRows","filterText","columnFilters","isColumnFiltered","textEl","filterIconEl","bullet","columnFilter","displayValue","refreshRows","$filter","getCurrentMultiFilters","changeCallback","closeCallback","filterField","onClose","onClear","onKeydown","clearSiblingsFields","applyFilter","onEsc","sourceField","_this$filterEditorPop2","getMultiFilterPopupItems","getPopupDateItems","getPopupNumberItems","getPopupDurationItems","getPopupStringItems","_grid$store","existingFilter","propertyFieldCls","operatorFieldCls","getFilterType","getPopupItems","openPopup","_this$filterEditorPop3","filterDateEquals","filterDateBefore","filterDateAfter","filterNumberEquals","filterNumberLess","filterNumberMore","filterDurationEquals","filterDurationLess","filterDurationMore","_column$filterable$fi","_column$filterable$fi2","getFilterableValue","filterStringEquals","populateCellMenuWithDateItems","populateCellMenuWithNumberItems","populateCellMenuWithDurationItems","populateCellMenuWithStringItems","filterRemove","columnHasRemovableFilters","filterDisable","columnHasEnabledFilters","editFilter","showFilterEditor","_column$filterable","refreshHeaders","complexOperators","endsWidth","FilterBar","compactMode","clearStoreFiltersOnHide","filterFieldCls","filterFieldInputCls","filterableColumnCls","filterFieldInputSelector","filterableColumnSelector","filterParseRegExp","storeTrackingSuspended","onColumnFilterFieldChange","gridDetacher","onBeforeElementClick","_this$gridDetacher","destroyFilterBar","getColumnFilterField","_columnFilters","_this$grid$columns","destroyColumnFilterField","suspendStoreTracking","hideColumnFilterField","resumeStoreTracking","renderFilterBar","showFilterBar","hideFilterBar","renderColumnFilterField","getColumnFilterable","externalCls","buildFilterValue","setColumnFilterField","hasFilterFieldStoreData","isCombo","configuredValue","refreshData","_updatingFields","_this$_columnFilters","isTimeField","_column$filterable2","updateColumnFilterFields","isClearingFilter","_column$filterable3","_column$filterable4","parseFilterValue","toggleFilterBar","Group","groupSortFn","groupSummary","beforeRenderRow","groupRenderer","internalToggleCollapse","skipRender","renderFromRecord","afterToggleGroup","forceInnerHTML","b-group-row","b-grid-group-collapsed","groupHeaderColumn","$groupHeader","buildGroupHeader","applyDefault","groupColumn","isGroupHeaderColumn","isFirstColumn","_hasHtml","headerContainerElement","groupAsc","groupDesc","groupRemove","_store$groupers","grouped","removeGrouper","curGroupHeaders","getHeaderElementByField","_store$groupers2","columnGrouper","g","_focusedCell$record","SummaryFormatter","summaries","average","seed","valueCls","labelHtml","valueHtml","summaryHtml","GroupSummary$1","collapseToHeader","updateTarget","assertString","assertBoolean","eachElement","removeSummaryElements","rowEl","targetsHeader","b-group-footer","b-header-summary","isSummaryTarget","heightSetting","updateSummaryHtml","generateHtml","shouldUpdate","colField","forceFullRefresh","hasSummary","refreshColumn","HeaderMenu","moveColumns","enableHeaderContextMenu","timeAxisColumn","headerMenuItems","columnToMoveBefore","getColumnToMoveBefore","columnToMoveAfter","getColumnToMoveAfter","movePrev","_oldParent$children","moveNext","_oldParent$children2","camelCase","touchdown","touchup","MergeCells","eachSubGrid","setupSubGrid","renderDone","$mergedCellsElement","b-grid-merged-cells-container","isDisabling","use","refreshBounds","mergeCells","mergedRange","getMergeRange","heightChanged","mergedRanges","removeRange","syncDom","passthrough","fromIndex","toIndex","_element$elementData","_element$elementData2","mergeable","mergedCellsElement","_camelCase$event$type","eventData","getRowAt","onRangeClick","_parent$syncIdMap$syn","_parent$syncIdMap","_parent$releasedIdMap","createRangeDomConfig","_column$mergedRendere","b-grid-merged-cells","mergedRenderer","_fromIndex","_rowManager$topRow","_toIndex","_rowManager$bottomRow","topRow","bottomRow","domConfigMap","updateRange","buildMergedCellsConfig","mergedMap","redraw","hadRanges","refreshSuspended","boundsMap","topRendered","bottomRendered","rowOffsetHeight","rowsAbove","rowsBelow","earlierRecord","earlierValue","earlierIndex","laterRecord","laterValue","laterIndex","headerBounds","createRangeElement","QuickFind","hitCls","hitCellCls","hitCellBadgeCls","hitTextCls","SHOW_TEXT","headerField","colHeader","renderListenerInitialized","rendercell","hit","prevFound","columnFieldOrId","findByField","foundMap","findRe","showQuickFind","hideQuickFind","_originalContent","gotoClosestHit","_this$found","foundCount","_this$found$length","_this$found2","nextHit","focusedIndex","foundSorted","gotoHit","_grid$_focusedCell$id","_grid$_focusedCell","_grid$lastFocusedCell","currentId","lastFocusedCell","currentIndex","gotoFirstHit","_grid$_focusedCell$id2","_grid$_focusedCell2","_grid$lastFocusedCell2","prevHit","gotoLastHit","_me$foundMap","hitIndex","isQuickHit","nodeToReplace","nodeValue","spaceBefore","spaceAfter","_event$key","fromCellSelector","toCellSelector","F3","Shift+F3","Ctrl+g","Ctrl+Shift+g","Ctrl+Shift+f","Backspace","RegionResize","splitterEl","getLastRegions","splitterElement","nextRegion","nextSubGrid","splitterSubGrid","flip","availableWidth","dragContext","subGridEl","originalWidth","originalX","toggleSplitterCls","lastSubGrid","newClientX","difX","onExpandClick","startMove","toggleTouchSplitter","updateMove","endMove","resolveSplitter","_me$touchedSplitter","touchedSplitter","startSplitterButtonSyncing","stopSplitterButtonSyncing","RowCopyPaste","clipboardRecords","Ctrl+C","Ctrl+X","Ctrl+V","copyRecordText","cutRecordText","pasteRecordText","_isCut","getSelection","copyRows","pasteRows","isCut","_client$rowManager$ge","onRowCutOrCopy","_this$client$rowManag","toggleCls","referenceRecord","selectedRecord","isTreeGrouped","sortByIndex","recordsToProcess","generateNewName","clearClipboard","insertCopiedRecords","_this$client$rowManag2","originalName","counter","recordReference","idxPaste","cut","paste","rec1","rec2","idx1","idx2","storeRemoveActions","RowExpander","expanderBodyClass","expandedRowClass","recordStateMap","collapsingRecords","isGanttBase","fixedRowHeight","onTriggerEvent","addColumn","renderFromRow","_this$client$lastMous","_this$client$lastMous2","lastMousedownEvent","onGridBodyFocusIn","wasAnimating","toggleExpand","_isAddingExpanderColumn","_expander","columnPosition","refreshOnRecordChange","recordState","isCreated","topRecordIndex","topRecord","_recordState$expander","isRenderingAsync","loadingIndicatorHeight","expanderBodyHeight","expandElements","enableAnimations","waitForTransition","removeExpander","renderExpander","renderLoadingIndicator","lockCellHeight","cellHeight","_shouldScrollIntoView","scrollRowIntoView","loadingIndicatorText","_row$cells$","cells","renderings","continueRendering","expanderElement","renderResponse","renderRowsWithAnimation","unlock","RowReorder","targetSubGridElement","clone2","beforedragstart","dropIndicator","dropOverTargetCls","targetSubGrid","startRecord","originalRowTop","selectRow","addToSelection","r1","r2","_cellMenu$hideContext","_headerMenu$hideConte","cellEditDisabledState","hideContextMenu","overRecord","rowTop","_bodyRectangle","topQuarter","middleY","bottomQuarter","dropOnLeaf","reorderValid","_rowManager$getRowByI","hoverTimer","hoverExpandTimeout","visibility","oldPositionContext","_record$parent","animateProxyTo","finalizeReorder","_context$parent$child","_context$parent$child2","tryInsertChild","clearSorters","showGrip","Search","hitEls","expandNode","reapply","_col$formatValue","prevValue","belongsTo","clearHits","listenersInitialized","isHitFocused","gotoNextHit","currentColumn","fromStart","_me$found","fromCell","_me$found2","_cellElement$querySel","sel","Sort","multiSort","ignoreRe","sortableCls","sortedCls","sortedAscCls","sortedDescCls","beforeSort","storeSorters","sorterCount","leafColumn","_leafColumn$textWrapp","leafHeader","sortDirection","sortIndex","aria-sort","sortBy","sortAsc","sortDesc","addSortAsc","addSorter","addSortDesc","removeSorter","_column$sortable","syncHeaderSortState","StickyCells","contentSelector","currentTopRowCls","removeClasses","b-hover","gridViewport","currentTopRow","topRowChanged","updateStickyContent","notEnoughHeight","stickyContentHeight","stickyContentTop","stickyEls","lastProcessedTopRow","b-grid-sticky-row","cellClasses","stickyContent","eTop","Stripe","renderrow","even","b-even","b-odd","Summary$1","selectedOnly","hideFooters","updateSummaries","_column$summaries","initialSeed","selectionChange","immediatePromise$2","Tree","treeColumn","_treeColumn","isTreeColumn","beforeLoadChildren","loadChildrenException","beforeToggleNode","skipRefresh","isTogglingNode","promises","isCollapseAll","isExpandAll","expandOrCollapseAll","clickedExpander","expandOnCellClick","expandByKey","collapseByKey","Shift+ArrowRight","Shift+ArrowLeft","TreeGroup","hasFeature","parentData","parentCls","transformedData","originalStore","crudManager","isLoadingOrSyncing","commitAsync","levels","_levels","isApplying","suspendRefresh","flatMap","treeify","processParentData","processTransformedData","resumeRefresh","reinitialize","applyLevels","assertArray","RowsRange","PaperFormat","A6","A5","A4","A3","Legal","Letter","Orientation","portrait","landscape","FileFormat","pdf","png","FileMIMEType","ExportRowsCombo","ExportOrientationCombo","buildComboItems","ExportDialog","autoSelectVisibleColumns","hidePNGMultipageOption","columnsField","rowsRangeField","exporterTypeField","dialog","exporters","exporter","alignRowsField","repeatHeaderField","fileFormatField","exporterField","_previousDisabled","_previousValue","paperFormatField","orientationField","exportButton","columnsStore","exportable","applyInitialValues","_super$onBeforeShow","fieldRe","cellContentRange","Row","c1","c2","_elements","_elementsArray","_cells","_allCells","_regions","lastTop","_dataIndex","_top","removeElements","_index","ariaRowIndex","idObj","eachCell","onlyRelease","_rowBorderHeight","storeKnownHeight","updateCls","attribute","translateElements","positionMode","newTop","recordIndex","_maxRequestedHeight","_grid$processRowHeigh","rowElData","_rowHeight","rCls","recordCls","b-grid-row-updating","b-linked","b-original","lastRecordCls","getRowHeight","maxRequestedHeight","aria-level","_columnId","transient","useHeight","processRowHeight","updateElementsHeight","translateFromRow","afterRenderRow","_grid$features","cellElementData","rowElementData","getCellClass","rendererData","useRenderer","defaultRenderer","beforeRenderCell","shouldSetContent","print","frameworkPerformsFullRendering","_cellEdit$editorConte","renderTarget","moveContentFromCell","hasObjectContent","hasStringContent","disableHtmlEncode","autoSyncHtml","_grid$processCellCont","processCellContent","editorElement","setEndBefore","Exporter","translateURLsToAbsolute","keepPathName","filterStyles","htmlClasses","bodyStyle","bodyClasses","paperHeight","paperWidth","stylesheets","_stylesheets","origin","styleSheetNodes","styleText","converter","getStyleTagURLConverter","maskEl","overflowingHorizontally","firstVisibleIndex","lastVisibleIndex","lastVisibleRow","pages","beforeExport","prepareComponent","getPages","restoreComponent","restoreState","pagesExtractor","contentHeight","exportMeta","oldRowManagerConfig","prependRowBuffer","appendRowBuffer","adjustedRowBuffer","jumpToPosition","rowsRange","keepRegionSizes","enableDirectRendering","totalWidth","totalHeight","getVirtualScrollerHeight","firstVisibleDataIndex","alignRows","cloneElement","prepareElement","fakeRow","rowCls","_subGrid$splitterElem","_subGrid$header","_subGrid$footer","onAddRow","createPlaceholder","splitterWidth","headerId","footerId","subGridName","_range$cellElement","mergedCellsHtml","MultiPageExporter$1","exportingPageText","verticalPosition","lastExportedRowBottom","verticalPages","horizontalPosition","currentPageTopMargin","lastRowIndex","lastRowDataIndex","headerTpl","footerTpl","paperFormat","isPortrait","pageWidth","inchToPx","pageHeight","onlyVisibleRows","horizontalPages","measureElement","totalPages","totalRows","getVisibleRowsCount","headerHeight","footerHeight","bodyHeight","rowsOnFirstPage","rowsPerPage","remainingRows","adjustRowBuffer","restoreRowBuffer","hasMergeCells","hasActiveFeature","remainingHeight","firstRowIndex","overflowingHeight","lastDataIndex","collectRow","mergedCells","mergedCell","lastRow","exactGridHeight","footerContainer","onRowsCollected","scrollableTopMargin","previousTop","renderMergedCells","prepareHTML","collectRows","buildPageHtml","prepareExportElement","placeHolderText","contentHtml","marginTop","buildPage","stateNextPage","pageTpl","MultiPageVerticalExporter$1","processedRows","repeatHeader","getScaleValue","initialScroll","rowsHeight","firstRow","finishRowIndex","estimateTotalPages","clientHeaderHeight","nextPageTop","gridHeight","SinglePageExporter$1","centerContentHorizontally","currentTop","lastProcessedRowIndex","firstNewRowIndex","lastNewRowIndex","positionRows","totalClientHeight","widthScale","heightScale","isIE11","PdfExport$1","dialogClass","exportServer","exportDialog","fileName","fileFormat","clientURL","pagesPerRequest","exporterConfig","exporterType","openAfterExport","sendAsBinary","openInNewTab","exportMask","exportProgressMask","showErrorToast","_this$exportDialog","exportersMap","currentExportPromise","_currentExportPromise","_exportersMap","exporterClass","buildExportConfig","isExporting","getExporter","_me$exportDialog","export","contentGenerated","responsePromise","receiveExportContent","showLoadingToast","processExportContent","_me$exportDialog2","Content-Type","contentType","MIMEType","objectURL","responseBlobToObjectURL","getDownloadLink","responseJSON","mimeType","defaultExportDialogConfig","oldExportDialog","onExportButtonClick","dialogMask","finally","_me$exportDialog3","exportPromise","_exportPromise$abort","TableExporter","defaultColumnWidth","exportDateAsInstance","showGroupHeader","indent","indentationSymbol","normalizeColumns","generateExportData","generateColumns","generateRows","processColumn","exportedType","gridColumn","getColumnType","_column$field","isDateColumn","BooleanUnicodeSymbol","ExcelExporter$1","zipcelx","convertEmptyValueToEmptyString","_columns$index","processValue","sheet","cols","_exporter","Bar","_columns","cellEl","getBarCellElement","domWidth","domMinWidth","domMaxWidth","isHeader","cellLrPadding","Footer","fixFooterWidths","refreshContent","footersElement","footerText","fixCellWidths","RowManager","lastScrollTop","_rows","heightMap","totalKnownHeight","_totalHeight","averageRowHeight","scrollTargetRecordId","refreshDetails","topRowIndex","topRowTop","_rowManager","isRendering","preciseRowOffsetHeight","viewHeight","calculateRowCount","returnToTop","estimateTotalHeight","numRows","newRows","_focusedCell$cell","rowActive","removedRows","_me$getRowFor","onFocusedRowDerender","skipMatchRowCount","allowRowCountShrink","visibleRowCount","minRowOffsetHeight","maxRenderRowCount","_me$bottomRow","matchRowCount","indexDelta","toggleEmptyText","getRowFromElement","indexOrRow","findLast","lastFullyVisibleRow","prependBufferHeight","appendBufferHeight","oldY","oldAverage","clearKnownHeights","allHeightsKnown","getOffsetHeight","roughly","scrollingViewport","refreshBodyRectangle","getRecordCoordsByIndex","currentTopIndex","currentBottomIndex","calculateFrom","calculateTop","virtual","fromRow","storeCount","fromRowIndex","recordsAfter","toRowIndex","leftOverCount","displayRecordAtTop","forceRecordIndex","border","accumulated","targetIndex","startIndex","viewportTop","viewportBottom","targetRow","rowCenter","viewportCenter","deltaTop","clientRect","posInfo","warpIfNeeded","fillBelow","fillAbove","correctError","offsetRows","fillHeight","accumulatedHeight","recordCount","renderingRows","unknownCount","estimate","bottomRowTop","estimatedTop","setBottom","_grid$focusedCell2","xAxis","GridScroller","xScrollers","initScroll","_this$xScrollers","hideScroll","virtualScrollers","subGridScroller","Header$1","changeElement","b-grid-header-scroller","b-grid-headers","maxDepth","headersElement","b-grid-header","b-grid-header-parent","b-grid-header-resizable","b-collapsible","b-last-parent","b-last-leaf","getColumnConfig","innerEl","fixHeaderWidths","columnsDetacher","initDepths","gridBodyElementEventHandlers","GridElementEvents","enableUndoRedoKeys","Ctrl+z","Ctrl+Shift+z","handledEvents","headerData","longPressTimeout","onElementLongPress","longPressPerformed","cancelable","_column$onCellClick","skipFocusSelection","triggerCellMouseEvent","mouseMoveEvent","onElementClick","isContextMenu","isTreeExpander","isUnfocusedRightClick","hasFocus","_me$focusedCell","setHoveredRow","_hoveredRow","onElementKeyDown","keyMapOnKeyDown","_me$columns$getById$o","_me$columns$getById","onCellKeyDown","_this$features$cellEd","onUndoKeyPress","_devicePixelRatio","resetScrollBarWidth","_bodyHeight","initWithHeight","refreshVirtualScrollbars","updateResponsive","validConfigTypes","GridFeatures","defaultFeatures","getInstanceDefaultFeatures","_features","registeredInstanceFeatures","getInstanceFeatures","featureName","throwIfError","__bryntum_code_editor_changed","errorMessage","_errorDuringConfiguration","createFeatureInitializer","constructorArgs","featureProp","_this$features","_this$features2","_this$features$featur","_this$features$featur2","_this$features$featur3","featureConfig","isDefaultFeatureForInstance","defaultFocusOptions","disableScrolling","containedFocusable","FILTER_REJECT","GridNavigation","Shift+ArrowUp","Shift+ArrowDown","Ctrl+Home","Home","Ctrl+End","End","PageUp","PageDown","Shift+Tab","_super$onStoreRecordI","onStoreRecordIdChange","onElementMouseDown","headerContext","_column$onKeyDown","disableActionable","navigateRightByKey","onFirstCell","navigateLeftByKey","isActionableLocation","_this$_focusedCell","focusedRecord","_this$_focusedCell2","cellCSSSelector","_this$_focusedCell3","_this$_focusedCell4","superFocusEl","DOCUMENT_POSITION_PRECEDING","focusEvent","targetCell","_me$onCellNavigate","lastCell","findFocusables","selectOnFocus","onCellFocus","onCellNavigate","_focusableFinder","_cellSelector","_cellSelector2","_me$onCellNavigate2","testCell","subGridRect","bodyRect","cellRect","fullClear","blurCell","internalNextPrevCell","moveToHeader","clearFocus","GridResponsive","responsiveLevels","small","medium","large","useLevel","minDelta","biggestLevel","levelSize","levelWidth","responsiveLevel","getClosestBiggerLevel","oldLevel","levelConfig","validIdTypes","isDataLoadAction","GridSelection","selectionMode","rowCheckboxSelection","deselectFilteredOutRecords","preserveSelectionOnPageChange","preserveSelectionOnDatasetChange","deselectOnClick","selectedRecordCollection","checkColumnClass","checkboxSelectionColumn","checkboxRenderer","toggleAll","_super$bindStore","filteredOutRecords","deselected","_selectedCell","selectedCell","deselectCell","triggerChangeEvent","selectRows","deselectRows","_selectedRecordCollection","beforeSplice","cellSelectorOrId","_cellSelectorOrId","recordCellOrId","selectCell","selectedCellCSSSelector","deselectRow","startCell","lastRange","removeCurrentRecordsOnly","selMode","fromId","toId","endIndex","onStoreRemove","onStoreDataChange","mergeRange","newRange","isSameRecord","isMouse","isMouseCtrl","cellSelected","handleMouseMultiSelect","clickedSameRecordWithModifierKey","clickedAlreadySelectedRecord","clickedWithModifierKey","selectionChangeEvent","_this$selectedRecordC","suspendStoreEvents","resumeStoreEvents","fillSubGridColumns","compareStateSortIndex","stateSortIndex","GridState","_super$updateStore","_super$updateColumns","updateColumns","_super$updateRowManag","updateRowManager","storeScroll","_subGrid$collapsed","_beforeCollapseState","columnsChanged","needSort","columnState","columnGeneration","renderContents","subGridState","refreshFakeScroll","restoreScroll","immediatePromise$1","defaultScrollOptions$3","SubGridScroller","yPromise","yScroller","xPromise","cancelX","cancelY","scrollTo","elementBounds","sumWidths","SubGrid","insertRowsBefore","headerClass","footerClass","hasCalculatedWidth","virtualScrollerElement","headerSplitter","scrollerSplitter","footerSplitter","verticalScroller","isVerticalScroll","scrollEndDetacher","scrollEnd","_me$fakeScroller","fakeScroller","barConfig","splitters","b-grid-subgrid","b-grid-subgrid-collapsed","rowElementConfig","aria-colindex","cellTabIndex","references","virtualScrollerWidth","b-grid-splitter","b-grid-splitter-collapsed","b-hide-display","splitterButtons","splitterConfig","$showingSplitter","updateHasFlex","_this$footer","syncScrollingPartners","calculateMinWidthForSafari","syncSplitterButtonPosition","syncFlexedSubCols","fixRowWidthsInSafariEdge","prevGrid","getPreviousRegion","syncParallelSplitters","splitterSyncScrollListener","viewRectangle","hasOverflow","overflowingVertically","syncPartnersOnFrame","addScroller","scrollend","forceScrollUpdate","hideOverlayScroller","_scrolling","showOverlayScroller","columnHeaderElement","getHeader","frag","addElement","rowElements","fromCache","_emptyText","doRemove","getNextRegion","splitterOwner","expandedRegions","widthChanged","afterinternalresize","nextRegionWidth","_splitterOwner$startS","afterToggleSubGrid","GridSubGrids","usedRegions","normal","subGridConfigs","createSubGrid","subGridColumns","subGridConfig","isFirstRegion","isSubGrid","showSplitter","hideSplitter","partialReturnValue","emptyString","locale$3","columnsMenu","hideColumnShort","newColumns","lessThan","moreThan","enableFilterBar","disableFilterBar","groupAscending","groupDescending","groupAscendingShort","groupDescendingShort","stopGrouping","stopGroupingShort","moveBefore","moveAfter","collapseColumn","expandColumn","menuTooltip","searchForValue","sortAscending","sortDescending","addSortAscending","addSortDescending","toggleSortAscending","toggleSortDescending","sortAscendingShort","sortDescendingShort","removeSorterShort","addSortAscendingShort","addSortDescendingShort","columnLabel","cellLabel","toggleRowSelect","toggleSelection","_column$location","loadFailedMessage","syncFailedMessage","unspecifiedFailure","networkFailure","parseFailure","serverResponse","noRows","moveColumnLeft","moveColumnRight","moveColumnTo","copyRecord","cutRecord","pasteRecord","PdfExport","Waiting for response from server","Export failed","Server error","Generating pages","Click to abort","exportSettings","SinglePageExporter","singlepage","MultiPageExporter","multipage","exportingPage","MultiPageVerticalExporter","multipagevertical","resolvedPromise","storeListenerName","defaultScrollOptions$2","datasetReplaceActions","pageLoad","onGridVerticalScroll","bufferedAfterColumnsResized","bufferedElementResize","enableSticky","enableTextSelection","fillLastColumn","showDirty","mergeCls","defaultRowHeight","fullRowRefresh","preserveScrollOnDatasetChange","preserveFocusOnDatasetChange","columnLines","animateRemovingRows","disableGridRowModelWarning","testPerformance","rowScrollMode","_selectedRecords","_verticalScrollHeight","virtualScrollHeight","_scrollTop","scrollInitialized","bufferedFixElementHeights","setGridClassList","_suspendRenderContentsOnColumnsChanged","oldScrollManager","_feature$destroy","b-enable-sticky","b-grid-notextselection","b-autoheight","b-fill-last-column","b-show-dirty","_cellCls","b-grid-panel-body","aria-rowindex","b-grid-header-container","b-hidden","b-grid-footer-container","_this$footerContainer","currentStore","columnsToDestroy","_column$destroy","onColumnsChanged","onColumnsResized","touchConfig","addedColumns","isSingleFieldChange","repaintOnResize","afterColumnsChange","refreshHeader","cellEls","lastColumnResized","_column$flex","fixWidths","onHeightChange","flexedSubCols","oldRowManager","_isRowMeasured","measureRowHeight","requestScrollChange","idChange","beforeRequest","_this$initialConfig$f","_me$_rowManager","isSafe","callEachSubGrid","hasExpandedOldParent","parentRow","bottomIndex","dataStart","dataEnd","atEnd","refreshFromRowOnStoreAdd","_response$parsedJson","applyMaskError","isGroupFieldChange","applyLoadMask","invalidateKnownHeight","rowsToRemove","afterRemove","needsFullRefreshOnStoreRemove","oldTopIndex","moveRight","scrollColumnIntoView","_headerHeight","_footerHeight","_this$features$treeGr","treeGroup","_columnLines","colHeaders","refreshTotalHeight","newMaxY","isCritical","virtualScrollHeightDirty","fixElementHeights","heightInPx","updateRenderedRows","afterScroll","blockPosition","recordRect","getRecordCoords","virtualBlock","innerOptions","_me$scrollRowIntoView","recursive","storedScrollState","_subGrid$fakeScroller","$measureCellElements","contain","$removeAfterMeasuring","styleHeight","borderTop","borderBottom","_rowHeightFromStyle","whenVisible","hasVerticalOverflow","hadHorizontalOverflow","hasHorizontalOverflow","horizontalOverflowChanged","needsPadding","keepScroll","scrollState","onContentChange","renderHeader","renderFooter","fixSizes","refreshContext","removeAllRows","setPosition","onPaintOverride","scrollPad","bodyOffsetHeight","fonts","ready","initInternalEvents","editorConfig","removeEvent","_column$updateReadOnl","storeState","TreeGrid","later","searchElement","TypeError","zeroIsLast","extent","cur","zeroIsLargest","nextIdx","nextInvalid","zeroVal","prevIdx","prevInvalid","DExtent","DAYS_IN_MONTH","DStart","DEnd","nextRollover","DMax","prevRollover","dayOfWeekCount","dc","dcExtent","dcStart","dcEnd","dcMax","dayOfWeek","dw","dayOfYear","DAY","dyExtent","dyMax","getHour","hStart","hEnd","isUTC","getMin","mStart","mEnd","inc","MIN","SEC","MStart","MEnd","getSec","weekOfMonth","wm","wmExtent","wmStart","wmEnd","wmMax","wy","wThur","YThur","WEEK","wyExtent","dwFirst","dwLast","wyStart","wyEnd","wyThur","wyMax","YStart","YEnd","NEVER","fullDate","fd","modifier","constraint","compile","schedDef","constraints","constraintsLen","tickConstraint","nameParts","mod","vals","ra","rb","dir","nextVal","maxAttempts","curVal","newVal","tickStart","schedule","sched","schedules","schedulesLen","exceptions","exceptionsLen","getInstances","isRange","loopCount","schedStarts","exceptStarts","results","lastResult","rStart","rEnd","setNextStarts","setRangeStarts","findNext","updateRangeStarts","calcRangeOverlap","updateNextStarts","maxEndDate","calcMaxEndDate","calcEnd","getStart","tickStarts","cleanDate","schedArr","startsArr","rangesArr","nextStart","minEndDate","exceptsArr","nextRange","prevRange","scheduleTimeout","isDone","timezone","useLocalTime","build","localTime","HOUR","period","cron","expr","hasSeconds","NAMES","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","SUN","MON","TUE","WED","THU","FRI","SAT","REPLACEMENTS","* * * * * *","@YEARLY","@ANNUALLY","@MONTHLY","@WEEKLY","@DAILY","@HOURLY","FIELDS","cloneSchedule","addHash","curSched","hash","addWeekday","except1","except2","addRange","incSplit","rangeSplit","isHash","itemSorter","parseExpr","components","prepareExpr","recur","curArr","curName","applyMin","applyMax","onWeekend","onWeekday","customModifier","custom","customPeriod","startingOn","except","TOKENTYPES","eof","dayName","monthName","yearIndex","dayInstance","weekend","also","in","of","onthe","feb","mar","apr","may","jun","aug","oct","nov","sun","tue","wed","thu","fri","sat","1st","fir","2nd","sec","3rd","thi","4th","startPos","endPos","expected","scanTokens","whiteSpace","token","curInput","scanToken","scan","expectedToken","parseThroughExpr","tokenType","parseTokenValue","checkAndParse","nums","parseRanges","parseEvery","parseTimePeriod","parseToken","parseOnThe","parseScheduleExpr","timePeriod","convertString","gen1Pending","gen2Pending","gen1","gen2","inBatchesBySize","batchSize","runningBatch","howMany","initialAcc","acc","uniqueOnly","seen","uniqueOnlyBy","uniqueBy","takeWhile","iterators","concatIterable","iteratorsProducer","ChainedIteratorClass","iter1","iter2","derive","MemoizedIteratorClass","ChainedIterator","CI","$iterator","$iterable","alreadyConsumed","MemoizedIterator","MI","MixinInstanceOfProperty","MixinStateProperty","MixinWalkDepthState","baseEl","sourceEl","$elementsByTopoLevel","$topoLevels","linearizedByTopoLevelsSource","linearizedByTopoLevels","topoLevels","buildTopoLevels","elementsByTopoLevel","level1","level2","buildElementsByTopoLevel","topoLevel","elementsAtLevel","maxTopoLevel","baseElements","walkDepthState","requirements","getOrCreateLevel","mixin1","mixin2","toMap","MIXIN_ID","ZeroBaseClass","MixinState","baseClass","identitySymbol","mixinLambda","$minimalClass","getMixinState","mixinLambdaWrapper","extendedClass","hasInstance","isInstanceOfStatic","minimalClass","buildMinimalClass","mixinId","baseClassesIds","minimalClassConstructor","nextHash","wrapperCls","minimalClassesByLinearHash","getBaseClassMixinId","mix","Mixin","isMixinClass","lastRequirement","requirement","mixinState","currentBaseClass","currentIsSub","isPrototypeOf","currentIsSuper","isInstanceOf","MixinAny","Base","TimeUnit","ConstraintType","SchedulingMode","DependencyValidationResult","DependencyType","DependenciesCalendar","ProjectType","Direction","ConstraintIntervalSide","MIN_DATE","MAX_DATE","isDateFinite","EdgeInclusion","CalendarIteratorResult","CalendarCache","cacheFilledStartDate","cacheFilledEndDate","intervalsCachingChunkDuration","intervalsCachingChunkUnit","Day","maxCacheExtendCycles","maxRange","ensureCacheFilledForInterval","intervalCache","includeWrappingRange","cacheFilledStartDateN","cacheFilledEndDateN","startDateN","endDateN","fillCache","_1","_2","_options$maxRange","cacheCursorDate","cursorDate","rangeStart","cycle","getIntervalOf","intervalStartDate","intervalEndDate","FullRangeIterated","MaxRangeReached","countFrom","countTill","cacheInterval","StoppedByIterator","getNextInterval","getPrevInterval","MaxCacheExtendCyclesReached","stripDuplicates","CalendarCacheInterval","calendar","isWorking","normalizeIntervals","interval1","interval2","getPriorityField","CalendarCacheIntervalMultiple","intervalGroups","isWorkingForEvery","_calendar","getGroups","isWorkingForSome","calendars","getCalendarsWorkStatus","calendarsWorkStatus","calendarsWorking","calendarsNonWorking","intervalsByCalendar","comparator","mid","IndexPosition","SortedMap","deleteAt","Exact","Next","IntervalCache","points","leftInfinityKey","rightInfinityKey","emptyInterval","combineIntervalsFn","indexOfKey","getKeyAt","getValueAt","edgeInclusion","startDateIndex","getIntervalWithStartDateIndex","getDateAt","getPointAt","extendInterval","curIndex","lastUpdatedPoint","inclusion","setValueAt","curDate","addInterval","existingInterval","CalendarCacheMultiple","calendarCaches","combineWith","calendarCache","includeWrappingRangeFrom","CalendarCacheSingle","staticIntervalsCached","unspecifiedTimeInterval","cacheStaticIntervals","parentCache","forEachRecurrentInterval","startSchedule","getStartDateSchedule","endSchedule","getEndDateSchedule","wrappingStartDate","wrappingEndDate","nextEndDate","wrappingStartDates","wrappingEndDates","startDates","endDates","recStartDate","recEndDate","existingCacheInterval","includeInterval","forEachStaticInterval","intervalStore","isStatic","isRecurrent","AbstractPartOfProjectGenericMixin","$project","setProject","calculateProject","getProject","assignmentStore","dependencyStore","eventStore","resourceStore","calendarManagerStore","AbstractPartOfProjectStoreMixin","superProto","isLoadingData","asyncEvent","asyncAction","isEngineReady","isWritingData","dataReadyDetacher","queuedDataReadyEvents","_this$project","hasLoadedDataToCommit","AbstractPartOfProjectModelMixin","joinedProject","isRepopulatingStores","joinProject","isLeavingProjectStore","leaveProject","graph","_this$project2","isStmRestoring","isRestoringData","CalendarIntervalMixin","priorityField","getCalendar","getDepth","priority","recurrentStartDate","recurrentEndDate","startDateSchedule","parseDateSchedule","endDateSchedule","CalendarIntervalStore","UnspecifiedTimeIntervalModel","CorePartOfProjectGenericMixin","_this$project3","_this$project4","_this$project5","_this$eventStore","_this$dependencyStore","_this$resourceStore","_this$assignmentStore","_this$calendarManager","AbstractCalendarMixin","CalendarMixin","intervalStoreClass","intervalsStore","calendarIntervalModelClass","defaultCalendar","maxCalendarRange","forEachAvailabilityInterval","durationMs","finalDate","remainingDurationInMs","calendarCacheInterval","getIsWorking","adjustDurationToDST","accumulateWorkingTime","workingDate","addIntervals","bumpVersion","removeIntervals","clearCache","$calendarCache","unspecifiedTimeIsWorking","resetPriority","resetPriorityOfAllIntervals","hasWorkingTime","_intervalStartDate","_intervalEndDate","isDayHoliday","fullyContained","workingTimeStart","skipNonWorkingTime","AbstractHasAssignmentsMixin","HasAssignmentsMixin","resource","assignment","_this$assigned","assigned","getAssignmentFor","assignmentCls","addAssignment","removeAssignment","isInActiveTransaction","getEventStore","assignmentsForRemoval","afterEventRemoval","CorePartOfProjectModelMixin","$isCalculating","$changed","$beforeChange","invalidate","bufferedCommitAsync","_this$get","_this$recurringTimeSp","recurringTimeSpan","isNotNumber","CIFromSetOrArrayOrValue","delay$1","AbstractAssignmentStoreMixin","allAssignmentsForRemoval","AbstractCalendarManagerStoreMixin","_this$rootNode","AbstractDependencyStoreMixin","dependenciesForRemoval","allDependenciesForRemoval","dataAddRemoveActions$1","AbstractEventStoreMixin","_event$removed","getAssignmentStore","getDependencyStore","dependency","existingRecord","dataAddRemoveActions","AbstractResourceStoreMixin","afterResourceRemoval","CoreEventMixin","_startDate","_endDate","_this$_startDate","_this$_endDate","_ref3","proposeStartDate","proposeEndDate","proposeDuration","setStartDate","setEndDate","setDuration","_me$startDate","_me$endDate","_me$endDate2","keepDuration","propose","keepStart","durationUnit","getCurrentOrProposed","_me$assignmentStore","unresolved","_me$assignmentStore2","cachedAssignments","setChanged","changedStart","changedEnd","changedDuration","calculate","hasCurrentOrProposed","currentOrProposedStartDate","currentOrProposedEndDate","currentOrProposedDuration","currentOrProposedDurationUnit","hourDuration","targetDuration","CoreResourceMixin","getResourcesAssignments","skipAccessor","CoreAssignmentMixin","isPerformingCommit","skipInvalidateIndices","resolved","_changed$resource","resourceId","_changed$event","eventId","finalizeInvalidated","CorePartOfProjectStoreMixin","emptySet$1","CoreAssignmentStoreMixin","modelName","_assignment$modelName","_assignment$modelName2","getData","updateIndices","CoreCalendarMixin","CoreCalendarManagerStoreMixin","CoreDependencyMixin","_this$dependencyStore2","fromEvent","toEvent","_this$eventStore2","_this$eventStore3","emptySet","CoreDependencyStoreMixin","CoreHasAssignmentsMixin","_this$project$assignm","getEventsAssignments","$cachedAssignments","skipFieldIdentifiers","CoreHasDependenciesMixin","outgoingDeps","getOutgoingDepsForEvent","incomingDeps","getIncomingDepsForEvent","SchedulerCoreEvent","CoreEventStoreMixin","linkAssignments","_this$assignmentStore2","CoreResourceStoreMixin","removing","_this$assignmentStore3","unlinkAssignments","EventsWrapper","DelayableWrapper$1","AbstractProjectMixin","isInitialCommit","isInitialCommitPerformed","isLoadingInlineData","silenceInitialCommit","deferId","DelayableWrapper","SchedulerCoreProjectMixin","eventModelClass","assignmentModelClass","resourceModelClass","dependencyModelClass","calendarModelClass","eventStoreClass","assignmentStoreClass","resourceStoreClass","dependencyStoreClass","calendarManagerStoreClass","assignmentsData","calendarsData","dependenciesData","eventsData","resourcesData","$invalidated","ongoing","hasInlineData","loadInlineData","_me$eventStore","_me$dependencyStore","_me$resourceStore","_me$calendarManagerSt","tasksData","commitLoad","$eventStore","detachStore","resolveStoreAndModelClass","joinStoreRecords","unJoinStoreRecords","oldEvent","newEvent","attachStore","$assignmentStore","$resourceStore","oldResource","newResource","$dependencyStore","$calendarManagerStore","_calendarManagerStore","_calendarManagerStore2","$calendar","effectiveCalendar","hasPendingAutoCommit","doCommitAsync","unScheduleAutoCommit","calculateInvalidated","silenceCommit","onCommitAsync","_store$suspendAutoCom","suspendAutoCommit","isCalculated","_store$resumeAutoComm","resumeAutoCommit","$stm","restoringStop","DurationColumn","isGanttColumn","durationEntity1","durationEntity2","ms1","ms2","durationUnitField","nbrDecimals","durationDisplayPrecision","rounded","durationValue","ResourceCollapseColumn","b-icon-expand-resource","b-flip","eventLayout","ResourceInfoColumn","showImage","showEventCount","showMeta","showRole","validNames","autoScaleThreshold","useNameAsImageName","avatarRendering","imageName","resourceImagePath","urlPart","joined","joinPaths","timeAxis","resourceImageExtension","defaultResourceImageName","roleField","getEvents","includeOccurrences","enableRecurringEvents","image","getImageURL","getResourceAvatar","eventColor","isLastLevel","isLastCell","TimeAxisBase","compactCellWidthThreshold","sizeProperty","positionProperty","stickyHeaders","isVertical","featureHeaderConfigs","cellConfigs","_level$cells","stickyHeader","b-sch-header-row","b-sch-header-row-main","viewPreset","mainHeaderLevel","b-lowest","b-sticky-header","headerFeature","headerPosition","b-sch-header-timeaxis-cell","headerCellCls","b-last","tickIndex","DEBUG","coord","b-sch-header-text","getHeaderDomConfigs","rebuild","columnConfig","oldLevelsCount","parentEl","buildCells","HorizontalTimeAxis","timeAxisViewModel","ResourceHeader","imagePath","imageExtension","defaultImageName","showAvatars","fillWidth","fitWidth","columnWidth","firstResource","lastResource","scheduler","_resourceColumns","_this$avatarRendering","_resourceStore","_me$resourceStoreDeta","resourceStoreDetacher","onResourceStoreDataChange","getTotalWidth","variableColumnWidths","_fillWidth","_fitWidth","configuredFillWidth","configuredFitWidth","refreshWidths","refreshingWidths","configuredColumnWidth","_imagePath","_availableWidth","fit","useWidth","shouldAnimate","enableEventAnimations","_columnWidth","visibleResources","elementConfig","b-resourceheader-cell","insetStart","_resourceRecord$name","resourceCell","TimeAxisColumn","needWidth","_this$resourceColumns","_this$timeAxisView","resourceColumns","timeAxisView","viewModel","totalSize","_me$grid","isDelayingCalculation","_timeAxisViewModel","VerticalTimeAxis","wrapText","cellId","VerticalTimeAxisColumn","view","AbstractCrudManagerValidation","validateResponse","skipSuccessProperty","crudLoadValidationWarningPrefix","crudSyncValidationWarningPrefix","supportShortSyncResponseNote","disableValidationNote","crudLoadValidationMandatoryStores","storeInfo","responded","expectedResponse","messages","mandatoryStores","forEachCrudStore","getStoreLoadResponseWarnings","getLoadResponseWarnings","requested","missingRows","missingRemoved","respondedRows","respondedRemoved","showSupportShortSyncResponseNote","missingIds","supportShortSyncResponse","missingUpdatedRows","requestDesc","pack","warnings","getStoreSyncResponseWarnings","getSyncResponseWarnings","AbstractCrudManagerError","CrudManagerRequestError","_cfg$request","_this$request","storeSortFn","sortProperty","storeLoadSortFn","storeSyncSortFn","AbstractCrudManagerMixin","$$meta","isEvents","crudRevision","crudStores","storeIdProperty","crudFilterParam","transport","trackResponseType","phantomParentIdField","autoSyncTimeout","autoSync","resetIdsBeforeSync","syncApplySequence","orderedCrudStores","crudIgnoreUpdates","autoSyncSuspendCounter","crudLoaded","applyingLoadResponse","applyingSyncResponse","isCrudManager","_requestId","activeRequests","crudStoresIndex","_autoLoadPromise","doAutoLoad","loadUrl","syncUrl","storeDesc","getStoreDescriptor","storeDescriptor","_crudStores","addCrudStore","loadPriority","syncPriority","_orderedCrudStores","_syncApplySequence","addStoreToApplySequence","fillStoreDescriptor","setCrudManager","bindCrudStoreListeners","fromStore","internalAddCrudStore","updateCrudStoreIndex","hasCrudStore","hasApplySequenceStore","_this$crudStores","foundStore","unbindCrudStoreListeners","removeStoreFromApplySequence","addConfirmed","sequenceKeys","removeCrudStore","crudStoreHasChanges","scheduleAutoSync","doSync","isAutoSyncSuspended","requestType","responseOptions","decode","triggerFailedRequestEvents","revision","applyResponse","emitCrudStoreEvents","skipChangeCheck","onCrudStoreChange","isBatchingChanges","isCrudStoreDirty","getCrudStore","requestId","optionsCopy","_store$store","opts","__loading","loadCrudStore","suspendChangesTracking","loadDataToCrudStore","resumeChangesTracking","isCrudManagerLoading","isCrudManagerSyncing","getLoadPackage","cancelRequest","encode","onCrudRequestSuccess","failure","onCrudRequestFailure","sendRequest","cancelled","deletePath","prepareAdded","prepareUpdated","prepareRemoved","forceSync","getCrudStoreChanges","storeResponse","storePack","_removed","requestUpdated","requestRemoved","_storeResponse$rows","_storeResponse$remove","respondedIds","responseRecord","getRowsToApplyChangesTo","_me$project","stmDisabled","ignoreRemoteChangesInSTM","_request$pack","applyChangesToStore","loadCrudManagerData","responseType","validateLoadResponse","applyLoadResponse","validateSyncResponse","applySyncResponse","suspendAutoSync","storeLog","resumeAutoSync","activeSyncPromise","getChangesetPackage","rawResponse","_request","internalOnResponse","_fetchOptions$abortCo","wasAborted","AbstractCrudManager","dataName","inlineData","AjaxTransport","defaultMethod","requestPromise","_requestPromise$abort","packCfg","transportConfig","requestConfig","shouldUseBodyForRequestData","ajaxPromise","cb","_ajaxPromise$abort","JsonEncoder","encoder","requestData","_this$encoder","CrudManagerView","onCrudManagerLoadStart","loadStart","loadCanceled","syncStart","syncCanceled","requestFail","_this$toggleEmptyText","applySyncMask","successful","clearMaskDelay","_me$toggleEmptyText","clearSyncMask","onCrudManagerRequestFinalize","PartOfProject$1","PartOfProject","AssignmentModelMixin","eventResourceKey","buildEventResourceKey","eventKey","resourceKey","_toSet$resource","isProAssignmentModel","_toSet$event","_this$resource","_this$resource2","_this$event","_this$event2","resourceName","_this$resource3","isAssignment","_this$event3","EngineMixin$8","AssignmentModel$1","AssignmentStoreMixin","newAssignments","_assignment$event","isAssignmentStore","originalAssignment","occurrence","isOccurrence","isOccurrenceAssignment","occurrenceInstanceMeta","occurrenceAssignment","occurrenceMeta","fnSet","filterFnSet","assignments","mapResult","getAssignmentsForResource","resources","_resource","assignmentSetupFn","removeExistingAssignments","_event$assignments","_r$$original","usesSingleAssignment","isEventAssignedToResource","existingAssignment","getAssignmentForEventAndResource","_assignmentSetupFn","assignmentsToRemove","removeAssignmentsForEvent","getOccurrence","EngineMixin$7","AssignmentStore$1","ResourceStoreMixin","isResourceStore","isResourceModel","resourceColumnWidth","isChangingId","updateAssignmentResourceIds","isDateRangeAvailable","ResourceModelMixin","firstInitial","lastInitial","_calendar$isWorkingTi","isWorkingTime","EngineMixin$6","ResourceModel$1","EngineMixin$5","ResourceStore$1","EventStoreMixin","storeFilterFn","dateMap","earliest","latest","lastTotalTimeSpan","excludeEvent","allEvents","getEventsForResource","currentEvent","eventToRemove","isScheduled","intersectSpans","getResourcesForEvent","getAssignmentsForEvent","assignEventToResource","unassignEventFromResource","newResourceId","removeAssignmentsForResource","notRecurring","isRecurring","GetEventsMixin","startOnly","allowPartial","onlyAssigned","getDateIndex","lastDateRange","passedFilter","dateFilter","eventStartDate","hasBatchedChange","eventEndDate","isMilestone","betweenLesserEqual","newDateRange","dateRangeChange","getEventsAsMap","getEventsAsArray","candidateEvents","dateIndex","useDayIndex","eventSet","recurringEvents","coincidingEvents","getOccurrencesForDateRange","_dateMap","baseEventFilter","_me$recurringEvents","_coincidingEvents","occurrences","lastDate","lastInteresctingDate","allDay","dateKey","indexNameMap","indexProps","emptyArray$2","EventDayIndex","users","_this$dayTime$startOf","dateMS","endDateMS","_eventRecord$endDate$","_eventRecord$endDate","returnKey","_this$dayTime$startOf2","_endDate$getTime","_wasSet$startDate","_wasSet$endDate","replacedCount","outgoingEvent","addEvent","DayIndexMixin","dayIndices","_super$afterLoadData","syncIndices","_this$dayIndices","dayIndex","_this$dayIndices2","registerDayIndex","SharedEventStoreMixin","removeUnassignedEvent","singleAssignment","isEventModel","_project$assignmentSt","attachToAssignmentStore","assignmentStoreChange","eventRecords","assignmentsToAdd","reassignedFromReplace","includesAssignment","skipEnforcingSingleAssignment","$processResourceIds","processResourceIds","isSettingData","assignmentRecord","isAssigning","isEvent","_me$getById","isAssign","emptyArray$1","RecurringTimeSpansMixin","globalOccurrences","refreshRecurringEventsCache","isRecurrenceRelatedFieldChange","removeOccurrences","timeSpan","recurrence","forEachOccurrence","RecurringEventsMixin","getRecurringTimeSpans","isEventPersistable","supportsRecurring","TimeSpan","allowNull","_eventStore","_me$stores","isEventStore","hasDuration","internalCls","updateInternalCls","starDate","getDurationInUnit","fullDuration","calcEndDate","calcStartDate","startDateMS","durationMS","inSetNormalize","u","wbsCode","_wbsCode","intersectsRange","myStart","myEnd","splitPoint","ownNewDuration","cloneDuration","clonedData","icsEventConfig","nowAsUTC","toUTC","startAsUTC","endAsUTC","fullDateFormat","DTSTAMP","startEnd","DTSTART;VALUE=DATE","DTEND;VALUE=DATE","DTSTART","DTEND","icsWrapConfig","BEGIN","VERSION","CALSCALE","PRODID","END","eventConfig","UID","CLASS","SUMMARY","recurrenceRule","RRULE","icsItems","eventItems","Blob","toICSString","downloadBlob","dayParseRegExp","RecurrenceDayRuleEncoder","rawDay","parsedDay","rawDays","decodeDay","encodeDay","frequencyToUnitRe","frequencyToUnit","frequency","buildOccurrence","captureLastOccurrence","lastOccurrenceDate","AbstractRecurrenceIterator","until","syncingStartDate","isSyncedWithRule","forEachDate","timeSpanStart","earliestVisibleDate","timeSpanStartMS","earliestVisibleDateMS","spansStart","borderDate","positions","datesLength","isValidPosition","occurrenceDate","hasException","occurenceDate","occurrenceDateMS","DailyRecurrenceIterator","processIterationConfig","intervalDuration","delayInIntervals","MAX_OCCURRENCES_COUNT","inView","isInViewMS","WeeklyRecurrenceIterator","_weekDays","startHours","startMinutes","startSeconds","startMS","weekDays","weekStartDate","MonthlyRecurrenceIterator","dayNum","hasPositions","processedDate","monthDays","weekDayPosition","monthStartDate","monthEndDate","till","getNthDayInPeriod","sortedMonthDates","getNthDayOfMonth","forEachDateAtPositions","YearlyRecurrenceIterator","yearStartDate","yearEndDate","buildDate","recurrenceIterators","convertStringOfIntegerItemsValue","convertStringOfItemsValue","isEqualAsString","convertInteger","RecurrenceModel","isRecurrenceModel","_dateFormat","recurrenceIterator","_timeSpan","rule","sanitize","_suspendedTimeSpanNotifying","suspendTimeSpanNotifying","resumeTimeSpanNotifying","_me$timeSpan","timeSpanStartDate","isSanitizing","_me$monthDays","sanitizeRecurrenceData","isTimeSpanNotifyingSuspended","onRecurrenceChanged","convertExceptionDatesValue","serializeExceptionDatesValue","emptyArray","RecurringTimeSpan","detachFromRecurringEvent","recurringEvent","isRecurringTimeSpansMixin","recurrenceModel","_recurrenceModel","recurrenceEnd","_recurrence","_recurringTimeSpan","getOccurrencesForTimeSpan","occurrenceMap","_occurrencesMap","dateOrTimeSpan","isTimeSpan","createRecurrenceKey","removeOccurrence","_this$recurrence","exceptionDates","removeOccurrencesFrom","exceptionDate","_this$meta$modified","occurrenceIndex","getOccurrenceIndex","occurrenceKey","onStartDate","occurrenceEndDate","setStartEndDate","_wasSet$resourceRecor","resourceRecords","convertToRealEvent","newExceptionDate","addExceptionDate","_this$exceptionDates","CalendarCompatMixin","oneDayMS","EventModelMixin","updateAssignmentEventIds","newResourceIds","existingResourceIds","getAllDayStartDate","getAllDayEndDate","wrapStartDate","wrapEndDate","isDraggable","isResizable","manuallyScheduled","wasPersistable","applyResourceId","$linkedResources","_this$resources$flatM","_this$resources","fromApplyValue","removingResource","oldResourceId","reassignEventFromResourceToResource","predecessors","_this$incomingDeps","successors","_this$outgoingDeps","dependencies","_this$incomingDeps2","_this$outgoingDeps2","isInterDay","eventStartMidnight","getAllDayDisplayStartDate","EngineMixin$4","EventModel$1","EngineMixin$3","EventStore$1","canonicalDependencyTypes","DependencyBaseModel","Type","StartToStart","StartToEnd","EndToStart","EndToEnd","_this$unjoinedStores$","hardType","getHardType","setHardType","fromSide","toSide","lag","setLag","lagUnit","fullLag","_this$highlighted$spl","_this$highlighted","highlighted","getConnectorString","getLag","fromEventName","_this$fromEvent","toEventName","_this$toEvent","EngineMixin$2","DependencyModel$1","startSide","endSide","DependencyStoreMixin","reduceFn","depsGetterFn","getEventDependencies","evt","reduceEventDependencies","reduceEventPredecessors","reduceEventSuccessors","makeDependencySourceTargetCompositeKey","sourceEvent","targetEvent","getBySourceTargetId","getDependencyForSourceAndTargetEvents","dependencyOrFromId","isDependencyModel","isValidDependency","dep","isHighlightedWith","EngineMixin$1","DependencyStore$1","SchedulerProjectCrudManager","ProjectCrudManager","_changesToClear","applyingProjectResponse","startDateField","endDateField","delayEnteringReplica","applyProjectResponse","clearCrudStoresChanges","clearRemovedCollection","removeAddedRecords","clearAddedCollection","clearModifiedCollection","_me$commitRespondedCh","propagationFlag","commitRespondedChanges","changesMap","ResourceTimeRangeModel","domIdPrefix","isResourceTimeRange","ResourceTimeRangeStore","resourceTimeRange","rangesInDateRange","timeRanges","span1","span2","ProjectModelMixin","timeRangeModelClass","resourceTimeRangeModelClass","timeRangeStoreClass","resourceTimeRangeStoreClass","timeRangesData","timeRangeStore","resourceTimeRangeStore","resourceTimeRanges","resourceTimeRangesData","ProjectCurrentConfig","taskStore","isTaskStore","ModelPersistencyManager","newEventStore","eventStoreDetacher","beforecommit","onEventStoreBeforeSync","newResourceStore","onResourceStoreBeforeSync","newAssignmentStore","assignmentStoreDetacher","_assignmentStore","onAssignmentStoreBeforeSync","newDependencyStore","dependencyStoreDetacher","_dependencyStore","onDependencyStoreBeforeSync","removeNonPersistableRecordsToCreate","shallContinueSync","recordsToCreate","EngineMixin","ProjectModel$1","testProject","modelPersistencyManager","createModelPersistencyManager","CrudManager","projectClass","buildProjectConfig","_project","dataReady","_this$_timeRangeStore","_timeRangeStore","setFeaturedStore","_this$_resourceTimeRa","_resourceTimeRangeStore","_this$_resourceStore","_this$_eventStore","_this$_assignmentStor","_this$_dependencyStor","_me$property","addPrioritizedStore","ViewPreset","normalizeUnits","tickWidth","tickHeight","bottomHeader","timeResolution","splitUnit","shiftUnit","columnLinesFor","tickSize","_tickSize","mainHeader","leafUnit","leafIncrement","mainUnit","msPerPixel","PresetStore","zoomOrder","leftBottomHeader","rightBottomHeader","isPresetManager","isViewPreset","presets","basePresets","preset","baseId","originalDisplayDateFormat","displayDateFormat","topDateFormat","middleDateFormat","localeLevelDateFormat","originalDateFormat","unlocalizedName","PresetManager","secondAndMinute","shiftIncrement","defaultSpan","minuteAndHour","hourAndDay","dayAndWeek","dayAndMonth","weekAndDay","weekAndMonth","weekAndDayLetter","verticalColumnWidth","weekDateAndMonth","monthAndYear","manyYears","defaultPresets","resolution","resolutionUnit","presetCache","_basePresets","presetAdjustment","baseType","getUnitByName","existingDuplicate","getPreset","presetOrId","Tick","TimeAxis","continuous","originalContinuous","autoAdjust","adjustedStart","adjustedEnd","visibleTickStart","visibleTickEnd","tickCache","generateTicks","resolutionIncrement","forceFullTicks","supressRefresh","endreconfigure","internalOnReconfigure","getAdjustedDates","isTimeAxis","suppressRefresh","normalized","oldConfig","_configuredStartDate","_configuredEndDate","isConfigured","adjusted","ticks","isContinuous","updateVisibleTickBoundaries","updateTickCache","startDenominator","getNormalizedUnitDuration","endDenominator","fullTicks","_viewPreset","presetName","_this$_weekStartDay","_resolutionUnit","_resolutionIncrement","newStartDate","newEndDate","tries","setTimeSpan","forceAdjust","floorDate","ceilDate","_start","_end","_startMS","endMS","_endMS","relativeToStart","incr","snappedDuration","useUnit","snappedValue","distanceToWeekStartDay","nbrMonths","snappedMonths","doCall","isStartOf","_include","includeUnit","getLargerUnit","stepUnit","datePart","lengthFactor","getUnitToBaseUnitRatio","lengthFactorExcl","axisStartDate","axisEndDate","usesExclusion","intervalEnd","tickEnd","isExcluded","initExclusion","processExclusion","visibleTickTimeSpan","_date$getTime","_date$getTime2","roundingMethod","wholeTick","onlyStartEnd","_startMs","inclusiveEnd","axisStart","axisEnd","getCount","dateInAxis","getTickFromDate","startTick","endTick","iteratorFn","RecurrenceLegend","allDaysValueAsArray","allDaysValue","workingDaysValue","nonWorkingDaysValue","tplData","getDaysLegend","getDayName","arrayToText","getMonthShortName","getMonthName","getDayShortName","AttachToProjectMixin","projectHolder","projectSubscribers","attachToProject","attachToResourceStore","attachToEventStore","attachToDependencyStore","attachToCalendarManagerStore","ProjectConsumer","projectModelClass","destroyStores","oldProject","projectStoreNames","projectDataNames","projectCallbacks","buildingProjectConfig","isEventStoreMixin","delayAutoLoad","_sharedProject","projectListeners","_crudManager","subscriber","changeCrudManager","_this$project$isEngin","projectStores","storeConfigs","previousDataName","_this$project$storeNa","createDataUpdater","createStoreDescriptor","clsProto","storeNameCap","storeProject","isProjectModel","initializingProject","_subscriber","HorizontalLayout","nbrOfBandsByResource","bandIndexToPxConvertFn","bandIndexToPxConvertThisObj","layoutEventsInBands","PackMixin","coordProp","inBandCoordProp","inBandSizeProp","applyClusterFn","slot","firstInCluster","cluster","findStartSlot","getCluster","nextSlot","clusterSize","slotSize","priorOverlappers","getPriorOverlappingEvents","COORD_PROP","SIZE_PROP","overlappers","isSameGroup","sortOverlappers","HorizontalLayoutPack","packEventsInBands","HorizontalLayoutStack","heightRun","eventIndex","findClosestSuccessor","eventRenderData","minGap","gap","ClockTemplate","minuteHeight","minuteTop","hourHeight","hourTop","handLeft","hourIndicatorEl","minuteIndicatorEl","_mode","unitLessThanDay","formatContainsHourInfo","_template","DragBase","tooltipTemplate","startClockHtml","endClockHtml","showExactDropPosition","dragHelperConfig","tooltipCls","constrainDragToTimeline","constrainDragToResource","throttleDragEvent","snapTo","_this$snapToPosition","dragData","snapToPosition","constrainDragToTimeSlot","isHorizontal","externalDropTargetSelector","timeAxisSubGridElement","eventSelector","draggedEventRecord","draggedEntities","coordinate","getCoordinate","snappedDate","getDateFromPosition","snappedPosition","getPositionFromDate","internalSnapToPosition","abortFinalized","_me$drag","buildDragHelperConfig","_me$dragData","updateYConstraint","scheduledEventName","clockTemplate","_this$drag","_this$clockTemplate","tipId","oldTip","getTipHtml","updateDateIndicator","getMinimalDragData","pointerStartDate","getDateFromXY","triggerBeforeEventDrag","capitalizedEventName","_client","isActivelyDragging","_me$findClientFromTar","_client2","_menuFeature$hideCont","findClientFromTarget","currentOverClient","unifiedDrag","onMouseOverNewTimeline","getDragData","suspendElementRedrawing","tipTarget","triggerDragStart","eventMenu","taskMenu","menuFeature","endDateElement","isResourceHistogram","updateDragContext","dirty","triggerEventDrag","externalDragValidity","newTimeline","timeAxisSubGrid","eventType","isValidDrop","externalDropTarget","triggerBeforeEventDropFinalize","origStart","_me$tip2","onDragAbort","resetDraggedElements","triggerDragAbort","_me$client2","triggerDragAbortFinalized","_dragHelper$context","currentTimeline","eventBarEls","resumeRecordElementRedrawing","_me$tip3","triggerAfterDrop","updateRecords","onInternalInvalidDrop","lastDragStartDate","constrainToTimeSlot","getProductDragContext","timeDiff","_info$pageX","_info$pageY","dateConstraints","timeAxisPosition","pointerDate","getDateFromCoordinate","adjustStartDate","resolveStartEndDates","checkDragValidity","_dd$externalDragValid","getRecordElement","suspendRecordElementRedrawing","productDragData","setupProductDragData","timespan","origEnd","startsOutsideView","endsOutsideView","isSchedulerBase","multiEventSelect","clientCoordinate","selectAssignment","selectEvent","screenSourceDate","constrainRegion","elRegion","constrained","xTickSize","yTickSize","setXConstraint","setYConstraint","snapPixelAmount","getScheduleRegion","iLeft","iRight","iTickSize","iUp","iDown","roundDate","snapRelativeToEventStartDate","draggedElement","timeline","getStartEndDatesFromRectangle","getDateFromTick","startText","getFormattedDate","endText","getFormattedEndDate","dragged","timeSpanRecord","isTask","_constrainDragToTimeSlot","tipAlign","EventResize$1","resizingItemInnerCls","allowResizeToZero","showExactResizePosition","validatorFn","validatorFnThisObj","dragActiveCls","_this$dragging","eventElement","eventResizable","isOverStartHandle","isOverEndHandle","_this$dragging2","_this$dragging2$conte","_dragging$context","visibleDateRange","pageScroll","startCoord","endCoord","getEnd","getDateFromCoord","clientStartCoord","clientEndCoord","onDragPointerMove","isResizing","resolveTimeSpanRecord","resolveResourceRecord","mousedownDate","triggerBeforeResize","_client$features$even","_client$resolveAssign","resolveEventRecord","useEventBuffer","eventBuffer","draggingEnd","wrapToSet","otherEnd","setMethod","setOtherMethod","timespanRecord","taskRecord","originalStartDate","originalEndDate","listenToBatchedUpdates","beginListeningForBatchedUpdates","beginEventRecordBatch","setupProductResizeContext","triggerEventResizeStart","getResizeStartParams","resizedRecord","resolveAssignmentRecord","getTooltipTarget","getBeforeResizeParams","_drag$context","_client$features$even2","_context$dateConstrai","_context$dateConstrai2","eventStart","eventEnd","crossedOver","avoidedZeroSize","onDragEndSwitch","isEventDragCreate","tooNarrow","applyDateConstraints","checkValidity","partialResizeEvent","triggerEventPartialResize","resizeEventPartiallyInternal","triggerBeforeEventResizeFinalize","wasChanged","internalUpdateRecord","cancelEventRecordBatch","repaintEventsForResource","endListeningForBatchedUpdates","triggerEventResizeEnd","getResizeEndParams","isEntity","_client$features$even3","setOtherEnd","promisesToWait","isOverAnyHandle","_item$syncIdMap$clien","_item$syncIdMap","handleTargetElement","eventInnerSelector","_item$syncIdMap$me$cl","_item$syncIdMap2","isOverTopHandle","isOverBottomHandle","offsetSize","_me$client$features$e","eventCls","_me$client$features$e2","_me$client$features$e3","_me$client$features$e4","innerhtmlupdate","_me$clockTemplate","_element$syncIdMap$cl","handleHoldingElement","handleEl","startsOutside","endsOutside","tipData","_client$resolveResour","_client$resolveAssign2","_client$getDateConstr","getDateConstraints","allowOverlap","basicValidityCheck","getDragCreateDragDistance","_this$source","_this$source$client$f","taskEdit","_canceling","DragCreateBase","createValidatorFn","initialDate","pan","eventDragSelect","preventMultiple","isRowEmpty","rowRecord","proxyElement","matchScheduleCell","dragTolerance","changeTip","doCreate","completeFinalization","finalizeDragCreate","_me$onAborted","onAborted","_this$tip2","createContext","_this$dragging$contex","dateTime","proxyCls","tipTemplate","DH","scheduleFields","makeDate","dateValue","copyTime","dateTo","dateFrom","adjustEndDate","endTimeField","startTimeField","EditBase","saveAndCloseOnEnter","eventEdit","clientListenersDetacher","dragCreateEnd","eventAutoCreated","_this$_editor","_editor","cleanItemsConfig","itemCfg","_me$startTimeField","_me$startDateField2","_me$startDateField","_me$endDateField","startFields","endFields","_editor$widgetMap$rec","recurrenceEditor","recurrenceCombo","editingContext","_configuredPlaceholder","isTimelineBase","_me$editingContext$ev","targetEventElement","onSaveClick","save","deleteEvent","ResourceTimeRangesBase","needsRefresh","isTimeSpanInAxis","shouldInclude","fillSize","rangeCls","timeRangeColor","eventContent","generateElementId","rangeElement","_rangeElement$closest","foregroundCanvas","_this$resolveResource","resolveResourceTimeRangeRecord","onInternalEventStoreChange","TimeSpanMenuBase","TooltipBase","autoUpdate","monitorRecordUpdate","destroyProperties","_me$tooltip2","tipCls","overtarget","defaultDetacher","tooltipDetacher","_this$tooltip2","recordProp","recordType","endDateValue","getDisplayEndDate","updateListener","onRecordUpdate","_this$updateListener","AbstractTimeRanges","lineCls","enableResizing","dragTipTemplate","bodyRenderer","narrowThreshold","onUIReady","baseSelector","showHeaderElements","_me$resize","renderRanges","includeChange","timeAxisViewModelChange","setupTimeAxisViewModelListeners","onTimeRangeClick","resizeHelperConfig","hoverTooltip","resolveTimeRangeRecord","_timeRanges","bodyConfigs","headerConfigs","_labelRotationMap","renderRange","updatedBodyElements","getDOMConfig","bodyCanvas","childrenOnly","headerCanvas","cacheRotation","applyRotation","rangeEnd","_lineBufferDurationMS","getCoordinateFromDate","respectExclusion","translateX","b-narrow-range","b-rtl","shouldRenderRange","getRangeDomConfig","xss","labelTpl","showLabelInBody","_range$recurringTimeS","_range$recurringTimeS2","_bodyElement$firstEle","timeView","_headerContainerElement","_showHeaderElements","timeRangeRecord","destroyTip","emptyObject$3","ColumnLines","useBackgroundCanvas","linesForLevel","majorLinesForLevel","domConfigs","addLineConfig","isMajor","line","getResourceRange","backgroundCanvas","getColumnLinesDOMConfig","DependencyCreation","allowDropOnEventBar","showCreationTooltip","creationTooltip","terminalCls","terminalSides","allowCreate","updateCreateListeners","_me$pointerUpMoveDeta","_me$creationTooltip","creationData","pointerUpMoveDetacher","isCreateAllowed","_allowCreate","nestedEvents","eventBarElement","showTerminals","timeSpanElement","onOverTargetEventBar","hideTerminals","onOverNewTargetWhileCreating","showingTerminalsFor","unhover","_scheduler$resolveRes","terminalNode","viewBounds","side","startPoint","sourceResource","documentPointerUpDetacher","angle","atan2","onRequestDragCreate","createConnector","createDragTooltip","onMouseMove","_overEventRecord","overEventRecord","isEventSegment","_data$timeSpanElement","_data$timeSpanElement2","getTargetSideFromType","targetResource","dependencyType","updateValidity","asyncValid","validityCls","updateCreationTooltip","_me$pointerUpMoveDeta2","createDependency","doAfterDependencyDrop","_me$pointerUpMoveDeta3","_me$documentPointerUp","getElementFromEventRecord","removeConnector","removeConnectorTimeout","terminalsVisibleCls","fixSide","terminal","getTimeSpanMouseEventParams","newDependency","creationTooltipTemplate","_data$target$name","_data$target","fromText","toText","tipTitleIconClsSuffix","tipTitleText","TICKS_PER_CELL","ROWS_PER_CELL","DependencyGridCache","gridCache","fromMSCell","MS_PER_CELL","toMSCell","fromRowCell","toRowCell","msCell","intersectingDependencies","fromDateMS","toDateMS","constructGridCache","firstMSCell","lastMSCell","firstRowCell","lastRowCell","_me$gridCache$i","_msCell$j","rowCell","THRESHOLD","BOX_PROPERTIES","equalEnough","RectangularPathFinder","startArrowMargin","endArrowMargin","endShift","verticalMargin","horizontalMargin","otherBoxes","lineDef","noPathFallbackFn","originalLineDef","lineDefFull","startBox","endBox","startHorizontalMargin","startVerticalMargin","endHorizontalMargin","endVerticalMargin","otherHorizontalMargin","otherVerticalMargin","connStartPoint","connEndPoint","pathStartPoint","pathEndPoint","gridStartPoint","gridEndPoint","startGridBox","endGridBox","tryNum","normalizeSide","getConnectionCoordinatesFromBoxSideShift","calcGridBaseBoxFromBoxAndDrawParams","shouldLookForPath","_otherBoxes","buildPathGrid","convertDecartPointToGridPoint","findPathOnGrid","prependPathWithArrowStaffSegment","appendPathWithArrowStaffSegment","optimizePath","box1","box2","startProp","endProp","gridStartBox","gridEndBox","calculateOverlap","calculateRelativePosition","originalOverlap","finalOverlap","boxOverlapChanged","arrowMargin","gridBox","otherGridBoxes","xs","ys","ix","iy","xslen","yslen","ib","blen","permitted","linearPoints","waveForward","collectPath","gridPoint","predicateFn","preWalkUnordered","getGridPointNeighbors","neighborPoint","pathFound","neighbors","lowestDistanceNeighbor","xDiff","yDiff","resultA","resultB","x1","y1","x2","y2","firstSegment","prependSegment","lastSegment","appendSegment","optPath","prevSegment","curSegment","drawingDirection","pointSet","segmentLength","arc","nextPointSet","corner","rx","ry","sweep","prevRadius","useRadius","nextLength","subtract","useLength","currentRadius","pathMapper","lineSpec","DependencyLineGenerator","pathFinder","pathFinderConfig","lineDefAdjusters","createLineDefAdjusters","createMarker","_me$marker","_me$markerDef","markerDef","svg","svgCanvas","markerId","marker","markerHeight","markerWidth","refX","refY","orient","markerUnits","getElementFromAssignmentRecord","fromAssignment","toAssignment","forceBoxes","getDependencyKey","lineCache","constructLineCache","drawingLive","getAssignmentElement","prepareLineDef","findPath","_me$radius","_me$renderer","depId","noMarkerCls","hideMarker","b-inactive","b-sch-bidirectional-line","bidirectional","b-sch-dependency-ends-outside","milestone","dependencyRecord","fromAssignmentRecord","toAssignmentRecord","fromBox","toBox","rowBottom","overRow","getAssignmentEventBox","getConnectorStartSide","getConnectorEndSide","shrinkArrowMargins","barMargin","resetArrowMargins","shrinkHorizontalMargin","_forceBoxes$from","_forceBoxes$to","getDependencyStartSide","getDependencyEndSide","startRectangle","getAssignmentBounds","endRectangle","generateBoundaryBoxes","adjustLineDef","beforeDraw","afterDraw","fromBoxSide","toBoxSide","DependencyTooltip","getHoverTipHtml","resolveDependencyRecord","collectLinkedAssignments","_assignment$resource","drawDependencies","Dependencies","svgCanvasCreated","animationStart","horizontalScroll","timelineViewportResize","timeAxisViewModelUpdate","toggleNode","_isDisabling","draw","rowStore","usesDisplayStore","commitFinalized","lastScrollX","getElementsForDependency","overCls","drawDependency","unhighlight","fromResource","toResource","highlightEventDependencies","unhighlightEventDependencies","_super$getDependencie","_super$getDependencie2","getDependenciesToConsider","useInitialAnimation","fromAssignments","toAssignments","_idMap$from$resource$","_from$resource","_idMap$to$resource$id","_to$resource","getDomConfig","afterDrawDependency","domSync","_super$afterDrawDepen","_super$beforeDraw","_super$afterDraw","_client$features","_client$features2","_client$features3","_client$features4","_super$reset","highlightDependenciesOnEventHover","DependencyEditor","dependencyEditFeature","showLagField","showDeleteButton","deleteButton","DependencyEdit$1","fromNameField","toNameField","typeField","lagField","foo","saveButton","dependencyEdit","onActivateEditor","clippedBy","deleteDependency","showPoint","lastPointerDownCoordinate","getEditor","loadRecord","internalShowEditor","_me$saveButton","_me$deleteButton","_me$cancelButton","onPopupKeyDown","onDeleteClick","_client$project","onBeforeSave","onAfterSave","_client$project2","editDependency","ScheduleContext","datachange","timeaxisviewmodelupdate","presetchange","timelineContextChange","schedulecontextmenu","rowheight","syncContextElement","clearContext","oldContext","tickStartDate","tickEndDate","getTimeSpanRenderData","resourceWidth","tickParentIndex","EventCopyPaste","scheduleContext","eventclick","onEventClick","scheduleclick","onScheduleClick","_cellClickedContext","copyEvents","pasteEvents","selectedAssignments","assignmentRecords","clipboard","refreshWithTransition","toFocus","pastedEvents","targetResourceRecord","copyPasteAction","newAssignmentRecord","constraintDate","copyEvent","cutEvent","pasteEvent","EventDrag","getDraggableElement","getTriggerParams","needRefresh","initialAssignmentsState","_me$dragData$assignme","sourceRecord","_dragData$newResource","_scheduler$checkEvent","_scheduler$checkEvent2","fromScheduler","toScheduler","copyKeyPressed","updateAssignments","isCopy","targetEventRecord","isCrossScheduler","fromAssignmentStore","fromEventStore","toAssignmentStore","toEventStore","fromResourceStore","toResourceStore","event1Date","eventsToAdd","eventsToRemove","eventsToCheck","eventsToBatch","updatedEvent","indexDiff","draggedEvent","eventBar","hasTemporaryDragElement","addedEvents","draggedAssignment","initialState","originalEventRecord","originalResourceRecord","keepEvent","newAssignment","reassignedFrom","newIndex","getPrevious","draggedEventResourceIndex","processEventDrop","originalDraggedEvent","inTimeAxis","isInTimeAxis","setTopLeft","processCrossSchedulerEventDrop","fillTicks","selectedEvents","previousResolvedResource","previousTargetEventRecord","resolveResource","isOverNewResource","getElementFromContext","isAssignmentSelected","getRelatedRecords","_dateConstraints","_me$getDateConstraint","constrainRectangle","getConstrainingRectangle","eventRegion","setupConstraints","eventBarEl","addTemporaryDragElement","_scheduler$getDateCon","externalDateConstraints","dateRange","milestoneLayoutMode","milestoneAlign","pageRect","localRect","lx","ly","eventTarget","EventDragCreate","_client$onEventCreate","createEventRecord","isDragCreating","handleBeforeDragCreate","lockLayout","excludeFromLayout","onEventCreated","addAsync","isGanttProjectMixin","constraintType","hasEventEditor","_this$store$unassignE","_this$store","EventDragSelect","canvasRect","clearEventSelection","subGridElementRect","enableScrollingCloseToEdges","mouseUpDetacher","eventRectangles","updateSelection","_me$element","disableScrollingCloseToEdges","_navigator$activeItem","activeAssignment","selectionRect","assignmentData","shouldSelect","EventEditor","titleRenderer","initialTitle","eventEditFeature","_widget$type","fieldConfig","chainResourceStore","_resourceField$store","resourceField","RecurrenceConfirmationPopup","changeSingleButton","changeMultipleButton","processMultipleRecords","processSingleRecord","updatePopupContent","actionType","isMaster","changerFn","_firstOccurrence","firstOccurrence","RecurrenceFrequencyCombo","RecurrenceCombo","customValue","splitCls","isCustomRecurrence","RecurrenceLegendButton","updateLegend","_eventStartDate","getLegend","onLocaleChange","RecurrenceDaysCombo","getDayNames","RecurrenceDaysButtonGroup","__items","updateItemText","RecurrenceMonthDaysButtonGroup","maxValue","RecurrenceMonthsButtonGroup","RecurrenceStopConditionCombo","RecurrencePositionsCombo","maxPosition","buildDayNumbers","RecurrenceEditor","frequencyField","intervalField","daysButtonField","forFrequency","monthDaysRadioField","monthDaysButtonField","monthsButtonField","positionAndDayRadioField","positionsCombo","daysCombo","stopRecurrenceField","countField","check","uncheck","saveHandler","syncEventRecord","cancelHandler","getValues","isWidgetAvailableForFrequency","toggleStopFields","toggleFieldsState","onMonthDaysRadioFieldChange","onPositionAndDayRadioFieldChange","onStopRecurrenceFieldChange","RecurringEventEdit","recurringEventsItems","editRecurrenceButton","showRecurringUI","changeEditorConfig","beforeEventSave","_this$_recurrenceConf","_this$_recurrenceEdit","_recurrenceConfirmation","_recurrenceEditor","_me$recurrenceCombo","onRecurringEventEditorHide","onRecurrenceComboChange","toggleRecurringFieldsVisibility","_this$editRecurrenceB","_this$editRecurrenceB2","_this$recurrenceCombo","_this$recurrenceCombo2","methodName","_this$recurrenceEdito","_this$recurrenceConfi","recurrenceConfirmation","eventCopy","recurrenceEditorSaveHandler","onBeforeShowRecurrenceEditor","makeRecurrence","updateRecurrenceFields","loadRecurrenceData","onDatesChange","loadingRecord","ResourceCombo","showEventColor","isStyleColor","colorClass","changePicker","_me$selected$eventCol","_me$selected","resourceIcon","lastResourceIconCls","EventEdit","projectChange","_me$onEditorConstruct","_me$eventTypeField","getEditorConfig","beforehide","beforeshow","onEditorConstructed","eventTypeField","onEventTypeChange","_align","_align$target","_align2","toggleEventType","onChangeWhileEditing","onBeforeEditorShow","oldTargetEventElement","simpleEventEdit","resetEditingContext","doEditEvent","isNewRecord","scrollResourceEventIntoView","extendTimeAxis","internalLoadRecord","_this$_editor2","_widget$dataset","_me$resourceField","saveEvent","finalizeEventSave","removeEvents","removeRecord","editEvent","EventFilter","eventsFilter","nameFilter","onEventFilterChange","filterByName","EventMenu","getElementFromRecord","tiggerEvent","getElementsFromEventRecord","unassignEvent","_menu$focusInEvent","revertTarget","isEventSelected","_menu$focusInEvent2","unassign","NonWorkingTimeMixin","getNonWorkingTimeRanges","ignoreName","shouldPaint","maxTimeAxisUnit","allRanges","timeSpans","mergedSpans","autoGeneratedWeekends","updateDefaultCalendar","defaultNonWorkingIntervals","hasIntervals","clearIntervals","_super$updateLocaliza","EventNonWorkingTime","setupDefaultCalendar","calendarRangeCache","b-sch-timerange","b-sch-range","b-sch-nonworkingtime","getCalendarTimeRanges","_eventRecord$effectiv","effectiveCalendarsCombination","EventTooltip","configuredOffset","refreshActions","GroupSummary","footersToUpdate","onEventStoreChange","onTimeAxisChange","onProjectDataReady","_this$_tip","_changes$resourceId","_footer$render","timeaxisCell","onBeforeRenderRow","colCfg","eventsByTick","getResourcesEventsPerTick","groupEvents","sumHtml","tipHtml","showTip","_labels","_me$summaries","summaryElement","isTimeAxisColumn","HeaderZoom","headerElementRect","zoomToSpan","sides","editorAlign","topBottom","layoutModes","layoutSides","Labels","labelLayoutMode","labelCharWidth","updateHostClasslist","labelConfig","processLabelSpec","labelSpec","milestoneWidth","taskFeature","eventRecordProperty","pxPerMS","getSingleUnitInPixels","stripTags","labelMeasureElement","_data$eventRecord","generateLabelConfigs","measureLabels","wrapperChildren","NonWorkingTime","highlightWeekends","hideRangesOnZooming","attachToCalendar","calendarChange","_timeAxisUnitDurationMs","onTimeAxisViewModelUpdate","timeAxisUnitDurationMs","Pan","enableInHeader","dragFeature","taskDrag","eventDrag","enablePanOnEvents","mouseX","mouseY","xScroller","ResourceTimeRanges","superConfig","_me$mouseEventsDetach","mouseEventsDetacher","attachMouseEvents","exposedOnScheduler","_EventHelper$eventNam","eventNameMap","resourceTimeRangeRecord","enableMouseEvents","isCalendarHighlightModel","ScheduleMenu","_client$getCellDataFr","_client$getDateFromDo","getDateFromDomEvent","createEvent","ScheduleTooltip","messageTemplate","hideForNonWorkingTime","reshowListener","hoverTip","internalOnPointerOver","buttonsPressed","lastTime","lastHtml","lastResourceId","generateTipContent","clockHtml","generateContent","messageHtml","getText","SimpleEventEdit","dragcreateend","onDragCreateEnd","zeroMargins","StickyEvents","stickyContents","syncEventContentPosition","updateStyles","verticalSyncAllEventsContentPosition","contentEl","resourceMap","duringGeneration","bufferAfterWidth","bufferBeforeWidth","scrollPosition","wrapperEl","contentWidth","edgeSizes","getEventContentMargins","maxOffset","stuck","TimelineSummary","updateProject","summaryBarElement","summaryContainer","_tipHtml","updateTimelineSummaries","_this$summaryColumn","summaryColumn","Summary","verticalSummaryColumnConfig","updateEventStore","updateResourceStore","forResources","setTimeSpanOptions","maintainVisibleStart","TimeAxisHeaderMenu","zoomOnTimeAxisDoubleClick","dateStep","zoomLevel","zoomSlider","zoom","minZoomLevel","maxZoomLevel","zoomDetatcher","onRangeDateFieldChange","leftShiftBtn","onLeftShiftBtnClick","todayBtn","onTodayBtnClick","rightShiftBtn","onRightShiftBtnClick","initDateRangeFields","initDates","startDateFieldInitialValue","endDateFieldInitialValue","startDateChanged","shiftPrevious","shiftNext","TimeRanges","_this$storeDetacher","currentTimeLine","showCurrentTimeLine","currentTimeInterval","updateCurrentTimeLine","currentTimeLineUpdateInterval","currentDateFormat","initCurrentTimeLine","hideCurrentTimeLine","attachToStore","_timeRangesExposed","runWithTransition","rangeBodyEl","getBodyElementByRecord","originRangeX","originRangeY","newStart","wasModified","newEnd","onInvalidResize","TimeSelection","selectedTimeSpan","timeAxisHeaderMouseDown","ignoreRTL","resolutionDurationMS","getDistanceForDuration","_context$newWidth","_context$newHeight","updateFromCoords","ScheduleRange","completeview","currentview","daterange","immediatePromise","SchedulerExporterMixin","scrollFired","scrollToDate","clonedEl","includeTimeline","scheduleRange","infiniteScroll","_oldEnableEventAnimations","isHorizontalRendering","_oldScrollBuffer","scrollBuffer","_oldVerticalBuffer","verticalBufferSize","ignoreViewBox","fgCanvasEl","timeAxisEl","getDistanceBetweenDates","timeAxisHeaders","timeAxisPlaceholders","headersColleted","headerRow","eventsPlaceholder","eventsBoxes","columnLinesCanvas","columnLinesPlaceholder","lines","majorLines","timeRangesHeaderCanvas","timeRangesBodyCanvas","timeRangesHeaderPlaceholder","timeRangesBodyPlaceholder","svgCanvasEl","dependencyCanvasEl","dependenciesPlaceholder","waitForHorizontalScroll","pageRangeStart","pageRangeEnd","getCurrentPageDateRange","renderHeaders","renderLines","renderEvents","rangeProcessed","collectLines","collectHeaders","collectRanges","collectEvents","timeSpanContains","pageStartX","pageEndX","normalGridX","canvasEl","marginLeft","headersCollected","headerRows","headersMap","bgCanvas","lineEl","lineIndex","addedRows","normalRows","_resource$events","_resource$timeRanges","rowConfig","eventsMap","_client$features$reso","elId","resourceLayout","getResourceLayout","eventDOMConfigs","getEventDOMConfigForCurrentView","lineElements","buildDependenciesHtml","dependencyFeature","isDependencyVisible","getEventBox","renderDependencies","eventsHtml","extras","ScheduleRangeCombo","SchedulerExportDialog","scheduleRangeField","rangesContainer","filler","rangeStartField","rangeEndField","filler2","rangesContainerItems","translateRe","topRe","rowTopDelta","TimeAxisViewModel","forceFit","suppressFit","originalTickSize","headersDatesCache","unitToPixelsCache","consumeViewPreset","onTimeAxisReconfigure","configured","bufferCoef","halfSpan","bufferedTicks","_columnConfig","_headers","cellGenerator","isTimeAxisViewModel","_forceFit","forceUpdate","_availableSpace","calculateTickSize","_totalSize","headerCells","createHeaderRow","getScaledTick","snapToNextIncluded","tickChanged","originalHours","croppedHours","fractionalHours","hoursFromCenter","newHours","checkDay","addDays","fixedCenter","fractionalDay","daysFromCenter","newDay","allowOutOfRange","getScaledPosition","dayWidth","positionInWeek","weekStartPosition","hourWidth","positionInDay","dayStartPosition","setTickSize","suppressEvent","proposedSize","timelineUnit","ratio","fittingSize","newTickSize","useLowestHeader","lowestHeader","majorLevel","majorHeaderLevel","levelUnit","validMajor","doesUnitsAlign","hasGenerator","forEachInterval","isMajorTick","_snap","headerRowConfig","tickLevel","createCellContext","isInteriorTick","nextLevel","forEachAuxInterval","TimelineDateMapper","translateToScheduleCoordinate","getRtlX","_displayDateFormat","translateToPageCoordinate","viewportCenterDate","centerY","scrollCenter","centerMilli","viewportCenterDateCached","cachedCenterDate","_this$_timeAxisViewMo","_this$_timeAxisViewMo2","scrollingToCenter","TimelineDomEvents","schedulerEvents","schedulerEnterLeaveEvents","docScrollListener","timelineContext","getTimelineEventContext","lastPointerEvent","handleScheduleEvent","_this$features$pan","pointerEvent","mouseEvent","getCellElementFromDomEvent","clickedDate","mouseParams","getScheduleMouseEventParams","isTimelineContext","_me$rowManager$getRow","resolveRowRecord","timeCellSelector","contextMenu","onElementMouseButtonEvent","onElementDblClick","onElementContextMenu","_me$features$eventDra","onElementMouseOver","hoveredEvents","preventOverCls","overScheduledEventClass","unhoverAll","_me$features$eventDra2","onElementMouseOut","eventInner","eventWrap","onScheduleScroll","datesDiffer","d2","TimelineViewPresets","presetRecord","presetStore","oldViewPreset","lastOpts","lastViewPresetOptions","presetChanged","optionsChanged","centerDate","_timeAxis","_viewPresetChanging","timeAxisCfg","calculateInfiniteScrollingDateRange","notScroll","viewportSize","scrollHorizontallyTo","scrollVerticallyTo","timelineScroller","presetId","updateFromHorizontalScroll","updateFromVerticalScroll","_presets","TimelineZoomable","zoomOnMouseWheel","preventScrollZoom","visibleZoomFactor","zoomKeepsOriginalTimespan","_maxZoomLevel","_minZoomLevel","zoomToLevel","ignoreActualWidth","actualWidth","tickSizeProp","newPreset","configuredTickSize","span","scrollableViewportSize","calculateOptimalDateRange","isZooming","getTotalTimeSpan","leftMargin","rightMargin","adjustStart","adjustEnd","needToAdjust","diffMS","currLevel","getMilliSecondsPerPixelForZoomLevel","candidateLevel","levelToZoom","spanWidth","unitToZoom","tickCount","customWidth","currentZoomLevelIndex","userProvidedSpan","zoomOut","zoomIn","RecurringEvents","recurrenceConfirmationPopup","beforeeventdropfinalize","beforeeventresizefinalize","beforeAssignmentDelete","oldRecurrenceConfirmationPopup","findRecurringEventToConfirmDelete","popupOwner","_record$event","shouldFinalize","recurringEventRecord","TimelineEventRendering","resourceMargin","managedEventSizing","generatedIdCls","dirtyCls","committingCls","endsOutsideViewCls","startsOutsideViewCls","fixedEventCls","eventStyle","onBeforeRowHeightChange","_resourceMargin","eventColors","eventStyles","defaultScrollOptions$1","TimelineScroll","bufferThreshold","TimelineScroller","visibleDate","_this$timelineScrolle","checkTimeAxisScroll","requiredSize","maxScroll","paddingBottom","shiftToDate","visibleWidth","extraScroll","shiftDirection","scrollerViewport","localCoordinate","scrollToCoordinate","visibleSpan","nextAnimationFrame","_position","copyProperties$1","TimelineState","zoomLevelOptions","_state$scroll","_zoomAfterPaint","Header","_this$headersElement","TimeAxisSubGrid","b-sticky-headers","changeScrollable","updateCanvasSize","onSchedulerViewportResize","exitTransition","emptyObject$2","TimelineBase","workingTime","autoAdjustTimeAxis","timeCellCls","partner","schedulerRegion","animationTimeout","viewportResizeTimeout","handlingVisibleDateRangeChange","_visibleDateRange","$firstVerticalOverflow","initDomEvents","forceLayout","partneredWith","onBodyResize","_me$currentOrientatio","_me$currentOrientatio2","doUpdateTimeView","onSchedulerHorizontalScroll","frameCount","scrollInterval","timePerFrame","fps","eventPositionMode","eventScrollMode","scrollStart","startChanged","endChanged","oldTickSize","currentScroll","visibleStart","tickSizeChanged","hasVisibleEvents","noFeatureElementsInAxis","_capitalizedEventName","_partner","overflowChange","partnerSharedConfig","partnerSharedConfigs","syncPartnerSubGrids","createSequence","_this$partneredWith","otherScrollable","ourY","_timeAxisColumn","timeAxisColumnIndex","timeAxisColumnConfig","_horizontalColumns","verticalTimeAxisColumn","isVerticalTimeAxisColumn","unreleasedEventSelector","currentModel","tavmListeners","_suppressFit","currentTimeAxis","timeAxisListeners","applyWorkingTime","_workingTime","fromHour","toHour","fromDay","toDay","_me$features$columnLi","ta","_tempStartDate","_tempEndDate","regionResize","_eventStyle","_eventColor","oldAutoAdjust","onViewportResize","isSyncingFromPartner","partnerSubGrid","_backgroundCanvas","_foregroundCanvas","_svgCanvas","_timeAxisSubGridElement","_this$timeAxisColumn","$canvasWidth","refreshAfterProjectRefresh","refreshAllWhenReady","schedulerEl","fgCanvas","reLayoutEvents","locale$2","eventCountText","SF","FS","FF","short","long","DependencyEdit","From","To","Lag","Edit dependency","Save","Delete","Name","Resource","Start","Edit event","Repeat","eventOverlapsExisting","noDropOutsideTimeline","SchedulerBase","Add event","Delete event","Unassign event","pickZoomLevel","activeDateRange","todayText","filterEvents","byName","delete-title","delete-all-message","delete-further-message","delete-further-btn-text","delete-only-this-btn-text","update-title","update-all-message","update-further-message","update-further-btn-text","update-only-this-btn-text"," and ","Daily","Weekly on {1}","Monthly on {1}","Yearly on {1} of {2}","Every {0} days","Every {0} weeks on {1}","Every {0} months on {1}","Every {0} years on {1} of {2}","position1","position2","position3","position4","position5","position-1","weekend day","daysFormat","Repeat event","Frequency","Every","DAILYintervalUnit","WEEKLYintervalUnit","MONTHLYintervalUnit","YEARLYintervalUnit","Each","On the","End repeat","time(s)","Never","After","On date","Weekly","Monthly","Yearly","None","Custom","Summary for","completedata","Schedule range","Export from","Export to","ExcelExporter","No resource assigned","serverResponseLabel","inlineProperties","CurrentConfig","arrayify","pickFormat","Describable","dateBounds","description","_me$descriptionFormat","descriptionRenderer","descriptionFormat","defaultDescriptionFormat","format0","formatRange","dateSeparator","SchedulerDom","returnWrapper","_this$foregroundCanva","_wrapper","_wrapper$syncIdMap","wrapper","_this$foregroundCanva2","_eventRecord$resource","_this$foregroundCanva3","elementOrEvent","_elementOrEvent","assignmentId","SchedulerDomEvents","onElementKeyUp","SchedulerEventRendering","milestoneTextPosition","milestoneCharWidth","milestoneMinWidth","overlappingEventSorter","horizontalEventSorterFn","eventRenderer","eventRendererThisObj","eventBarTextField","eventBodyTemplate","horizontalLayoutPackClass","horizontalLayoutStackClass","isFirstRender","initialAnimationDuration","narrowEventWidth","internalEventLayout","getEventLayout","oldEventLayout","layouts","horizontalStack","layoutEventVerticallyStack","horizontalPack","layoutEventVerticallyPack","_resourceRecord$resou","_resourceRecord$barMa","_resourceRecord$rowHe","getResourceWidth","_resourceRecord$colum","_row$maxRequestedHeig","getResourceHeight","parentEventRecord","getResourceMargin","getAppliedResourceHeight","getBarMargin","_eventRecord$event","_eventRecord$parent","includeOutside","taskBarFeature","_renderData$iconCls2","isDirty","clsListObj","b-clipped-start","clippedStart","b-clipped-end","clippedEnd","b-iscreating","wrapperClsListObj","b-linked-resource","b-original-resource","clsList","wrapperClsList","wrapperStyle","isWrap","b-milestone","b-sch-event-narrow","eventResize","eventSelectedCls","eventAssignHighlightCls","b-recurring","b-occurrence","inactive","getEventStyle","getEventColor","hasAnimation","noAnimations","b-milestone-wrap","delayMS","initialAnimationDetacher","eventBarIconClsField","childContent","milestoneLabelConfig","rendererValue","_renderData$iconCls","isHtml","colorProp","onEventDataGenerated","initialAnimation","_me$initialAnimationD","milestoneMeasureElement","SchedulerStores","batchedUpdate","commitStart","idchange","startParamName","endParamName","passStartEndParameters","crudManagerClass","navigateToAfterRefresh","navigateTo","bindCrudManager","onStoreAdd","calculateRowHeights","ignoreCount","onStoreUpdateRecord","metaMapId","onEventStoreIdChange","isRemovingAssignment","resourcesToRepaint","repaintEvent","repaintEventsForAssignmentChanges","getResource","defaultScrollOptions","unrenderedScrollOptions","SchedulerScroll","eventIsOutside","currentTimeSpanRange","_me$expandTo","scrollUnrenderedEventIntoView","scrollResourceIntoView","resourceRec","eventRec","modifiedOptions","getResourceEventBox","onEventRender","initialScrollPromise","renderEvent","SchedulerRegions","getRowRegion","includesOutside","SchedulerState","_state$zoomLevelOptio","propsToCopy","EventSelection","highlightPredecessors","highlightSuccessors","eventSelectionDisabled","triggerSelectionChangeOnRemove","maintainSelectionOnDatasetChange","selectedCollection","_selectedCollection","deferUntilRepopulationIfNeeded","onSelectedCollectionChange","getEventsFromAssignments","_events","isEventSelectable","eventOrAssignment","preserveSelection","selectEvents","deselectAssignment","deselectEvent","getActionType","otherAssignmentRecord","highlightLinkedEvents","$selectedAssignments","deselectAssignments","clean","isResourceTimeRangeStore","clickedRecord","onAssignmentSelectionClick","changeLinkedEvents","dependenciesFeature","toWalk","outgoing","incoming","_this$_selectedCollec","isArrowKey","animate100","emptyObject$1","EventNavigation","Space","SHIFT+Tab","isNavigationKey","enableDeleteKey","onDeleteKeyBuffer","navigatePreviousBuffer","navigateNextBuffer","onDeleteKey","excluded","_me$focusedCell2","firstAssignment","getFirstVisibleAssignment","uiEvent","_super$onElementKeyDo","_renderedEvents","renderedEvents","rowMap","_renderedEvents$","_currentOrientation$r","_renderedEvents2","_renderedEvents$filte","isGridCellFocus","eventFocus","destinationCell","isDelete","eventSorter","resourceEvents","previousEvent","rowIdx","previousAssignment","normalizeTarget","doGridNavigation","nextEvent","nextAssignment","targetAssignment","scrollAssignmentIntoView","assignmentEl","previousActiveEvent","releaseEventActions$1","releaseElement","reuseElement","renderEventActions$1","reuseOwnElement","MAX_WIDTH","heightEventSorter","chronoFields$1","getStartEnd","useEnd","_eventRecord$hasBatch","useTickDates","tickRecord","HorizontalRendering","bufferSize","eventConfigs","isFirstRefresh","toDrawOnProjectRefresh","toDrawOnDataReady","removeRows","translateRow","beforeRowHeight","stretch","taStart","taEnd","endX","resourceData","approx","rowBox","absoluteTop","eventNode","clearAll","clearDom","clearResources","refreshResources","calculateAllRowHeights","refreshPreCommit","resourceIds","_assignmentRecord$res","_assignmentRecord$res2","_assignmentRecord$res3","refreshResourcesWhenReady","oldAssignment","refreshResourcesOnDataReady","_eventRecord$$linkedR","allChrono","$entity","dateChanges","_me$project2","propagatingLoadChanges","clearLayoutCache","refreshEventsForResource","_resourceRecord$assig","layoutType","getResourceLayoutSettings","eventFilter","layoutHandler","getEventLayoutHandler","nbrOfBandsRequired","onRenderDone","useWrapper","rendererCalled","returnEnd","viewportCoords","onVisibleDateRangeChange","bandIndex","topFraction","heightFraction","generateRenderData","startA","dataStartMS","endA","dataEndMS","startB","endB","nameA","nameB","pxPerMinute","lengthInPx","getMilestoneLabelWidth","_scheduler$features$e","isProHorizontalRendering","timespanStart","timespanEnd","viewStartMS","viewEndMS","calculateMS","durationMinutes","calculateHorizontalPosition","stickyEvents","includeOutsideTimeAxis","includeOutsideViewport","setupRenderData","fillTimeSpanHorizontalPosition","fillTimeSpanVerticalPosition","eventBox","layoutEventData","bandsRequired","applyLayout","getEventsToRender","layoutEvents","eventElementConfig","recordOrRow","layoutResourceEvents","usesLabels","useLeft","useRight","_scheduler$_scrollTop","visibleEventDOMConfigs","bodyTop","viewTop","viewBottom","unbuffered","unmanagedSize","_domConfig$elementDat","isRelease","isRender","isReusingElement","isRepaint","VerticalLayout","clusterIndex","widthFactor","leftFactor","packColumnCount","packColumnIndex","releaseEventActions","renderEventActions","chronoFields","emptyObject","VerticalRendering","eventMap","releasedElements","resourceBufferSize","verticalLayout","columnWidthChange","_this$eventMap$get","_this$eventMap$get2","_this$eventMap$get3","_this$eventMap$get3$r","layoutResource","endY","refreshAllResourcesWhenReady","changeCount","unmaskBody","firstIndex","refreshFromRerender","renderResource","prevScrollX","resourceRange","withBuffer","viewportStart","viewportEnd","bottomDate","topDate","isProVerticalRendering","dataStartMs","dataEndMs","resourceIndex","layoutData","toLayout","eventResources","getMapPath","internalStyle","topDateMS","bottomDateMS","syncConfigs","resourceEntry","featureDomConfigs","getForegroundDomConfigs","isEventElement","reusingElement","onVisibleResourceRangeChange","descriptionFormats","createEventOnDblClick","schedulableAreaSelector","preCalculateHeightLimit","onVerticalScroll","onTimeAxisCellDblClick","_me$firstVisibleRow","_me$lastVisibleRow","_features$eventEdit","_features$taskEdit","_features$simpleEvent","useEventModelDefaults","defaultDurationUnit","eventEditAvailable","getEventElement","_me$crudManager","calculateRowHeight","currentDate","eventRect","resourceTimeRangeSelector","ScheduleTableExporter","includeUnassigned","eventColumns","eventSortFn","generateEventColumns","processEventColumn","eventColumn","getRowData","notAssignedEvents","resourceCells","eventCells","ProjectCombo","_project$transport$lo","ResourceFilter","masterFilter","_me$initialConfig$sto","chainedStoreConfig","changeListeners","initFilter","resourceFilter","SchedulerDatePicker","showEvents","refreshEventsMap","oldShowEvents","eventStoreOwner","getEventCounts","_this$eventCounts","_this$eventCounts$get","eventCounts","getEventCountClass","isProjectConsumer","onCrudManagerLoad","ViewPresetCombo","onClientPresetChange","_isSelecting","beginningOf","_DateHelper$parseTime","MIN_SMI","MAX_SMI","uppercaseFirst","isAtomicValue","prototypeValue","propertyKey","copySetInto","sourceSet","targetSet","isRegeneratorRuntime","isGeneratorFunction","regeneratorRuntime","emptyFn$1","DEBUG_ONLY","OnCycleAction","WalkSource","NOT_VISITED","VISITED_TOPOLOGICALLY","WalkContext","toVisit","currentEpoch","continueFrom","walkDepth","walkStep","visitInfo","visitedAt","visitEpoch","visitedInfo","getVisitedInfo","onCycle","Resume","onTopologicalNode","onNode","visitedInfo2","setVisitedInfo","lengthBefore","collectNext","cycleInfo","cycleSource","cursor","__decorate$u","decorators","decorate","FORMULA_ID","CalculateProposed","Formula","formulaId","inputs","VariableWalkContext","formulas","formulasByInput","formula","FormulasCache","variables","$formulasByInput","$formulasByOutput","formulasByOutput","isCyclic","walkContext","startFrom","allInputVariables","CycleDescription","CycleResolution","defaultResolutionFormulas","resolutionsByInputHash","buildResolution","WalkState","allResolutions","asResolution","nbrOfDefaultFormulas","activatedFormulas","formulaIsDefault","unCoveredInputWeight","res1","res2","VariableInputState","CycleResolutionInput","$hash","buildHash","variable","NoInput","batchToCharCode","reduceRight","charCode","HasProposedValue","hasProposedValue","HasPreviousValue","hasPreviousValue","KeepIfPossible","keepIfPossible","activatedFormula","$activatedFormulas","thisAndPreviousStates","proposedVars","hasProposedValueVars","isProposed","keepIfPossibleVars","allInputVars","totalWeight","isOverwrittenByFormulas","formulaHasProposedValueInInput","usedInFormulas","formula1","formula2","allInputsHasProposed1","formulaAllInputsHasProposed","allInputsHasProposed2","countInputsWithProposedOrKeep1","formulaCountInputsWithProposedOrKeep","countInputsWithProposedOrKeep2","everyFormulaInputHasValue","outputVariableAlreadyCalculated","outputVariableHasPreviousValue","unvisitedFormulas","preferFormula","isFinal","formulaIsApplicable","formulaIsInsignificant","nextState","firstFormula","__decorate$t","BreakCurrentStackExecution","Effect","ProposedOrPreviousSymbol","ProposedOrPrevious","RejectSymbol","RejectEffect","Reject","TransactionSymbol","OwnQuarkSymbol","OwnIdentifierSymbol","WriteSymbol","WriteEffect","Write","proposedValue","proposedArgs","WriteSeveralSymbol","WriteSeveralEffect","WriteSeveral","writes","PreviousValueOfSymbol","PreviousValueOfEffect","PreviousValueOf","ProposedValueOfSymbol","ProposedValueOfEffect","ProposedValueOf","HasProposedValueSymbol","HasProposedValueEffect","ProposedOrPreviousValueOfSymbol","ProposedOrPreviousValueOfEffect","ProposedOrPreviousValueOf","ProposedArgumentsOfSymbol","ProposedArgumentsOfEffect","ProposedArgumentsOf","UnsafeProposedOrPreviousValueOfSymbol","UnsafePreviousValueOfSymbol","CycleResolutionInputChrono","addPreviousValueFlag","addProposedValueFlag","CalculationGen","iterationResult","onEffect","calculation","startCalculation","isCalculationCompleted","continueCalculation","SynchronousCalculationStarted","calculationStartedConstant","CalculationSync","runGeneratorSyncWithEffect","effect","gen","iteration","runGeneratorAsyncWithEffect","effectResolution","EdgeType","ORIGIN_ID","Quark","createdAt","proposedArguments","usedProposedOrPrevious","originId","needToBuildProposedValue","edgesFlow","$outgoingPast","cleanupCalculation","epoch","clearOutgoing","proposedValueIsBuilt","TombStone","latestScope","copyFrom","getOutgoing","quark","ownOutgoing","outgoingPast","getOutgoingPast","clearProperties","startOrigin","toQuark","Normal","getOrigin","isShadow","hasProposedValueInner","buildProposedValue","getLatestEntryFor","latestEntry","getLatestStableEntryFor","__decorate$s","Levels","total","pure","DependsOnSelfKind","Identifier","newQuark","quarkClass","getWriteTarget","write","readAsync","QuarkSync","QuarkGen","Variable","YIELD","UserInput","VariableC","CalculatedValueSync","CalculatedValueSyncC","CalculatedValueGen","CalculatedValueGenC","throwUnknownIdentifier","CLOCK","Revision","reachableCount","referenceCount","selfDependent","LeveledQueue","lowestLevel","elLevel","ComputationCycle","cycleIdentifiers","cycleEvents","TransactionCycleDetectionWalkContext","visit","outgoingInTheFutureTransactionCb","outgoingEntry","doCollectNext","TransactionWalkDepth","baseRevision","pushTo","outgoingInTheFutureAndPastTransactionCb","outgoingIdentifier","resetToEpoch","EdgeTypeNormal","EdgeTypePast","Past","Transaction","candidateClass","stackGen","activeStack","onEffectSync","onEffectAsync","propagationStartDate","lastProgressNotificationDate","startProgressNotificationsAfterMs","emitProgressNotificationsEveryMs","emitProgressNotificationsEveryCalculations","plannedTotalIdentifiersToCalculate","selfDependedMarked","rejectedWith","stopped","hasEntryWithProposedValue","hasVariableEntry","selfDependentIden","yieldAsync","activeEntry","getActiveEntry","addEdge","previousEntry","hasValue","forceCalculation","calculateTransitionsStackGen","takeLowestLevel","markSelfDependent","yieldSync","getLowestLevel","calculateTransitionsStackSync","dirtyQuark","readPrevious","readPreviousAsync","existingEntry","isVariable","enterGraph","leaveGraph","toIdentifier","populateCandidateScopeFromTransitions","preCommit","calculateTransitionsSync","postCommit","rejection","calculateTransitions","identifierRead","setOrigin","addOutgoingTo","sameAsPrevious","equality","previousOutgoingEntry","ignoreSelfDependency","requestedEntry","isCalculationStarted","startNewEpoch","enableProgressNotifications","prevActiveStack","onPropagationProgressNotification","phase","ownEntry","startedAtEpoch","onQuarkCalculationCompleted","onReadIdentifierResult","onReadIdentifier","onComputationCycleHandler","effectResult","onComputationCycleHandlerSync","CommitZero","Listener","ChronoGraph","baseRevisionStable","baseRevisionTentative","topRevision","historyLimit","$activeTransaction","_isInitialCommit","autoCommitTimeoutId","autoCommitMode","autoCommitHandler","onWriteDuringCommit","onComputationCycle","transactionClass","$followingRevision","markAndSweep","activeTransaction","isBetweenTopBottom","previousAxis","lastReferencedRevision","unreachableRevisions","isReachable","eachReachableRevision","compactRevisions","newRev","prevRev","prevQuark","mergePreviousOrigin","followingRevision","revisions","Constructor","transactionCommitResult","finalizeCommit","transactionResult","finalizeCommitAsync","clearRejected","quarkEntry","addIdentifier","scheduleAutoCommit","removeIdentifier","hasIdentifier","observerFunc","onUpdated","nextRevision","notification","getProposedValue","writeToHigherLevel","writeInfo","readProposedOrPrevious","EntityMeta","ownFields","schema","$skeleton","$allFields","entity","parentEntity","forEachParent","ReadMode","Replica","readMode","Current","entities","addEntity","removeEntity","FieldIdentifier","DATA","Previous","readCurrentOrProposedOrPrevious","MinimalFieldIdentifierSync","MinimalFieldIdentifierGen","MinimalFieldVariable","EntityIdentifier","MinimalEntityIdentifier","persistent","calculationFunction","identifierCls","isEntityMarker","Entity","createEntityOnPrototype","forEachField","createFieldIdentifier","$$","$entityName","calculateSelf","skeleton","getIdentifierTemplateClass","replica","ownGraph","removeFrom","ensureEntityOnPrototype","$calculations","writeFunction","$writes","buildProposedFunction","$buildProposed","getIdentifierClass","TemplateClass","getFromGraph","writeToGraph","getterFnName","setterFnName","putterFnName","generic_field","fieldCls","cons","createPropertyAccessorsFor","createMethodAccessorsFor","calculations","build_proposed","buildProposed","__decorate$r","ReferenceField","MinimalReferenceIdentifier","ReferenceIdentifier","hasBucket","getBucket","addToBucket","locator","resolver","removeFromBucket","acquireQuarkIfExists","DependsOnlyOnUserInput","__decorate$q","ReferenceBucketField","MinimalReferenceBucketIdentifier","BucketMutationType","ReferenceBucketQuark","previousValue","MinimalReferenceBucketQuark","ReferenceBucketIdentifier","Add","preQuark","Remove","quarkArg","DependsOnlyOnDependsOnlyOnUserInput","Schema","hasEntity","entityDecoratorBody","ChronoModelMixin","forEachFieldIdentifier","chronoField","_this$graph","locale$1","RemoveDependencyCycleEffectResolution","descriptionTpl","DeactivateDependencyCycleEffectResolution","CycleEffectDescription","EmptyCalendarEffectDescription","Use24hrsEmptyCalendarEffectResolution","Use8hrsEmptyCalendarEffectResolution","ConflictEffectDescription","ConstraintIntervalDescription","ProjectConstraintIntervalDescription","startDateDescriptionTpl","endDateDescriptionTpl","ManuallyScheduledParentConstraintIntervalDescription","startDescriptionTpl","endDescriptionTpl","DisableManuallyScheduledConflictResolution","DependencyConstraintIntervalDescription","RemoveDependencyResolution","DeactivateDependencyResolution","DateConstraintIntervalDescription","constraintTypeTpl","startnoearlierthan","finishnoearlierthan","muststarton","mustfinishon","startnolaterthan","finishnolaterthan","RemoveDateConstraintConflictResolution","DateInterval","another","isIntervalEmpty","anotherStart","anotherEnd","EMPTY_INTERVAL","collectIntersectionMeta","_another$intersection","intersectionOf","intersectedAsEmpty","copyData","getCopyProperties","intersectIntervals","dateIntervals","currentInterval","intersectMut","__decorate$p","EffectResolutionResult","SchedulingIssueEffectResolution","SchedulingIssueEffect","_resolutions","_descriptionBuilderClass","getDescriptionBuilderClass","getDescription","__decorate$o","ConflictSymbol","conflict","ConflictEffect","filterConflictingIntervals","getResolutions","intervalsArray","isInfinite","affectedInterval","isAffectedByTransaction","intersection","conflictingInterval","ConflictResolution","getDescriptionParameters","ConstraintInterval","reflectionOf","resolutions","isConstraintInterval","descriptionBuilderClass","__decorate$n","isSerializableEqual","ModelField","modelFieldConfig","MinimalChronoModelFieldVariable","MinimalChronoModelFieldIdentifierGen","MinimalChronoModelFieldIdentifierSync","ModelReferenceField","ChronoModelReferenceFieldIdentifier","ModelBucketField","ChronoModelReferenceBucketFieldIdentifier","IsChronoModelSymbol","ChronoModelFieldIdentifier","CurrentOrProposedOrPrevious","_graph$activeTransact","_graph$activeTransact2","higherLevel","ChronoModelReferenceFieldQuark","failedResolutionReferences","model_field","chronoFieldConfig","chronoFieldClass","decoratorFn","injectStaticFieldsProperty","getDecoratedModelFields","constr","dateConverter","$chrono","_field$modelFieldConf","_field$modelFieldConf2","ChronoPartOfProjectGenericMixin","getGraph","_this$getEventStore","_this$getDependencySt","_this$getResourceStor","getResourceStore","_this$getAssignmentSt","_this$getCalendarMana","getCalendarManagerStore","ChronoStoreMixin","ChronoPartOfProjectStoreMixin","removalOrder","repopulateStore","scheduleDelayedCalculation","ChronoPartOfProjectModelMixin","_graph","__decorate$m","hasMixin","EmptyCalendarSymbol","BaseCalendarMixin","EmptyCalendarEffect","skippingRes","BaseEmptyCalendarEffectResolution","calendarData","_calendar$intervals","fixCalendarData","__decorate$l","CycleSymbol","EngineRevision","EngineTransaction","_props$graph$project","delayCalculation","markFailedResolutionReferences","failedResolutionValue","EngineReplica","cycleEffectClass","CycleEffect","ignoreInitialCommitComputationCycles","_this$project$trigger","_onComputationCycle","replacedReplicaResult","beforeCommitAsync","_identifier$field","_record$beforeChronoF","_record$afterChronoFi","beforeHookResult","beforeChronoFieldSet","afterChronoFieldSet","autoCommitStores","_project$suspendChang","_project$resumeChange","quarkValue","onCycleSchedulingIssue","onEmptyCalendarSchedulingIssue","onConflictSchedulingIssue","getShortDescription","matchDependencyBySourceAndTargetEvent","_dependencies","numberOfEvents","prevEvent","removeDependencyCycleEffectResolutionClass","__decorate$k","BaseAssignmentMixin","getEventById","getResourceById","ChronoAssignmentStoreMixin","ChronoCalendarManagerStoreMixin","ChronoDependencyStoreMixin","Instruction","StartDateVar","EndDateVar","DurationVar","startDateFormula","endDateFormula","durationFormula","SEDGraphDescription","SEDForwardCycleResolutionContext","SEDBackwardCycleResolutionContext","SEDDispatcher","instruction","KeepStartDate","addKeepIfPossibleFlag","KeepEndDate","KeepDuration","SEDDispatcherIdentifier","resolution1","resolution2","__decorate$j","HasCalendarMixin","cal","resolveCalendar","CanCombineCalendarsMixin","CanCombineCalendars","combinedcalendarscache","calendar1","calendar2","versionsHash","__decorate$i","BaseEventMixin","cycleDispatcher","prepareDispatcher","startDateProposedArgs","startInstruction","addInstruction","endDateProposedArgs","endInstruction","directionValue","durationProposedArgs","durationInstruction","Forward","dispatcherClass","cycleResolutionContext","collectInfo","$convertDuration","calculateProjectedXDateWithDuration","delayedCalculationPromise","dispatch","calculateStartDateProposed","calculateStartDatePure","skipNonWorkingTimeWhenSchedulingManually","calculateEndDate","Millisecond","calculateStartDate","calculateEndDateProposed","calculateEndDatePure","convertDuration","calculateDurationProposed","calculateDurationPure","calculateProjectedDuration","calculateDurationMs","effectiveDurationToUse","durationResolution","__decorate$h","BaseHasAssignmentsMixin","__decorate$g","HasDependenciesMixin","SchedulerBasicEvent","ChronoEventStoreMixin","ChronoEventTreeStoreMixin","__decorate$f","BaseResourceMixin","ChronoResourceStoreMixin","__decorate$e","DurationConverterMixin","hoursPerDay","daysPerWeek","daysPerMonth","unitsInMs","__decorate$d","BaseDependencyMixin","ChronoAbstractProjectMixin","enterRecords","_this$replica","schedulingIssue","continueWithResolutionResult","hasListener","getSchedulingIssueEventArguments","onSchedulingIssueCall","oldValues","setModelCalculations","setRecordCalculations","oldCalculations","tasks","setStoreCalculations","projectCalculations","repopulateReplica","HasSubEventsMixin","hasSubEvents","calculateMinChildrenStartDate","calculateMaxChildrenEndDate","subEventsIterable","shouldRollupChildStartDate","shouldRollupChildEndDate","__decorate$c","HasChildrenMixin","childEvents","_parent","parentEvent","__decorate$b","SchedulerBasicProjectMixin","repopulateStores","getDefaultEventModelClass","getDefaultEventStoreClass","getDefaultDependencyModelClass","getDefaultDependencyStoreClass","getDefaultResourceModelClass","getDefaultResourceStoreClass","getDefaultAssignmentModelClass","getDefaultAssignmentStoreClass","getDefaultCalendarModelClass","getDefaultCalendarManagerStoreClass","getDefaultCycleEffectClass","initializeStm","enterReplica","setCalendarManagerStore","setEventStore","setDependencyStore","setResourceStore","setAssignmentStore","createReplica","wasDisabled","_me$defaultCalendar","_me$replica","getReplicaConfig","SchedulerBasic","_enableProgressNotifications","usingSyncDataOnLoad","setupTemporaryIndices","removeTemporaryIndices","internalDelayCalculation","stmClass","setStm","resetUndoRedoQueuesAfterLoad","resetStmQueue","beforeCommit","onCommitInitialization","onCommitFinalization","commitRejected","onCommitRejection","_this$suspendChangesT","_this$resumeChangesTr","recordsToDrop","_transactionResult$tr","_stmDisabled","removeRejectedRecordsAdd","rejectStmTransaction","_stmAutoRecord","_this$repopulateStore","repopulateOnDataset","_me$replica2","oldReplica","unlinkStoreRecords","unlinkRecord","_value$id","onSTMRestoringStop","skipRoot","oldEventStore","unjoinStoreRecords","oldDependencyStore","oldResourceStore","oldAssignmentStore","oldCalendarManagerStore","rejectTransaction","stmInitiallyDisabled","stmInitiallyAutoRecord","commitResult","__decorate$a","calculateEffectiveStartDateConstraintInterval","startDateIntervalIntersection","endDateIntervalIntersection","reflectedIntervals","startDateIsFinite","endDateIsFinite","originInterval","copyWith","calculateEffectiveEndDateConstraintInterval","EarlyLateLazyness","ConstrainedEarlyEventMixin","calculateEffectiveDuration","isStartDate","startDateConstraintIntervals","endDateConstraintIntervals","calculateIntervalFn","effectiveInterval","earlyStartDateConstraintIntervals","earlyEndDateConstraintIntervals","calculateEffectiveConstraintInterval","doCalculateEarlyEffectiveStartDateInterval","doCalculateEarlyEffectiveEndDateInterval","subEventsIterator","childEvent","childDate","shouldRollupChildEarlyStartDate","minChildrenEarlyStartDate","earlyStartDate","shouldRollupChildEarlyEndDate","maxChildrenEarlyEndDate","earlyEndDate","isConstrainedEarly","earlyEffectiveStartDateInterval","earlyStartDateRaw","maybeSkipNonWorkingTime","earlyEffectiveEndDateInterval","earlyEndDateRaw","startDateIntervals","endDateIntervals","autoStartDate","baseSchedulingStartDate","containsDate","autoEndDate","baseSchedulingEndDate","__decorate$9","HasDateConstraintMixin","HasDateConstraint","ignorePinningConstraint","getStm","constrainType","getStartDatePinConstraintType","writeStartDate","getEndDatePinConstraintType","writeEndDate","isConstraintTypeApplicable","getConstraintTypeDefaultDate","isTaskPinnableWithConstraint","StartNoEarlierThan","Backward","StartNoLaterThan","FinishNoEarlierThan","FinishNoLaterThan","MustStartOn","MustFinishOn","calculateEndDateConstraintIntervals","dateConstraintIntervalClass","calculateStartDateConstraintIntervals","getConstraintName","DateConstraintInterval","constraintDateQuark","constraintTypeQuark","removeDateConstraintConflictResolutionClass","__decorate$8","ScheduledByDependenciesEarlyEventMixin","calculateEarlyStartDateConstraintIntervals","dependencyConstraintIntervalClass","shouldPredecessorAffectScheduling","fromEventEndDate","fromEventStartDate","calculateEarlyEndDateConstraintIntervals","BaseDependencyResolution","DependencyConstraintInterval","fromEventQuark","toEventQuark","lagQuark","lagUnitQuark","typeQuark","deactivateDependencyConflictResolutionClass","removeDependencyConflictResolutionClass","__decorate$7","SchedulerProAssignmentMixin","__decorate$6","SchedulerProDependencyMixin","dependenciesCalendar","Project","FromEvent","ToEvent","__decorate$5","HasPercentDoneMixin","autoCalculatePercentDoneForParentTasks","summaryData","percentDoneSummaryData","totalDuration","completedDuration","milestonesNum","milestonesTotalPercentDone","summary","shouldRollupChildPercentDoneSummaryData","childSummaryData","durationInMs","percentDone","__decorate$4","SchedulerProHasAssignmentsMixin","assignmentsByCalendar","ignoreResourceCalendar","calendarCacheIntervalMultiple","calendarsStatus","workCalendars","getCalendarsWorking","combineCalendars","resourceCalendar","iteratorOptions","useEventAvailabilityIterator","getBaseOptionsForDurationCalculations","skipRes","resultN","leftDuration","intervalStart","intervalStartN","intervalEndN","__decorate$3","MasterStartDateVar","MasterEndDateVar","MasterDurationVar","MasterTotalDurationVar","StartOffsetVar","EndOffsetVar","durationByOffsetsFormula","startDateByMasterStartAndStartOffsetFormula","endDateByMasterStartAndEndOffsetFormula","startOffsetByMasterStartAndStartDateFormula","endOffsetByMasterStartAndEndDateFormula","startOffsetByEndOffsetAndDurationFormula","endOffsetByStartOffsetAndDurationFormula","endOffsetByMasterTotalDurationAndStartOffsetFormula","endOffsetByMasterDurationAndStartOffsetFormula","durationByMasterEndDateFormula","segmentCycleDescription","segmentCycleResolution","SegmentSEDDispatcherIdentifier","SchedulerProEventSegment","previousSegment","nextSegment","segment","calculateStartOffsetByEndOffsetAndDuration","masterStartDate","ignoreSegments","calculateEndOffsetByStartOffsetAndDuration","calculateEndOffsetByMasterDurationAndStartOffset","calculateEndOffsetByMasterTotalDurationAndStartOffset","calculateStartDateByMasterStartAndStartOffset","calculateEndDateByMasterStartAndEndOffset","calculateDurationByOffsets","calculateDuration","buildProposedDispatcher","segments","masterEndDateArgs","masterDispatcher","masterDuration","masterDurationUnit","masterDurationMs","segmentStartOffset","segmentEndOffset","segmentDurationMs","masterEndDate","masterTotalDurationMs","rawDate","masterPercentDone","completeMasterDurationMs","endPercentDone","minPercent","startPercentDone","__decorate$2","SegmentsVar","segmentsConverter","processSegmentsValue","startDateByEndDateAndSegmentsFormula","endDateByStartDateAndSegmentsFormula","SEDSGCycleDescription","SEDSGForwardCycleResolution","SEDSGBackwardCycleResolution","SEDSGDispatcherIdentifier","SplitEventMixin","_segmentGeneration","segmentModelClass","getDefaultSegmentModelClass","hasSegmentChangesProposed","proposedSegments","startDateProposed","endDateProposed","durationProposed","getSegments","_segments","hasChanges","previousSegmentStartOffset","previousSegmentEndOffset","segmentIndex","removeEntities","doWriteSegments","toWrite","spliceIndex","segmentStartDate","segmentEndDate","segmentsSnapshot","getSegmentsSnapshot","_lastSegmentsSnapshot","_segments2","_segment$startDate","_segment$endDate","calculateStartDateBySegments","lastSegmentEndOffset","calculateEndDateBySegments","calculateDurationBySegments","currentSegment","currentOffsetMs","currentSegmentDurationMs","currentSegmentEndOffset","intervalStartOffset","intervalEndOffset","callStartOffset","callEndOffset","callStartDate","callEndDate","callResult","isSegmented","getSegmentIndexByDate","_me$childEvents","isHasSubEventsMixin","segmentToSplit","segmentToSplitIndex","splitTarget","splitTargetStart","splitTargetDuration","splitTargetDurationUnit","prevSegmentDuration","nextSegmentDuration","lagInMs","nextSegmentStartOffset","newSegment","segment1","segment2","tmp","segmentData","SchedulerProEvent","__decorate$1","ResourceAllocationEventRangeCalendarIntervalMixin","ResourceAllocationEventRangeCalendarIntervalStore","ResourceAllocationEventRangeCalendar","BaseAllocationInterval","effort","AssignmentAllocationInterval","ResourceAllocationInterval","maxEffort","isOverallocated","isUnderallocated","assignmentIntervals","BaseAllocationInfo","includeInactiveEvents","allocationIntervalClass","getDefaultAllocationIntervalClass","ResourceAllocationInfo","ticksCalendar","eventRanges","assignmentTicksData","byAssignments","hasIgnoreResourceCalendarEvent","shouldIncludeAssignmentInAllocation","eventCalendar","eventRangesCalendar","ticksData","tickData","assignmentTickData","weightedUnitsSum","weightsSum","iterationOptions","includeNonWorkingIntervals","ticksTotalDuration","intervalData","isWorkingCalendar","tickAssignments","tickAssignmentIntervals","intervalHasAssignments","workingStartDate","workingEndDate","assignmentInterval","assignmentEffort","SchedulerProResourceMixin","observers","observer","removeObserver","__decorate","SchedulerProProjectMixin","eventSegmentModelClass","getDefaultEventSegmentModelClass","resourceAllocationInfoClass","getDefaultResourceAllocationInfoClass","SchedulerProCycleEffect","ignoreDependency","ingoredDependencies","alreadyLinked","_ingoredDependencies","DuplicatingDependency","isDependencyCyclic","CyclicDependency","NoError","validationResult","validateDependency","dependencyClass","branch","getDependencyCycleDetectionIdentifiers","ignoreDependencies","_invalidDependencies","getDependencies","invalidDependencies","getInvalidDependencies","buildInvalidDependencyResolutions","deactivateDependencyCycleEffectResolutionClass","ModelCombo","superValue","CalendarField","_field$store","_field$store$project","ResourceCalendarColumn","_change$value","ScaleColumn","isScaleColumn","scaleWidget","_scaleWidget","buildScaleWidget","scaleCloneElement","throwIfNotTheSameStore","leftProjectEventStore","leftProject","AssignmentModel","AssignmentStore","CalendarIntervalModel","CalendarModel","CalendarManagerStore","DependencyModel","isProDependencyModel","DependencyStore","PercentDoneMixin","isStarted","isCompleted","isInProgress","renderedPercentDone","getFormattedPercentDone","EventSegmentModel","EventModel","_wrapStartDate","updateWrapDate","_wrapEndDate","outerStartDate","outerEndDate","EventStore","EventUpdateAction","oldDataSegments","newDataSegments","newDataIndex","packSegmentSnapshot","segmentSnapshot","unpackSegmentSnapshot","ResourceModel","_project$assignmentSt2","ResourceStore","isSplitEventMixin","StateTrackingManager","ProHorizontalLayout","weights","groupBy","groupByThisObj","layoutFn","_weights$result","aValue","getGroupValue","bValue","ProHorizontalLayoutStack","getEventGroups","ProHorizontalLayoutPack","groupCount","groupIndex","adjustedSlotStart","inBandHeight","inBandTop","CalendarHighlightModel","CalendarHighlight","unhighlightOnDrop","collectAvailableResources","eventDragStart","eventDragReset","eventResizeStart","eventResizeEnd","dragCreateStart","afterDragCreate","highlightEventCalendars","highlightResourceCalendars","clearExisting","unhighlightCalendars","_eventRecord$calendar","timespans","getWorkingTimeRanges","_resourceRecord$calen","_me$collectAvailableR","_me$collectAvailableR2","availableResources","highlightCalendar","_this$highlight","activeField","EventBuffer","showDuration","b-sch-event-buffer","b-sch-event-buffer-before","b-buffer-thin","b-sch-event-buffer-after","EventResize","EventSegmentDrag","_this$dragData$assign","updateSegment","_me$endBatchUpdate","cancelBatchUpdate","endBatchUpdate","_eventRecord$event2","mainEventElement","beginBatchUpdate","mainEventRegion","EventSegmentResize","isEventElementDraggable","segmentRecord","segmentResizable","segmentElement","_segmentsSlices","_segmentsSlicesIndex","EventSegments","resolveTaskRecord","populateEventMenu","splitEvent","renameSegment","splitDuration","minSplitDuration","maxSplitDuration","getSplitDurationUnit","splitDurationMS","maxDurationMs","minDurationMs","splitToSegments","getSplitDate","getSplitDuration","segmentRenderData","taskRendering","getTaskBox","internalPopulateTaskRenderData","_segmentRecord$cls","taskContent","b-sch-event-segment","b-first","generateSegmentRenderData","segmentsDOMConfig","getSegmentDOMConfig","appendDOMConfig","taskData","borderWidths","hollow","NestedEvents","refreshClient","eventHeight","_borderWidths$me$clie","currentParentsHeight","$nestedInterceptor","hookProperty","isDraggingNestedEvent","originalParentElement","originalBounds","constrainDragToParent","relativeBounds","parentBounds","allowDeNestingOnDrop","allowNestingOnDrop","_eventRecord$children","newParentElement","nestedEventsContainer","getAnimations","finished","constrainResizeToParent","_assignmentRecord$eve","scheduleEvent","_e$parent","assignedChildren","_e$$linkedResources","b-nested-events-container","PercentBar","showPercentage","taskEl","isMouseInsideEvent","eventSegments","getPercentBarDOMConfig","segmentBox","getHoverSegment","parentBox","lastPercentDone","lastPercentBarBox","segmentPercentBarElement","percentBarOuter","percentBar","initialX","outerWidth","percentsInSegment","ResourceNonWorkingTime","ResourceNonWorkingTimeModel","ranges","ProTaskEditStm","TaskEditStm","_stm$transaction","ReadyStatePropagator","isReadyStatePropagator","canSave","ConstraintTypePicker","none","Default calendar","TaskEditorBase","Information","calculateMask","saveError","TaskEdit","Edit task","ConfirmDeletionTitle","ConfirmDeletionMessage","GanttTaskEditor","editorWidth","SchedulerTaskEditor","SchedulerGeneralTab","General","Resources","% complete","Finish","Preamble","Postamble","GeneralTab","Effort","Dates","SchedulerAdvancedTab","Calendar","Advanced","Manually scheduled","Constraint type","Constraint date","Inactive","Ignore resource calendar","AdvancedTab","Scheduling mode","Effort driven","Constraint","Rollup","DependencyTab","Predecessors","Successors","ID","cyclicDependency","invalidDependency","NotesTab","Notes","ResourcesTab","unitsTpl","Units","SchedulingModePicker","Fixed Duration","Fixed Units","Fixed Effort","ResourceHistogram","barTipInRange","barTipOnDate","groupBarTipAssignment","groupBarTipInRange","groupBarTipOnDate","plusMore","ResourceUtilization","nameColumnText","SchedulingIssueResolutionPopup","Cancel changes","schedulingConflict","emptyCalendar","Apply","CycleResolutionPopup","dependencyLabel","invalidDependencyLabel","Active","SchedulerProBase","propagating","storePopulation","deNestingNotAllowed","nestingNotAllowed","onCancel","onSave","tabPanelItems","defaultTabs","calculateMaskDelay","dependencyIdField","_widgetConfig$type","extraItems","preparedItems","preparedKey","transformArrayToNamedObject","clonedItems","_me$bbar","isDurationField","onReadyStateChange","loadedRecord","isLoadingEvent","_delayedAction","superResponse","isField","isFieldEditable","toggleFieldsDisabled","callWidgetHook","activeCellEditing","_activeCellEdit","clickedButtonEl","requestReadyStateChange","couldSaveTitle","afterDelete","_me$_delayedAction","isCheckbox","isSlider","childTabs","EventLoader","_this$record","setRecord","resetData","EditorTab","FormTab","alignContent","StartDateField","calendarProvider","startOfTheDay","earliestTime","EndDateField","_this$eventRecord","startOfNextDay","latestTime","EffortField","divider","effortUnit","loadEvent","DependencyTypePicker","markDependencyValid","markDependencyInvalid","isDependencyMarkedValid","sortField","taskComboSortField","dependency1","dependency2","_dependency1$directio","_dependency2$directio","id1","id2","linkedEvent","dependencyTab","_dependencyTab","linkedTask","isSuccessor","startCellEdit","finishCellEdit","cancelCellEdit","taskCombo","storeChange","recordChange","depStoreGeneration","eventStoreGeneration","negDirection","comboStore","activeEdit","isDepEditing","newDep","insertNewDependency","activeCellEdit","clearActiveEditorErrors","_editingDependency","redrawDependencyRow","SuccessorsTab","PredecessorsTab","addButton","onAddClick","onRemoveClick","resourceCombo","assignmentStoreGeneration","resourceStoreGeneration","isAssignedTo","pruneInvalidAssignments","insertNewAssignment","_editingAssignment","buildStoreData","allowNullId","FixedDuration","FixedUnits","FixedEffort","calendarField","manuallyScheduledField","schedulingModeField","effortDrivenField","constraintTypeField","constraintDateField","rollupField","inactiveField","ignoreResourceCalendarField","isConstraintTypePicker","typesStore","layoutConfig","noteField","generalTab","predecessorsTab","successorsTab","resourcesTab","advancedTab","notesTab","resourcesField","durationField","percentDoneField","preambleField","postambleField","_resourcesField$confi","resourceUnassigned","beforeSave","bufferRe","enableEventSpanBuffer","_widgetConfig$ref","editorClassMap","confirmDelete","suspendHasChangesEvent","detachFromProject","deleteConfirmationPromise","loadstart","_editing","_cancelling","_hiding","_taskRecord$resources","captureStm","startStmTransaction","scrollEventIntoView","taskElement","getElementFromTaskRecord","triggerOnClient","isNestedEvent","disableStm","freeStm","_me$editorConfig","tabsConfig","projectType","getType","_loading","commitStmTransaction","afterSave","_project$resumeAutoSy","_project$resumeAutoSy2","_project$resumeAutoSy3","afterCancel","doCancel","beforeDelete","eventEvent","returnValTaskRecord","returnValEventRecord","TimeSpanHighlight","surround","animationId","surroundTimeSpan","visualize","b-sch-highlighted-range","highlightConfig","containerEl","highlightTimeSpans","highlightTimeSpan","fadeOut","fadeOutDetacher","_containerEl","_this$domConfigs","unhighlightTimeSpans","willChange","ProjectChangeHandlerMixin","storeChanges","_storeChanges$updated","_storeChanges$added","changedRows","ProjectWebSocketHandlerMixin","_this$websocketManage","websocketManager","_me$websocketManager","wsUserName","wsAutoLoad","wsLoad","toggleAutoSyncListener","_wsAutoSync","_wsAddress","wsSync","wsOpen","wsProjectId","applyProjectChanges","projectMeta","wsReceive","wsSend","wsConnectionTimeout","wsAutoSync","_this$websocketManage2","wsAddress","ProjectModel","ProjectProgressMixin","setupProgressListener","delayCalculationStart","delayCalculationEnd","projectProgressReporting","projectProgressThreshold","calculationProgressElement","calculationProgressTimeout","_progressElement","$delayCalculationReadOnly","SchedulerProEventRendering","clearLayouts","updateInternalEventLayout","resolutionsGroup","applyButton","selectedResolutions","_this$resolutionsGrou","_this$resolutionsGrou2","selectedResolution","getResolutionParameters","onCancelButtonClick","canCancel","isResolving","resolving","onResolutionChange","_this$schedulingIssue","_schedulingIssue","_resolutionItems$","resolutionItems","getResolutionWidgetConfig","toggleControlsState","canApply","cancelResolution","_dependencyResolutionsChecked","invalidDependenciesDescription","dependencyField","validDependencies","dependencyItems","getDependencyTitle","isRemoveDependencyCycleEffectResolution","isDeactivateDependencyCycleEffectResolution","dependencyId","SchedulingIssueResolution","schedulingIssueResolutionPopupClass","cycleResolutionPopupClass","displaySchedulingIssueResolutionPopup","unbindSchedulingIssueResolutionFromProject","bindSchedulingIssueResolutionToProject","_this$_lastScheduling","_lastSchedulingIssueResolutionPopup","activeSchedulingIssueResolutionPopup","_cycleResolutionPopup","_schedulingIssueResolutionPopup","popup","getSchedulingIssueResolutionPopup","ProHorizontalRendering","innerStartMS","innerEndMS","innerDurationMS","fillInnerSpanHorizontalPosition","ProVerticalRendering","fillInnerSpanVerticalPosition","aftertaskedit","allocationReportByRecord","allocationDataByRecord","allocationObserverByRecord","resourceGroupsToUpdate","resourceGroupsAllocation","scheduleRefreshRows","onAssignmentStoreChange","renderRow","endReconfigure","renderGroupHistogram","renderGroupScale","_me$_histogramWidget","_me$_groupHistogramWi","_me$allocationObserve","_me$allocationReportB","_record$removeEntity","_histogramWidget","_groupHistogramWidget","barTooltip","startApplyResponse","generateScalePoints","_generatedScalePoints","scaleColumn","_scalePoints","histogramWidget","lastPoint","scaleUnit","maxInScaleUnits","useProjectTimeUnitsForScale","convertEffortUnit","scalePoint","scaleStep","getSmallerUnit","buildScalePointText","_updatingViewPreset","updateViewPreset","onTimeAxisEndReconfigure","showBarTip","barTooltipTemplate","barTooltipClass","ticksIdentifier","_this$barTooltipTempl","histogramData","collectTicksWidth","prevDuration","tickDurations","isMonotonous","ticksWidth","_projectDaysPerMonth","_projectDaysPerWeek","_projectHoursPerDay","projectUnitsHasChanged","renderResourceHistogram","timeAxisColumnCellCls","insertScaleColumn","_me$timeAxisColumn","histogramWidgetClass","getRectClassDefault","getBarTextDefault","histogramWidgetConfig","showMaxEffort","buildHistogramWidget","effortFormatter","effortFormat","_effortFormatter","_effortFormat","showEffortUnit","localizedUnit","effortInUnits","barTipEffortUnit","getBarTipEffortUnit","allocated","getEffortText","available","assignmentTpl","resultFormat","assignmentsSuffix","Second","Hour","assignmentsArray","resourceAllocation","key1","key2","groupBarTipAssignmentLimit","barTextEffortUnit","showBarText","getBarTextEffortUnit","_showMaxEffort","_seriesMaxEffort","allocationReport","_lastTimeAxisUnit","_lastTimeAxisIncrement","buildTicksIdentifier","onTimeAxisEndReconfigureInternal","allocation","getRecordAllocationInfoRenderData","histogramCloneElement","renderRecordAllocationInfo","getResourceGroupParent","scheduleGroupRender","buildResourceAllocationReport","allocationObserver","onRecordAllocationCalculated","addObserver","_allocationReport","registerRecordAllocationReport","renderScheduledGroupTimer","_allocationReports$","_allocationReports$$a","allocationReports","newAllocation","newAllocationLength","allocationInfo","combinedAllocation","combined","isGroup","calculateResourceGroupAllocation","_me$scaleColumn","isCalculatingTopValue","_groupScaleWidget","getGroupBarTip","getResourceBarTip","ResourceUtilizationModel","_childrenIndex","mapOriginValues","fillChildren","isAssignmentModel","_origin$event","_origin$event2","_me$origin","_this$origin","setModelByOrigin","ResourceUtilizationStore","_modelByOrigin","fillStoreFromProject","onResourceStoreDataChanged","onEventUpdate","onAssignmentsChange","onAssignmentsRefresh","onAssignmentsAdd","onAssignmentUpdate","onAssignmentsRemove","resourceWrapper","getModelByOrigin","assignmentWrapper","newResourceWrapper","_this$_project","buildStore","allocationData","registerAssignmentAllocationReport","onDestroy","_record$origin","_record$origin2","b-resource-row","b-assignment-row","_data$record","_data$record2","getBarTextRenderDataDefault","getAssignmentBarTip","Timeline","columnAutoWidth","columnResize","eventContextMenu","eventDragCreate","eventTooltip","scheduleContextMenu","scheduleMenu","scheduleTooltip","timeAxisHeaderMenu","fillFromTaskStore","startDateLabel","endDateLabel","initialCommitPerformed","onTaskStoreChange","onSizeChanged","reFit","updateRowHeight","fitTimeline","zoomToFit","updateStartEndLabels","needsFit","showInTimeline","cloneTask","timelineEvent","timelineTasks"],"mappings":"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GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC50H7sK,KAAK8sK,YAAc,GACnB9sK,KAAK+sK,SAAW,EAOlBptK,WAAW0U,GACT,MAAMy4J,YACJA,GACE9sK,KACJ,IAAIgtK,EACJ,GAAIF,EAAYz4J,GAAM,CACpB24J,EAAgBF,EAAYz4J,OACvB,CACL24J,EAAgBhtK,KAAK6sK,UAAUzuK,QAAO6uK,GAAOA,EAAM54J,IACnDy4J,EAAYz4J,GAAO24J,EAErB,OAAOA,EAAchtK,KAAK+sK,WAAaC,EAAcluK,QAKvDa,QACEK,KAAK+sK,SAAW,EAOlBptK,UAAUkS,GACR,OAAOA,EAAM7R,KAAKktK,WAAWr7J,EAAM/S,SAKrCa,YAAYkS,EAAOiC,GACjB,MAAM3H,EAAS,GACbrN,EAASkB,KAAKktK,WAAWp5J,EAAY,GACrCq5J,EAAO,GACT,IAAK,IAAIvuK,EAAI,EAAGsR,EAAQlQ,KAAKktK,WAAWr7J,EAAM/S,QAASF,EAAIE,EAAQF,IAAK,CAEtE,MAAOuuK,EAAKj9J,GAAQ,CAClBA,EAAQlQ,KAAKktK,WAAWr7J,EAAM/S,QAEhCquK,EAAKj9J,GAAS,KACd/D,EAAO3N,KAAKqT,EAAM3B,IAEpB,OAAO/D,GAGXygK,GAAgB1kK,OAAS,kBAKzB,MAAMklK,GAAQ,CAAC,8HAA+H,8GAA+G,yGAA0G,iHAAkH,0NAA2N,4JAA6J,uMAAwM,uIAAwI,wKAKjqC,MAAMC,GAEJ1tK,eACEK,KAAKstK,IAAIpyE,QACTl7F,KAAKutK,QAAQryE,QACbl7F,KAAKwtK,UAAUtyE,QAIjBv7F,gBAAiBqkB,EAAOypJ,EAAe,MAAOC,EAAY,GACxD,IAAIC,EAAWC,EACf,UAAW5pJ,IAAU,SAAU,CAC7B,IAAI6pJ,EACJJ,EAAezpJ,EAAMypJ,aACrBC,GAAaG,EAAmB7pJ,EAAM0pJ,aAAe,MAAQG,SAA0B,EAAIA,EAAmB,EAC9GF,EAAY3pJ,EAAM2pJ,UAClBC,EAAc5pJ,EAAM4pJ,YACpB5pJ,EAAQA,EAAMA,MAEhB,MAAMjkB,EAAKC,MACTstK,IACEA,EAAGC,QACHA,EAAOC,UACPA,EAASM,QACTA,EAAOC,WACPA,EAAUC,SACVA,EAAQC,MACRA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,OACNA,EAAMC,OACNA,GACEtuK,EACN,IAAK,IAAInB,EAAI,EAAGA,EAAIolB,EAAOplB,IAAK,CAC9B,IAAI0vK,EACJ,MAAMC,EAAYjB,EAAIkB,UAAUT,GAC9BU,EAAUnB,EAAIkB,UAAUR,GACxBvpK,EAAO,GAAG8pK,KAAarlK,OAAOC,aAAa,GAAKvK,EAAI,OAAO6vK,IAC3DC,EAAWpB,EAAIJ,WAAW,IAAM,EAChC1kJ,EAAQ,IAAIha,KAAK,KAAM,EAAGkgK,GAC1B51B,EAAS,IAAItqI,KAAK,KAAM,EAAGkgK,EAAWpB,EAAIJ,WAAW,IAAM,GAC3DyB,EAAM,CACJhkK,GAAI+iK,GAAa,EAAI9uK,EAAI8uK,EAAY9qK,UACrCuvG,MAAO,OAASvzG,EAChB6F,KAAAA,EACA8pK,UAAAA,EACAE,QAAAA,EACAG,KAAMtB,EAAIkB,UAAUJ,GACpBS,KAAMvB,EAAIkB,UAAUJ,GAAU,IAAMd,EAAIkB,UAAUP,GAClDa,IAAK,GAAKxB,EAAIJ,WAAW,IACzB6B,KAAMzB,EAAIkB,UAAUN,GACpBhyG,MAAOoxG,EAAIkB,UAAUL,GACrBa,MAAO1B,EAAIJ,WAAW,KAAO,GAC7B+B,KAAM3B,EAAIJ,WAAW,KAAO,EAC5B1kJ,MAAAA,EACAswH,OAAAA,EACA3wG,KAAMtI,GAAW7vB,QAAQu9J,EAAQL,WAAW,IAAKK,EAAQL,WAAW,IAAM,GAC1EgC,QAAS5B,EAAIJ,WAAW,KACxB/jI,KAAMmkI,EAAIJ,WAAW,KAAO,GAC5BiC,OAAQ3B,EAAUN,WAAW,GAC7BkC,UAAWh7J,KAAKuU,IAAI3E,EAAQ,EAAGplB,EAAI8uK,EAAYJ,EAAIJ,WAAW,KAC9DmC,MAAOjC,GAAMU,EAAQZ,WAAW,GAAK,IAEzC,GAAIS,EAAW,CACbgB,EAAIN,OAASf,EAAIgC,YAAYjB,EAAQ,GAEvC,MAAMkB,GAAkBjB,EAAeV,KAAiB,MAAQU,SAAsB,OAAS,EAAIA,EAAaK,GAChHY,GAAkBtxK,OAAOmZ,OAAOu3J,EAAKY,GACrC,GAAI9B,EAAc,CAChBkB,EAAIa,UAAYlC,EAAIJ,WAAWO,IAAiB,KAAO,GAAKA,GAAgB,EAAI,SAE5EkB,GAiBVhvK,oBAAoBqkB,EAAOypJ,EAAe,MAAOC,EAAY,EAAGxyE,EAAQ,MACtE,IAAI3/E,EAAOyI,EACX,UAAWA,IAAU,SAAU,CAC7BzI,EAAO,CACLyI,MAAAA,EACAypJ,aAAAA,EACAC,UAAAA,EACAxyE,MAAAA,GAGJ3/E,EAAK2/E,QAAU,OAASl7F,KAAKk7F,QAC7B,GAAImyE,GAAcoC,iBAAkB,CAClCl0J,EAAKyI,MAAQqpJ,GAAcoC,iBAE7B,MAAMC,EAAO,GACXC,EAAY3vK,KAAK4vK,SAASr0J,GAC5B,IAAK,IAAI3c,EAAI,EAAGA,EAAI2c,EAAKyI,MAAOplB,IAAK,CACnC8wK,EAAKlxK,KAAKmxK,EAAUpqJ,OAAOhmB,OAE7B,OAAOmwK,EAMT/vK,qBACE,OAAO0tK,GAAcwC,aAAa,EAAG,OAAQ,EAAG,OAAO,IAK3D5xK,OAAOmZ,OAAOi2J,GAAe,CAC3BC,IAAK,IAAIV,GACTW,QAAS,IAAIX,GACbY,UAAW,IAAIZ,GACfkB,QAAS,IAAIlB,GACbwB,OAAQ,CAAC,YAAa,YAAa,QAAS,QAAS,WAAY,gBAAiB,aAAc,UAChGL,WAAY,CAAC,OAAQ,QAAS,MAAO,QAAS,OAAQ,QAAS,SAAU,UAAW,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,QAAS,SACxJC,SAAU,CAAC,WAAY,QAAS,QAAS,QAAS,UAAW,QAAS,WAAY,QAAS,QAAS,SAAU,QAAS,OAAQ,SAAU,SAAU,WAAY,SAAU,WACzKC,MAAO,CAAC,QAAS,SAAU,SAAU,SAAU,OAAQ,OAAQ,WAAY,OAAQ,QAAS,UAAW,OAAQ,YAC/GC,MAAO,CAAC,UAAW,SAAU,eAAgB,YAAa,OAAQ,QAAS,YAAa,eAAgB,WACxGC,OAAQ,CAAC,OAAQ,QAAS,MAAO,SAAU,OAAQ,SAAU,SAAU,OAAQ,SAC/EE,OAAQ,CAAC,aAAc,MAAO,aAAc,QAAS,MAAO,UAAW,OAAQ,MAAO,SAAU,KAAM,MAAO,QAAS,QAAS,UAAW,SAAU,SAEtJhB,GAAcnlK,OAAS,gBAgQvB,MAAM4nK,GAAmB7xK,OAAO4P,UAAUC,eAC1C,IAAIiiK,GAAW,KACf,SAASC,GAAUjwK,EAAI+lC,GACrB7nC,OAAOoB,eAAeU,EAAI,SAAU,CAClCR,MAAOumC,IAET,OAAOA,EAET,MAAMmqI,GACJtwK,YAAY88B,GACVz8B,KAAKy8B,UAAYA,EAEnB98B,OAAOJ,GACL,OAAOS,KAAKy8B,UAAU+I,cAAcjmC,GAEtCI,MAAMJ,EAAOqa,GACX,OAAO5Z,KAAKy8B,UAAUyzI,aAAa3wK,EAAOqa,GAE5Cja,kBACE,OAAO,MAUX,MAAMwwK,GACJxwK,WAAWm9B,GACT,GAAIA,GAAU,KAAM,CAClB,OAAO98B,KAAKowK,KAEd,GAAItzI,aAAkB98B,KAAM,CAC1B,OAAO88B,EAET,MAAM79B,SAAa69B,IAAW,SAAWA,EAAS/wB,KAAKK,UAAU0wB,GAC/D9mB,EAAQhW,KAAKgW,MACf,IAAI+xB,EAAM/xB,EAAMtE,IAAIzS,GACpB,IAAK8oC,EAAK,CACRgoI,GAAW9wK,EACX8oC,EAAM,IAAI/nC,KAAK88B,GACf9mB,EAAM1E,IAAIrS,EAAK8oC,GAEjB,OAAOA,EAET/xB,mBACE,OAAO85J,GAAiBjpK,KAAK7G,KAAM,WAAaA,KAAKqwK,SAAWrwK,KAAKqwK,OAAS,IAAI7+J,KAEpF4+J,kBACE,OAAON,GAAiBjpK,KAAK7G,KAAM,SAAWA,KAAKswK,MAAQtwK,KAAKswK,MAAQ,IAAItwK,KAAK,MAEnFL,YAAYwY,GACV,MAAMpY,EAAKC,KAIXD,EAAGgwK,SAAWA,GACdA,GAAW,KACXhwK,EAAGwwK,aACH,GAAIp4J,IAAW,KAAM,CACnBpY,EAAG08B,UAAY,IAAIwzI,GAAQlwK,OACtB,CACLA,EAAG6b,UAAUzD,GAEb,IAAK,MAAOlZ,EAAKM,KAAUtB,OAAO6I,QAAQ/G,EAAGywK,mBAAoB,CAM/D,GAAIjxK,GAAS,MAAQN,KAAOc,EAAGkiD,SAAU,CACvCliD,EAAGd,GAAOM,KAKlBumC,aAEE,OAAOkqI,GAAUhwK,KAAM,IAAIA,KAAKqQ,YAAYogK,OAAOzwK,OAErDL,cAAcJ,GACZ,OAAOA,GAAS,KAAOA,EAAQ2J,OAAO3J,GAExCI,aAAaJ,GACX,OAAOA,EAETI,OAAOJ,GACL,OAAOA,GAAS,KAAOA,EAAQS,KAAKy8B,UAAUK,OAAOv9B,GAEvDI,MAAMJ,EAAOqa,GACX,OAAOra,GAAS,KAAOA,EAAQS,KAAK8lC,OAAO95B,MAAMzM,EAAOqa,GAE1Dja,YAAYJ,GACV,OAAOS,KAAKgM,MAAMzM,EAAO,MAE3BI,kBACE,OAAOK,KAAKy8B,UAAU+zI,mBAG1BL,GAAUjoK,OAAS,YASnB,MAAMwoK,WAAkBr1J,GAAOmF,MAAMyM,GAAQwpD,KAC3C1oE,mBACE,MAAO,YAGTlB,kBACE,MAAO,YAETrN,0BACE,MAAO,CAKLm8H,SAAU,KAOVg1C,cAAe,KAKfhyK,OAAQ,KAKRiyK,eAAgB,KAKhBC,aAAc,KAKdC,aAAc,KAKdC,WAAY,KAMZC,SAAU,WAkBVhzK,KAAM,KAONizK,aAAc,KAOdC,cAAe,KACfC,eAAgB,GAKhBvxG,SAAU,KACVwxG,kBAAmB,KACnBnvJ,WAAY,CACVkvJ,eAAgB,IAItBx6F,yBACE,MAAO,CACLW,YAAa,aAGjBy5F,iBACE,MAAMM,YACJA,GACErxK,KACJ,GAAIA,KAAKrB,OAAOo5C,SAASs5H,GAAc,CACrC,OAAOA,EAETrxK,KAAKqxK,YAAc,KAErB1xK,eAAeg8H,GACb,IAAK37H,KAAK8wK,aAAc,CACtB9wK,KAAK8wK,aAAe,IAAI9wK,KAAK27H,SAASgU,UAExC13F,GAAUkkF,cAAcn8H,KAAK4wK,eAAgB,CAC3CU,wBAAyB,GAAGtxK,KAAK2Y,MAAMhO,yBAG3C4mK,oBAAoBA,GAClB,MAAM54J,MACJA,GACE3Y,KAIJA,KAAKwxK,iBAAmB74J,EAAM44J,gBAAkBA,EAEhD,GAAIA,EAAiB,CACnBhhK,QAAQC,QAAQ,GAAGC,MAAK,IAAMzQ,KAAKuxK,gBAAkB,QAGzDA,sBACE,OAAOvxK,KAAKwxK,iBAEd7xK,0BAA0BqyH,GACxB,MAAMgrB,GAAWhrB,EAAS/yH,KAAO,IAAIuN,QAAUwlH,EAASxtH,KACxD,MAAO,GAAGwtH,EAASlvE,QAAU,QAAU,KAAKkvE,EAAS5Y,SAAW,SAAW,KAAK4Y,EAASS,OAAS,OAAS,KAAKuqB,IAElHr9I,UAAUqyH,GACR,MAAMjyH,EAAKC,MACT27H,SACEA,EAAQm1C,aACRA,EAAYC,WACZA,EAAUJ,cACVA,GACE5wK,GACJpB,OACEA,GACEqzH,EACJihB,EAAYlzI,EAAGpB,OAAOqJ,cAAc8oK,GAEpC9zB,GAAWhrB,EAAS/yH,KAAO,IAAIuN,QAAUwlH,EAASxtH,KAClDitK,EAAkB1xK,EAAGsQ,YAAYqhK,mBAAmB1/C,GACpD2/C,EAAchzK,EAAO2D,QAAQwuK,IAAiBnyK,IAAWoB,EAAG6wK,eAG9D,IAAK7wK,EAAG6/D,UAAY7/D,EAAG8wK,aAAc,CACnC7+C,EAAWjyH,EAAG8wK,aAAahqK,KAAK80H,EAAU3J,GAI5C,GAAIA,IAAajyH,EAAG6/D,UAAYqzE,GAAalzI,EAAGpB,OAAOosD,cAAgB4mH,EAAa,CAElF,IAAKhB,EAAe,CAElB,GAAI5wK,EAAG6xK,YAAc,KAAM,CACzB,MAAMC,EAAgB5+B,EAAUxoF,WAC9BqnH,EAAoB75H,GAAUC,cAAc+6F,EAAW,YACvD8+B,EAAmB95H,GAAUC,cAAc+6F,EAAW,WACtD++B,EAAiB/5H,GAAUC,cAAc+6F,EAAW,SAGtDlzI,EAAG6xK,WAAaE,IAAsB,YAAcC,IAAqB,UAAYA,IAAqB,gBAAkBC,IAAmB,QAAUA,IAAmB,SAAW/5H,GAAUC,cAAc25H,EAAe,aAAe,QAAU55H,GAAUC,cAAc25H,EAAe,oBAAsB,MAEtT,IAAK9xK,EAAGkyK,QAAS,CACf,GAAIlyK,EAAG6xK,WAAY,CACjB7xK,EAAGkyK,QAAU,YACblyK,EAAGmyK,QAAU,iBACR,CACLnyK,EAAGkyK,QAAU,UACblyK,EAAGmyK,QAAU,cAKnBnyK,EAAGwxK,gBAAkBv/C,EACrB,GAAI++C,EAAY,CACd,OAAQ/zB,GACN,KAAKj9I,EAAGkyK,QACN,GAAIlyK,EAAG6/D,UAAYoyD,EAASlvE,UAAY/iD,EAAGkxK,aAAc,CACvD,OAEF,GAAIj/C,EAAS5Y,WAAar5G,EAAGmxK,cAAe,CAC1C,OAEFl/C,EAASlsE,iBAITksE,EAASE,QAAU,KACnBnyH,EAAGoyK,iBAAiBngD,GACpB,MACF,KAAKjyH,EAAGmyK,QACN,GAAInyK,EAAG6/D,UAAYoyD,EAASlvE,UAAY/iD,EAAGkxK,aAAc,CACvD,OAEF,GAAIj/C,EAAS5Y,WAAar5G,EAAGmxK,cAAe,CAC1C,OAEFl/C,EAASlsE,iBAITksE,EAASE,QAAU,KACnBnyH,EAAGqyK,aAAapgD,GAChB,MACF,QACE,CACE,IAAIqgD,EACJ,MAAMC,GAAcD,EAAWtyK,EAAG/B,QAAU,MAAQq0K,SAAkB,OAAS,EAAIA,EAASZ,GAC5F,GAAIa,IAAevyK,EAAG6/D,SAAU,CAC9B,GAAI7/D,EAAGyuB,SAAS8jJ,EAAYvyK,EAAGuc,SAAWq/G,EAAU,CAAC3J,MAAe,MAAO,CACzE,aAKC,GAAI2J,EAASiQ,kBAAmB,CACnCjQ,EAASiQ,kBAAkB5Z,GAK7B,GAAI/5E,GAAUwmB,iBAAiB9/D,KAAYA,EAAQ,CACjDqzH,EAASlsE,iBAGX,GAAI6qH,EAAe,CACjB,cAIH,CAEL,GAAIA,EAAe,CACjB,OAEF,GAAI3zB,IAAYj9I,EAAGmyK,SAAWl1B,IAAYj9I,EAAGkyK,QAAS,CACpDlyK,EAAGgxK,WAAahxK,EAAGwyK,yBAAyBvgD,IAGhD,GAAIjyH,EAAGgxK,aAAeA,EAAY,CAQhChxK,EAAGyyK,gBAAgBxgD,KAIzBryH,yBAAyBqyH,GACvB,MAAMrzH,OACJA,EAAMmyK,aACNA,EAAYmB,QACZA,EAAOC,QACPA,GACElyK,KAEJ,GAAIrB,EAAOy/D,wBAAwB4zD,EAASrzH,QAAU,GAAKqzH,EAAS/yH,MAAQgzK,EAAS,CACnF,OAAOtzK,EAAOqJ,cAAc,GAAG8oK,kBAGjC,GAAInyK,EAAOy/D,wBAAwB4zD,EAASrzH,QAAU,GAAKqzH,EAAS/yH,MAAQizK,EAAS,CACnF,OAAOvzK,EAAOqJ,cAAc,GAAG8oK,MAGnCnxK,iBAAiBqyH,GACf,MAAMjyH,EAAKC,KACT6+H,EAAW9+H,EAAG8+H,SAChB7M,EAASlsE,iBACT,GAAI+4E,EAAU,CACZ9+H,EAAG47H,SAASrY,WAAW2oB,eAAepN,EAAU,CAC9Cxb,QAAStjH,EAAGoxK,iBACX1gK,MAAK,KACN1Q,EAAGgxK,WAAalyC,EAChB9+H,EAAGyyK,gBAAgBxgD,OAIzBryH,aAAaqyH,GACX,MAAMjyH,EAAKC,KACTulB,EAAOxlB,EAAGwlB,KACZysG,EAASlsE,iBACT,GAAIvgC,EAAM,CACRxlB,EAAG47H,SAASrY,WAAW2oB,eAAe1mH,EAAM,CAC1C89F,QAAStjH,EAAGoxK,iBACX1gK,MAAK,KACN1Q,EAAGgxK,WAAaxrJ,EAChBxlB,EAAGyyK,gBAAgBxgD,OAIzBr5G,YACE,OAAO3Y,KAAK27H,SAEdkD,eACE,OAAO7+H,KAAKyyK,aAAa,GAE3BltJ,WACE,OAAOvlB,KAAKyyK,YAAY,GAQ1B9yK,YAAYwsD,EAAY,EAAGnnC,EAAOhlB,KAAK+wK,YACrC,MAAMxd,EAAavzJ,KAAKuzJ,WACxBA,EAAWK,YAAc5uI,EACzBuuI,EAAWpnG,EAAY,EAAI,eAAiB,cAC5C,GAAIonG,EAAWK,cAAgB5zJ,KAAK+wK,WAAY,CAC9C,OAAOxd,EAAWK,aAGtBj0J,gBAAgB8rI,GACd,MAAM1rI,EAAKC,MACTrB,OACEA,EAAM0kD,cACNA,GACEooF,GACJ9yH,MACEA,EAAKg4J,cACLA,EAAa+B,mBACbA,EAAkBC,mBAClBA,GACE5yK,EAEN,IAAKpB,EAAO2D,QAAQ,iBAAkB,CACpC,GAAI3D,EAAO2D,QAAQvC,EAAG+wK,cAAe,CAGnC/wK,EAAG2yK,mBAAqB,KACxB3yK,EAAGgxK,WAAapyK,EAChBoB,EAAG2yK,mBAAqBA,EAExB,GAAI3yK,EAAGgxK,YAAcJ,EAAe,CAClC5wK,EAAGyyK,gBAAgB/mC,SAIlB,GAAI9sI,IAAWoB,EAAGpB,OAAQ,CAC7B,MAAMi0K,EAAYvvH,EAAgB1kD,EAAOy/D,wBAAwB/a,GAAiB,EAElF,GAAIuvH,EAAY97H,KAAK8pF,+BAAgC,CACnD,IAAIiyC,GACHA,EAAwBl6J,EAAM03D,mBAAqB,MAAQwiG,SAA+B,OAAS,EAAIA,EAAsB/9G,YAG3H,CACH/0D,EAAGgxK,WAAa4B,GAAsB5yK,EAAGpB,OAAOo5C,SAAS46H,GAAsBA,EAAqB,KAK5GhzK,iBAAiBmzK,GACf,MAAM/yK,EAAKC,MACTqjD,cACEA,GACEyvH,EAEN,KAAMzvH,IAAkB,MAAQA,SAAuB,GAAKA,EAAc/gD,QAAQ,kBAAmB,CACnG,IAAK+gD,IAAkBtjD,EAAGpB,OAAOo5C,SAASsL,KAAmBA,EAAc/gD,QAAQvC,EAAG+wK,cAAe,CACnG,GAAI/wK,EAAGgxK,WAAY,CACjBhxK,EAAGgxK,WAAa,KAEhB,GAAIhxK,EAAG4wK,cAAe,CACpB5wK,EAAGyyK,gBAAgBM,OAM7BnzK,kBAAkBozK,GAChB,MAAMhzK,EAAKC,KACTrB,EAASo0K,EAAep0K,OAAOslD,QAAQlkD,EAAG+wK,cAC5C/wK,EAAGwxK,gBAAkBwB,EAKrB,GAAIhzK,EAAG47H,SAASq3C,iBAAmB,MAAO,CACxCjzK,EAAGkzK,eAAeF,OACb,CAGL,GAAIp0K,EAAQ,CACVo0K,EAAejtH,iBAEf7N,GAAUmrE,sBAAsBzkH,KAItCgB,cAAcg8I,GACZ,IAAIu3B,EACJ,MAAMnzK,EAAKC,MACT0yK,mBACEA,GACE3yK,EACN,GAAIA,EAAGozK,gBAAkBD,EAAsBnzK,EAAGwxK,mBAAqB,MAAQ2B,SAA6B,GAAKA,EAAoBE,iBAAkB,CACrJrzK,EAAGozK,cAAgB,MACnB,OAEF,GAAIpzK,EAAG6/D,SAAU,CACf,OAIF7/D,EAAG2yK,mBAAqB,KAExB,GAAI3yK,EAAG8wK,aAAc,CACnBl1B,EAAa57I,EAAG8wK,aAAahqK,KAAK9G,EAAG47H,SAAUggB,GAEjD,GAAIA,EAAY,CACd57I,EAAGgxK,WAAap1B,EAAWh9I,OAAOslD,QAAQlkD,EAAG+wK,cAC7C/wK,EAAGyyK,gBAAgB72B,GAErB57I,EAAG2yK,mBAAqBA,EAM1B/yK,eAAewwB,GACb,GAAIA,EAAMxxB,SAAWqB,KAAK27H,SAASha,gBAAkBxxF,EAAMxxB,OAAOslD,QAAQjkD,KAAK8wK,eAAiB9wK,KAAK27H,SAASq3C,iBAAmB,MAAO,CACtI7iJ,EAAM21B,kBAGVnmD,WAAW2nD,GACT,OAAOA,EAAKyD,cAAgBzD,EAAKhlD,SAAWglD,EAAKhlD,QAAQtC,KAAK8wK,cAAgB74H,GAAUkkB,WAAWkyF,cAAgBp2G,GAAUkkB,WAAWmyF,YAE1I3uJ,iBAAiBoxK,GACf,GAAIA,GAAc,KAAM,CAEtB,GAAI/wK,KAAK27H,SAASj3H,QAAS,CACzBqsK,EAAa/wK,KAAK27H,SAASj3H,QAAQqsK,IAGvC,OAAOA,EAETpxK,iBAAiBoxK,EAAYsC,GAC3B,MAAMtzK,EAAKC,MACT27H,SACEA,GACE57H,EACJuzK,EAAWD,GAAiBtzK,EAAGpB,OAAOo5C,SAASs7H,GAG/CE,EAAaxC,GAAc94H,GAAUia,YAAY6+G,IAAeA,IAAe94H,GAAUwmB,iBAAiBsyG,GAC5G,GAAIuC,EAAU,CACZvzK,EAAG4yK,mBAAqBU,EAE1B,GAAIA,EAAe,CACjBA,EAAcz0H,UAAU98C,OAAO/B,EAAGixK,UAClCqC,EAAc7jH,gBAAgB,MAIhC,GAAIuhH,GAAc,KAAM,CAEtB,GAAIhxK,EAAG2yK,mBAAoB,CACzB,GAAIa,EAAY,CACdt7H,GAAUmrE,sBAAsB2tD,QAE7B,CACL,IAAIyC,GACHA,EAAuB73C,EAASrY,cAAgB,MAAQkwD,SAA8B,OAAS,EAAIA,EAAqBvnC,eAAe8kC,EAAY,CAClJnxH,MAAO,UACPkV,MAAOy+G,EACPr9I,OAAQn2B,EAAG0zK,iBAIf,GAAI1C,IAAesC,GAAiBC,EAAU,CAC5C,OAEFvC,EAAWnyH,UAAU7/B,IAAIhf,EAAGixK,UAC5BD,EAAWpmK,GAAK,GAAG5K,EAAG4Y,MAAMhO,uBAC5B5K,EAAGsxK,YAAcN,MACZ,CACLhxK,EAAGsxK,YAAc,KAGjB,GAAIgC,IAAkBp7H,GAAUwmB,iBAAiB40G,GAAgB,CAC/D13C,EAAS9B,gBAIfl6H,aAAahB,EAAQ+0K,GACnB,MAAM3zK,EAAKC,KACTqtB,EAAY,CACVopB,QAAS93C,EACT2d,QAASvc,EACT69D,QAAS,kBACT0B,SAAU,oBAEd,IAAKv/D,EAAG4wK,gBAAkB5wK,EAAGizK,eAAgB,CAE3C3lJ,EAAU+4B,UAAY,oBACtB/4B,EAAUnnB,MAAQ,gBAEpB,IAAKjI,OAAO4P,UAAUC,eAAejH,KAAK9G,EAAI,cAAe,CAC3DA,EAAGquJ,WAAaruJ,EAAGquJ,WAAWp5I,KAAKjV,GAInCA,EAAGquJ,WAAWA,WAAaruJ,EAAGquJ,WAEhCttG,GAAY3xB,GAAG9B,GAEfttB,EAAGwzJ,WAAaxzJ,EAAGyzJ,gBAAgB70J,EAAQs5C,GAAUkkB,WAAWs3F,aAAc1zJ,EAAGquJ,YAGjF,IAAKruJ,EAAG6wK,eAAgB,CACtB7wK,EAAG6wK,eAAiBjyK,GAGrBoB,EAAG++G,sBAAwB,IAAIC,iBAAiBh/G,EAAG4zK,wBAAwB3+J,KAAKjV,KAAM2+G,QAAQ//G,EAAQ,CACrGygH,UAAW,KACXC,QAAS,OAGb1/G,gBAAgBsrD,EAAMyoG,EAAYt1J,GAEhC,OAAO+C,SAASwyJ,iBAAiB1oG,EAAMyoG,EAAYt1J,GAErDuB,0BACE,MAAMI,EAAKC,MACT+wK,WACEA,EAAUK,kBACVA,GACErxK,EAEN,GAAIgxK,EAAY,CACd,GAAIhxK,EAAGpB,OAAOo5C,SAASg5H,GAAa,CAGlC,IAAKA,EAAWnyH,UAAU7G,SAASh4C,EAAGixK,UAAW,CAC/CD,EAAWnyH,UAAU7/B,IAAIhf,EAAGixK,eAEzB,CACL,IAAI4C,EAIJ7zK,EAAGgxK,WAAahxK,EAAGpB,OAAOqJ,cAAc,GAAGjI,EAAG+wK,gBAAgB/wK,EAAGixK,iBAAiB5mK,EAAashD,UAAU0lH,OAAuBL,EAAWr6I,QAAQ06I,WAA6BwC,EAAwB7zK,EAAGpB,OAAOqJ,cAAc,GAAGjI,EAAG+wK,gBAAgB/wK,EAAGixK,eAAiB,MAAQ4C,SAA+B,OAAS,EAAIA,EAAsB7C,EAAWr6I,QAAQxmB,SAAW,OAIxXvQ,qBAAqBixK,GACnB5wK,KAAK6zK,gBAAkBjD,EACvB9vH,GAAY3xB,GAAG,CACbsnB,QAASm6H,EACTjqH,QAAS,YACTrqC,QAAStc,OAGbL,gBAAgBwwB,EAAOxe,EAAO3R,KAAK+wK,YACjC,IAAI+C,EACJ,MAAMC,EAAW,CACf5jJ,MAAAA,EACAxe,KAAAA,EACAqiK,QAASh0K,KAAK2yK,oBAEhB3yK,KAAKutB,QAAQ,WAAYwmJ,IACxBD,EAAiB9zK,KAAK27H,YAAc,MAAQm4C,SAAwB,OAAS,EAAIA,EAAevmJ,QAAQ,WAAYwmJ,IAGzHrD,GAAUxoK,OAAS,YAKnB,MAAM+rK,GAAe7pK,EAAa6pK,aAChCC,GAAW,UAEXC,GAAe,CAACn+I,EAAQ7d,IAAW,IAAIwkB,KAAKitF,aAAa5zF,GAAUpzB,UAAWuV,GAC9Ei8J,GAAc,6EACdC,GAAe,IACjB,MAAMC,GACJ30K,YAAY88B,GACV,MAAM18B,EAAKC,KACTg2B,EAASyG,EAAUzG,OAEnBu+I,EAASJ,GAAan+I,EAAQ,CAC5Bw+I,sBAAuB,IAEzB3qD,EAAWptF,EAAU+9E,GAAGqP,SAAW9pH,EAAG00K,aAAaz+I,EAAQ,CACzD30B,MAAO,WACPwoH,SAAUptF,EAAUotF,SACpB6qD,gBAAiBj4I,EAAUi4I,kBACxB,KACLxF,EAAUzyI,EAAU+9E,GAAG00D,QAAUnvK,EAAG00K,aAAaz+I,EAAQ,CACvD30B,MAAO,YACJ,KACLszK,EAAUJ,EAAOz3I,OAAO,KAAKtyB,QAAQ0pK,GAAU,IAAI,GACnDl6E,EAAUu6E,EAAOz3I,OAAO,KAAKtyB,QAAQ0pK,GAAU,IAAI,IAAM,GAC3Dj2K,OAAOmZ,OAAOrX,EAAI,CAChB8pH,SAAAA,EACA8qD,QAAAA,EACAl4I,UAAAA,EACAu9D,QAAAA,EACAk1E,QAAAA,IAEFnvK,EAAG40K,QAAUA,EACb50K,EAAG60K,UAAYX,GAAaU,EAAS,KACrC50K,EAAGi6F,QAAUA,EAEbj6F,EAAG80K,QAAU,IAAI7vK,OAAO,WAAWivK,GAAaj6E,OAAe6vB,EAAW,OAAOoqD,GAAapqD,EAAS5+G,SAAW,KAAOikK,EAAU,OAAO+E,GAAa/E,EAAQjkK,SAAW,IAAK,KAEjLtL,cAAcJ,GACZA,EAAQA,EAAMiL,QAAQxK,KAAK60K,QAAS,IACpC,MAAMC,EAAMv1K,EAAMkG,QAAQzF,KAAK20K,SAAW,EAC1C,OAAOG,GAAOv1K,EAAMT,OAASg2K,EAE/Bn1K,MAAMJ,EAAOqa,GACX,UAAWra,IAAU,SAAU,CAC7BA,EAAQA,EAAMiL,QAAQxK,KAAK60K,QAAS,IAAIrqK,QAAQxK,KAAK40K,UAAW,KAAKpqK,QAAQ6pK,GAAc,KAC3F90K,EAAQqa,EAAS3F,OAAO1U,GAAS0C,WAAW1C,GAC5C,GAAIS,KAAKy8B,UAAU+9E,GAAG00D,QAAS,CAC7B3vK,GAAS,KAIb,OAAOA,EAETI,aAAaq2B,EAAQ++I,GACnB,MAAMhtI,EAAMosI,GAAan+I,EAAQ++I,GAC/BC,EAASb,GAAan+I,EAAQ/3B,OAAOmZ,OAAO2wB,EAAIyoI,kBAAmB,CACjEnvK,MAAO,aAET4zK,EAAOltI,EAAIjL,OAAO,GAElBo4I,EAAUF,EAAOl4I,OAAO,GAC1B,MAAO,CACLZ,OAAQ+4I,EAAKrnK,WAAWsnK,GACxBjqK,KAAMgqK,EAAKzqK,QAAQ0qK,EAAS,IAAI1oK,SAuDtC,MAAMo9G,WAAqBumD,GACzBpiK,mBACE,MAAO,eAETpO,aACEK,KAAKm1K,IAAM,GAGXn1K,KAAKw6G,GAAK,CACRm6D,QAAS,MACT9qD,SAAU,MACVqlD,QAAS,MACT/0D,KAAM,KACNn1F,KAAM,MAGVowJ,gBACE,MAAMn7F,EAAQj6E,KAAKw0K,sBACnB,OAAOv6F,GAAS,KAAO,KAAOj6E,KAAKkoC,GAAG,CACpC7mC,MAAO,UACPmzK,sBAAuBpgK,KAAKuU,IAAI,GAAIsxD,EAAQ,IAC3C,aAELt6E,UAAUiN,GACR,MAAM7M,EAAKC,KACX,UAAW4M,IAAY,SAAU,CAC/B3O,OAAOmZ,OAAOrX,EAAI6M,OACb,CACL7M,EAAG+yD,SAAWlmD,EAKhB,MAAMuL,EAAS,GACbk9J,EAAMt1K,EAAGi2B,OAASqC,GAAuBtC,QAAQh2B,EAAGi2B,QAAUqC,GAAuBrC,OACrFisB,EAAWozH,GAAOA,EAAIzrD,aACtB92D,EAAW/yD,EAAG+yD,SAChB,GAAI7Q,EAAU,CACZ,IAAK,MAAMhjD,KAAOgjD,EAAU,CAC1B,GAAIliD,EAAGd,IAAQ,aAAegjD,EAAShjD,KAAS,WAAY,CAC1Dc,EAAGd,GAAOgjD,EAAShjD,KAIzB,GAAI6zD,EAAU,CACZ,MAAM3yD,EAAQi0K,GAAYrsJ,KAAK+qC,GAC7BwiH,EAAKn1K,EAAM,GACXo1K,EAAKp1K,EAAM,GACbJ,EAAGy1K,cAAgBr1K,EAAM,GACzBJ,EAAGsB,MAAQlB,EAAM,GAAK,WAAaA,EAAM,GAAK,UAAY,UAC1D,GAAIm1K,EAAI,CACNv1K,EAAG01K,SAAWH,EAEhB,GAAIC,IAAO,IAAK,CACdx1K,EAAGuoC,SAAW,CAAC,EAAG,SACb,GAAIitI,GAAM,KAAM,CACrBx1K,EAAGuoC,SAAW,CAACnoC,EAAM,GAAGrB,OAAQy2K,EAAGz2K,SAGvCiB,EAAG21K,QAAQ,WAAY,KAAM,MAC7B31K,EAAG21K,QAAQ,UAAW,KAAM,OAC5B31K,EAAG21K,QAAQ,cAAe,MAAO,MACjC,IAAK,MAAMz2K,KAAOc,EAAGkiD,SAAU,CAC7B,GAAIliD,EAAGd,IAAQ,KAAM,CACnBkZ,EAAOlZ,GAAOc,EAAGd,IAGrBc,EAAGy6G,GAAGx1F,KAAOjlB,EAAGilB,MAAQjlB,EAAGilB,KAAKw1F,GAChCz6G,EAAGy6G,GAAGz6G,EAAGsB,SAAWtB,EAAGy6G,GAAGL,KAAO,OACjCp6G,EAAG08B,UAAY03I,GAAap0K,EAAGi2B,OAAQ7d,GAUzCxY,GAAGylF,EAAQuwF,EAAU,MACnB,MAAMx9J,EAASnY,KAAKwwK,mBAAqB,CACrC19G,SAAU,OAEZ98C,EAAQhW,KAAKm1K,IACf,IAAIrqK,EAAM6qK,GAAW3/J,EAAM2/J,GAC3B,IAAK7qK,EAAK,CACR,UAAWs6E,IAAW,SAAU,CAC9BjtE,EAAO9W,MAAQ+jF,MACV,CACLnnF,OAAOmZ,OAAOe,EAAQitE,GAExBjtE,EAAO6M,KAAOhlB,KACd8K,EAAM,IAAI8+G,GAAazxG,GAEzB,GAAIw9J,EAAS,CACX3/J,EAAM2/J,GAAW7qK,EAEnB,OAAOA,EAETnL,aAAaJ,EAAOqa,GAClB,OAAOra,GAAS,KAAOA,EAAQqa,EAAS3F,OAAO1U,GAAS0C,WAAW1C,GASrEI,OAAOJ,GACL,UAAWA,IAAU,SAAU,CAC7B,MAAMiO,EAAIyG,OAAO1U,GACjBA,EAAQ2U,MAAM1G,GAAKxN,KAAKgM,MAAMzM,GAASiO,EAEzC,OAAO0M,MAAM4iB,OAAOv9B,GA0CtBI,MAAMJ,GACJ,OAAOS,KAAKgM,MAAMhM,KAAK88B,OAAOv9B,IAShCI,SAASJ,GACP,MAAMQ,EAAKC,KACTi6E,EAAQl6E,EAAGy0K,uBACXY,UACEA,GACEr1K,EACN,IAAIyN,EAAIzN,EAAGiM,MAAMzM,GACfu1K,EACF,GAAIM,EAAW,CACb5nK,EAAI4nK,EAAUt4I,OAAOtvB,GACrBsnK,EAAMtnK,EAAE/H,QAAQ2vK,EAAUtvI,OAAO6uI,SACjC,GAAIG,GAAO,GAAKtnK,EAAE1O,OAASg2K,EAAM,EAAI76F,EAAO,CAC1CzsE,EAAIA,EAAEnE,OAAO,EAAGyrK,EAAM76F,EAAQ,GAEhCzsE,EAAI4nK,EAAUppK,MAAMwB,GAEtB,OAAOA,EAET7N,kBACE,MAAMiN,EAAUsN,MAAMs2J,kBACtB,IAAK,MAAMvxK,KAAO2N,EAAS,CAGzB,GAAIA,EAAQ3N,KAAS2D,UAAW,CAC9BgK,EAAQ3N,GAAOe,KAAKf,IAGxB,OAAO2N,EASTjN,QAAQ8E,EAAMmxK,EAAQC,GACpB,MAAM91K,EAAKC,KACTT,EAAQQ,EAAG0E,GACb,GAAIlF,GAAS,KAAM,CACjB,MAAMiX,EAAUpM,EAAaK,WAAWhG,GACtC4P,EAAM,UAAUmC,UAChBmS,EAAM,UAAUnS,UAClB,UAAWjX,IAAU,SAAU,CAC7B,GAAIq2K,EAAQ,CACV71K,EAAG4oB,GAAOppB,EAEZ,GAAIs2K,EAAQ,CACV91K,EAAGsU,GAAO9U,OAEP,CACLQ,EAAG4oB,GAAOppB,EAAM,GAChBQ,EAAGsU,GAAO9U,EAAM,MAKxBqqH,GAAa6mD,OAAS6D,GACtBr2K,OAAOmZ,OAAOwyG,GAAa/7G,UAAW,CAKpCo0C,SAAU,CAQR5gD,MAAO,UAQPwoH,SAAU,KAQV6qD,gBAAiB,SAQjB1+I,OAAQ,KAORw+I,sBAAuB,KAOvBsB,sBAAuB,KAOvBC,qBAAsB,KAOtBC,yBAA0B,KAO1BC,yBAA0B,KAM1BT,YAAa,MASfltI,SAAU,KACVtjB,KAAM,KAKNywJ,QAAS,KAYTS,YAAa,KA+BbpjH,SAAU,OAEZ70D,OAAOmZ,OAAOwyG,GAAa/7G,UAAW+7G,GAAa/7G,UAAUo0C,UAE7DkuH,GAAUp0I,OAAS,CAACe,EAAQv9B,IAAUqqH,GAAa9sF,OAAOA,EAAQv9B,GAClEqqH,GAAa1hH,OAAS,eA+CtB,MAAMiuK,WAAyBlpJ,GAAO5R,KAGpC1b,UAAUwY,EAAS,IACjB,MAAMpY,EAAKC,KACXka,MAAMsB,UAAUrD,GAChBpY,EAAGq2K,SAAWr2K,EAAGq2K,SAASphK,KAAKjV,GAC/BA,EAAGs2K,UAAYt2K,EAAGs2K,UAAUrhK,KAAKjV,GACjCA,EAAGu2K,YAAcv2K,EAAGu2K,YAAYthK,KAAKjV,GACrCA,EAAGw2K,UAAYx2K,EAAGw2K,UAAUvhK,KAAKjV,GACjC,GAAIA,EAAGy2K,aAAez2K,EAAG02K,QAAS,CAChC12K,EAAG22K,QAGP/2K,YACE,MAAMI,EAAKC,KACX,GAAID,EAAG42K,UAAW,CAChB52K,EAAG62K,sBAAsB72K,EAAG42K,WAC5B52K,EAAG42K,UAAUzrD,QACbnrH,EAAG42K,UAAY,KAEjBz8J,MAAM8B,YAGR66J,mBACE,IAAIC,EACJ,QAASA,EAAkB92K,KAAK22K,aAAe,MAAQG,SAAyB,OAAS,EAAIA,EAAgBC,cAAgB/2K,KAAKqQ,YAAY2mK,wBAAwBC,WAExKC,eACE,IAAIC,EACJ,QAASA,EAAmBn3K,KAAK22K,aAAe,MAAQQ,SAA0B,OAAS,EAAIA,EAAiBJ,cAAgB/2K,KAAKqQ,YAAY2mK,wBAAwBI,KAE3KC,gBACE,IAAIC,EACJ,QAASA,EAAmBt3K,KAAK22K,aAAe,MAAQW,SAA0B,OAAS,EAAIA,EAAiBP,cAAgB/2K,KAAKqQ,YAAY2mK,wBAAwBO,QAE3KC,eACE,IAAIC,EACJ,QAASA,EAAmBz3K,KAAK22K,aAAe,MAAQc,SAA0B,OAAS,EAAIA,EAAiBV,cAAgB/2K,KAAKqQ,YAAY2mK,wBAAwBU,OAI3K/3K,2BACE,MAAMg3K,EAAY32K,KAAK22K,UAAY,IAAI32K,KAAKqQ,YAAY2mK,wBAAwBh3K,KAAKy2K,SACrFz2K,KAAK23K,sBAAsBhB,GAE7Bh3K,4BACEK,KAAK42K,sBAAsB52K,KAAK22K,WAChC32K,KAAK22K,UAAUzrD,QACflrH,KAAK22K,UAAY,KAEnBh3K,sBAAsBg3K,GACpB,MAAM52K,EAAKC,KACX22K,EAAUx0H,iBAAiB,OAAQpiD,EAAGq2K,UACtCO,EAAUx0H,iBAAiB,QAASpiD,EAAGs2K,WACvCM,EAAUx0H,iBAAiB,UAAWpiD,EAAGu2K,aACzCK,EAAUx0H,iBAAiB,QAASpiD,EAAGw2K,WAEzC52K,sBAAsBg3K,GACpB,MAAM52K,EAAKC,KACX22K,EAAU50H,oBAAoB,OAAQhiD,EAAGq2K,UACzCO,EAAU50H,oBAAoB,QAAShiD,EAAGs2K,WAC1CM,EAAU50H,oBAAoB,UAAWhiD,EAAGu2K,aAC5CK,EAAU50H,oBAAoB,QAAShiD,EAAGw2K,WAQ5C52K,aACE,MAAMI,EAAKC,KACX,GAAID,EAAG63K,aAAc,CACnB,OAAO73K,EAAG63K,aAEZ,IAAK73K,EAAG02K,QAAS,CACf7hK,QAAQC,KAAK,qCACb,OAEF,GAAI9U,EAAGm3K,SAAU,CACf,OAAO,KAETn3K,EAAG83K,2BACH,IAAIr1J,EAEJziB,EAAG63K,aAAe,IAAIrnK,SAAQC,IAC5BgS,EAAWziB,EAAGovB,GAAG,CACfxvB,OACE6Q,EAAQ,OAEV7Q,QACE6Q,EAAQ,aAGXC,MAAKlR,IAENijB,IAEAziB,EAAG63K,aAAe,KAElB,IAAKr4K,EAAO,CACVQ,EAAG+3K,4BAEL,OAAOv4K,KACNw1B,OAAM,KACPh1B,EAAG63K,aAAe,KAClB73K,EAAG+3K,+BAEL,OAAO/3K,EAAG63K,aAKZj4K,QACE,GAAIK,KAAK22K,UAAW,CAClB32K,KAAK83K,4BACL93K,KAAKutB,QAAQ,UAQjB5tB,KAAKo4K,EAAS79I,EAAO,IACnB,IAAI89I,GACHA,EAAmBh4K,KAAK22K,aAAe,MAAQqB,SAA0B,OAAS,EAAIA,EAAiBC,KAAKlsK,KAAKK,UAAU1N,EAAe,CACzIq5K,QAAAA,GACC79I,KAILv6B,SAASwwB,GACPnwB,KAAKutB,QAAQ,OAAQ,CACnB4C,MAAAA,IAGJxwB,UAAUwwB,GACRnwB,KAAKutB,QAAQ,QAAS,CACpB4C,MAAAA,IAGJxwB,YAAY8U,GACV,IACE,MAAMylB,EAAOnuB,KAAKC,MAAMyI,EAAQylB,MAChCl6B,KAAKutB,QAAQ,UAAW,CACtB2M,KAAAA,IAEF,MAAOlF,GACPh1B,KAAKutB,QAAQ,QAAS,CACpByH,MAAAA,KAINr1B,UAAUq1B,GACRh1B,KAAKutB,QAAQ,QAAS,CACpByH,MAAAA,KAKN91B,EAAgBi3K,GAAkB,iCAAkC+B,YAAc,YAAc,KAAOA,WACvGh5K,EAAgBi3K,GAAkB,eAAgB,CAKhDM,QAAS,GAKT0B,SAAU,OAKV3B,YAAa,OAEfL,GAAiBjuK,OAAS,mBA6C1B,IAAIkwK,GAAelrJ,GAAU,MAAMkrJ,UAAqBlrJ,GAAU7R,IAChEtN,mBACE,MAAO,cAETpO,aAAa4b,GACXrB,MAAMsB,aAAaD,GAOnBvb,KAAKq4K,UAAY,KAQjBr4K,KAAK2mK,WAAa,KAMlB3mK,KAAKs4K,YAAc,MAMnBt4K,KAAKu4K,aAAe,MAOtB54K,aACEK,KAAK+b,UAQPpc,WACE,MAAMI,EAAKC,KACX,IAAI8K,EAAM/K,EAAG4mK,WACb,IAAK77J,IAAQ/K,EAAGu4K,YAAa,CAC3Bv4K,EAAGw4K,aAAe,KAElBx4K,EAAG4mK,WAAa77J,EAAM/K,EAAGy4K,kBAE3B,OAAO1tK,EAETnL,wBACE,MAAMI,EAAKC,KACX,UACQD,EAAGs4K,UACV,QAECt4K,EAAG4mK,WAAa,KAChB5mK,EAAGu4K,YAAc,KACjBv4K,EAAG04K,gBAQT,MAAMC,GAAUljK,OAAO,aAErBmjK,GAAOnjK,OAAO,YAEdojK,GAAWpjK,OAAO,YAElBqjK,GAAUrjK,OAAO,YAEjBsjK,GAAiB,CACf30K,EAAG,aACHqgC,EAAG,YAQP,MAAMu0I,WAAoB19J,GAAOmF,MAAM43J,GAAap0G,GAAW2G,KAC7DnrE,0BACE,MAAO,CAMLw5K,YAAa,KAMbnW,cAAe,KAMfa,iBAAkB,KAOlB3kK,OAAQ,KAMRJ,OAAQ,KAMRijD,cAAe,KAQf+iD,UAAW,EAOXm/D,gBAAiB,KAGrBl5F,0BACE,MAAO,GAOTjrE,aAAa4b,GACXrB,MAAMsB,aAAaD,GACnB,MAAMxb,EAAKC,MACTmwB,MACEA,GACEpwB,EACN9B,OAAOmZ,OAAOrX,EAAI,CAKhB0yH,OAAQ,KAMRwmD,SAAU,GAKVn2H,QAAS,KAOT5oB,KAAM,IAAI1oB,IAMVilC,QAAStmB,EAAMxxB,OAMfu6K,SAAU,KAMVC,cAAe,KAKft2H,QAAS,KAMTu2H,eAAgB,KAMhBC,eAAgB,KAKhBjgE,SAAU,KAgBVjwC,MAAOwvG,GAMP9U,WAAY1zI,EAOZy0I,gBAAiB,KAMjB0U,OAAQ,OAEV,GAAI,YAAanpJ,GAASpwB,EAAG+jK,gBAAiB,CAC5C/jK,EAAG6kK,gBAAkB7kK,EAAGgd,YAAW,IAAMhd,EAAG6kK,gBAAkB,MAAM7kK,EAAG+jK,gBAAiB,mBAE1FhjH,GAAY3xB,GAAG,CACbsnB,QAASr0C,WACTiqI,KAAM,eACN/vH,QAASvc,IAGbJ,YACE,MAAMI,EAAKC,MACTjB,OACEA,EAAMJ,OACNA,GACEoB,EACNA,EAAG43E,UACH,IAAKh5E,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO46K,YAAcx5K,EAAI,CAC5EpB,EAAO46K,SAAW,KAEpB,IAAKx6K,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO6+J,YAAc79J,EAAI,CAC5EhB,EAAO6+J,SAAW,KAEpB1jJ,MAAM8B,YAERrc,eACE,GAAIK,KAAK+9J,QAAS,CAChB/9J,KAAKk1B,SAST6tI,cACE,OAAO/iK,KAAKmpE,QAAUuvG,GAOxBphC,gBACE,OAAOt3I,KAAKmZ,cAAgBnZ,KAAK+iK,SAAW/iK,KAAKk5K,WAAa,KAOhEM,cACE,OAAOx5K,KAAKmpE,QAAUwvG,GAOxB5a,cACE,OAAO/9J,KAAKmpE,QAAUwvG,KAAS34K,KAAK+iK,QAUtCtsB,YACE,OAAOz2I,KAAK+9J,SAAW/9J,KAAK4hD,eAAiB,MAAQ5hD,KAAKs5K,OAE5D7iC,UAAUjpI,GACRxN,KAAKs5K,OAAS9rK,EAQhB7N,UAAU8E,GACR,GAAIzE,KAAK+iK,QAAS,CAChB,MAAM,IAAIryJ,MAAM,yCAElB,IAAK1Q,KAAKs3I,UAAW,CACnB,MAAM,IAAI5mI,MAAM,+CAElB,GAAInJ,MAAMC,QAAQ/C,GAAO,CACvB,OAAO8L,QAAQ/G,IAAI/E,EAAKoF,KAAI6F,GAAK1P,KAAK0R,IAAIhC,MAE5C,IAAInQ,EAAQS,KAAKk6B,KAAKxoB,IAAIjN,GAC1B,UAAWlF,IAAU,WAAY,CAC/BA,QAAcA,IACdS,KAAKk6B,KAAK5oB,IAAI7M,EAAMlF,GAEtB,OAAOA,EAOTI,IAAI8E,GACF,OAAOzE,KAAKk6B,KAAKjc,IAAIxZ,GAQvB9E,KAAK8E,GACH,GAAIzE,KAAK+iK,QAAS,CAChB,MAAM,IAAIryJ,MAAM,yCAElB,GAAInJ,MAAMC,QAAQ/C,GAAO,CACvB,OAAOA,EAAKoF,KAAI6F,GAAK1P,KAAKy5K,KAAK/pK,KAEjC,IAAInQ,EAAQS,KAAKk6B,KAAKxoB,IAAIjN,GAC1B,UAAWlF,IAAU,WAAY,CAC/BA,EAAQ,KAEV,OAAOA,EAQTI,IAAI8E,EAAMlF,GACRS,KAAKk6B,KAAK5oB,IAAI7M,EAAMlF,GAItBI,aAAahB,EAAQ2Z,GACnB,GAAI3Z,IAAW2Z,EAAK,CAClB,MAAMvY,EAAKC,KACXD,EAAGo/D,QAAUxgE,EACboB,EAAGq5K,eAAiB9gK,EACpB,GAAIA,EAAK,CACPA,EAAIihK,SAAW,KAEjB,GAAI56K,EAAQ,CACVA,EAAO46K,SAAWx5K,EAClB,GAAIpB,EAAO46K,WAAax5K,EAAI,CAE1BpB,EAAS,KACToB,EAAG02I,MAAQ,OAGf12I,EAAGo/D,QAAU7mD,EAEf,OAAO3Z,EAETgB,aAAahB,EAAQ2Z,GACnB,MAAMvY,EAAKC,KACX,GAAIsY,EAAK,CACPvY,EAAGhB,OAAO26K,gBAAgB35K,EAAIuY,GAEhC,GAAI3Z,EAAQ,CACVoB,EAAG02I,MAAQ,KAGX93I,EAAOg7K,SAAS55K,GAChBA,EAAGhB,OAAO66K,gBAAgB75K,IAG9BJ,oBAAoBiiD,GAClB,IAAIi4H,EAAWC,EAAYC,EAAmBn7K,EAAGqpB,EAMjD,IAAKA,EAAI25B,EAAe35B,EAAGA,EAAIA,EAAEuvB,cAAe,CAC9CsiI,EAAatpE,GAAa9+F,IAAIuW,EAAG,cACjC,GAAI6xJ,EAAY,CACd,IAAKl7K,EAAI,EAAGA,EAAIk7K,EAAWh7K,SAAUF,EAAG,CACtCi7K,EAAYC,EAAWl7K,GAIvB,GAAIi7K,EAAUG,gBAAgBjiI,SAAS6J,GAAgB,CACrDm4H,EAAoBF,EAAUE,kBAE9B,IAAKA,GAAqBn4H,EAAcqC,QAAQ,IAAIhM,GAAUgiI,MAAMJ,EAAUG,oBAAoBD,KAAsB,CACtH/5K,KAAKrB,OAASk7K,EAGd,GAAI75K,KAAKrB,SAAWk7K,EAAW,CAC7B,aAcdl6K,QACE,MAAMI,EAAKC,MACTy2C,QACEA,EAAO13C,OACPA,GACEgB,EAEN02C,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQa,wBAC1D,GAAIv3C,EAAGopE,QAAU0vG,GAAS,CACxB94K,EAAGopE,MAAQuvG,GACX34K,EAAG43E,UAEL54E,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOm7K,QAAQn6K,GAEjEJ,QACE,MAAMI,EAAKC,MACTjB,OACEA,GACEgB,EACJ+K,EAAM/L,EAAOo7K,WAAWp6K,GAC1B,GAAI+K,IAAQ,MAAO,CACjB/L,EAAO6+J,SAAW79J,EAEpB,OAAO+K,EAETnL,UACE,IAAIy6K,EACJ,MAAOA,EAAUp6K,KAAKi5K,SAASrnK,MAAO,CACpCwoK,KAGJz6K,IAAIwwB,GACF,MAAMpwB,EAAKC,MAEPm5K,cAAekB,EAAS17K,OACxBA,GACEoB,GACJu6K,qBACEA,GACEv6K,EAAGhB,OACTgB,EAAGowB,MAAQpwB,EAAGm5K,SAAW/oJ,EACzBpwB,EAAGw6K,YACH,GAAIx6K,EAAGg+J,QAAS,CACd,IAAKsc,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAUp5H,WAAa9wB,EAAM8wB,UAAYo5H,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAUn5H,WAAa/wB,EAAM+wB,UAAYm5H,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU17K,UAAYwxB,EAAMxxB,OAAQ,CAE3RoB,EAAGy6K,QAEL,GAAIF,EAAsB,CAGxBx5H,GAAY3xB,GAAG,CACbsnB,QAASt1C,SACTq+C,QAAS,KACT1yB,QAASwtJ,EAET1tJ,KAAM,KACNjtB,MAAMwwB,GACJA,EAAM+sH,qBAIZn9I,EAAGopE,MAAQ0vG,GACX,GAAIl6K,IAAWoB,EAAGhB,OAAQ,CAGxBJ,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO87K,SAAS16K,KAItEJ,QAAQwwB,EAAOi7G,GACb,MAAMrrI,EAAKC,MACTm5K,cACEA,GACEp5K,EACN,GAAIo5K,GAAiBp5K,EAAG02C,QAAS,CAC/B,IAAIwiB,EAEJkgH,EAAcuB,MAAQ,KACtB,GAAIvqJ,EAAMlxB,MAAQ,MAAO,CACvB,GAAIc,EAAG0yH,SAAW2Y,EAAM,CACtBrrI,EAAG0yH,OAAS2Y,EACZnyE,EAAU,WAEP,GAAI9oC,EAAMlxB,MAAQ,UAAW,CAClC,GAAIc,EAAG+iD,UAAYsoF,EAAM,CACvBrrI,EAAG+iD,QAAUsoF,EACbnyE,EAAU,MAGd,GAAIA,EAAS,CACXl5D,EAAGowB,MAAQgpJ,EACXp5K,EAAGy6K,UAIT76K,QAAQwwB,GACN,IAAKnwB,KAAKs3I,UAAW,CACnB,GAAInnH,EAAMlxB,MAAQ,SAAU,CAC1Be,KAAKk1B,aACA,GAAIl1B,KAAK26K,gBAAgBxqJ,EAAMlxB,KAAM,CAC1Ce,KAAK46K,QAAQzqJ,EAAO,QAI1BxwB,MAAMwwB,GACJ,IAAKnwB,KAAKs3I,WAAat3I,KAAK26K,gBAAgBxqJ,EAAMlxB,KAAM,CACtDe,KAAK46K,QAAQzqJ,EAAO,QAGxBxwB,YAAYwwB,GACV,OAAO2wB,GAAYmkH,mBAAmBjlK,KAAK6jK,WAAY1zI,GAEzDxwB,gBAAgBV,GACd,OAAOA,IAAQ,WAAaA,IAAQ,MAEtCU,KAAKwwB,GACH,MAAMpwB,EAAKC,MACTrB,OACEA,GACEwxB,EACJ60I,EAAWjlK,EAAG86K,YAAY1qJ,GAC1B+lJ,EAAclR,GAAYjlK,EAAG4kG,UAC/B5kG,EAAGw6K,YACH,GAAIx6K,EAAG6kK,gBAAiB,CACtB,GAAIsR,EAAa,CACfn2K,EAAGm1B,QAEL,OAEF,GAAIv2B,GAAUA,EAAOk4C,WAAaC,KAAKuH,aAAc,CACnD,GAAI63H,IAAgBn2K,EAAGg+J,QAAS,CAC9Bh+J,EAAGowB,MAAQA,EAEX,GAAIpwB,EAAGyoB,UAAY,MAAO,CACxBzoB,EAAGm1B,QACH,QAKJ,GAAIn1B,EAAGg+J,UAAYh+J,EAAGu3I,UAAW,CAC/Bv3I,EAAGo5K,cAAgBp5K,EAAGowB,MAAQA,EAE9B,GAAIA,EAAMtjB,OAAS,YAAa,CAC9BsjB,EAAM21B,iBACN31B,EAAMutC,2BAER39D,EAAGy6K,UAIT76K,QACE,MAAMI,EAAKC,MACT6iK,cACEA,EAAaa,iBACbA,EAAgB3kK,OAChBA,GACEgB,GAEF+6K,gBAAiBC,EAASC,SAC1BA,GACEj8K,EACJ03C,EAAoC13C,EAAOk8K,gBAC7Cl7K,EAAGopE,MAAQyvG,GAEX,GAAI/V,EAAe,CACjB,MAAMrgJ,EAAWqgJ,EAAcyC,gBAAgBx4J,EAAQ0C,MAAM,CAC3D+1J,YAAa,CAAC,CACZ9uH,QAAAA,IAEF0V,UAAW2sH,GAAekC,IAAaA,GAAY,OACnDr7K,SAAS05K,GACP,MAAMF,cACJA,GACEp5K,EACJ,GAAIo5K,GAAiBp5K,EAAG02C,QAAS,CAE/B0iI,EAActT,SAAW,KACzB9lK,EAAGowB,MAAQgpJ,EACXp5K,EAAGs5K,eAAiBA,EACpBt5K,EAAGy6K,QACHz6K,EAAGs5K,eAAiB,QAGvB3V,IACH3jK,EAAGk5K,SAASz6K,KAAKgkB,GAGnB,MAAMukC,EAAShoD,EAAOk8K,gBAAgBh3H,QAAQ,aAAe9iD,SAAS8E,KACtE8gD,EAAOnI,UAAU7/B,IAAIg8J,GACrBh7K,EAAGk5K,SAASz6K,MAAK,IAAMuoD,EAAOnI,UAAU98C,OAAOi5K,KAC/C,GAAIh8K,EAAOm8K,UAAUn7K,KAAQ,MAAO,CAClCA,EAAG43E,UACH,OAAO,OAGXh4E,YACE,MAAMI,EAAKC,MACTmwB,MACEA,GACEpwB,EACNA,EAAG0yH,OAAStiG,EAAMsiG,OAGlB1yH,EAAG+iD,QAAU3yB,EAAM2yB,SAAW3yB,EAAM0yB,QACpC9iD,EAAG8iD,QAAU1yB,EAAM0yB,QACnB9iD,EAAGq5G,SAAWjpF,EAAMipF,SAEtBz5G,QACE,MAAMI,EAAKC,MACTmwB,MACEA,EAAKpxB,OACLA,EAAMJ,OACNA,GACEoB,EACN,IAAI6hD,EAAgBzxB,EAAMxxB,OACxBggK,EAIF,GAAIxuI,EAAMtjB,OAAS,YAAa,CAC9B8xJ,EAAQxuI,EAAM6uB,eAAe,GAM7B4C,EAAgB3J,GAAUkL,iBAAiBw7G,EAAM19G,QAAS09G,EAAMz9G,SAElEnhD,EAAG6hD,cAAgBA,EACnB,GAAIjjD,IAAWoB,EAAGpB,OAAQ,CAGxBA,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOg7K,SAAS55K,GAElEhB,EAAOo8K,UAAUp7K,IAIrBb,EAAgB65K,GAAa,QAAS,eACtCA,GAAYlrK,UAAUutK,MAAQrC,GAAYqC,MAAQn9K,OAAOmR,OAAO,CAC9DspK,QAAAA,GACAC,KAAAA,GACAC,SAAAA,GACAC,QAAAA,KAEFE,GAAY7wK,OAAS,cAarB,MAAMmzK,WAAkBhgK,GAAOmF,MAAMi2D,KACnC5pE,kBACE,MAAO,UAETrN,0BACE,MAAO,CAMLo+J,SAAU,MAGdjnF,yBACE,MAAO,CACLW,YAAa+jG,IASjB17K,eAAe27K,EAAMhjK,GACnB,GAAIA,EAAK,CACPtY,KAAKkrH,MAAM5yG,GAEb,GAAIgjK,EAAM,CACRt7K,KAAK02K,KAAK4E,IASd37K,MAAM27K,IAON37K,KAAK27K,IAUL37K,UAAU27K,GACRt7K,KAAK49J,SAAW0d,EAMlB37K,SAAS27K,IAST37K,QAAQ27K,GACNt7K,KAAK49J,SAAW,MAKpByd,GAAUzkG,YACVykG,GAAUnzK,OAAS,YA4BnB,IAAIqzK,GAAaruJ,GAAU,MAAMquJ,UAAmBruJ,GAAU7R,IAC5DtN,mBACE,MAAO,YAGTvO,0BACE,MAAO,CAOLo+J,SAAU,CACRp8I,QAAS,UACTjiB,MAAO,MAOTi8K,oBAAqB,KAMrBC,sBAAuB,CACrBhlI,QAASt1C,SACTwlD,QAAS,gBACTD,MAAO,cAEPH,YAAa,oBAGb20F,UAAW,oBACX70F,QAAS,kBAGTZ,UAAW,kBACXF,SAAU,kBACVD,UAAW,CACTz1C,QAAS,oBACT4vC,QAAS,QAUbi8H,iBAAkB,KAMlBC,gBAAiB,KAkBjBX,SAAU,KAOVY,gBAAiB,EAMjBje,UAAW,CACTn8I,QAAS,CAAC,OAAQ,WAClBjiB,MAAO,MAOT07K,gBAAiB,CACfz5J,QAAS,UACTjiB,MAAO,MAOTs8K,mBAAoB,MAMpBC,aAAc,KAKd5e,eAAgB,KAOhBod,qBAAsB,GAMtB7W,cAAe,EAOfsY,oBAAqB,IAKrBpY,mBAAoB,KAMpBzK,SAAU,KACVj3I,WAAY,CACVq4J,qBAAsB,KAI5B1iK,wBACE,MAAO,CAOL8lJ,YAAa,qBAObod,gBAAiB,sBAOjBkB,gBAAiB,kBAOjBC,mBAAoB,sBAMpBC,aAAc,eAoBlBv8K,WAAW27K,GACT,MAAML,gBACFA,EAAea,aACfA,EAAY5e,eACZA,GACEl9J,KACJrB,EAASm9K,GAAgBR,EAAK7kI,QAAQwN,QAAQ63H,GAChD,OAAQA,GAAgB57K,QAAQvB,GAAUA,IAAWs8K,GAAmBA,EAAgBljI,SAASp5C,MAAau+J,IAAmBoe,EAAK7kI,QAAQn0C,QAAQ46J,KAQxJv9J,UAAU27K,IAOV37K,SAAS27K,IAOT37K,gBAAgB27K,IAQhB37K,gBAAgB27K,EAAM5H,IAStB/zK,SAAS27K,IAUT37K,QAAQ27K,IAQRa,iBACE,MACEve,SAAU0d,GACRt7K,KACJ,OAAOs7K,IAAS,MAAQA,SAAc,GAAKA,EAAKvd,UAAYud,EAAKhkC,UAAYgkC,EAAO,KAOtFc,kBACE,OAAOp8K,KAAKutB,QAAUvtB,KAAO,KAG/Bq8K,2BACE,MAAMb,oBACJA,EAAmBP,gBACnBA,GACEj7K,KACJ,OAAOw7K,EAAsBP,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBh3H,QAAQu3H,GAAuBP,EAEhJt7K,UAAU27K,GACR,MAAM5d,YACJA,EAAW2e,qBACXA,GACEr8K,KACJ,GAAI09J,GAAe2e,EAAsB,CACvCA,EAAqBz9H,UAAU7/B,IAAI2+I,GACnC4d,EAAKrC,SAASz6K,MAAK,IAAM69K,EAAqBz9H,UAAU98C,OAAO47J,MAGnE/9J,cAAc27K,GACZ,MAAMv7K,EAAKC,MACTo8K,YACEA,EAAWze,UACXA,GACE59J,EACN,GAAIu7K,EAAK7kC,MAAO,OAGR12I,EAAG06K,SAASa,GAEpB,GAAIv7K,EAAGmc,YAAa,CAClB,OAEF,GAAIo/J,EAAK9B,QAAS,CAChB8B,EAAKv/J,cACA,CACLhc,EAAGu8K,QAAQhB,GACX3d,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU2e,QAAQhB,GAmBxEc,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY7uJ,QAAQ+tJ,EAAK7kC,MAAQ,OAAS,aAAc,CAChH6kC,KAAAA,EACAnrJ,MAAOmrJ,EAAKnrJ,QAIdpwB,EAAGw8K,aAAajB,IAGpB37K,mBAAmB27K,SACXA,EAAKliC,WAIbz5I,SAAS27K,GACP,GAAIt7K,KAAKw8K,SAASlB,KAAU,MAAO,CACjC,MAAMc,YACJA,EAAWze,UACXA,GACE39J,KACJ29J,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAUgc,SAAS2B,GAQzEc,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY7uJ,QAAQ,OAAQ,CACpF+tJ,KAAAA,EACAnrJ,MAAOmrJ,EAAKnrJ,SAIlBxwB,iBAAiBwwB,GACf,MAAMpwB,EAAKC,MACT07K,iBACEA,EAAgB/wK,GAChBA,GACE5K,GACJpB,OACEA,GACEwxB,EACN,MAAO,CACLA,MAAAA,EACAxlB,GAAIA,EAAK,GAAGA,UAAW5K,EAAG08K,aAAe18K,EAAG08K,aAAe,GAAK,IAAM,KACtEzD,YAAa0C,EAAmB/8K,EAAOslD,QAAQy3H,GAAoB/8K,EACnEmlK,gBAAiB/jK,EAAGg8K,oBACpBh9K,OAAQgB,EACR4kG,UAAW5kG,EAAG0jK,eAGlB9jK,UAAU27K,GACR,MAAMW,mBACFA,EAAkBI,qBAClBA,EAAoBL,gBACpBA,EAAeI,YACfA,EAAWze,UACXA,GACE39J,MACJg5K,YACEA,GACEsC,EAaN,IAAKc,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY7uJ,QAAQ,kBAAmB,CACpG+tJ,KAAAA,EACAnrJ,MAAOmrJ,EAAKnrJ,WACN,MAAO,CACb,OAAO,MAET,GAAI8rJ,GAAsBI,EAAsB,CAC9CA,EAAqBz9H,UAAU7/B,IAAIk9J,GACnCX,EAAKrC,SAASz6K,MAAK,IAAM69K,EAAqBz9H,UAAU98C,OAAOm6K,KAEjE,GAAID,GAAmBhD,EAAa,CAClCA,EAAYp6H,UAAU7/B,IAAIi9J,GAC1BV,EAAKrC,SAASz6K,MAAK,IAAMw6K,EAAYp6H,UAAU98C,OAAOk6K,KAExDre,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU+e,UAAUpB,GAC1E,MAAMnvK,EAASnM,KAAK08K,UAAUpB,GAC9B,GAAInvK,IAAW,MAAO,CAUpBiwK,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY7uJ,QAAQ,YAAa,CACzF+tJ,KAAAA,EACAnrJ,MAAOmrJ,EAAKnrJ,QAGhB,OAAOhkB,EAETxM,UAAU27K,GACR,IAAIqB,EACJ,MAAMhZ,mBACJA,GACE3jK,KACJs7K,EAAK7kC,QAAUktB,MAAyBgZ,EAAsBrB,EAAK15H,iBAAmB,MAAQ+6H,SAA6B,GAAKA,EAAoB14H,QAAQ0/G,KAC5J3jK,KAAK48K,SAAStB,GAIhB37K,mBAAmB27K,GACjB,MAAMv7K,EAAKC,KACTqtB,EAAY2jB,GAAa55B,OAAO,CAC9BkF,QAASvc,GACRA,EAAG07K,uBAER,GAAI,YAAaH,EAAKzX,WAAY,QACzBx2I,EAAU6tH,iBACV7tH,EAAUg5B,YACZ,QACEh5B,EAAUk5B,mBACVl5B,EAAUi4B,iBACVj4B,EAAUk4B,gBACVl4B,EAAUo4B,UAEnB,OAAOp4B,EAIT1tB,eAAe27K,EAAMh/E,GACnB,MAAMv8F,EAAKC,KACX,GAAIs7K,EAAM,CACR,MAAMjuJ,EAAYttB,EAAG88K,mBAAmBvB,GACxCA,EAAKrC,SAASz6K,KAAKsiD,GAAY3xB,GAAG9B,IAClCttB,EAAG+8K,UAAUxB,QACR,GAAIh/E,EAAK,CACdA,EAAIvgF,WAGRpc,gBAAgBwY,EAAQR,GACtB,OAAO0jK,GAAU5jG,YAAY9/D,EAAUQ,EAAQ,CAC7CQ,MAAO3Y,KACPiiD,SAAU,CACRtpC,MAAO3Y,QAIbL,sBAAsBonD,EAAQzuC,GAC5B,IAAIykK,EACJ,MAAMh9K,EAAKC,MACTk8K,aACEA,EAAYR,iBACZA,EAAgBsB,oBAChBA,GACEj9K,EACNuY,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAIsmC,UAAU98C,OAAOo6K,IAC9Da,EAAwBh9K,EAAGk9K,qBAAuB,MAAQF,SAA+B,OAAS,EAAIA,EAAsBl2K,KAAK9G,GAClI,GAAIgnD,EAAQ,CACV,MAAM15B,EAAY,CAChB/Q,QAASvc,EACT02C,QAASsQ,EACTX,UAAW,kBAGXR,WAAY,mBAKZ2+G,YAAavgK,IACX,IAAIk5K,EAAuBC,EAC3B,OAAOn5K,EAAEo5K,aAAeF,GAAyBC,EAAYn5K,EAAErF,QAAQ0+K,yBAA2B,MAAQH,SAA+B,OAAS,EAAIA,EAAsBr2K,KAAKs2K,EAAWn5K,EAAEo5K,cAGlM,GAAIJ,EAAqB,CACvB3vJ,EAAU6tH,UAAY,CACpB37F,SAAUm8H,EACV7rK,QAAS,uBAGb,GAAI9P,EAAG47K,iBAAmBqB,GAAuBj9K,EAAGu9K,sBAAwBv9K,EAAGw9K,qBAAsB,CACnGt/K,OAAOmZ,OAAOiW,EAAW,CACvBm5B,UAAW,CACTjH,SAAUm8H,EACV7rK,QAAS,uBAEX42C,SAAU,CACRlH,SAAUm8H,EACV7rK,QAAS,wBAIfk3C,EAAOnI,UAAU7/B,IAAIm9J,GACrBn8K,EAAGk9K,kBAAoBn8H,GAAY3xB,GAAG9B,IAK1C1tB,oBAAoBwwB,GAClBnwB,KAAKk5J,SAAW/oI,EAElBxwB,mBAAmBwwB,GACjB,IAAKnwB,KAAK49J,SAAU,CAClB59J,KAAKk5J,SAAW/oI,GAGpBxwB,eAAewwB,GACbnwB,KAAKw9K,gBAAkBrtJ,EACvB,GAAIA,EAAMtjB,OAAS,WAAY,CAC7B,IAAIy1C,EAEJ,QAASA,EAAuBnyB,EAAMkzB,iBAAmB,MAAQf,SAA8B,OAAS,EAAIA,EAAqB2B,QAAQjkD,KAAK07K,oBAAsB,SAC/J,CACL,OAAOvrJ,EAAMxxB,OAAOslD,QAAQjkD,KAAK07K,mBAGrC/7K,eAAeu5J,EAAUukB,GACvB,MAAM19K,EAAKC,MACT27K,gBACEA,GACE57K,EACN,GAAI09K,EAAa,CACf,IAAIC,EACJ/B,GAAmB8B,EAAY7+H,UAAU98C,OAAO65K,IAC/C+B,EAAwB39K,EAAGw9K,wBAA0B,MAAQG,SAA+B,OAAS,EAAIA,EAAsB72K,KAAK9G,EAAIA,EAAGy9K,gBAAiBC,GAE/J,GAAIvkB,EAAU,CACZ,IAAIykB,EACJhC,GAAmBziB,EAASt6G,UAAU7/B,IAAI48J,IACzCgC,EAAwB59K,EAAGu9K,wBAA0B,MAAQK,SAA+B,OAAS,EAAIA,EAAsB92K,KAAK9G,EAAIA,EAAGy9K,gBAAiBtkB,IAGjKv5J,kBAAkBwwB,GAChBA,EAAM21B,iBAERnmD,cAAcwwB,GACZnwB,KAAK49J,SAASggB,QAAQztJ,GAExBxwB,YAAYwwB,GACVnwB,KAAK49J,SAASigB,MAAM1tJ,GAOtBxwB,gBAAgBwwB,GAEd,GAAIA,EAAM+yH,SAAW,EAAG,CACtBljJ,KAAK89K,kBAAkB3tJ,IAQ3BxwB,kBAAkBwwB,GAChB,IACEytI,SAAU0d,GACRt7K,KAIJ,IAAKs7K,EAAM,CACTA,EAAOt7K,KAAK+9K,iBAAiB5tJ,GAK7B,GAAImrJ,EAAM,CACRA,EAAO,IAAIvC,GAAYuC,GACvB,GAAIA,EAAK73J,UAAY,MAAO,CAC1B63J,EAAKv/J,iBAGJ,IAAKu/J,EAAK/C,aAAc,CAC7B+C,EAAKpmJ,SAITv1B,eAAeJ,EAAO+Y,GACpBA,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAIyD,UAC9C,OAAOxc,EAETI,kBAAkBwwB,GAChB,MACEytI,SAAU0d,GACRt7K,KACJ,GAAIs7K,IAASA,EAAKhkC,UAAW,CAC3BgkC,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKhoF,KAAKnjE,IAG1DxwB,gBAAgBwwB,GACd,MACEytI,SAAU0d,GACRt7K,KACJ,GAAIs7K,IAASA,EAAKhkC,UAAW,CAC3BgkC,EAAK53J,IAAIyM,GACTnwB,KAAKk6K,QAAQoB,IAOjB37K,iBAAiBwwB,GAEf,GAAIA,EAAM6wB,QAAQliD,SAAW,EAAG,CAC9BkB,KAAK89K,kBAAkB3tJ,MA4C7B,IAAI6tJ,GAAa9wJ,GAAU,MAAM8wJ,UAAmB9wJ,GAAU7R,IAC5DtN,mBACE,MAAO,YAGTvO,0BACE,MAAO,CAMLu6K,kBAAmB,KAQnBR,SAAU,KAOVS,gBAAiB,CACfx4J,QAAS,UACTjiB,MAAO,OASb0+K,kBACE,OAAOj+K,KAAKutB,QAAUvtB,KAAO,KAO/Bk+K,mBACE,MAAO,cAoBTv+K,UAAU27K,GACR,IAAI6C,EASJ,OAAQA,EAAoBn+K,KAAKi+K,eAAiB,MAAQE,SAA2B,OAAS,EAAIA,EAAkB5wJ,QAAQ,YAAa,CACvI+tJ,KAAAA,EACAnrJ,MAAOmrJ,EAAKnrJ,QAUhBxwB,SAAS27K,GACP,IAAI8C,EASJ,OAAQA,EAAqBp+K,KAAKi+K,eAAiB,MAAQG,SAA4B,OAAS,EAAIA,EAAmB7wJ,QAAQ,WAAY,CACzI+tJ,KAAAA,EACAnrJ,MAAOmrJ,EAAKnrJ,QAWhBxwB,SAAS27K,GACP,IAAI+C,EAYJ,OAAQA,EAAqBr+K,KAAKi+K,eAAiB,MAAQI,SAA4B,OAAS,EAAIA,EAAmB9wJ,QAAQ,OAAQ,CACrI+tJ,KAAAA,EACAnrJ,MAAOmrJ,EAAKnrJ,QAahBxwB,UAAU27K,GACR,IAAIgD,EASJ,OAAQA,EAAqBt+K,KAAKi+K,eAAiB,MAAQK,SAA4B,OAAS,EAAIA,EAAmB/wJ,QAAQ,YAAa,CAC1I+tJ,KAAAA,EACAnrJ,MAAOmrJ,EAAKnrJ,QAKhBxwB,eAAe45K,EAAUjhK,GACvB,GAAIihK,IAAajhK,EAAK,CACpB,MAAMvY,EAAKC,KACX,GAAIsY,EAAK,CACP,GAAIA,EAAIyqJ,UAAYzqJ,EAAIg/H,UAAW,CACjCv3I,EAAGw+K,UAAUjmK,IAGjB,GAAIihK,EAAU,CACZx5K,EAAGy+K,UAAYjF,EACf,GAAIx5K,EAAG0+K,UAAUlF,KAAc,MAAO,CACpCA,EAAW,KAEbx5K,EAAGy+K,UAAYlmK,GAInB,OAAOihK,EAET55K,sBAAsBonD,EAAQzuC,GAC5B,MAAMvY,EAAKC,MACTk+K,aACEA,GACEn+K,EACN,IAAI+5K,EAAYl7K,EAAG8/K,EACnB,GAAIpmK,EAAK,CACPwhK,EAAatpE,GAAa9+F,IAAI4G,EAAK,cACnComK,EAAY,KACZ,GAAIn3K,MAAMC,QAAQsyK,KAAgBl7K,EAAIk7K,EAAWr0K,QAAQ1F,KAAQ,EAAG,CAClE,GAAI+5K,EAAWh7K,OAAS,EAAG,CACzB0xG,GAAa1uG,OAAOwW,EAAK,kBACpB,CACLwhK,EAAW5hK,OAAOtZ,EAAG,GACrBk7K,EAAW96K,SAAQmgC,IACjB,GAAI++I,IAAiB/+I,EAAE++I,aAAc,CACnCQ,EAAY,WAMpBA,GAAapmK,EAAIsmC,UAAU98C,OAAOo8K,GAEpC,GAAIn3H,EAAQ,CACV+yH,EAAatpE,GAAa9+F,IAAIq1C,EAAQ,cACtC,GAAI+yH,EAAY,CACdA,EAAWt7K,KAAKuB,OACX,CACLywG,GAAal/F,IAAIy1C,EAAQ,aAAc,CAAChnD,IAE1CgnD,EAAOnI,UAAU7/B,IAAIm/J,MAikB3B,IAAIS,GAAgBzxJ,GAAU,MAAMyxJ,UAAqBzxJ,EACvDnf,mBACE,MAAO,eAETvO,0BACE,MAAO,CAkBLo/K,iBAAkB,CAChB5uD,cAAe,KACfF,UAAW,KAoBb+uD,cAAe,CACbjvD,KAAM,wBACNF,UAAW,IACXI,UAAW,GAUbzF,SAAU,CACRp/G,KAAM,wBAgDRq/G,SAAU,CACRr/G,KAAM,wBAERguB,sBAAuB,CAAC,gBAAiB,kBAS7Ct5B,gBACE,MAAMI,EAAKC,MACTqqH,SACEA,GACEtqH,EACN,GAAIsqH,EAAU,CACZtqH,EAAGs2H,OAAS5G,GAAKv3C,aAAan4E,EAAG6+K,iBAAkBv0D,GAErD,OAAOtqH,EAAGs2H,OASZ12H,eAAeq1B,GACb,MAAM6pJ,cACJA,EAAaxoD,OACbA,GACEr2H,KACJ,GAAI6+K,IAAkB,MAAO,CAC3BxoD,EAAO1E,YACF,GAAI0E,EAAQ,CACjBrlF,GAAa55B,OAAOi/G,EAAOxG,cAAegvD,GAC1CxoD,EAAOrhG,MAAQA,EAEjB,OAAOqhG,EAKT7zD,qBAuVF,MAAMs8G,GAAoB,GAAK,IAC7BC,GAAkB,GAAKD,GACvBE,GAAmB,GAAKD,GACxBE,GAAS,gBAsEX,MAAMC,GAOJv/K,cAAcw/K,GACZ,MAAMx+I,EAAIvsB,KAAK+oB,MAAMgiJ,EAAYJ,IAC/Bh2K,EAAIqL,KAAK+oB,MAAMgiJ,EAAYL,IAAqB,GAClD,MAAO,GAAGn+I,KAAK53B,EAAI,GAAK,IAAM,KAAKA,IAWrCpJ,aAAawoC,GACX,MAAMt7B,SAAcs7B,EACpB,GAAIt7B,IAAS,SAAU,CACrB,MAAM1M,EAAQ8+K,GAAOl3J,KAAKogB,GAC1BA,EAAOl0B,OAAO9T,EAAM,IAAM,GAAK4+K,GAAkB9qK,OAAO9T,EAAM,IAAM,GAAK2+K,QACpE,GAAIjyK,IAAS,SAAU,CAC5Bs7B,EAAOtI,GAAWu/I,aAAaj3I,QAC1B,GAAIA,GAAQ,GAAI,CAErBA,GAAQ42I,GAEV,OAAO3qK,KAAKuU,IAAIvU,KAAKC,IAAID,KAAK+oB,MAAMgL,GAAO,GAAI62I,IAEjDr/K,YAAYwY,GACV,IAAIknK,EAAa,EACfvnC,EACAwnC,EACF,GAAInnK,IAAW,MAAQA,SAAgB,GAAKA,EAAOonK,UAAW,CAE5DF,EAAalnK,EAAOqnK,cACpB1nC,EAAY3/H,EAAOsnK,aACnBH,EAAUnnK,EAAOunK,gBACZ,UAAWvnK,IAAW,SAAU,CACrCknK,EAAavnC,EAAYwnC,EAAUnnK,OAC9B,GAAIA,EAAQ,CAOjBknK,EAAalnK,EAAOknK,WAOpBvnC,EAAY3/H,EAAOwnK,UAOnBL,EAAUnnK,EAAOynK,QAEnB5/K,KAAKq/K,WAAaA,EAAaH,GAAQlzK,MAAMqzK,GAAc,GAC3Dr/K,KAAK4/K,SAAWN,GAAW,MAAQD,EAAaL,IAAoBA,GAAmBE,GAAQlzK,MAAMszK,KAAaN,GAClHh/K,KAAK2/K,UAAY7nC,GAAa,KAAOunC,EAAaH,GAAQlzK,MAAM8rI,GAElE+nC,gBACE,OAAOzrK,KAAK+oB,MAAMn9B,KAAK2/K,UAAYZ,IAMrCe,wBACE,MAAMT,WACJA,EAAUM,UACVA,GACE3/K,KACJ,OAAO2/K,EAAYN,EAAaL,GAAmBK,EAAaM,EAAYA,EAAYN,EAQ1FU,YACE,OAAO//K,KAAKggL,WAAW,IAAIxxK,MAW7B7O,KAAK68B,GACH,MAAM1xB,EAAM9K,KAAKggL,WAAWxjJ,GAC5B,GAAI1xB,EAAM0xB,EAAM,CACd1xB,EAAIq/B,QAAQr/B,EAAIqC,UAAY,GAE9B,OAAOrC,EAOTnL,SAAS68B,GACP,OAAQx8B,KAAKigL,QAAQzjJ,GAQvB78B,QAAQ68B,GACNA,EAAOx8B,KAAKkgL,UAAU1jJ,GAAO,GAC7B,OAAOqD,GAAWsgJ,QAAQ3jJ,GAO5B78B,UAAU68B,GACR,OAAOx8B,KAAKkgL,UAAUrgJ,GAAWoL,UAAUzO,IAQ7C78B,UAAU68B,GACRA,EAAOx8B,KAAKkgL,UAAU1jJ,GAAO,GAC7B,OAAOA,EAAK4C,SAQdz/B,MAAM68B,EAAMyL,EAAO,MACjB,MAAM03I,UACFA,GACE3/K,KACJmoC,EAAO+2I,GAAQlzK,MAAMwwB,GACrBvU,GAAKjoB,KAAKq/K,YAAcl3I,EAAOw3I,EAAYx3I,EAAO62I,GAAmB72I,GAAQw3I,EAC/E,OAAO13I,IAAS,KAAOhgB,EAAI4X,GAAWqI,GAAGD,EAAMhgB,EAAG,MAOpDtoB,SAASsoC,EAAO,MACd,MAAM03I,UACFA,EAASC,QACTA,GACE5/K,KACJkzB,EAASysJ,EAAYC,EAAUA,EAAUD,EAAYX,GAAmBW,EAAYC,EACtF,OAAO33I,IAAS,KAAO/U,EAAS2M,GAAWqI,GAAGD,EAAM/U,EAAQ,MAO9DvzB,OAAO45C,GAEL,OAAOv5C,KAAKq/K,cAAgB9lI,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM8lI,aAAer/K,KAAK2/K,YAAcpmI,EAAMomI,WAAa3/K,KAAK4/K,UAAYrmI,EAAMqmI,QAS9JjgL,WAAWwtC,EAAWC,GACpB,MAAMrtC,EAAKC,MACT2/K,UACEA,EAASC,QACTA,GACE7/K,GACHqgL,EAAOC,GAAStgL,EAAGugL,eAAenzI,EAAWC,IAC7C5kB,EAAO9E,GAAO3jB,EAAGwgL,UAAUH,EAAOC,GACrC,GAAIV,EAAYC,EAAS,CACvB,GAAIp3J,EAAQ9E,EAAK,CACf,OAAO8E,EAAQo3J,GAAWD,GAAaj8J,EAEzC,OAAO8E,EAAQo3J,GAAWD,GAAaj8J,EAEzC,QAAS8E,EAAQ9E,IAAQ8E,EAAQo3J,GAAWD,GAAaj8J,EAS3D/jB,WAAWwtC,EAAWC,GACpB,MAAMrtC,EAAKC,MACRogL,EAAOC,GAAStgL,EAAGugL,eAAenzI,EAAWC,GAC9CozI,EAAWzgL,EAAGigL,WAAWI,GACzB11I,EAAOs0I,GAAmBn/I,GAAW6K,KAAK81I,EAAUH,EAAO,MAE7D,GAAI31I,EAAO,EAAG,CACZ,OAAO,MAIT,OAAOA,EAAO,GAAK81I,EAAWJ,EAQhCzgL,QAAQ68B,GACN,MAAM6iJ,WACFA,EAAUM,UACVA,EAASC,QACTA,GACE5/K,KACJmoC,EAAO+2I,GAAQlzK,MAAMwwB,GACvB,GAAImjJ,EAAYC,EAAS,CASvB,GAAIz3I,EAAOw3I,EAAW,CACpB,OAAOx3I,EAAOk3I,EAAa,GAAK,EAElC,GAAIl3I,EAAOy3I,EAAS,CAClB,OAAO,EAET,OAAOz3I,EAAOk3I,GAAc,EAAI,EAUlC,GAAIl3I,EAAOy3I,GAAWz3I,GAAQw3I,EAAW,CACvC,OAAO,EAET,OAAOx3I,EAAOk3I,EAAa,GAAK,EAQlC1/K,UAAU68B,EAAM2vB,EAAY,GAC1B,MAAMkzH,WACFA,GACEr/K,KACJ6M,SAAc2vB,EAChBA,EAAO3vB,IAAS,SAAW,IAAI2B,KAAKguB,GAAQ3vB,IAAS,SAAWgzB,GAAW7zB,MAAMwwB,GAAQ,IAAIhuB,KAAKguB,EAAKxsB,WAIvG,GAAIm8C,GAAakzH,EAAY,CAC3B7iJ,EAAKuO,gBAAgBohB,EAAY,EAAIkzH,GAAcA,GAErD,OAAO7iJ,EAWT78B,WAAW68B,EAAMvO,GACf,MAAM+xJ,EAAahgL,KAAKggL,WAAWxjJ,GACnC,OAAOvO,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOhW,MAAK,CAACkpC,EAAQC,KAC1ED,EAASA,EAAOs/H,aAAet/H,EAC/BC,EAASA,EAAOq/H,aAAer/H,EAC/B,IACIjU,UAAWuzI,GACTv/H,GAEFhU,UAAWwzI,GACTv/H,EAEN,IAAKs/H,EAAQ,CACX,OAAQ,EAEV,IAAKC,EAAQ,CACX,OAAO,EAITD,EAASA,EAASV,EAAaA,EAAaU,EAC5CC,EAASA,EAASX,EAAaA,EAAaW,EAE5C,OAAOD,EAASC,GAAUv/H,EAAOhU,QAAUuzI,GAAUx/H,EAAO/T,QAAUszI,MAY1E/gL,WAAW68B,GACTA,EAAOx8B,KAAKkgL,UAAU1jJ,GAAO,GAC7BA,EAAOqD,GAAWoL,UAAUzO,GAC5BA,EAAOx8B,KAAKkgL,UAAU1jJ,GACtB,OAAOA,EAST78B,UAAUwtC,EAAWC,GACnB,MAAO5kB,EAAO9E,GAAO1jB,KAAKsgL,eAAenzI,EAAWC,GACpD,MAAO,CAACvN,GAAWu/I,aAAa52J,GAAQqX,GAAWu/I,aAAa17J,IAElE/jB,WACE,MAAM0/K,WACFA,EAAUO,QACVA,EAAOD,UACPA,GACE3/K,KACJk8B,EAASmjJ,EAAa,IAAIH,GAAQpiJ,OAAOuiJ,KAAgB,GACzDtvJ,EAASmvJ,GAAQpiJ,OAAO6iJ,GAC1B,GAAIA,IAAcC,EAAS,CACzB,OAAOP,EAAanjJ,EAASnM,EAE/B,MAAO,GAAGA,KAAUmvJ,GAAQpiJ,OAAO8iJ,KAAW1jJ,IAUhDv8B,eAAewtC,EAAWC,GACxB,OAAOD,EAAUshC,QAAU,CAACthC,EAAUA,UAAWA,EAAUyzI,YAAc,CAACzzI,EAAWC,IASzF8xI,GAAQ2B,SAAW,IAAI3B,GAAQ,CAC7BG,WAAY,EACZM,UAAW,EACXC,QAAS,KAEXV,GAAQJ,kBAAoBA,GAC5BI,GAAQH,gBAAkBA,GAC1BG,GAAQ4B,eAAiB9B,GACzBE,GAAQh3K,OAAS,UAkBjB,MAAM64K,WAAc9zJ,GAAO5R,KACzB7b,0BACE,MAAO,CASLg9B,KAAM,CACJhb,QAAS,CACPlK,MAAO,QAET/X,MAAOsgC,GAAWoL,UAAU,IAAIz8B,OAElCgwB,MAAO,KACPwD,KAAM,KAMN4I,aAAc,KAMdo2I,mBAAoB,KAMpB30I,eAAgB,KAMhB40I,SAAU,MA4GdthL,UAAUwY,GACR+B,MAAM0B,UAAUzD,GAChBnY,KAAKkhL,mBAEL,GAAI/oK,EAAOqkB,KAAM,CACfx8B,KAAKw8B,KAAOrkB,EAAOqkB,KAErBx8B,KAAKq9E,WAAa,EAEpB19E,WAAW68B,GAET,GAAIx8B,KAAKwd,cAAe,CACtB,OAEFgf,SAAcA,IAAS,SAAWqD,GAAW7zB,MAAMwwB,EAAM,cAAgB,IAAIhuB,KAAKguB,GAClF,GAAItoB,MAAMsoB,GAAO,CACf,MAAM,IAAI9rB,MAAM,iFAElB,OAAO8rB,EAET78B,WAAWwhL,EAASC,GAClB,MAAMrhL,EAAKC,MACTqhL,eACEA,EAAcC,UACdA,GACEvhL,EACJwhL,EAAa1hJ,GAAWyK,oBAAoB62I,GAC5CK,EAAW3hJ,GAAWwK,mBAAmBk3I,GACzCE,EAAeJ,EAAeE,EAAWniJ,UACzCsiJ,EAAaL,EAAeG,EAASpiJ,UACrCuiJ,GAAeP,GAAWD,EAAQl0K,gBAAkBm0K,EAAQn0K,cAC5D20K,GAAgBR,GAAWD,EAAQj0K,aAAek0K,EAAQl0K,WAS1DqlE,EAAUxyE,EAAGmuB,iBAAmBkzJ,EAAUD,EAAQh0K,YAAci0K,EAAQj0K,WAAapN,EAAG8hL,UAAUV,KAAaphL,EAAG8hL,UAAUT,KAAa,EAAIQ,GAAgB,EAAID,GAAe,EAAI,IAGtL5hL,EAAG+hL,MAAQX,EAAQl0K,cACnBlN,EAAGgiL,OAASZ,EAAQj0K,WAOpBnN,EAAGiiL,gBAAkB,EAAIP,EAIzB1hL,EAAGkiL,cAAgBT,EAASr0K,WAAa,EAAIu0K,GAC7C,GAAI3hL,EAAGkhL,SAAU,CACflhL,EAAGkiL,gBAAkB,EAAIliL,EAAGuhL,WAAa,EAO3C,IAAKvhL,EAAGmiL,UAAYP,EAAa,CAC/B5hL,EAAGoiL,oBAIL,GAAIP,GAAgBD,EAAa,CAC/B5hL,EAAGs9E,aAEL,GAAI9K,EAAS,CACX,MAAMpiD,EAAQ,CACZgxJ,QAAAA,EACAC,QAAAA,EACA7uG,QAAS,CACPpzC,EAAG,KACH8E,EAAG/jC,QAAQqyE,EAAU,GACrBxpE,EAAG7I,QAAQqyE,EAAU,IACrB/tC,EAAGtkC,QAAQqyE,EAAU,GACrBriD,EAAGnwB,EAAGuhL,YAAcA,IAIxBvhL,EAAGwtB,QAAQ,aAAc4C,GAEzB,GAAIoiD,EAAU,EAAG,CACfxyE,EAAGwtB,QAAQ,aAAc4C,GAG3B,GAAIoiD,EAAU,GAAI,CAChBxyE,EAAGwtB,QAAQ,cAAe4C,GAG5B,GAAIoiD,EAAU,EAAG,CACfxyE,EAAGwtB,QAAQ,aAAc4C,KAI/BxwB,oBACE,MAAMI,EAAKC,MACTqhL,eACEA,GACEthL,EACJqiL,EAAO,IAAI5zK,KAAKzO,EAAGiiC,KAAM,EAAG,GAC5BuL,EAAQ,IAAI/+B,KAAKzO,EAAGiiC,KAAM,GAAI,IAC9BqgJ,EAAUtiL,EAAGy+B,MAAQz+B,EAAGuiL,cAAcF,GAAQriL,EAGhD,GAAIA,EAAGshL,eAAee,EAAKhjJ,UAAY,EAAG,CAExCr/B,EAAGmiL,SAAWG,EAAQl1I,cAGnB,CAEHptC,EAAGmiL,SAAW,IAAI1zK,KAAKzO,EAAGiiC,KAAM,EAAGqgJ,EAAQL,gBAAkB,GAE/D,MAAMO,EAAYnuK,KAAK+oB,MAAM0C,GAAW6K,KAAK3qC,EAAGmiL,SAAU30I,EAAO,OAAS,GAE1ExtC,EAAGyiL,WAAaD,IAAc,IAAMlB,EAAe9zI,EAAMnO,UAAY,EAUvEz/B,aAAaikC,GAEX,UAAWA,IAAS,SAAU,CAC5B,OAAO/D,GAAW9gB,IAAI/e,KAAKkiL,SAAU9tK,KAAKC,IAAIuvB,EAAM,GAAK,EAAG,OAG9D,MAAM7jC,EAAKC,MACRgiC,EAAMygJ,GAAc7+I,EAEvB,GAAI5B,IAASjiC,EAAGiiC,KAAM,CACpB,OAAOjiC,EAAG2iL,aAAaD,GAEzB,OAAO1iL,EAAGuiL,cAAc,IAAI9zK,KAAKwzB,EAAM,EAAG,IAAI0gJ,aAAaD,GAE7D9iL,cAAc68B,GACZ,MAAMz8B,EAAKC,KACTmM,EAASpM,IAAO4iL,GAAa,IAAI5B,GAAM,MAAQ4B,GACjDx2K,EAAOyP,UAAU,CACfsmK,SAAU,KACVt3I,aAAc7qC,EAAG6qC,aACjByB,eAAgBtsC,EAAGssC,eACnB20I,mBAAoBjhL,EAAGihL,mBACvBC,SAAUlhL,EAAGkhL,SACbzkJ,KAAM,IAAIhuB,KAAKguB,EAAKvvB,cAAe,EAAG,KAGxCd,EAAOqwB,KAAOA,EAGdrwB,EAAOy2K,WAAWz2K,EAAOqwB,KAAMrwB,EAAOqwB,MACtC,OAAOrwB,EAETxM,WAAWqiC,GACT,MAAMm/I,EAAU,IAAI3yK,KAAKxO,KAAKw8B,MAC9B2kJ,EAAQ32I,YAAYxI,GAEpBhiC,KAAKw8B,KAAO2kJ,EAEdxhL,YAAY6+B,GACV,MAAM2iJ,EAAU,IAAI3yK,KAAKxO,KAAKw8B,MAC9B2kJ,EAAQ52I,SAAS/L,GAEjBx+B,KAAKw8B,KAAO2kJ,EAEdv2I,mBAEE,cAAc5qC,KAAKosC,gBAAkB,SAAWpsC,KAAKosC,cAAgBvM,GAAW+K,aAElFjrC,qBACE,MAAMI,EAAKC,KACXD,EAAGmhL,mBACH,IAAKnhL,EAAGyd,eAAiBzd,EAAGy8B,KAAM,CAChCz8B,EAAGmiL,SAAW,KACdniL,EAAG6iL,WAAW7iL,EAAGy8B,KAAMz8B,EAAGy8B,OAK9B6P,qBACE,OAAOrsC,KAAK6iL,iBAAmBhjJ,GAAWwM,eAE5C1sC,qBAAqB0sC,GACnB,OAAO2E,GAAa55B,OAAO,GAAIi1B,GAEjC1sC,uBACEK,KAAKkhL,mBAEPvhL,2BACEK,KAAKkhL,mBAEPvhL,iBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAK4iL,WAAW5iL,KAAKw8B,KAAMx8B,KAAKw8B,OAUpCsmJ,eAGE,OAAO9iL,KAAKiiL,cAAgB,EAAIjiL,KAAKgiL,gBAOvCV,gBACE,OAAOthL,KAAK8iL,SAAW,EAOzB31I,gBACE,MAAMptC,EAAKC,KACX,GAAID,EAAGiiC,MAAQ,MAAQjiC,EAAGy+B,OAAS,MAAQz+B,EAAGiiL,iBAAmB,KAAM,CACrE,OAAO,IAAIxzK,KAAKzO,EAAGiiC,KAAMjiC,EAAGy+B,MAAOz+B,EAAGiiL,kBAQ1C50I,cACE,MAAMrtC,EAAKC,KACX,GAAID,EAAGiiC,MAAQ,MAAQjiC,EAAGy+B,OAAS,MAAQz+B,EAAGiiL,iBAAmB,KAAM,CACrE,OAAO,IAAIxzK,KAAKzO,EAAGiiC,KAAMjiC,EAAGy+B,MAAOz+B,EAAGkiL,gBAQ1CtiL,QAAQqY,GACN,IAAK,IAAI+qK,EAAa/iL,KAAKgiL,gBAAiBe,GAAc/iL,KAAKiiL,cAAec,IAAc,CAC1F/qK,EAAG,IAAIxJ,KAAKxO,KAAKgiC,KAAMhiC,KAAKw+B,MAAOukJ,KAUvCpjL,SAASqY,GACP,MAAMjY,EAAKC,MACTshL,UACEA,GACEvhL,EACN,IAAK,IAAIgjL,EAAahjL,EAAGiiL,gBAAiBp+I,EAAO,EAAGA,EAAO09I,EAAW19I,IAAQ,CAC5E,MAAMo/I,EAAY,GAChBP,EAAa1iL,EAAG+/B,cAAc,IAAItxB,KAAKzO,EAAGiiC,KAAMjiC,EAAGy+B,MAAOukJ,IAC5D,IAAK,IAAIvlJ,EAAM,EAAGA,EAAM,EAAGA,IAAOulJ,IAAc,CAC9CC,EAAUxkL,KAAK,IAAIgQ,KAAKzO,EAAGiiC,KAAMjiC,EAAGy+B,MAAOukJ,IAE7C/qK,EAAGyqK,EAAYO,IAenBrjL,cAAc68B,GACZ,MAAMz8B,EAAKC,KACXw8B,EAAOqD,GAAWoL,UAAUzO,GAE5B,GAAIA,EAAKvvB,gBAAkBlN,EAAGiiC,KAAM,CAClC,OAAOjiC,EAAGuiL,cAAc,IAAI9zK,KAAKguB,EAAKvvB,cAAe,EAAG,IAAI6yB,cAActD,GAE5E,IAAIymJ,EAAS7uK,KAAK+oB,MAAM0C,GAAW6K,KAAK3qC,EAAGmiL,SAAU1lJ,EAAM,OAAS,GAClEwF,EAAOxF,EAAKvvB,cAEd,IAAKg2K,EAAQ,CAEX,OAAOljL,EAAGuiL,cAAc,IAAI9zK,KAAKzO,EAAGiiC,KAAO,EAAG,EAAG,IAAIlC,cAAc,IAAItxB,KAAKzO,EAAGiiC,KAAM,EAAG,SAGrF,GAAIihJ,IAAW,KAAOljL,EAAGyiL,WAAY,CACxCS,EAAS,EACTjhJ,SAGG,GAAIihJ,EAAS,GAAI,CACpBA,EAASA,EAAS,GAGpB,MAAO,CAACjhJ,EAAMihJ,GAEhBtjL,UAAU68B,GACR,MAAMoH,EAAO5jC,KAAK8/B,cAActD,GAChC,OAAOoH,EAAK,GAAK,IAAMA,EAAK,GAE9BjkC,YAAY68B,EAAM0mJ,EAAYC,EAAUjE,GAAQ2B,UAC9C,MAAM9gL,EAAKC,KACTw9B,EAAMhB,EAAK4C,SACXgkJ,EAAqBrjL,EAAGsjL,sBAAsB7lJ,GAC9C8lJ,EAAevjL,EAAGssC,eAAe7O,GACjC+lJ,EAAcxjL,EAAGihL,oBAAsBsC,EAEzC,GAAI9mJ,EAAOz8B,EAAGotC,WAAa3Q,EAAOz8B,EAAGqtC,QAAS,CAC5CrtC,EAAGy+B,MAAQhC,EAAKtvB,WAElB,MAAO,CACLswB,IAAAA,EACA2lJ,QAAAA,EACAC,mBAAAA,EACAE,aAAAA,EACA1/I,KAAM7jC,EAAGuiL,cAAc9lJ,GAAMsD,cAActD,GAC3Cv9B,IAAK4gC,GAAW/C,OAAON,EAAM,cAC7BgnJ,YAAazjL,EAAGshL,eAAe7jJ,GAC/BhB,KAAM,IAAIhuB,KAAKguB,GAGfinJ,aAAcrvK,KAAKkvB,KAAK9G,EAAKtvB,WAAasvB,EAAKvvB,cAAgB,IAAMi2K,EAAW1kJ,MAAQ0kJ,EAAWlhJ,KAAO,KAC1Gu0D,SAAUgtF,GAAe/mJ,GAAQ0mJ,EAAW/1I,WAAa3Q,EAAOqD,GAAW9gB,IAAImkK,EAAW91I,QAAS,EAAG,OACtGs2I,SAAUP,EAAQQ,UAAU9jJ,GAAW9gB,IAAIyd,EAAM,EAAG,QACpDonJ,WAAYR,IAAuB,EACnCS,SAAUT,IAAuBrjL,EAAG+jL,mBAAqB,GAG7DnkL,mBACE,MAAMI,EAAKC,MACT4qC,aACEA,EAAYyB,eACZA,EAAc20I,mBACdA,GACEjhL,EACJshL,EAAiBthL,EAAGshL,eAAiB,GACrC0C,EAAsBhkL,EAAGgkL,oBAAsB,GAC/CV,EAAwBtjL,EAAGsjL,sBAAwB,GA6CrD,IAAID,EAAqB,EACzB,IAAK,IAAII,EAAc,EAAGA,EAAc,EAAGA,IAAe,CACxD,MAAMQ,GAAgBp5I,EAAe44I,GAAe,EACpDO,EAAoBP,GAAeQ,EACnC3C,EAAe2C,GAAgBR,EAG/B,IAAKxC,IAAuB30I,EAAe23I,GAAe,CACxDX,EAAsBW,GAAgBZ,KAG1CrjL,EAAG+jL,mBAAqBV,EACxBrjL,EAAGkkL,WAAajD,EAAqB,EAAIhwI,GAAahzC,KAAKquC,GAAgBvtC,OAAS,GAIxFI,EAAgB6hL,GAAO,QAAS,SAChC,MAAM4B,GAAa,IAAI5B,GAAM,MAC7BA,GAAM74K,OAAS,QAkUf,MAAMg8K,WAAsBlgH,GAAU3oD,KAEpC7b,0BACE,MAAO,CAKLi3C,QAAS,KAMT0tI,UAAW,GAMXC,YAAa,EAKbj4H,UAAW,OAMXk4H,iBAAkB,IAOlBC,yBAA0B,MAC1BriK,WAAY,CACVmiK,YAAa,EACbC,iBAAkB,KAEpBE,aAAc,CACZ/iK,QAAS,CAAC,QACVjiB,MAAO,IAETilL,WAAY,CACVhjK,QAAS,CAAC,OAAQ,WAClBjiB,MAAO,MAEToZ,MAAO,MAGXhZ,iBAAiBJ,EAAO+Y,GACtBA,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAImmC,QAC9C,OAAO,IAAIjtC,IAGb7R,YACEK,KAAK8iK,iBACL5oJ,MAAM8B,YAORyoK,kBACE,OAAOxmL,OAAOD,KAAKgC,KAAKukL,cAAczlL,SAAW,EAEnD22C,UACE,IAAIu7E,EACJ,OAAQA,EAAchxH,KAAK2Y,SAAW,MAAQq4G,SAAqB,OAAS,EAAIA,EAAYv7E,IA8D9F91C,gBAAgBwY,EAAS,IACvB,MAAMpY,EAAKC,MACTy2C,QACEA,EACA0V,UAAWu4H,GACT3kL,GACJwlK,YACEA,EAAc,GAAEp5G,UAChBA,EAAYu4H,EAAgBl2J,SAC5BA,GACErW,EACJwsK,EAAmB,GACrB,IAAKpf,EAAYzmK,OAAQ,CACvBymK,EAAY/mK,KAAK,CACfi4C,QAAAA,IAGJ8uH,EAAYvmK,SAAQskH,IAClB,MAAM3kH,EAAS2kH,EAAW7sE,QAC1B,UAAW93C,IAAW,SAAU,CAC9Bs5C,GAAUsY,gBAAgB9Z,EAAS93C,GAAQ83C,IACzC12C,EAAG6kL,cAAcnuI,EAAS6sE,EAAWn3D,WAAaA,EAAWm3D,EAAW90F,UAAYA,GACpFm2J,EAAiBnmL,KAAKi4C,UAEnB,CACL12C,EAAG6kL,cAAcjmL,EAAQ2kH,EAAWn3D,WAAaA,EAAWm3D,EAAW90F,UAAYA,GACnFm2J,EAAiBnmL,KAAKG,OAG1B,OAAO,SAAS6jB,IACd,IAAIqiK,GAEHA,EAAqB9kL,EAAG+iK,kBAAoB,MAAQ+hB,SAA4B,OAAS,EAAIA,EAAmBh+K,KAAK9G,EAAI4kL,IAG9HhlL,cAAc82C,EAAS0V,EAAW39B,GAChC,MAAMg2J,WACJA,GACExkL,KACJ,IAAKwkL,EAAWvmK,IAAIw4B,GAAU,CAC5B+tI,EAAWlzK,IAAImlC,EAAS,IAAIquI,GAAqB,CAC/CjiB,cAAe7iK,KACfy2C,QAAAA,EACA0V,UAAAA,EACA39B,SAAAA,MASN7uB,eAAe82C,GACb,MAAM12C,EAAKC,MACTwkL,WACEA,GACEzkL,EACN02C,EAAU3zB,GAAYm7B,QAAQxH,GAC9B,GAAI+tI,EAAY,CAEd,IAAK/tI,EAAS,CACZ+tI,EAAWxlL,SAAQ+lL,GAAWhlL,EAAG+iK,eAAeiiB,EAAQtuI,WACxD,OAEFA,EAAQz3C,SAAQy3C,IACd,MAAMsuI,EAAUP,EAAW9yK,IAAI+kC,GAE/BA,EAAQmI,UAAU98C,OAAO,eAEzB,GAAIijL,EAAS,CACXA,EAAQhpK,UACRyoK,EAAWlrK,OAAOm9B,QAa1B92C,cAAcwsD,EAAW44H,GACvB,MAAMR,aACJA,GACEvkL,KACJ,GAAImsD,KAAao4H,GAAgBA,EAAap4H,KAAe44H,EAAS,CACpE,OAAO,UACF,CACLR,EAAap4H,GAAa44H,EAC1B,OAAO,MAQXplL,cAAcolL,GACZ,MAAMR,aACJA,EAAe,IACbvkL,KACJ/B,OAAOD,KAAKumL,GAAcvlL,SAAQC,IAChC,GAAIslL,EAAatlL,KAAS8lL,EAAS,QAC1BR,EAAatlL,OAK1BU,kBAAkB82C,EAAS0V,EAAY,QACrC,IAAIhgD,EAAS,EACbnM,KAAKwkL,WAAWxlL,SAAQ,CAAC+lL,EAASC,KAChC,GAAI/sI,GAAUmY,aAAa40H,EAAkBvuI,GAAU,CACrDtqC,GAAUggD,IAAc,OAAS44H,EAAQE,mBAAqBF,EAAQG,sBAG1E,OAAO/4K,GAKX,MAAM24K,WAA6BzpK,GACjC1b,UAAUwY,GACR,MAAMpY,EAAKC,MACTy2C,QACEA,GACEt+B,EACJgtK,EAAkB1uI,EAAQO,WAC1BouI,EAAiB3uI,EAAQQ,UAC3Bh5C,OAAOmZ,OAAOe,EAAQ,CACpBgtK,gBAAAA,EACAC,eAAAA,IAEFlrK,MAAMsB,UAAUrD,GAEhB2oC,GAAY3xB,GAAG,CACbsnB,QAAAA,EACAsqE,OAAQ,kBACRm6B,UAAW,cACX51F,UAAW,cAEX9F,QAAS,KACTljC,QAASvc,IAGX+gD,GAAY3xB,GAAG,CACbsnB,QAAAA,EACA4uI,aAAc,iBACd/oK,QAASvc,IAGbJ,YACEK,KAAKslL,aACLprK,MAAM8B,YAMRrc,cACEK,KAAKulL,UAAY,KACjBvlL,KAAKwlL,gBAMP7lL,aACE,MAAMI,EAAKC,KACXD,EAAGwlL,UAAY,MACf,GAAIxlL,EAAG0lL,gBAAiB,CACtB1lL,EAAG8iK,cAAcp+F,qBAAqB1kE,EAAG2lE,SACzC3lE,EAAG0lL,gBAAkB,MAEvB1lL,EAAG8iK,cAAcn7I,aAAa3nB,EAAG2lL,eACjC3lL,EAAG8iK,cAAc8iB,cAAc5lL,GAC/BA,EAAG2lL,cAAgB,KAErB/lL,iBACEK,KAAK6iK,cAAcyhB,0BAA4BtkL,KAAKslL,aAQtD3lL,YAAYwwB,GACV,MAAMpwB,EAAKC,MACT6iK,cACEA,GACE9iK,EACJoyI,EAAMpyI,EAAG02C,QAAQa,wBACjBpwC,EAAQ27J,EAAcshB,UACtByB,EAAQ/iB,EAAcuhB,YAExBrkL,EAAG8lL,aAAe9lL,EAAG+lL,aAAe,EACpC,GAAI/lL,EAAGosD,YAAc,WAAY,CAC/B,MAAMnV,WACJA,EAAUwB,YACVA,EAAWC,YACXA,GACE14C,EAAG02C,QACP,GAAIosH,EAAcptH,IAAK,CACrB,GAAItlB,EAAM8wB,QAAUkxF,EAAI78F,KAAOpuC,GAASsxC,EAAcxB,EAAayB,GAAe,EAAG,CACnF14C,EAAG8lL,cAAgBzxK,KAAKkxB,OAAOp+B,GAASirI,EAAI78F,KAAOnlB,EAAM8wB,UAAY2kI,GAAS,OACzE,GAAIz1J,EAAM8wB,QAAUkxF,EAAI/8F,MAAQluC,GAAS8vC,EAAa,EAAG,CAC9Dj3C,EAAG8lL,aAAezxK,KAAKkxB,OAAOp+B,GAASirI,EAAI/8F,MAAQjlB,EAAM8wB,UAAY2kI,GAAS,OAE3E,CAEL,GAAIz1J,EAAM8wB,QAAUkxF,EAAI/8F,MAAQluC,GAASsxC,EAAcxB,EAAayB,GAAe,EAAG,CACpF14C,EAAG8lL,aAAezxK,KAAKkxB,OAAOp+B,GAASirI,EAAI/8F,MAAQjlB,EAAM8wB,UAAY2kI,GAAS,OACzE,GAAIz1J,EAAM8wB,QAAUkxF,EAAI78F,KAAOpuC,GAAS8vC,EAAa,EAAG,CAC7Dj3C,EAAG8lL,cAAgBzxK,KAAKkxB,OAAOp+B,GAASirI,EAAI78F,KAAOnlB,EAAM8wB,UAAY2kI,GAAS,IAIpF,GAAI7lL,EAAGosD,YAAc,aAAc,CACjC,MAAMlV,UACJA,EAASQ,aACTA,EAAYc,aACZA,GACEx4C,EAAG02C,QAEP,GAAItmB,EAAM+wB,QAAUixF,EAAI98F,OAASnuC,GAASuwC,EAAeR,EAAYsB,GAAgB,EAAG,CACtFx4C,EAAG+lL,aAAe1xK,KAAKkxB,OAAOp+B,GAASirI,EAAI98F,OAASllB,EAAM+wB,UAAY0kI,GAAS,OAC1E,GAAIz1J,EAAM+wB,QAAUixF,EAAIh9F,IAAMjuC,GAAS+vC,EAAY,EAAG,CAC3Dl3C,EAAG+lL,cAAgB1xK,KAAKkxB,OAAOp+B,GAASirI,EAAIh9F,IAAMhlB,EAAM+wB,UAAY0kI,GAAS,GAGjF,GAAI7lL,EAAG8lL,eAAiB,IAAMhjB,EAAckjB,cAAc,aAAchmL,GAAK,CAC3EA,EAAG8lL,aAAe,EAEpB,GAAI9lL,EAAG+lL,eAAiB,IAAMjjB,EAAckjB,cAAc,WAAYhmL,GAAK,CACzEA,EAAG+lL,aAAe,EAEpB,GAAI/lL,EAAG8lL,eAAiB,GAAK9lL,EAAG+lL,eAAiB,EAAG,CAClD/lL,EAAGulL,kBACE,IAAKvlL,EAAG2lL,cAAe,CAC5B3lL,EAAG2lL,cAAgB7iB,EAAc9lJ,YAAW,IAAMhd,EAAGimL,eAAenjB,EAAcwhB,mBAQtF1kL,gBACE,MAAMI,EAAKC,MACTy2C,QACEA,GACE12C,EAGN,GAAIA,EAAGwlL,YAAcxlL,EAAG0lL,gBAAiB,CAEvC,GAAI1lL,EAAG8lL,eAAiB,EAAG,CACzB,MAAMI,EAAgBxvI,EAAQO,WAC5BkvI,EAAgB9xK,KAAKuU,IAAIs9J,EAAgBlmL,EAAG8lL,aAAcpvI,EAAQ+B,YAAc/B,EAAQgC,aAC1F,GAAIytI,IAAkBD,EAAe,CACnCxvI,EAAQO,WAAakvI,GAGzB,GAAInmL,EAAG+lL,eAAiB,EAAG,CACzB,MAAMK,EAAe1vI,EAAQQ,UAC3BmvI,EAAehyK,KAAKuU,IAAIw9J,EAAepmL,EAAG+lL,aAAcrvI,EAAQgB,aAAehB,EAAQ8B,cACzF,GAAI6tI,IAAiBD,EAAc,CACjC1vI,EAAQQ,UAAYmvI,GAIxBrmL,EAAG0lL,gBAAkB,KACrB1lL,EAAG2lE,QAAU3lE,EAAG8iK,cAAc/5I,uBAAsB,KAClD/oB,EAAG0lL,gBAAkB,MACrB1lL,EAAGylL,cAAczlL,OAIvBJ,kBACE,IAAI0mL,EAAcC,GACjBD,EAAermL,KAAKmY,UAAY,MAAQkuK,SAAsB,OAAS,GAAKC,EAAwBD,EAAa73J,YAAc,MAAQ83J,SAA+B,OAAS,EAAIA,EAAsBz/K,KAAK7G,KAAKsc,SAAWtc,KAAK6iK,cAAe7iK,MAErPg3C,iBACE,OAAOh3C,KAAKy2C,QAAQO,WAEtBC,gBACE,OAAOj3C,KAAKumL,gBAAkBvmL,KAAKumL,gBAAgBtvI,UAAYj3C,KAAKy2C,QAAQQ,UAE9EguI,yBACE,OAAOjlL,KAAKg3C,WAAah3C,KAAKmlL,gBAEhCD,wBACE,OAAOllL,KAAKi3C,UAAYj3C,KAAKolL,eAK/BzlL,sBAAsB82C,GACpB,OAAOz2C,KAAK6iK,cAAc2jB,kBAAkB/vI,EAAS,QAEvD92C,qBAAqB82C,GACnB,OAAOz2C,KAAK6iK,cAAc2jB,kBAAkB/vI,EAAS,QAGzDytI,GAAch8K,OAAS,gBAEvB,MAAMu+K,GAAqB,CACvBnxI,KAAM,KACNF,MAAO,KACPD,IAAK,KACLE,OAAQ,KACR8e,UAAW,MAEbuyH,GAAY,CACVnmE,KAAM,EACNC,MAAO,GAETmmE,GAAqBp2K,QAAQC,UA8D/B,MAAM+oH,WAAgBtO,GAEpBl9G,mBACE,MAAO,UAGTlB,kBACE,MAAO,UASTrN,0BACE,MAAO,CASLonL,aAAc,GAMdC,aAAc,GACdl+H,KAAM,CAGJnnC,QAAS,CACPkqG,OAAQ,IAAM,QAsClBo7D,QAAS,KAcT7/C,WAAY,KAWZ8/C,WAAY,KAQZC,yBAA0B,MAM1B9/C,YAAa,KAWb+/C,qBAAsB,KAQtBC,eAAgB,KAMhB//C,YAAa,MAMbggD,WAAY,IAMZr/B,SAAU,MAUVs/B,aAAc,EASdC,UAAW,IAMXC,WAAY,aAUZC,UAAW,KACXx2K,OAAQ,KACRslC,MAAO,CACLA,MAAO,MAKPgD,UAAW,KAEb4B,SAAU,KACVh5B,WAAY,CACVolK,UAAW,IACXF,WAAY,IACZxwD,cAAe,KACfD,cAAe,OAsBrB/2H,iBACE,MAAMI,EAAKC,MACTknI,YACEA,GACEnnI,EACN,GAAImnI,EAAa,CACfnnI,EAAGonI,YAAc,KACjB,IAAKpnI,EAAGknI,WAAY,CAClB,IAAKlnI,EAAGmnL,eAAgB,CACtBnnL,EAAGgnL,WAAa,KAElBhnL,EAAGknI,WAAalnI,EAAGqnD,YAAY1/C,MAAQ3H,EAAGqnD,aAG9CltC,MAAM2B,iBAEN,GAAI9b,EAAGknI,YAAclnI,EAAGonI,YAAa,CACnCpnI,EAAGynL,uBAAyB1mI,GAAY3xB,GAAG,CACzCsnB,QAAS12C,EAAGknI,WAGZwgD,YAAa,wBACbC,WAAY,uBACZprK,QAASvc,KAIfJ,YACE,IAAIgoL,GACHA,EAAwB3nL,KAAKwnL,0BAA4B,MAAQG,SAA+B,OAAS,EAAIA,EAAsB9gL,KAAK7G,MACzIka,MAAM8B,YAERi4I,mBAAmBA,GACjB/5I,MAAM+5I,eAAiBA,EAEzBA,qBAEE,OAAO/5I,MAAM+5I,gBAAkBh8G,GAAUgP,cAE3C8X,mBACE,MAAM5yD,EAAS+N,MAAM6kD,aACrB,GAAI5yD,IAAWnM,KAAKy2C,QAAS,CAC3B,OAAOtqC,GAGX+6K,qBAEE,OAAOlnL,KAAK4nL,kBAAoB5nL,KAAK+mL,WAEvCh2K,aAEE,OAAOmJ,MAAMnJ,SAAW/Q,KAAK+mL,WAE/Bh2K,WAAWA,GACTmJ,MAAMnJ,OAASA,EAIjBpR,qBAAoBwwB,MAClBA,IAEA,MAAMpwB,EAAKC,MACT6nL,iBACEA,GACE9nL,EAGN,GAAI8nL,GAAoB5vI,GAAU4O,aAAc,CAC9C,GAAI12B,EAAMsxB,QAAUomI,EAAiBpmI,OAAStxB,EAAMgvB,QAAU0oI,EAAiB1oI,OAASp/C,EAAG6mI,aAAa7uF,SAAS5nB,EAAMxxB,SAAW6oB,YAAY/Y,MAAQo5K,EAAiBC,UAAY,IAAK,CACtL,QAGJ/nL,EAAGgoL,mBACH7tK,MAAMw+I,oBAAoB,CACxBvoI,MAAAA,IAGJxwB,sBAAsBwwB,GACpB,MAAMpwB,EAAKC,MACTrB,OACEA,EAAM0kD,cACNA,GACElzB,GACJ82G,WACEA,EAAUC,YACVA,EAAWN,aACXA,GACE7mI,EACN,IAAI6pI,EAEJ,GAAI7pI,EAAG6/D,UAAY7/D,EAAG4Y,QAAU5Y,EAAG4Y,MAAMu9G,yBAA2Bn2H,EAAG4Y,MAAMinD,SAAU,CACrF,OAIF,GAAI7/D,EAAGwnL,WAAaxnL,EAAG02C,QAAQsB,SAASp5C,GAAS,CAC/C,OAIF,GAAIuoI,EAAa,CACf0C,EAAYjrI,EAAOslD,QAAQijF,GAE3B,GAAIN,IAAiB,MAAQA,SAAsB,GAAKA,EAAa7uF,SAASp5C,IAAWioI,EAAa7uF,SAASsL,IAAkBumF,IAAchD,EAAc,CAC3J,OAGF,GAAIgD,IAAcvmF,IAAkB,MAAQA,SAAuB,OAAS,EAAIA,EAAcY,QAAQijF,MAAkB0C,EAAW,CACjI,aAIC,IAAK3C,EAAWlvF,SAASsL,GAAgB,CAC5CumF,EAAY3C,MAGT,CACH,OAGF,GAAI2C,EAAW,CACb7pI,EAAGioL,qBAAqB73J,EAAOy5G,QAG5B,GAAIhD,EAAc,CACrB7mI,EAAGkoL,uBAMPtoL,gBAAgBwwB,GACd,MAAMpwB,EAAKC,MACTkoL,mBACEA,GACE3uD,GACN,GAAIktD,GAAmBt2J,EAAMwiB,cAAe,CAC1C,IAAIw1I,EAGJ,GAAIpoL,EAAGwnL,WAAaxnL,EAAG02C,QAAQsB,SAASmwI,GAAqB,CAC3D,OAGF,IAAKC,EAAmBpoL,EAAG6mI,gBAAkB,MAAQuhD,SAA0B,GAAKA,EAAiBpwI,SAASmwI,KAAwBnoL,EAAGgnL,WAAY,CACnJhnL,EAAG24H,YAIT/4H,2BAA2BwwB,EAAOy5G,GAChC,MAAM7pI,EAAKC,MACT4mI,aACEA,EAAYqgD,qBACZA,GACElnL,EACJqoL,EAAcx+C,IAAchD,EAC5ByhD,EAAYD,GAAenB,EAE7B,GAAIlnL,EAAGwtB,QAAQ,cAAe,CAC5B4C,MAAAA,EACAxxB,OAAQirI,MACH,MAAO,CACZ7pI,EAAGuoL,qBAAqBn4J,OACnB,CACLpwB,EAAG8nL,iBAAmB13J,EAEtB,GAAIpwB,EAAGwoL,WAAW,QAAS,CACzBxoL,EAAGyoL,mBAEH,IAAKJ,EAAa,CAChB,QASJ,IAAKnB,GAAwBlnL,EAAG02C,QAAQmI,UAAU7G,SAAS,YAAa,CACtEh4C,EAAG8nI,0BAGL,IAAK9nI,EAAGyqD,SAAW69H,EAAW,CAC5BtoL,EAAG4xH,KAAK,OAEV5xH,EAAG0oL,mBAAmB7+C,GAMtB,GAAI7pI,EAAG6qD,UAAW,CAChB,MAAMz+C,EAASpM,EAAG2oL,gBAElB,GAAI57K,EAAQwlB,UAAUnmB,KAAYpM,EAAGunL,WAAY,OACzCn7K,EAGR,GAAIpM,EAAGwtB,QAAQ,gBAAkB,MAAO,CACtC,OAAOxtB,EAAG4xH,OAEZ5xH,EAAGu8C,QAAQ,CACT39C,OAAQoB,EAAGmnL,eAAiBt9C,EAAY,QACxC1tF,UAAWn8C,EAAGmnL,gBAAkBnnL,EAAGgR,UAErChR,EAAGwtB,QAAQ,QACXxtB,EAAG4oL,wBAKA,CACH5oL,EAAG6oL,UAAUh/C,KAInBjqI,gBAAgBhB,GACd,IAAIkqL,EACJ,MAAM9oL,EAAKC,KAGX,IAAK6oL,EAAuB9oL,EAAGmoI,oBAAsB,MAAQ2gD,SAA8B,GAAKA,EAAqB1gD,QAAS,CAC5HpoI,EAAG8nI,0BAEL,IAAK9nI,EAAG6qD,YAAc7qD,EAAGwoL,WAAW,QAAS,CAE3C,IAAKxoL,EAAGonL,YAAcpnL,EAAGmnI,aAAe14H,KAAKC,MAAQ1O,EAAG+oL,WAAa/oL,EAAGgpL,kBAAmB,CACzF,MAAM58K,EAASpM,EAAG2oL,gBAElB,GAAI57K,EAAQwlB,UAAUnmB,KAAYpM,EAAGunL,WAAY,OACzCn7K,EAERpM,EAAGipL,aAAarqL,OACX,CAELoB,EAAGm1J,+BAGH,IAAKn1J,EAAGkpL,wBAA0BlpL,EAAGmnL,eAAgB,CACnDnnL,EAAGmpL,iBAAmBpoI,GAAY3xB,GAAG,CACnCsnB,QAAS12C,EAAGqnD,YACZ8zF,UAAW,cACX5+H,QAASvc,IAIbA,EAAGgd,YAAWmL,UACZ,IAAK+vB,GAAUkxI,WAAWxqL,GAAS,CACjC,MAAMwN,EAASpM,EAAG2oL,gBAElB,GAAI57K,EAAQwlB,UAAUnmB,KAAYpM,EAAGunL,WAAY,OACzCn7K,EAERpM,EAAGipL,aAAarqL,OAEhBoB,EAAG8nL,kBAAoB9nL,EAAG8nL,iBAAiBh7K,OAAS,cAAgB9M,EAAGonL,WAAa,EAAG,cAExF,GAAIpnL,EAAG6qD,UAAW,CACvB7qD,EAAGipL,aAAarqL,IAGpBgB,gBAAgB4nL,GAEd,IAAKvnL,KAAKopL,YAAa,CACrBppL,KAAKqpL,oBAAsB9B,EAE7B,OAAOA,EAET5nL,gBAAgB4nL,GACd,MAAMxnL,EAAKC,MACTy2C,QACEA,GACE12C,EACN02C,EAAQmI,UAAU8X,OAAO,eAAgBx2D,QAAQqnL,IACjD,GAAIA,EAAW,CACbxnL,EAAGupL,mBAAqBxoI,GAAY3xB,GAAG,CACrCsnB,QAAAA,EACA2kG,WAAY,yBACZD,WAAY,uBACZ7+H,QAASvc,QAEN,CACL,IAAIwpL,GACHA,EAAwBxpL,EAAGupL,sBAAwB,MAAQC,SAA+B,OAAS,EAAIA,EAAsB1iL,KAAK9G,IAGvIJ,gBACE,MAAMI,EAAKC,KACX,GAAID,EAAG+mL,QAAS,CACd,MAAM36K,EAASpM,EAAGyuB,SAASzuB,EAAG+mL,QAAS/mL,EAAI,CAAC,CAC1CypL,IAAKzpL,EACL02C,QAAS12C,EAAG02C,QACZmwF,aAAc7mI,EAAG6mI,aACjBz2G,MAAOpwB,EAAG8nL,oBAEZ9nL,EAAG4oD,KAAOx8C,EACV,OAAOA,GAOXs9K,iBACE,OAAOvpL,QAAQF,KAAK08H,QAAU,WAAa18H,KAAK2oD,OAAS,UAAY3oD,KAAK2oD,KAAK7pD,QAAUkB,KAAKijB,MAAMnkB,QAEtGa,qBAEE,OAAQK,KAAKgnL,0BAA4BhnL,KAAKypL,cAAgBzpL,KAAK4/D,SAMrEjgE,iBAAiB8U,EAAUzU,KAAKo6B,UAAUp6B,KAAKsnL,aAE7C,GAAI7yK,EAAS,CACXzU,KAAK2oD,KAAO,qIAGIl0C,2CAMpB9U,cAAc66C,GACZtgC,MAAMklH,cAAc5kF,GACpB,MAAMz6C,EAAKC,KACX,IAAKD,EAAGmnL,gBAAkB1sI,EAAK77C,SAAW,QAAS,CACjD67C,EAAK77C,OAAS,IAAIk7C,GAAM95C,EAAG8nL,iBAAiBpmI,MAAQr/C,WAAWy1C,YAAc93C,EAAG6mL,cAAgB7mL,EAAG01C,KAAO,EAAI,GAAI11C,EAAG8nL,iBAAiB1oI,MAAQ/8C,WAAW01C,YAAc/3C,EAAG8mL,eAG9KlnL,aAAahB,GACX,IAAI+qL,EACJ,MAAM3pL,EAAKC,MACV0pL,EAAuB3pL,EAAGmpL,oBAAsB,MAAQQ,SAA8B,OAAS,EAAIA,EAAqB7iL,KAAK9G,GAC9HA,EAAGmpL,iBAAmB,KAItBnpL,EAAGwoI,OAAO,CACR5pI,OAAQoB,EAAGmnL,eAAiBvoL,EAAS,QACrCu9C,UAAWn8C,EAAGmnL,gBAAkBnnL,EAAGgR,UAGvCpR,oBACE,MAAMI,EAAKC,MACTonL,aACEA,GACErnL,EACNA,EAAGgoL,mBACH,GAAIX,EAAc,CAChBrnL,EAAGgd,WAAW,OAAQqqK,GAExBrnL,EAAG4pL,UAEH,IAAK5pL,EAAGmpL,mBAAqBnpL,EAAGgnL,YAAchnL,EAAGinL,0BAA2B,CAC1EjnL,EAAGmpL,iBAAmBpoI,GAAY3xB,GAAG,CACnCsnB,QAAS12C,EAAGqnD,YACZ5B,YAAa,cACblpC,QAASvc,IAKbA,EAAGqpL,YAAc,KACjBrpL,EAAGwnL,UAAYxnL,EAAGwnL,WAAaxnL,EAAGspL,qBAAuB,OAAStpL,EAAG2qI,WAAW/iI,MAAKs8B,GAAKA,EAAE2mB,YAAc3mB,EAAE27B,UAAY37B,EAAE86B,eAC1Hh/D,EAAGqpL,YAAc,MAEnBzpL,mBAAmBiqI,GACjB,MAAM7pI,EAAKC,KACT8jD,EAAa/jD,EAAG6mI,aAClB7mI,EAAG6mI,aAAegD,EAClB,IAAK7pI,EAAGyd,cAAe,CACrBzd,EAAGwtB,QAAQ,aAAc,CACvBq8G,UAAAA,EACA9lF,WAAAA,KAINnkD,qBAAqBwwB,GACnB,IAAIy5J,EACJ,MAAM7pL,EAAKC,KACT89D,EAAY3tC,EAAMkzB,cAGpB,GAAItjD,EAAGwnL,WAAaxnL,EAAG02C,QAAQsB,SAAS+lB,GAAY,CAClD,OAKF,GAAI/9D,EAAG02C,QAAQsB,SAAS5nB,EAAMxxB,UAAYirL,EAAoB7pL,EAAG6mI,gBAAkB,MAAQgjD,SAA2B,GAAKA,EAAkB7xI,SAAS+lB,GAAY,CAChK,OAGF,GAAI/9D,EAAG6mI,eAAiB7mI,EAAG6mI,aAAa7uF,SAAS+lB,GAAY,CAC3D/9D,EAAGkoL,uBAGPtoL,sBAEE,MAAMI,EAAKC,MACTqnL,UACEA,GACEtnL,EAEN,GAAIA,EAAGwtB,QAAQ,gBAAkB,MAAO,CACtCxtB,EAAG6mI,aAAe,KAClB,OAEF7mI,EAAGgoL,mBAGH,GAAIhoL,EAAG6qD,WAAay8H,IAAc,MAAO,CACvCtnL,EAAGyoL,mBACH,GAAInB,EAAY,EAAG,CACjBtnL,EAAGgd,WAAW,OAAQsqK,OACjB,CAGLtnL,EAAG4xH,SAIThyH,OACE,MAAMI,EAAKC,KAIX,GAAID,EAAGknI,YAAclnI,EAAGmnL,iBAAmBnnL,EAAGmnI,cAAgBnnI,EAAGuoI,SAAU,CACzEvoI,EAAGipL,aAAajpL,EAAGknI,gBAGhB,CACH,GAAIlnI,EAAGuoI,SAAU,CACfvoI,EAAGykC,GAAK,IAEVtqB,MAAMk2G,OAERrwH,EAAG4oL,oBACH,GAAI5oL,EAAGknI,aAAelnI,EAAG8pL,wBAA0B9pL,EAAGyqD,QAAS,CAC7DzqD,EAAG8pL,sBAAwB/oI,GAAY3xB,GAAG,CACxCsnB,QAAS12C,EAAGknI,WACZ6iD,cAAe,kBACfxtK,QAASvc,KAIfJ,OACE,MAAMI,EAAKC,KAEXD,EAAGgoL,mBAEH,IAAKhoL,EAAGyqD,QAAS,CACf,IAAIu/H,EAAuBC,EAC3BjqL,EAAGyoL,mBACH,MAAMr8K,EAAS+N,MAAMy3G,QAAQ9yH,WAC7BkB,EAAG+oL,WAAat6K,KAAKC,MACrB1O,EAAG6mI,aAAe,MACjBmjD,EAAwBhqL,EAAGmpL,oBAAsB,MAAQa,SAA+B,OAAS,EAAIA,EAAsBljL,KAAK9G,GACjIA,EAAGmpL,iBAAmB,MACrBc,EAAwBjqL,EAAG8pL,yBAA2B,MAAQG,SAA+B,OAAS,EAAIA,EAAsBnjL,KAAK9G,GACtIA,EAAG8pL,sBAAwB,KAC3B,OAAO19K,MACF,CACL,OAAOw6K,IAGXhnL,mBACE,MAAMI,EAAKC,KACX,GAAID,EAAGwoL,WAAW,QAAS,CACzB,IAAI/yB,EAAsBy0B,EAAuBC,GAGhD10B,EAAuBz1J,EAAGq1J,oBAAsB,MAAQI,SAA8B,OAAS,EAAIA,EAAqB3uJ,KAAK9G,GAC9HA,EAAGq1J,iBAAmB,KACtBr1J,EAAG2nB,aAAa,SACfuiK,EAAwBlqL,EAAGmpL,oBAAsB,MAAQe,SAA+B,OAAS,EAAIA,EAAsBpjL,KAAK9G,GACjIA,EAAGmpL,iBAAmB,MACrBgB,EAAyBnqL,EAAG8pL,yBAA2B,MAAQK,SAAgC,OAAS,EAAIA,EAAuBrjL,KAAK9G,GACzIA,EAAG8pL,sBAAwB,MAQ/BlqL,mBACEK,KAAK0nB,aAAa,QAEpB/nB,UACE,MAAMI,EAAKC,KACTw6C,EAAOz6C,EAAGm/H,cAMZ,IAAKn/H,EAAGyd,gBAAkBzd,EAAG6qD,WAAapQ,IAAS,MAAQA,SAAc,GAAKA,EAAKwlF,gBAAiB,CAElG,GAAIxlF,EAAKulF,gBAAkB9nF,GAAUub,SAAShZ,EAAK77C,OAAQ,MAAOoB,GAAK,CACrEA,EAAGqwH,OACH51E,EAAKwlF,gBAAkB,OAG3B9lH,MAAMw+G,UAER/4H,QAAQ66C,GACN,MAAMz6C,EAAKC,KACX,IAAKD,EAAG6qD,UAAW,CACjB,OAIF,GAAIpQ,KAAUz6C,EAAG8nL,kBAAoB9nL,EAAG02C,QAAQsB,SAASh4C,EAAG8nL,iBAAiBlpL,SAAU,CACrF,GAAI67C,EAAK3D,WAAaC,KAAKuH,aAAc,CACvC7D,EAAO,CACL77C,OAAQ67C,IAIdtgC,MAAMoiC,QAAQ9B,GAuBhB76C,WAAWwqL,GACT,MAAMpqL,EAAKC,KACX,GAAI8M,EAAQwlB,UAAU63J,GAAgB,CACpCpqL,EAAGqqL,mBACHD,EAAcxrL,OAASoB,EAAG6mI,aAC1BujD,EAAc15K,MAAKk4C,IAEjB,GAAIwhI,EAAcxrL,SAAWoB,EAAG6mI,aAAc,CAC5C7mI,EAAG4oD,KAAOA,MAGd,OAGF,UAAWwhI,IAAkB,SAAU,CAErCA,EAAgBA,GAAiB,KAAOpqL,EAAGq6B,UAAUlxB,OAAOihL,IAAkB,GAEhF,OAAOA,EAETxqL,WAAWJ,EAAO+Y,GAChB,MAAMvY,EAAKC,KACX,IAAI8mE,EAAQvnE,IAAU,GAGtB,IAAKunE,EAAO,CACV5sD,MAAMmwK,WAAW9qL,EAAO+Y,GACxB,GAAIvY,EAAG0pL,WAAY,CACjB,GAAI1pL,EAAG6qD,UAAW,CAChB7qD,EAAG24H,UAEL,IAAK5rH,EAAQwlB,UAAU/yB,GAAQ,CAC7BQ,EAAGwtB,QAAQ,kBAAmB,CAC5BhuB,MAAAA,SAGC,CACLunE,EAAQ,MAGZ,GAAIA,EAAO,CAET/mE,EAAG4xH,QASPhyH,YAAYwwB,GACV,MAAMpwB,EAAKC,MACTinI,WACEA,EAAUL,aACVA,GACE7mI,EAIJuqL,EAAWvqL,EAAGwoL,WAAW,QACzB5pL,EAASwxB,EAAMxxB,OASjBoB,EAAG8nL,iBAAmB13J,EAEtB,IAAKpwB,EAAGyqD,QAAS,CACf,IAAI+/H,EACJ,MAEEC,EAAiB5jD,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAa7uF,SAASp5C,GAGnG8rL,GAAgBD,GAAkBzqL,EAAGmnI,aAAeN,IAAiB0jD,GAAY3rL,EAAOk4C,WAAaC,KAAKuH,eAAiB1/C,EAAO2D,QAAQvC,EAAGmnI,gBAAkBnnI,EAAGwnL,WAAaxnL,EAAG02C,QAAQsB,SAASp5C,IAGnM+rL,EAAoBzjD,IAAe,MAAQA,SAAoB,GAAKA,EAAW9lI,SAAW8lI,EAAW9lI,SAASK,gBAAkBylI,EAGhI0jD,EAA2BD,IAAsBA,EAAkB3yI,SAAW2yI,EAAkB3yI,SAASp5C,GAAU+rL,EAAkBtsH,wBAAwBz/D,GAAU,IAIzK,GAAI8rL,EAAc,CAChBF,EAAaxqL,EAAGkoL,sBAGlB,GAAIsC,IAAeD,GAAYK,EAA0B,CAEvD,GAAI5qL,EAAGqnL,eAAiBkD,EAAU,CAChCvqL,EAAGgd,WAAW,OAAQhd,EAAGqnL,cAE3B,GAAIrnL,EAAGinL,0BAA4BjnL,EAAG+mL,QAAS,CAC7C/mL,EAAG4oD,KAAO5oD,EAAGyuB,SAASzuB,EAAG+mL,QAAS/mL,EAAI,CAAC,CACrCypL,IAAKzpL,EACL02C,QAAS12C,EAAG02C,QACZwwF,WAAYL,EACZz2G,MAAOA,KAET,IAAKpwB,EAAG4oD,KAAM,CAEZ5oD,EAAG4xH,OACH,QAIJ,GAAI5xH,EAAGgnL,WAAY,CACjBhnL,EAAGu8C,QAAQ,CACT39C,OAAQ,QACRg4C,iBAAkB,UAM5Bh3C,uBAAuBwwB,GACrBnwB,KAAKwoL,mBAGP7oL,wBAAwBynD,EAAawjI,GACnC,IAAIC,EAAsBC,EAC1B,IAAI1xD,GAAiByxD,EAAuBzjI,EAAYt/C,WAAa,MAAQ+iL,SAA8B,OAAS,GAAKC,EAAwBD,EAAqBjiI,WAAa,MAAQkiI,SAA+B,OAAS,EAAIA,EAAsBp5K,IAAI6nH,IACjQ,IAAKH,IAAkBwxD,EAAc,CACnC,IAAIG,EAGJ,MAAOA,EAAwB3jI,EAAYt/C,WAAa,MAAQijL,SAA+B,GAAKA,EAAsBniI,SAAU,CAClI5X,GAAahX,QAAQotB,EAAa,kBAAmB,IAAI51C,KAE3D,MAAM3H,EAAMu9C,EAAYt/C,QAAQ8gD,QAEhC/+C,EAAIyH,IAAIioH,GAAS,MACjBH,EAAgB,IAAIG,GAAQ,CAC1B0N,WAAY7/E,EACZA,YAAAA,EACA8/E,YAAa,cACb8jD,SAAU,GACVC,SAAU,KACVn1K,IAAK,mBACLuX,UAAW,CAET1tB,aACEZ,OAAQgB,EAAEpB,OACVA,IAGA,IAAK,MAAMM,KAAOc,EAAGirL,SAAU,CAC7B,GAAI/rL,IAAQ,YAAa,CACvBc,EAAGuuB,GAAGvuB,EAAGirL,SAAS/rL,GAAKqS,UAIpB,GAAIrS,IAAQ,OAAQ,CACvBc,EAAGd,GAAOc,EAAGirL,SAAS/rL,GAAKqZ,KAG/BvY,EAAGirL,SAAW,GACd,MAAME,EAAe5+H,GAAOugB,QAAQluE,EAAOgM,IAGzCwN,GAAU+yK,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAa5jD,YAAcvnI,EAAGorL,kBAAkBxsL,EAAO+3B,SAG/H,GAAIw0J,GAAgBA,EAAaz0I,UAAY93C,IAAWusL,GAAgBvsL,EAAO2D,QAAQ,cAEvF4oL,IAAiB,MAAQA,SAAsB,GAAKA,EAAatrH,WAAasrH,EAAah1D,wBAAyB,CAClH,OAAO,MAITn2H,EAAG4Y,MAAQuyK,EACX,IAAK,MAAMjsL,KAAOkZ,EAAQ,CACxBpY,EAAGirL,SAAS/rL,GAAO,CACjBqS,IAAK6G,EAAOlZ,GACZqZ,IAAKvY,EAAGd,IAEV,GAAIA,IAAQ,YAAa,CACvBc,EAAGovB,GAAGhX,EAAOlZ,QACR,CACLc,EAAGd,GAAOkZ,EAAOlZ,MAIvBU,MACEZ,OAAQgB,IAERA,EAAG4Y,MAAQ,OAGfhZ,kBAAkB+2B,GAChB,MAAM32B,EAAKC,KACTmY,EAAS,GACX,IAAK,MAAMlZ,KAAOy3B,EAAS,CACzB,GAAIz3B,EAAI2O,WAAW,QAAS,CAC1B,GAAI3O,EAAIH,OAAS,EAAG,CAClB,MAAMssL,EAAahhL,EAAa41D,aAAa/gE,EAAIoK,OAAO,IAExD,GAAI+hL,KAAcrrL,EAAGud,0BAA2B,CAC9C,MAAM/d,EAAQm3B,EAAQz3B,GAEtBkZ,EAAOizK,GAAc1E,GAAUnnL,GAASA,IAAU,OAAS2U,MAAM3U,GAASA,EAAQ6J,SAAS7J,EAAO,SAE/F,CACL4Y,EAAOwwC,KAAOjyB,EAAQz3B,KAI5B,OAAOkZ,KAGX2oC,GAAY3xB,GAAG,CACbsnB,QAAS2Q,EACTg0F,WAAYjrH,GAASopG,GAAQ2uD,mBAAqB/3J,EAAMxxB,OAExDgoD,QAASx2B,GAASopG,GAAQ2uD,mBAAqB/3J,EAAMxxB,OACrD6gD,QAAS,OAEX31C,EAAIyH,IAAIioH,GAASH,GAEnB,OAAOA,EAETz5H,oBAAoBipD,GAClB,MAAMlyB,EAAU,GAChB,UAAWkyB,IAAY,SAAU,CAC/BlyB,EAAQ2wG,KAAOz+E,MAGZ,CACH,IAAK,MAAMzwC,KAAUywC,EAAS,CAC5BlyB,EAAQ,OAAOve,IAAW,OAAS,GAAK/N,EAAaK,WAAW0N,MAAaywC,EAAQzwC,IAGzF,OAAOue,GAIX6iG,GAAQ3iD,YAER34E,OAAOoB,eAAeitD,GAAQ,UAAW,CACvC3sD,MACE,OAAO45H,GAAQC,iBAAiBr4H,SAAS8E,SAW7CqmD,GAAOitE,QAAUA,GACjBA,GAAQrxH,OAAS,UAYjB,MAAMmjL,WAAqBhQ,GACzBxuK,kBACE,MAAO,MAETrN,0BACE,MAAO,CAQL62C,MAAO,UAMPvH,OAAQ,GAKR8Z,QAAS,CACPpnC,QAAS,CAAC,OAAQ,WAClBjiB,MAAO,CACLsN,KAAM,aAKdlN,OACEK,KAAKme,UAAU,WAGjBxe,QACE,IAAI2rL,GACHA,EAAgBtrL,KAAK4oD,WAAa,MAAQ0iI,SAAuB,OAAS,EAAIA,EAAc35D,OAE/FhyH,SAAS27K,GACP,MAAMxsI,OACFA,EAAM8Z,QACNA,GACE5oD,MACJmwB,MACEA,GACEmrJ,EACN,GAAI1yH,EAAS,CACX,IAAKA,EAAQgC,UAAW,CACtBhC,EAAQwnE,OAEVxnE,EAAQtM,QAAQ,CACdjG,MAAOr2C,KAAKq2C,MACZ13C,OAAQ,IAAI43C,GAAUpmB,EAAM8wB,QAAUnS,EAAQ3e,EAAM+wB,QAAUpS,EAAQA,EAAS,EAAGA,EAAS,MAIjGnvC,cAAcwY,EAAQR,GACpB,OAAO20C,GAAOmrB,YAAY9/D,EAAUQ,EAAqBnY,OAG7DqrL,GAAaz0G,YACby0G,GAAanjL,OAAS,eAYtB,IAAIqjL,GAAar+J,GAAU,MAAMq+J,UAAmBr+J,GAAU7R,IAE5DtN,mBACE,MAAO,YAETvO,0BACE,MAAO,CAWLspJ,MAAO,KAOP0iC,cAAe,SAMfC,SAAU,KAOVC,WAAY,CACVnsL,MAAO,KACPiiB,QAAS,CACP+X,UAAW,mBAKnBoyJ,eACE,OAAOzrL,QAAQF,KAAK8oJ,OAEtBnpJ,UACE,MAAMgsL,SACJA,EAAQH,cACRA,GACExrL,KACJ,MAAO,CACLkgB,MAAO,CACLvgB,CAAC,WAAW6rL,KAAkBG,EAC9BC,cAAeD,IAIrBhsL,YAAYmpJ,GACV,OAAOA,GAAS,GAElBnpJ,WAAWksL,GACT,OAAO76I,GAAa55B,OAAO,CACzBqJ,IAAK,QACL+nC,IAAK,GAAGxoD,KAAK2K,WACbuV,MAAO,mBAAmB2rK,EAAIx1I,OAAS,WACtCw1I,GAULlsL,iBAAiB6Y,GACf,GAAIxY,KAAK8rL,aAAc,CACrB9rL,KAAK8rL,aAAazqL,MAAM+1H,KAAO,OAAOn/E,GAAUod,UAAU78C,KAE1DxY,KAAK+rL,UAAU1qL,MAAM2qL,UAAYxzK,GAAY,KAAO,GAAK,QAO7DgqD,qBAUF,MAAMypH,WAAuB75C,GAE3BrkI,mBACE,MAAO,iBAGTlB,kBACE,MAAO,iBAETrN,0BACE,MAAO,CAQLs/I,UAAW,CACTx2H,SAAU,KAQZknD,UAAW,KAMX08G,UAAW,CACT3sL,MAAO,KACPiiB,QAAS,WAqBX2qK,gBAAiB,KAOjBC,mBAAoB,CAClB5qK,QAAS,CACPhS,MAAO,aAETjQ,MAAO,MAET0iB,WAAY,CACV68H,UAAW,CACTx2H,SAAU,MAKlBM,uBACE,MAAO,CACLyjK,iBAAkB,OAGtBr2H,aACE,IAAIs2H,EACJ,OAAQA,EAAqBtsL,KAAK2Y,MAAMq9C,UAAY,MAAQs2H,SAA4B,EAAIA,EAAqBtsL,KAAKkzI,cAAclvH,QAAU,EAEhJrkB,gBAAgB6vE,GACd,GAAIxvE,KAAKusL,iBAAkB,CACzBvsL,KAAKusL,iBAAmB,MACxB,OAAO/8G,EAETxvE,KAAKylG,eAAevlG,QAAQsvE,IAE9B7vE,gBAAgB6vE,GACd,IAAIg9G,EACJxsL,KAAKksL,WAAaM,EAAkBxsL,KAAKksL,aAAe,MAAQM,SAAyB,OAAS,EAAIA,EAAgBzwK,UACtH/b,KAAKysL,gBAAgBj9G,GAEvB7vE,gBAAgBusL,EAAW5zK,GACzB,GAAIA,GAAOA,EAAIg/H,WAAa,KAAM,CAChC,IAAKh/H,EAAIs/H,YAAcs0C,EAAW,CAChC5zK,EAAIyD,WAGR/b,KAAK0sL,YAAY,eAAgBR,GAQnC1uC,iBACE,MAAM0uC,UACJA,GACElsL,KACJ,OAAOksL,GAAa,MAAQA,EAAU18G,UAQxC4vE,0BACE,OAAOp/I,KAAKksL,WAAa,KAO3BrsC,gBACE,MAAMqsC,UACJA,GACElsL,KACJ,OAAOksL,GAAa,OAASA,EAAU18G,UAEzC7vE,SAASm/I,GACP9+I,KAAKylG,eAAe,KAAMq5C,GAE5Bn/I,OAAOm/I,GACL9+I,KAAKylG,eAAe,MAAOq5C,GAE7Bn/I,gBAAgB6vE,GACdxvE,KAAK0sL,YAAY,cAAel9G,GAElC7vE,YAAYmW,EAAKqzD,GACf,IAAI6nD,EAAa27D,GAChB37D,EAAchxH,KAAK2Y,SAAW,MAAQq4G,SAAqB,OAAS,GAAK27D,EAAsB37D,EAAYv6E,WAAa,MAAQk2I,SAA6B,OAAS,EAAIA,EAAoB/tI,UAAUuqB,EAAQ,MAAQ,UAAUrzD,GAErOnW,mBACE,MAAMI,EAAKC,MACT2Y,MACEA,EAAKwzK,gBACLA,GACEpsL,EACN,GAAIosL,EAAiB,CACnB,IAAIS,EAAUjhL,EACd,IAAKihL,KAAYT,EAAiB,CAChCxgL,EAAMwgL,EAAgBS,GAAUj0K,GAChC5Y,EAAG26H,YAAW/oH,IACZA,EAAKi7K,GAAYjhL,IACJ,QAGnBgN,EAAMk0K,sBAAsB9sL,GAE9BJ,gBACE,MAAMq2D,OACJA,EAAMu8E,OACNA,GACEvyI,KACJ,GAAIA,KAAK8sL,WAAY,CACnBv6C,EAAOv4F,WAAagc,EACpBu8E,EAAOmU,QAAU1wF,EAAS,SAAW,WAGzCr2D,eAAe6vE,EAAWsvE,GACxB,MAAM/+I,EAAKC,MAEP8+I,UAAWiuC,EAAiBb,UAC5BA,EAASl2H,OACTA,GACEj2D,GACJitL,qBACEA,GACEjtL,EAAG4Y,MACPygI,EAAWF,IACT,GAAIA,EAAU,CACZn5I,EAAG02C,QAAQp1C,MAAM4F,OAAS,GAC1BlH,EAAGwsL,iBAAmB,KACtBxsL,EAAGyvE,UAAYA,EACfzvE,EAAGmsL,UAAY,OAIrB,GAAI18G,GAAa,KAAM,CACrBA,GAAazvE,EAAGyvE,UAElB,GAAIsvE,IAAc,OAASA,IAAc,KAAM,CAC7C,IAAKkuC,IAAyBjtL,EAAG6qD,UAAW,CAC1Ck0F,EAAY,SACP,CACL,GAAIA,IAAc,KAAM,CACtBA,EAAY,QACP,UAAWA,IAAc,SAAU,CACxCA,EAAY,CACVx2H,SAAUw2H,GAGdA,EAAYiuC,GAAqBjuC,EAAY9tG,GAAaxhC,MAAM,GAAIu9K,EAAmBjuC,GAAa,MAGxG,IAAKA,EAAW,CACd/+I,EAAGwsL,iBAAmB,KACtBxsL,EAAGyvE,UAAYA,OACV,GAAI08G,GAAa18G,IAAc08G,EAAU18G,UAAW,CACzDzvE,EAAGmsL,UAAYA,EAAUlyC,OAAO,CAC9BZ,SAAAA,IAEFr5I,EAAGmsL,UAAU18G,UAAYA,OACpB,IAAK08G,GAAa18G,IAAczvE,EAAGyvE,UAAW,EAElDA,GAAazvE,EAAG0sL,gBAAgB,OACjC,MAAMh2I,QACFA,GACE12C,GACJkH,OACEA,GACEwvC,EAAQa,wBACZm4B,EAAWzZ,EAAS,EAAI/uD,GACzBuoE,GAAazvE,EAAG0sL,gBAAgB,MACjCh2I,EAAQp1C,MAAM4F,OAAS,GAAGA,MAC1BlH,EAAGmsL,UAAYj0C,GAASsB,IAAIvoG,GAAaxhC,MAAM,CAC7C4pI,SAAAA,EACA3iG,QAASu2I,EACTrtL,CAACq2D,EAAS,UAAY,UAAW,CAC/BhxC,KAAMwqD,EAAYC,EAAW,EAC7Bl9B,GAAIi9B,EAAY,EAAIC,IAErBqvE,IACH/+I,EAAGmsL,UAAU18G,UAAYA,IAI/By8G,GAAer1G,YACfq1G,GAAe/jL,OAAS,iBAKxB,MAAM+kL,GAAW,CAAC79J,EAAGc,KAAOd,EAAEqkG,QAAU,IAAMvjG,EAAEujG,QAAU,GACxDy5D,GAAkB,CAAC99J,EAAGc,KAAOA,EAAEujG,QAAU,IAAMrkG,EAAEqkG,QAAU,GAC3D05D,GAAe,GACf7jD,GAAiB,CACfjzF,MAAO,KACPo9E,OAAQ,MAiBZ,MAAM25D,WAAgB9gI,GAAO9rC,MAAMsmI,GAAOykC,KAExCx9K,mBACE,MAAO,QAGTlB,kBACE,MAAO,QAETrN,0BACE,MAAO,CACLq3H,oBAAqB,QAQrBqP,YAAa,KAmBb3mI,MAAO,GASPkF,KAAM,KASN4oL,OAAQ,KAMRC,SAAU,KAQVC,UAAW,KASXC,eAAgB,KAmChBC,KAAM,KAoCNC,SAAU,KAMVC,WAAY,KAWZC,qBAAsB,EAYtB/0G,SAAU,KAWVg1G,SAAU,KACV/2D,cAAe,SAiCfg3D,SAAU,KAKV/5D,wBAAyB,KACzB96F,sBAAuB,CAAC,QAAS,QAAS,cAAe,cAMzD80J,WAAY,MAQZC,aAAc,MAOdC,WAAY,KAOZC,gBAAiB,KAQjBC,gBAAiB,KAMjBC,UAAW,OAMXC,WAAY,KAOZ/+H,WAAY,CACV/vD,MAAO,CAAC,cAAe,eAAgB,aAAc,YAAa,YAAa,UAAW,WAAY,MAAO,OAC7GiiB,QAAS,CACPhS,MAAO,aAGXmpE,UAAW,CACTn3D,QAAS,KACTjiB,MAAO,KACPmiB,QAAS,MAGX4sK,mBAAoB,IACpBC,cAAe,MACfz2D,YAAa,QAqDbxjE,UAAW,CACT9yC,QAAS,UACTjiB,MAAO,MASTivL,kBAAmB,CACjB3hL,KAAM,iBACNs/K,gBAAiB,CACfvsH,SAAUrpD,GAASA,EAAMqpD,UAE3BwsH,mBAAoB,CAClBxsH,SAAU,IAqBd6uH,cAAe,KAcfz4H,OAAQ,KACR/zC,WAAY,CACVqsK,mBAAoB,IAEtBxuH,OAAQ,IAGZl3C,uBACE,MAAO,CACL8lK,iBAAkB,OAGtB/uL,YACE,IAAIgvL,EAAuBC,EAAuBC,EAClD,MAAM9uL,EAAKC,MACT8tL,SACEA,GACE/tL,EACJ+uL,EAAW/uL,EAAG8oI,WAAaukD,GAAQ2B,sBAAsBhvL,EAAGqnD,YAAa,OAC1EunI,EAAwB5uL,EAAGivL,wBAA0B,MAAQL,SAA+B,OAAS,EAAIA,EAAsB9nL,KAAK9G,IACpI6uL,EAAwB7uL,EAAGkvL,sBAAwB,MAAQL,SAA+B,OAAS,EAAIA,EAAsB/nL,KAAK9G,IAClI8uL,EAAgB9uL,EAAGu0D,aAAe,MAAQu6H,SAAuB,OAAS,EAAIA,EAAc9yK,UAC7F7B,MAAM8B,YACN,GAAI8xK,EAAU,CACZ,IAAK,MAAM7lK,KAAKhqB,OAAO4N,OAAOiiL,GAAW,CACvC7lK,EAAElM,WAIN,IAAK+yK,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASv4K,SAAWxW,EAAI,CAC/E+uL,EAASn9D,QAGb+Y,iBACE,MAAMp2E,UACFA,EAASw5H,SACTA,GACE9tL,KACJ8K,EAAMgjL,EAAW7vL,OAAO4N,OAAOiiL,GAAY,GAC7C,OAAOx5H,EAAY,IAAIxpD,KAAQwpD,EAAUo2E,YAAc5/H,EAEzDokL,wBACE,MAAO,kBASTJ,eACE,OAAO9uL,KAAKqQ,YAAY0+K,sBAAsB/uL,KAAKonD,aAErDznD,6BAA6BynD,EAAa+nI,GACxC,IAAItE,EACJ,IAAIuE,GAAsBvE,EAAuBzjI,EAAYt/C,WAAa,MAAQ+iL,SAA8B,OAAS,EAAIA,EAAqBwE,aAClJ,IAAKD,IAAuBD,EAAa,CACvC/nI,EAAYt/C,QAAUs/C,EAAYt/C,SAAW,GAC7CsnL,EAAqB,IAAI71D,GAAQ,CAC/BzjH,IAAK,oBACLoxH,YAAa,oCACb7wF,MAAO,MACPogF,aAAc,UACd44B,UAAW,MACXjoG,YAAAA,EACAznD,eACE,MAAM6pL,EAAMxpL,KACVuW,EAAQ+1C,GAAOC,YAAYi9H,EAAI5iD,cACjC,GAAIrwH,EAAO,CACT,MAAM+4K,EAAS/4K,EAAMg5K,YACrB,GAAID,EAAQ,CACV9F,EAAI7gI,KAAO2mI,EAAOrlL,KAAK,QACvBu/K,EAAIjzK,MAAQA,EACZ,OAAO,MAIX,OAAO,SAGX6wC,EAAYt/C,QAAQunL,aAAeD,EAErC,OAAOA,EAYTN,sBACE,OAAO9uL,KAAK+uL,sBAAsB5tL,SAAS8E,MA8C7CtG,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChB,MAAMpY,EAAKC,KACX,GAAID,EAAG6tL,qBAAsB,CAC3B7tL,EAAGyvL,kBAAoBzvL,EAAGinB,OAAOjnB,EAAG0vL,iBAAkB1vL,EAAG6tL,uBAI7DjuL,aAAamgE,GACX,MAAM//D,EAAKC,KACX,IAAIozH,EAAe,GACnB,GAAItzD,EAAQ,CACV,IAAK//D,EAAG2vL,aAAc,CACpB3vL,EAAG2vL,aAAe5vH,EAClB9uB,GAAa55B,OAAOg8G,EAActzD,OAC7B,CACL9uB,GAAa55B,OAAOg8G,EAAcrzH,EAAG2vL,eAGzC,IAAK,MAAMC,KAAe5vL,EAAG+tL,SAAU,CACrC,IAAI8B,EACJ,IAAKA,EAAwB7vL,EAAG+tL,SAAS6B,MAAkB,MAAQC,SAA+B,GAAKA,EAAsB9vH,OAAQ,CACnIszD,EAAerzH,EAAGggE,aAAaqzD,EAAcrzH,EAAG+tL,SAAS6B,GAAa7vH,OAAQ6vH,IAGlF,OAAOv8D,EAETtB,0BACE,OAAO9xH,KAAK8tL,SAEdnuL,UAAUqE,GACR,MAAMjE,EAAKC,KACXD,EAAG8vL,aAAe7+I,GAAazhC,MAAMxP,EAAGR,OACxCQ,EAAG+vL,eAAiB/vL,EAAGuvL,QAAUrxL,OAAOD,KAAK+B,EAAGuvL,QAAQxwL,QACxDob,MAAMklD,UAAUp7D,GAElBrE,WAAWqE,GACTkW,MAAM4kD,WAAW96D,GAEjBhE,KAAK+vL,eAEL/vL,KAAKgwL,iBAOPrwL,kBACAitI,kBACE,OAAOwgD,GAETztL,UAIEK,KAAKme,UAAU,aACf,MAAMpe,EAAKC,MACTs0D,UACEA,EAAS27H,cACTA,EAAannC,MACbA,EAAKukC,OACLA,EAAM5B,SACNA,EAAQ5yG,SACRA,EAAQi1G,SACRA,GACE/tL,EACJmwL,EAAmBl/I,GAAanlC,OAAOiiL,GAAU,CAACr8K,EAAGjE,KAAOA,IAG5D2iL,EAAgBD,EAAiB9xL,QAAO6pB,GAAKA,EAAEouB,QAAU,UAASp+B,KAAKg1K,IACvEmD,EAAcF,EAAiB9xL,QAAO6pB,GAAKA,EAAEouB,QAAU,UAASp+B,KAAKi1K,IACrEmD,EAAatwL,EAAGswL,WAAWr7K,KAAKjV,GAChCuwL,EAAgB,IAAIH,EAActmL,KAAIoe,GAAKA,EAAEwuB,aAAaw5I,KAAkBG,EAAYvmL,KAAIoe,GAAKA,EAAEwuB,WACrG,MAAO,CACLv2B,MAAO,CACLqwK,sBAAuBJ,EAAcrxL,OACrC0xL,cAAeP,EAAcnxL,OAC7B2xL,aAAc53G,EACd63G,oBAAqBxwL,QAAQo0D,GAC7Bq8H,2BAA4Br8H,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU0B,QAE9F3O,SAAU,KAAKgmI,GAAUF,IAAc/uL,QAAO6pB,GAAKA,GAAKA,EAAEouB,QAAU,QAAOxsC,IAAIwmL,IAAcvnC,GAAS,OAASunC,EAAW,CACxHtnI,UAAW,eACX7oC,MAAO,yBAAyBurK,GAAY,KAC5C9iI,KAAMmgG,IACJwnC,EAAcxxL,OAAS,CACzBohB,MAAO,gBACP6oC,UAAW,YACX1B,SAAUipI,GACR,SAAUjD,GAAUF,IAAc/uL,QAAO6pB,IAAMA,IAAM,MAAQA,SAAW,OAAS,EAAIA,EAAEouB,SAAW,QAAOxsC,IAAIwmL,MAAiB/7H,EAAY,CAAC,CAC7IvL,UAAW,uBACX1B,SAAU,CAACiN,EAAU7d,SACrBv2B,MAAO,CACL0wK,yBAA0B,KAEzBzD,KAGTxtL,cAAc82C,EAASn+B,GACrB,IAAIu4K,EACJ,MAAM9wL,EAAKC,KACTT,EAAQQ,EAAGwd,cAAche,OACzB4mI,MACEA,GACEpmI,EACNma,MAAM6+G,cAActiF,EAASn+B,GAG7B,GAAI/Y,GAAS,KAAM,CACjBQ,EAAGR,MAAQA,EAEbQ,EAAG+wL,YACH/wL,EAAGgxL,oBAAoBhxL,EAAGwuL,eAC1BxuL,EAAGixL,cACH,MAAMC,EAAkB9qD,GAASpmI,EAAGg/D,cACnC8xH,EAAyB9wL,EAAGkvL,sBAAwB,MAAQ4B,SAAgC,OAAS,EAAIA,EAAuBhqL,KAAK9G,GACtIA,EAAGkvL,mBAAqBgC,GAAmBnwI,GAAY3xB,GAAG,CACxDsnB,QAASw6I,EACT30K,QAASvc,EACT4mD,QAAS,qBACTC,SAAU,qBACVF,MAAO,uBAKXupI,oBACE,MAAO,CAACjwL,KAAKkxL,cAMfA,mBACE,MAAM5hI,WACFA,EAAU6+H,gBACVA,EAAexjL,GACfA,EAAEwmL,SACFA,EAAQ/C,UACRA,EAAS3pL,KACTA,GACEzE,KACJo9C,EAAYpM,GAAa55B,OAAO,CAC9B2xC,UAAW,QACXtoC,IAAK,QACL5T,KAAMuhL,EACN3pL,KAAMA,GAAQkG,EACdA,GAAI,GAAGA,UACP89C,cAAe,MACd0lI,GACL,GAAIgD,EAAU,CACZ/zI,EAAUl9B,MAAQixK,EAEpB,IAAK,IAAIlyL,EAAKM,EAAOX,EAAI0wD,EAAWxwD,OAAQF,KAAM,GAAI,CACpDK,EAAMqwD,EAAW1wD,GACjBW,EAAQS,KAAKf,GACb,GAAIM,GAAS,KAAM,CAEjB69C,EAAUn+C,GAAOM,GAGrB,OAAO69C,EAITg0I,eACE,OAAOpxL,KAAKqxL,cAAc,GAE5BD,aAAa7xL,GACXS,KAAKqxL,cAAgB9xL,EAEvBw/D,mBACE,OAAO/+D,KAAKmmI,MAEdkrD,oBACE,MAAMlrD,EAAQnmI,KAAKmmI,MACnB,IAAIr7H,EACJ,IACEA,EAAM,CAACq7H,EAAMmrD,eAAgBnrD,EAAMorD,aAAcprD,EAAMqrD,oBACvD,MAAOxtL,GACP,IAAIytL,EAEJ3mL,IAAQ2mL,EAAetrD,EAAM5mI,SAAW,MAAQkyL,SAAsB,OAAS,EAAIA,EAAa3yL,SAAW,EAC3GgM,EAAM,CAACA,EAAKA,GAEd,OAAOA,EAETumL,kBAAkB9xL,GAChB,UAAWA,IAAU,SAAU,CAC7BS,KAAKmH,OAAO5H,EAAOA,OACd,CACLS,KAAKmH,UAAU5H,IAGnBmyL,uBACE,MAAOJ,EAAgBC,GAAgBvxL,KAAKqxL,cAC5C,OAAOC,GAAkBC,EAAeD,EAAiB,EAS3D3xL,cAAcsL,GACZ,MAAOwY,EAAOC,GAAO1jB,KAAKqxL,cACxB9xL,EAAQS,KAAKmmI,MAAM5mI,MACrB,MAAO,GAAGA,EAAM8J,OAAO,EAAGoa,KAASxY,IAAO1L,EAAM8J,OAAOqa,GAAOD,KAOhE9jB,OAAO6oB,EAAO9E,GAIZ,MAAMyiH,EAAQnmI,KAAK++D,aACnB,GAAIonE,EAAM5mI,MAAMT,OAAQ,CACtB,GAAID,UAAUC,SAAW,EAAG,CAC1BkB,KAAK2xL,YACL,OAGF,IAAK3xL,KAAK4xL,sBAAuB,CAC/B,OAIFzrD,EAAM0rD,kBAAkBrpK,EAAO9E,IAGnC/jB,iBACE,MAAMwmI,EAAQnmI,KAAKmmI,MACnB,GAAIA,EAAM2rD,gBAAiB,CACzB,MAAMC,EAAQ5rD,EAAM2rD,kBACpBC,EAAMj6F,SAAS,OACfi6F,EAAM5qL,cACD,GAAInH,KAAK4xL,sBAAuB,CAErC5xL,KAAKmH,OAAOg/H,EAAM5mI,MAAMT,OAAQqnI,EAAM5mI,MAAMT,SAGhDa,YACEK,KAAK++D,aAAa53D,SAGpBxH,YACE,IAAIqyL,EACJ,MAAMC,aACFA,EAAYj0I,QACZA,EAAOvH,QACPA,GACEz2C,KACJy+C,GAASuzI,EAAiBhyL,KAAK8tL,YAAc,MAAQkE,SAAwB,OAAS,EAAIA,EAAevzI,MACzGqoB,EAAQmrH,GAAgBj0I,EAC1B,GAAIvH,EAAS,CACX,GAAIgI,EAAO,CACTA,EAAMqoB,EAAQ,OAAS,UAEzBrwB,EAAQmI,UAAU8X,OAAO,UAAWoQ,IAGxCnnE,aACEK,KAAKkyL,WAEPvyL,iBACEK,KAAKkyL,WAEPvyL,WACE,MAAMI,EAAKC,MACTmmI,MACEA,EAAKsnD,KACLA,EAAIC,SACJA,GACE3tL,EACJuS,EAAS6zH,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM3uF,cAC/D,GAAI2uF,EAAO,CACT,IAAIgsD,EAAYzE,GAAYD,EAC5B,MAAM2E,EAAcryL,EAAGqyL,aAAeD,IAAcpyL,EAAGqyL,YAAcn6I,GAAU72C,cAAc,CAC3FkR,OAAAA,EACAosC,UAAW,eACXmK,YAAas9E,EAAMt9E,YACnBxB,SAAU,CAAC,CACT3I,UAAW,4BAGf,GAAI0zI,EAAa,CACf,UAAWD,IAAc,WAAY,CACnCA,EAAYA,EAAU,CACpBpzL,OAAQgB,EACRR,MAAOQ,EAAGR,QAGd6yL,EAAY95H,WAAWo1H,EAAW,YAAc,eAAiByE,GAAa,GAEhFpyL,EAAG02C,QAAQmI,UAAUuzI,EAAY,SAAW,OAAO,oBAGvDxyL,cACEK,KAAKqyL,gBAAkB,KACvB,MAAMxpD,UACJA,GACE7oI,KACJ,GAAI6oI,EAAW,CACb,MAAMpiD,QACJA,EAAOhwC,QACPA,EAAOs1I,UACPA,GACE/rL,KACJy2C,EAAQmI,UAAU6nC,EAAU,SAAW,OAAO,aAE9C,GAAIA,EAAS,CACX,MAAMqoG,EAAW9uL,KAAKqQ,YAAY0+K,sBAAsB/uL,KAAKonD,YAAa,MAC1E,GAAI0nI,IAAa,MAAQA,SAAkB,GAAKA,EAASlkI,WAAakkI,EAASv4K,QAAUvW,KAAM,CAC7F8uL,EAASn9D,YAIR,CAGH,MAAMm9D,EAAW9uL,KAAK8uL,SACtB,GAAIA,GAAY/C,EAAUh0I,SAASwhF,GAAQ2uD,oBAAqB,CAE9D,GAAI4G,EAASloD,eAAiBmlD,GAAa+C,EAASlkI,UAAW,CAC7DkkI,EAASwD,mBACJ,CACLxD,EAASloD,aAAemlD,EACxB+C,EAASvmD,OAAOwjD,MAKxB/rL,KAAKqyL,gBAAkB,MAIzB1yL,iBACEK,KAAKuyL,oBAEP5yL,oBACEK,KAAKme,UAAU,YAEfne,KAAKuuL,cAAgBvuL,KAAKu8H,WAAav8H,KAAK6tL,WAAa,MAE3DluL,oBAAoBk5E,GAClB,MAAM94E,EAAKC,MACTmmI,MACEA,EAAK6oD,qBACLA,GACEjvL,EAKN,GAAIomI,EAAO,CACTA,EAAMttD,SAAWA,EAAW,WAAa,KACzC,GAAIA,EAAU,CACZ94E,EAAGivL,qBAAuBA,IAAyB,MAAQA,SAA8B,OAAS,EAAIA,SACjG,IAAKA,EAAsB,CAChCjvL,EAAGivL,qBAAuBluI,GAAY3xB,GAAG,CACvCsnB,QAAS0vF,EACT7pH,QAASvc,EACT+0D,MAAO,uBACPswB,OAAQ,mBACR+gD,MAAO,sBAKfxmI,eAAeJ,GACb,OAAOW,QAAQX,GAEjBI,eAAek5E,GACb74E,KAAKuyL,oBAEP5yL,gBAAgB4tL,GACd,MAAMxtL,EAAKC,KACXD,EAAGoe,UAAU,YACbpe,EAAG+tL,SAAW,CACZrvI,MAAO8uI,GAAav8I,GAAa55B,OAAO,CACtCtB,IAAK,gBACL29G,OAAQ,IACRx0H,IAAK,kBACLU,UACEI,EAAG84H,cAAgB,KACnB94H,EAAG0+C,SAAS5/C,WACZkB,EAAG84H,cAAgB,QAEpB00D,IAAc,MAGrB5tL,eAAemuL,EAAUx1K,GACvB,MAAMvY,EAAKC,KACT8lJ,EAAU/lJ,EAAGyyL,YAAczyL,EAAGyyL,UAAY,IAAI7uC,GAAc,CAC1DC,WAAY,WACZE,QAASspC,GAAQqF,QACjB1uC,UAAW,MAEXprI,MAAO5Y,EACPJ,QAAQyZ,GACN0M,GAAe43B,MAAMtkC,EAAU,kBAAkB,CAACtO,GAChDrG,KAAAA,MAEA,GAAI6kI,GAAe7kI,GAAO,CACxB1E,EAAG8Y,eAAe,CAChBpU,KAAM,WACNlF,MAAOumJ,EAAQnnJ,cAKvBgB,MAAMwY,EAAQ1T,GACZ0T,EAAO4wC,UAAY5wC,EAAO81C,IAAMxpD,EAChC0T,EAAO7F,OAASvS,MAGtB,GAAIA,EAAG2yL,eAAiB,QAAU5E,EAAS6E,MAAQ7E,EAAS8E,SAAU,CACpE9E,EAAW98I,GAAa55B,OAAO,GAAI02K,UAC5BA,EAAS6E,YACT7E,EAAS8E,QAElB9sC,EAAQn4C,OAAOmgF,GACf,GAAI/tL,EAAG02C,QAAS,CAGd12C,EAAG+/D,OAAS//D,EAAG+/D,OAEjB,IAAKxnD,EAAK,CAIR,OAAOwtI,EAAQnnJ,QAGnBgB,iBAAiB6Y,GACfxY,KAAKmmI,MAAM9kI,MAAM6F,MAAQ+wC,GAAUod,UAAU78C,GAC7CxY,KAAKy2C,QAAQmI,UAAU7/B,IAAI,eAE7Bpf,iBAAiB6Y,GACfxY,KAAKmmI,MAAM9kI,MAAMm2H,UAAYh/G,EAO/BiuE,cACE,MAAM1mF,EAAKC,KAEX,IAAKD,EAAG6/D,SAAU,CAChB7/D,EAAGgwL,eACH,GAAIhwL,EAAGuvL,QAAUrxL,OAAOD,KAAK+B,EAAGuvL,QAAQxwL,OAAQ,CAC9C,OAAO,MAET,MAAM+zL,EAAW9yL,EAAG8yL,SACpB,GAAIA,EAAU,CACZ,OAAOA,EAASp8C,OAGpB,OAAO,KAUTz4F,cACE,OAAOh+C,KAAKT,OAAS,MAAQS,KAAKT,QAAU,GAO9C0yL,mBACE,OAAQjyL,KAAKmmI,OAASnmI,KAAKmmI,MAAM5mI,OAAS,MAAQS,KAAKmmI,MAAM5mI,QAAU,GAQzEszL,eACE,MAAM1sD,EAAQnmI,KAAKmmI,MACnB,OAAOA,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM0sD,SAE7DlzL,YAAYJ,EAAO+Y,GACjB,GAAI/Y,GAAS,KAAM,CACjBA,EAAQS,KAAK24E,UAIf,GAAI34E,KAAK8yL,WAAWx6K,EAAK/Y,GAAQ,CAC/B,OAAOA,EAIT,GAAIA,IAAU,GAAI,CAChBS,KAAK+vL,eAEP,OAAOz3K,EAET3Y,YAAYJ,EAAOsa,GACjB,MAAM9Z,EAAKC,KAEX,IAAKD,EAAGyd,cAAe,CACrBzd,EAAGgwL,eAGH,IAAKhwL,EAAGgzL,UAAW,CAGjBhzL,EAAGizL,iBAIP,IAAKjzL,EAAGgzL,UAAW,CACjBhzL,EAAGkzL,WAAa1zL,EAElBQ,EAAGmzL,sBACH,GAAInzL,EAAGm7H,eAAiBn7H,EAAGozL,kBAAmB,CAC5CpzL,EAAGozL,kBAAoB,KACvBpzL,EAAGm7H,aAAa37H,MAAQA,EACxBQ,EAAGozL,kBAAoB,OAU3BxzL,WAAWka,EAAUrB,GACnB,OAAOA,IAAaqB,EAStBla,oBAAoByzL,EAAgB,OAClC,MAAMrzL,EAAKC,MACTmmI,MACEA,EAAK7zH,OACLA,EAAM+gL,eACNA,EAAcC,WACdA,GACEvzL,EAEN,GAAIomI,IAAUpmI,EAAGgzL,WAAa5sD,EAAMktD,KAAoBC,EAAY,CAElEntD,EAAMktD,GAAkBC,EAGxB,IAAKvzL,EAAGyd,gBAAkBzd,EAAGyrI,eAAiBzrI,EAAGg0H,wBAAyB,CACxEoS,EAAMvnF,UAAU98C,OAAO,mBACvB/B,EAAG2nB,aAAa,oBAChB,GAAIpV,EAAQ,CACV,MAAMskI,gBACJA,GACEtkI,EACJ,GAAIskI,IAAoB,OAASA,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgB15F,aAAe,MAAO,CACvIk2I,EAAgB,MAIpB,IAAKA,EAAe,CAClBrzL,EAAG2uL,qBAIT3uL,EAAG+wL,YACH/wL,EAAGixL,cAELrxL,mBACEK,KAAKmmI,MAAMvnF,UAAU7/B,IAAI,mBACzB/e,KAAK+c,WAAW,mBAAoB/c,KAAKsuL,oBAE3C3uL,mBACEK,KAAKmmI,MAAMvnF,UAAU98C,OAAO,mBAc9BwxL,iBAGE,OAAOtzL,KAAKT,OAAS,KAAO,GAAKS,KAAKT,MAExC8zL,qBACE,MAAO,QAETzB,4BACE,MAAMzrD,EAAQnmI,KAAK++D,aAEnB,OAAOonE,IAAUA,EAAMvtE,QAAQ3vD,gBAAkB,YAAck9H,EAAMt5H,MAAQ,+BAA+BpF,KAAK0+H,EAAMt5H,OAIzHlN,uBACE,GAAIK,KAAK+tL,WAAY,CACnB/tL,KAAK2xL,aAQThyL,iBAAiBwwB,GACf,MAAMpwB,EAAKC,KAEX,GAAID,EAAG+yL,WAAW/yL,EAAGkzL,WAAYlzL,EAAGR,QAAUQ,EAAG0mF,QAAS,CACxD1mF,EAAGizL,cAAc7iK,EAAO,MACxBpwB,EAAGkzL,WAAalzL,EAAGR,OAGvBI,cAAcwwB,EAAOolH,EAAar1I,QAAQF,KAAK64H,gBAC7C,MAAM94H,EAAKC,MACTT,MACEA,EACA0zL,WAAYp5K,EAEZ4sE,QAASgwD,GACP12I,EACNA,EAAGmyL,WAEHnyL,EAAGwzL,mBAAmB,CACpBh0L,MAAAA,EACAsa,SAAAA,EACAsW,MAAAA,EACAolH,WAAAA,EACAkB,MAAAA,IAGF,GAAI12I,EAAG+2H,gBAAkB,SAAU,CACjC/2H,EAAGwtB,QAAQ,SAAU,CACnBhuB,MAAAA,EACAsa,SAAAA,EACAsW,MAAAA,EACAolH,WAAAA,EACAkB,MAAAA,KAMN92I,kBACEK,KAAKT,MAAQS,KAAKmmI,MAAMnmI,KAAKqzL,gBAQ/B1zL,gBAAgBwwB,GACd,IAAIqjK,EACJ,MAAMzzL,EAAKC,KACX,IAAKD,EAAGmuL,gBAAiB,CACvBnuL,EAAG+uL,SAASn9D,OAGd5xH,EAAGgzL,UAAY,KACfhzL,EAAG0zL,kBACH1zL,EAAGgzL,UAAY,MACfhzL,EAAGwtB,QAAQ,QAAS,CAClBhuB,MAAOQ,EAAGR,MACV4wB,MAAAA,KAEDqjK,EAAwBzzL,EAAGyvL,qBAAuB,MAAQgE,SAA+B,OAAS,EAAIA,EAAsB3sL,KAAK9G,EAAIowB,GAWxIujK,qBACE,IAAIC,EACJ,OAAO3zL,KAAKmmI,MAAMnmI,KAAKqzL,kBAAoBnqL,QAAQyqL,EAAmB3zL,KAAKszL,cAAgB,MAAQK,SAA0B,EAAIA,EAAmB,IAEtJh0L,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,MACTT,MACEA,GACEQ,EACN,IAAI6zL,EAAY,MAChB,GAAIzjK,EAAMtjB,OAAS,UAAW,CAC5B,GAAIsjB,EAAMlxB,MAAQ,YAAcc,EAAG84E,UAAY94E,EAAG6/D,UAAW,CAI3D,MAAMi0H,EAAW9zL,EAAG0mF,QAClBolB,EAAe,iBAAkB9rG,EAAKA,EAAG8rG,aAAe9rG,EAAG8vL,aAC3DiE,EAAe/zL,EAAG+yL,WAAWjnF,EAActsG,IAC3Cm0L,eACEA,GACE3zL,EAGN,GAAIA,EAAGytL,kBAAoBqG,GAAYC,GAAgBJ,GAAiB,CACtE,GAAII,EAAc,CAChB/zL,EAAGR,MAAQssG,EAEb,GAAI6nF,EAAgB,CAClB3zL,EAAGmzL,oBAAoB,MAEzBnzL,EAAGg0L,aAIHH,GAAaE,GAAgBJ,IAAmB3zL,EAAG0mF,SAAWotG,IAAa9zL,EAAG+vL,eAKpF,IAAK/vL,EAAGmc,YAAa,CAGnB,GAAI03K,EAAW,CACbzjK,EAAMutC,2BAER39D,EAAGwtB,QAAQ4C,EAAMtjB,KAAM,CACrBsjB,MAAAA,KAONxwB,MAAMwwB,GACJnwB,KAAKT,MAAQS,KAAK24E,UAElB34E,KAAKutB,QAAQ,QAAS,CACpB4C,MAAAA,IAQJxwB,aACEK,KAAKgxL,cAIPrxL,eACE,IAAIq0L,EACJ,MAAMj0L,EAAKC,KAEX,IAAKD,EAAGyd,eAAiBzd,EAAGutL,UAAYvtL,EAAGi+C,YAAcg2I,EAAaj0L,EAAGuS,UAAY,MAAQ0hL,SAAoB,GAAKA,EAAWr9C,iBAAkB,CACjJ52I,EAAGk0L,SAAS,mBAAoBl0L,EAAGsyL,qBAC9B,CACLtyL,EAAGg0L,WAAW,mBAAoBh0L,EAAGsyL,kBAYzC1yL,SAASq1B,EAAOkB,EAAQg+G,GACtB,MAAMn0I,EAAKC,MAEVD,EAAGuvL,SAAWvvL,EAAGuvL,OAAS,KAAKvvL,EAAGq6B,UAAUpF,IAAU,EACvD,IAAKkB,EAAQ,CACXn2B,EAAGixL,cAEL,GAAI98C,EAAW,CACb,MAAM6/C,EAAa,KACfh0L,EAAGg0L,WAAW/+J,GACdk/J,KAEFA,EAAUn0L,EAAGovB,GAAG,CACdw3B,QAASotI,EACTI,SAAUJ,KAYlBp0L,WAAWq1B,EAAOkB,GAChB,MAAMn2B,EAAKC,KACX,GAAID,EAAGuvL,OAAQ,CACb,GAAIt6J,EAAO,QACFh1B,KAAKsvL,OAAOtvL,KAAKo6B,UAAUpF,QAC7B,CACLj1B,EAAGuvL,OAAS,IAGhB,IAAKp5J,EAAQ,CACXn2B,EAAGixL,eAQPrxL,YACE,MAAMI,EAAKC,KACX,IAAKD,EAAG0mF,QAAS,CACf,IAAI2tG,EACJ,MAAMvB,EAAW9yL,EAAG8yL,SAElBwB,EAAYrjJ,GAAahzC,KAAK60L,GAAU9hK,MAAK9xB,GAAOA,IAAQ,SAAWA,IAAQ,eAAiB4zL,EAAS5zL,KACzGq1L,EAAYv0L,EAAGuvL,QAAUrxL,OAAOD,KAAK+B,EAAGuvL,QAC1C,IAAIA,EACJ,GAAIgF,IAAc,MAAQA,SAAmB,GAAKA,EAAUx1L,OAAQ,CAClEwwL,EAASgF,OAGN,GAAIzB,EAAS0B,YAAa,CAC7BjF,EAAS,CAACvvL,EAAGomI,MAAMquD,wBAGhB,GAAIH,EAAW,CAYlB/E,EAAS,CAACvvL,EAAGo7B,EAAEk5J,EAAW,CAExB1rK,IAAK5oB,EAAG4oB,IACRtU,IAAKtU,EAAGsU,WAIP,CACHi7K,EAAS,CAACvvL,EAAGo7B,EAAEp7B,EAAGmvL,oBAEpB,KAAMkF,EAAU9E,KAAY,MAAQ8E,SAAiB,OAAS,EAAIA,EAAQt1L,QAAU,EAAG,CACrF,OAAOwwL,IAKb3vL,mBAAmBk7H,GACjB,MAAM96H,EAAKC,KACTk7H,EAAehhH,MAAMmhH,mBAAmBR,GAE1CK,EAAa/rG,GAAG,CACdxvB,QAAOJ,MACLA,IAEAQ,EAAGozL,kBAAoB,KACvBpzL,EAAGR,MAAQA,EACXQ,EAAGozL,kBAAoB,SAG3B,OAAOj4D,EAGTu5D,yBACE,IAAIC,EACJ,OAAQA,EAAkB10L,KAAKs0D,aAAe,MAAQogI,SAAyB,OAAS,EAAIA,EAAgBllH,UAE9GilH,uBAAuBjlH,GACrB,MAAMlb,UACJA,GACEt0D,KACJ,GAAIs0D,EAAW,CACbA,EAAUkb,UAAYA,GAG1B7vE,sBAAsB20D,IAGtB30D,gBAAgBwY,EAAQR,GACtB,GAAIQ,IAAW5Q,MAAMC,QAAQ2Q,MAAa,SAAUA,GAAU,UAAWA,IAAU,CAGjFA,EAAS,CACP8K,MAAO9K,GAGX,MAAMpY,EAAKC,KACTiiD,EAAW9pC,GAAU64B,GAAaxhC,MAAM,CACtCmJ,MAAO5Y,EACPwyI,OAAQ,OACPxyI,EAAGyuL,mBACNl6H,EAAYhI,GAAOmrB,YAAY9/D,EAAUQ,EAAQ,CAC/CQ,MAAO5Y,EACPkiD,SAAAA,IAEJ,GAAIqS,EAAW,CACbA,EAAUw4H,YAAc7qI,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASswF,UAAY,MACjG,GAAIj+E,IAAc38C,EAAU,CAC1B28C,EAAUqgI,gBAEV,QAGJ,OAAOrgI,EAET30D,eAAew7H,GACb,IAAIy5D,EAAkBC,EACtB36K,MAAMrB,eAAesiH,GACrB,IAAKy5D,EAAmB50L,KAAKs0D,aAAe,MAAQsgI,SAA0B,IAAMC,EAAwBD,EAAiBxI,sBAAwB,MAAQyI,SAA+B,GAAKA,EAAsB15D,EAAK12H,MAAO,CACjOzE,KAAKs0D,UAAU+3H,oBAGnB1sL,YAAYkM,EAAQe,GAClB,MAAM7M,EAAKC,MACTs0D,UACEA,EAASm6H,cACTA,GACE1uL,EAEJs6H,EAAYt6H,EAAGy6H,aAAa5tH,GAC5BkoL,EAAcjpL,GAAUwuH,KAAaxuH,EACvC,GAAIyoD,GAAam6H,IAAkB,MAAO,CACxC,GAAI5iL,GAAU4iL,IAAkB,SAAU,CACxC,GAAIqG,EAAa,CACfjpL,EAASmlC,GAAazhC,MAAM1D,EAAOwuH,IACnCngH,MAAMw8H,YAAY,CAGhB/2I,CAAC06H,GAAYxuH,KAAY,UAAWA,IAAWA,EAAOtM,OACrDqN,GACH,GAAIf,EAAQ,QACHA,EAAOtM,MAEhB+0D,EAAUoiF,YAAY7qI,EAAQe,QAE3B,CACLsN,MAAMw8H,YAAY7qI,EAAQe,GAC1B0nD,EAAUoiF,YAAY7qI,EAAQe,QAE3B,CACLsN,MAAMw8H,YAAY7qI,EAAQe,IAG9BjN,YAAYkM,GACVqO,MAAMygH,YAAY9uH,GAClB7L,KAAK82I,aAAajrI,GAEpBlM,aAAakM,EAAQipL,GACnB,IAAIC,EACJ,MAAMh1L,EAAKC,MACTs0D,UACEA,EAASm6H,cACTA,EAAap0D,UACbA,GACEt6H,EACJi1L,SAAavG,EACfqG,GAAeC,EAAeD,KAAiB,MAAQC,SAAsB,EAAIA,EAAe16D,KAAaxuH,EAC7G,GAAIyoD,GAAam6H,IAAkB,MAAO,CACxC,GAAIA,IAAkB,SAAU,CAC9B,GAAIqG,EAAa,CACfjpL,EAAOwuH,GAAa37H,EAAe,CACjCa,MAAOsM,EAAOwuH,IACb/lE,EAAUzoD,cAEV,GAAI4iL,IAAkB,MAAQA,GAAiB,MAAQqG,GAAeE,IAAQ,UAAYj1L,EAAG0uL,IAAkBuG,IAAQ,YAAcvG,EAAc1uL,GAAK,CAC7Ju0D,EAAUwiF,aAAajrI,KAI7BlM,gBAAgB20D,EAAWh8C,GACzBA,GAAOtY,KAAKupE,gBAAgBjxD,EAAI3N,IAChC,GAAI2pD,EAAW,CACb,IAAKA,EAAUupE,SAAU,CACvBvpE,EAAUv6C,SAEZu6C,EAAUqgI,gBACVrgI,EAAU+3H,qBAWhBe,GAAQqF,QAAU,MAAMwC,UAAqB3oI,GAC3Cv+C,mBACE,MAAO,eAET4oE,yBACE,MAAO,CACLW,YAAa81G,GAAQqF,QACrB77J,QAAS,MAIb/pB,kBACE,MAAO,UAGTrN,0BACE,MAAO,CACL62C,MAAO,KACPo9E,OAAQ,KACRxhE,KAAMrvD,WAGV2T,YACE,OAAOvW,KAAKsS,OAEd3S,YACEua,MAAMsB,aAAa3c,WACnB,GAAImB,KAAKf,IAAK,CACZe,KAAK8/D,OAAS,CACZngE,CAACK,KAAKf,KAAM,YAIlBU,UACE,MAAO,CACLipJ,cAAe,KACf1oI,MAAO,CACLvgB,CAAC,WAAWK,KAAKq2C,OAAS,SAAU,EACpComG,SAAU,GAEZpvH,UAAW,CACTnnB,MAAO,UACPkgD,UAAW,gBAIjBzmD,YAAY02C,GACV,OAAOA,EAGT12C,QAAQqE,GACN,MAAMjE,EAAKC,MACTuW,MACEA,GACExW,EACN,KAAMwW,EAAMqpD,UAAYrpD,EAAMsiE,WAAa94E,EAAG8P,QAAS,CAErD,GAAI7L,EAAE/E,IAAK,CACT+E,EAAE8hD,iBAEJ,GAAIvvC,EAAMgX,QAAQ,UAAW,CAC3BA,QAASxtB,MACJ,MAAO,CACZwW,EAAMiY,SAASzuB,EAAG8P,QAAS0G,EAAO,CAACvS,EAAGjE,MAI5CJ,YAAYqE,GACV,MAAMuS,EAAQvW,KAAKuW,MACjB2+K,EAAc,QAASlxL,EAKzB,IAAKkxL,GAAcj9I,GAAU4O,aAAc,CACzC,GAAItwC,EAAMs3K,SAAU,CAClBt3K,EAAMs3K,SAAW,MACjBt3K,EAAMwG,YAAW,IAAMxG,EAAMs3K,SAAW,MAAM,MAGlD7pL,EAAE8hD,iBACF,GAAI7N,GAAUwmB,iBAAiBloD,EAAM4vH,SAAW5vH,EAAM4vH,MAAO,CAC3D5vH,EAAMu+C,WAIZs4H,GAAQ+H,YAAc,MAAMA,UAAoB/H,GAAQqF,QACtD1kL,mBACE,MAAO,cAGTlB,kBACE,MAAO,cAETrN,0BACE,MAAO,CACL2O,OAAQ,CACNqT,QAAS,CAAC,WACVjiB,MAAO,OAIbI,UACE,MAAO,CACL0nD,SAAU,CACR+tI,SAAU,CACRl1K,MAAO,CACLu8H,SAAU,EACV44C,YAAa,IAGjBC,WAAY,CACVp1K,MAAO,CACLu8H,SAAU,EACV84C,cAAe,MAMzB51L,aAAawO,GACX,IAAIqnL,GACHA,EAAsBx1L,KAAKy1L,iBAAmB,MAAQD,SAA6B,OAAS,EAAIA,EAAoBz5K,UACrH/b,KAAKy1L,cAAgBtnL,EAAS+rI,GAAcrpB,IAAI,CAC9Cp6E,QAASz2C,KAAKy2C,SACbtoC,GAAU,KAEfxO,QAAQqE,GACN,MAAMjE,EAAKC,MACTuW,MACEA,GACExW,EACN,KAAMwW,EAAMqpD,UAAYrpD,EAAMsiE,UAAW,CACvC,GAAI70E,EAAErF,SAAWoB,EAAGq1L,SAAU,CAC5B7+K,EAAMm/K,SAAS1xL,EAAEo1G,eACZ,GAAIp1G,EAAErF,SAAWoB,EAAGu1L,WAAY,CACrC/+K,EAAMo/K,WAAW3xL,EAAEo1G,cAM3Bg0E,GAAQqF,QAAQ77G,YAChBw2G,GAAQ+H,YAAYv+G,YACpBtqB,GAAO6qB,SAASi2G,GAAQqF,QAAS,WACjCnmI,GAAO6qB,SAASi2G,GAAQ+H,YAAa,eACrC/H,GAAQllL,OAAS,QAwBjB,MAAM0tL,WAAkBxI,GAEtBvgL,kBACE,MAAO,YAGTuqE,mBACE,MAAO,OAET53E,0BACE,MAAO,CAgBLm5E,UAAW,IAGf5qE,mBACE,MAAO,YAETpO,UAAUwY,GACR,IAAKA,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOi2K,aAAe,SAAU,CACnFj2K,EAAOqqF,OAAS,KAElBtoF,MAAMsB,aAAa3c,YAIvB+2L,GAAUh/G,YACVg/G,GAAU1tL,OAAS,YAoBnB,MAAM2tL,WAAoBD,GAExB7nL,mBACE,MAAO,cAGTlB,kBACE,MAAO,cAETrN,0BACE,MAAO,CAMLquL,SAAU,KAMViI,mBAAoB,YAEpBv2L,MAAO,KACPuuL,SAAU,CACRj2F,OAAQ,CACN/hF,IAAK,SAWT45G,UAAW,KAKXqmE,WAAY,KAkBZC,OAAQ,CACNz2L,MAAO,CACL29D,SAAU,MAEZ17C,QAAS,CAAC,OAAQ,YAEpB4sK,UAAW,OAEXh4D,cAAe,KACfz9C,UAAW,MAKfh5E,YACE,IAAIs2L,GAEHA,EAAwBj2L,KAAKk2L,qBAAuB,MAAQD,SAA+B,OAAS,EAAIA,EAAsBpvL,KAAK7G,MACpIka,MAAM8B,YAERrc,eAAekuL,GACb,MAAM9tL,EAAKC,MACTy2C,QACEA,EAAOqhF,YACPA,GACE/3H,EACNma,MAAMi8K,kBAAkBt3L,WACxB,GAAIgvL,IAAa,MAAO,CACtB,IAAIuI,EACJt+D,EAAYtoE,gBAAgB,sBAC3B4mI,EAAwBr2L,EAAGm2L,qBAAuB,MAAQE,SAA+B,OAAS,EAAIA,EAAsBvvL,KAAK9G,GAClI02C,EAAQmI,UAAU7/B,IAAI,kBACtB+hC,GAAY3xB,GAAG,CACbsnB,QAAS12C,EAAGs2L,uBACZnwL,MAAOlC,IAEL,GAAIA,EAAErF,SAAWoB,EAAGs2L,uBAAwB,CAC1Ct2L,EAAGu2L,eAAetyL,KAGtBsY,QAASvc,QAEN,CACL+3H,EAAYroE,aAAa,oBAAqB,QAK9C1vD,EAAGm2L,kBAAoB/7H,GAAehrC,GAAG,CACvCkmI,UAAW,eACX/4I,QAASvc,KAIfs2L,6BACE,OAAOr2L,KAAKmmI,MAEdxmI,cAAc82C,EAASqvE,GACrB,IAAIywE,EACJ,MAAMpqL,EAAS+N,MAAM6+G,cAActiF,EAASqvE,GAC1CkwE,EAASh2L,KAAKmoJ,WAAW,UACzBl2F,EAAO+jI,EAASA,EAAO5nI,SAAW4nI,EAAO/jI,MAAQskI,EAAwBv2L,KAAKqQ,YAAY2nE,YAAYg+G,EAAOnpL,SAAW,MAAQ0pL,SAA+B,OAAS,EAAIA,EAAsBt5K,MAAM9E,OAAO85C,KAAO,MACxNjyD,KAAK+3H,aAAe9lE,EACpB,OAAO9lD,EAmBTxM,aAAaq2L,EAAQQ,GACnB,MAAM,IAAI9lL,MAAM,kGAiBlBg6H,iBACE,MAAMv+H,EAAS+N,MAAMwwH,WACrB,GAAI1qI,KAAKy2L,QAAS,CAChBtqL,EAAO3N,KAAKwB,KAAKg2L,QAEnB,OAAO7pL,EAQTxM,iBACEua,MAAM81K,iBACNhwL,KAAK02L,kBAEP/2L,gBAAgBigH,GACd,MAAM7/G,EAAKC,KAIX,GAAID,EAAG42L,cAAe,CAOpB52L,EAAGi2L,OAAOltK,sBAAsB/oB,EAAGi2L,OAAOt9D,QAAS,KAAM34H,EAAGi2L,QAE9D97K,MAAMukG,gBAAgBmB,GAMxBjgH,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,KACX,IAAI42L,EAAY,KAChB,GAAIzmK,EAAMtjB,OAAS,YAAc9M,EAAG6/D,WAAazvC,EAAMipF,WAAajpF,EAAM2yB,QAAS,CACjF,GAAI/iD,EAAG42L,cAAe,CACpB,MAAMX,OACJA,GACEj2L,EACJ,GAAIowB,EAAMlxB,MAAQ,SAAU,CAC1BkxB,EAAM21B,iBACN31B,EAAMutC,2BACN39D,EAAG82L,aAIHD,EAAY,WACP,GAAIZ,EAAOpqD,kBAAmB,CAEnCoqD,EAAOpqD,kBAAkBz7G,QACpB,GAAIA,EAAMlxB,MAAQ,YAAa,CACpC,GAAI+2L,EAAOrmC,UAAW,CACpBqmC,EAAOlhI,eAGN,GAAI3kC,EAAMlxB,MAAQ,YAAa,CAEpCkxB,EAAMutC,2BAINvtC,EAAM21B,iBACN/lD,EAAGu2L,eAAenmK,IAGtB,GAAIymK,EAAW,CACb18K,MAAM48K,mBAAmB3mK,IAG7BxwB,UAAUqE,GACR,MAAMjE,EAAKC,KACXka,MAAMklD,UAAUp7D,GAChB,GAAIjE,EAAGg2L,WAAY,CAEjBh2L,EAAGg3L,SAAW,EACdh3L,EAAGu2L,eAAetyL,GAElBjE,EAAGi3L,mBAAqB,KACxBj3L,EAAGgd,YAAW,IAAMhd,EAAGi3L,mBAAqB,OAAO,MAOvDr3L,eAAewwB,GACb,IAAKnwB,KAAK4/D,SAAU,CAElB5/D,KAAKi3L,aAAa,QAAS9mK,IAQ/BxwB,cAAawwB,MACXA,IAEA,MAAMg2G,EAAQnmI,KAAKmmI,MACnB,GAAIluF,GAAU4O,cAAgB5O,GAAUwmB,iBAAiB0nE,KAAWA,GAASh2G,EAAMxxB,SAAWwnI,EAAO,CACnGhsE,GAAe+jG,qBACf/3B,EAAMkG,OACNlG,EAAMrxE,QACNqF,GAAekkG,qBASnB1+J,aAAam1D,GACX,GAAI90D,KAAK22L,cAAe,CACtB32L,KAAK62L,iBACA,CACL72L,KAAKk3L,WAAWpiI,IAOpBn1D,WAAWm1D,GACT,MAAM/0D,EAAKC,MACTg2L,OACEA,GACEj2L,EACN,IAAKA,EAAGo3L,6BAA8B,CACpCnB,EAAO7mK,GAAG,CACRihG,KAAM,eACNuB,KAAM,eACNr1G,QAASvc,IAEXA,EAAGo3L,6BAA+B,KAEpCl/I,GAAUkkF,cAAcp8H,EAAG+3H,YAAa,CACtCs/D,gBAAiBpB,EAAOrrL,GACxB0sL,gBAAiB,OAEnBrB,EAAOtmE,UAAY3vH,EAAG2vH,UACtBsmE,EAAO5lE,OAEP,GAAI4lE,EAAOprI,UAAW,CACpB,GAAIkK,EAAO,CACT/0D,EAAGu3L,gBAIT33L,eACE,MAAMI,EAAKC,KACXD,EAAG42L,cAAgB,KACnB52L,EAAG02C,QAAQmI,UAAU7/B,IAAI,UACzBhf,EAAGwtB,QAAQ,eAAgB,CACzB6iG,KAAM,OAERrwH,EAAGw3L,oBAAsBp9H,GAAehrC,GAAG,CACzCkmI,UAAW,iBACX/4I,QAASvc,IAEXA,EAAGy3L,qBAAuB12I,GAAY3xB,GAAG,CACvCsnB,QAAS12C,EAAGi2L,OAAOv/I,QACnBkQ,QAAS,kBACTrqC,QAASvc,IAGbJ,eACE,IAAI83L,EAAuBC,EAC3B,MAAM33L,EAAKC,KACXD,EAAG+3H,YAAYroE,aAAa,gBAAiB,OAC7C1vD,EAAG42L,cAAgB,MACnB52L,EAAG02C,QAAQmI,UAAU98C,OAAO,UAC5B/B,EAAGwtB,QAAQ,eAAgB,CACzB6iG,KAAM,SAEPqnE,EAAwB13L,EAAGw3L,uBAAyB,MAAQE,SAA+B,OAAS,EAAIA,EAAsB5wL,KAAK9G,IACnI23L,EAAwB33L,EAAGy3L,wBAA0B,MAAQE,SAA+B,OAAS,EAAIA,EAAsB7wL,KAAK9G,GAEvIJ,gBAAewwB,MACbA,IAEA,IAAKnwB,KAAKwrI,gBAAkBxrI,KAAK2+D,KAAKxuC,EAAMxxB,QAAS,CACnDqB,KAAK02L,mBAGT/2L,gBAAgBwwB,GACd,GAAIA,EAAMlxB,MAAQ,QAAUe,KAAKg2L,OAAO3mC,UAAW,CACjD,MAAM1lB,EAAW1xF,GAAUwmB,iBAAiBz+D,KAAKmmI,OAC/CwxD,EAAiB,IAAIC,cAAc,UAAWznK,GAGhDnwB,KAAKmmI,MAAM1yE,cAAckkI,GAGzB,GAAIA,EAAeE,iBAAkB,CACnC1nK,EAAM21B,iBAIR,GAAI7N,GAAUwmB,iBAAiBz+D,KAAKmmI,SAAWwD,EAAU,CACvD3pI,KAAKmmI,MAAMrxE,YAGR,CACH3kC,EAAM21B,iBAGR,IAAK9lD,KAAKkc,YAAa,CACrBlc,KAAK62L,eAMXl3L,kBACE,GAAIK,KAAK0vH,UAAW,CAClB1vH,KAAK62L,cAMTl3L,aACE,GAAIK,KAAK22L,cAAe,CACtB32L,KAAKg2L,OAAOrkE,QAGhBhyH,eACAA,QACE,MAAMwmI,EAAQnmI,KAAKmmI,MAOnB,GAAIluF,GAAU4O,cAAgB7mD,KAAK6tL,SAAU,CAC3C1nD,EAAMttD,SAAW,KACjB74E,KAAK+c,YAAW,IAAMopH,EAAMttD,SAAW,OAAO,KAEhD3+D,MAAM46C,SAKV+gI,GAAY3tL,OAAS,cAKrB,MAAM4vL,GAAY32L,SAAS4gI,cAQ3B,MAAM5X,WAAa79D,GAEjBv+C,mBACE,MAAO,OAGTlB,kBACE,MAAO,OAETrN,0BACE,MAAO,CACLmwI,QAAS,cACTooD,YAAa,aACbC,cAAe,eACfv3K,IAAK,KAMLwC,MAAO,KAMPg1K,aAAc,OAQdrsH,MAAO,KACP/rE,UAAW,KACXyjH,WAAY,CACVj2D,UAAW,MACXC,UAAW,MAEb0lH,eAAgB,KAMhBklB,YAAa,MAMbC,uBAAwB,MAOxBC,cAAe,MAOfz4L,QAAQ6yE,GACN,IAAIvnE,EAAOb,EAAaY,WAAWwnE,EAAOxyE,KAAKi4L,eAC/C,GAAIhtL,GAAQ,MAAQA,IAAS,GAAI,CAE/BA,EAAO,SAET,OAAOA,GAQTotL,aAAc,KAOdC,WAAY,KAQZC,eAAgB,CAAC/lH,EAAQgmH,KACvB,IAAI/zL,EAAO2F,EAAaY,WAAWwtL,GACnC,GAAI/zL,GAAQ,MAAQA,IAAS,GAAI,CAE/BA,EAAO,SAET,OAAOA,GAQTg0L,iBAAkB,KAgBlBC,SAAU,CACRl3K,QAAS,UACTjiB,MAAO,IAOTo5L,oBAAqB,KACrB1mI,KAAM,UACN6N,OAAQ,CACN84H,SAAU,cAyBhBj5L,UAAUwY,KAAWoD,GACnB,IAAIs9K,EACJ,MAAM94L,EAAKC,KAEX,GAAIuH,MAAMC,QAAQ2Q,GAAS,CACzBA,EAAS,CACP8K,MAAO9K,GAGX+B,MAAMsB,UAAUrD,KAAWoD,GAC3B,MAAMk7B,QACFA,GACE12C,GACJ6+C,UACEA,GACEnI,EACN,GAAI12C,EAAGm4L,YAAa,CAClBt5I,EAAU7/B,IAAI,iBAEhB,IAAK85K,EAAY94L,EAAG6rE,SAAW,MAAQitH,SAAmB,GAAKA,EAAU70K,MAAO,CAC9EjkB,EAAG+4L,cACE,CACLl6I,EAAU7/B,IAAI,WAEhB+hC,GAAY3xB,GAAG,CACbsnB,QAAAA,EACA8I,SAAUx/C,EAAG+wK,aACbtqH,UAAW,cACXtgD,MAAO,UACPoW,QAASvc,IAGbJ,YACE,IAAIo5L,EACJ/4L,KAAKupE,gBAAgB,UACpBwvH,EAAkB/4L,KAAKH,aAAe,MAAQk5L,SAAyB,OAAS,EAAIA,EAAgBh9K,UACrG7B,MAAM8B,YAERrc,UAAUqE,GACR,IAAIg1L,EACJh5L,KAAKi5L,mBAAmBD,EAAah1L,EAAEm7D,WAAa,MAAQ65H,SAAoB,OAAS,EAAIA,EAAW/0I,QAAQjkD,KAAK8wK,eACrH52J,MAAMklD,UAAUp7D,GAElBrE,aACE,MAAMI,EAAKC,KACTk5L,EAAgBn5L,EAAG6rE,MAAMqG,QAAQpoE,KAAI,CAAC2oE,EAAQ5zE,IAAMmB,EAAGo5L,eAAe3mH,EAAQ5zE,KAChF,GAAImB,EAAGm4L,aAAen4L,EAAGq4L,gBAAkB,MAAO,CAChDc,EAAc/qG,QAAQpuF,EAAGq5L,oBAE3B,OAAOjuB,GAAeG,GAAG,GAAG4tB,IAE9Bv5L,eAAe6yE,EAAQ5zE,GACrB,MAAM85L,SACFA,EAAQL,aACRA,GACEr4L,KACJqB,EAAQg3L,EAAe,UAAUr4L,KAAKwuB,SAAS6pK,EAAcr4L,KAAM,CAACwyE,OAAc,GACpF,OAAO24F,GAAeG,GAAG,OAAOjqK,YAAgBrB,KAAKq5L,eAAe7mH,EAAQ5zE,oCAAoC85L,EAAS9sL,SAAS4mE,mBAAwB5zE,eAAewL,EAAaY,WAAWwnE,EAAO7nE,QAAQ3K,KAAKgzK,eAAiB,gBAAkB,MAAMhzK,KAAKs5L,eAAe9mH,EAAQ5zE,UAE5Re,eAAe6yE,EAAQ5zE,GACrB,GAAI,gBAAiB4zE,EAAOryD,KAAM,CAChC,OAAOngB,KAAKu4L,eAAe/lH,EAAQpoE,EAAaK,WAAW+nE,EAAOof,cAAc,GAAGpf,EAAOryD,KAAKg4E,cAEjG,MAAO,GAAGn4F,KAAKu5L,YAAY/mH,EAAQ5zE,KAAKoB,KAAKw5L,QAAQhnH,EAAQ5zE,KAE/De,YAAY6yE,EAAQ5zE,GAClB,OAAOoB,KAAKk4L,YAAc,oCAAoCl4L,KAAKg4L,sBAAwB,GAE7Fr4L,mBACE,MAAMo4L,EAAc/3L,KAAKy5L,YAAc,aAAe,GACtD,MAAO,cAAcz5L,KAAK2vI,6BAA6BooD,yDAAmE/3L,KAAKu5L,YAAY,WAAWv5L,KAAKo6B,UAAU,2BAEvKz6B,eAAe6yE,GACb,IAAIknH,EACJ,MAAM35L,EAAKC,MACTs4L,WACEA,GACEv4L,EACJgxK,GAAc2oB,EAAiB35L,EAAG45L,cAAgB,MAAQD,SAAwB,OAAS,EAAIA,EAAe3oB,WAC9GuC,GAAYvC,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWr6I,QAAQ/rB,KAAO6nE,EAAO7nE,GACrGivL,EAAiB,gBAAiBpnH,EAAOryD,KAAO,2BAA6B,GAC7E05K,EAAa95L,EAAG24L,SAAS9sL,SAAS4mE,GAClCm9D,EAAU2oD,EAAat4L,KAAKwuB,SAAS8pK,EAAYt4L,KAAM,CAACwyE,IAAW,GACrE,MAAO,GAAGzyE,EAAG4vI,WAAWn9D,EAAO18D,KAAO,MAAM65H,KAAWkqD,EAAa95L,EAAGg4L,YAAc,MAAMzkB,EAAWvzK,EAAGF,UAAUmxK,SAAW,MAAM4oB,IAEtIj6L,oBACEK,KAAK+wH,KAAK/wH,KAAKm7B,EAAE,eAEnBx7B,sBACEK,KAAK20J,SAEPh1J,eACEZ,OAAQ6sE,EAAKxZ,OACbA,EAAM6f,QACNA,EAAOO,OACPA,EAAMD,QACNA,IAEA,MAAMxyE,EAAKC,MACT04L,SACEA,EAAQoB,0BACRA,GACE/5L,EACN,OAAQqyD,GAKN,IAAK,UACH,CACE,MAAM2nI,EAAY,GAClB,IAAIC,EAAY,KAChBtB,EAAS15L,SAAQkxB,IAEf,MAAMy9D,EAAU/hB,EAAMiB,QAAQ38C,EAAEvlB,IAChC,GAAIgjF,EAAS,CACXqsG,EAAY,MACZ,GAAIrsG,IAAYz9D,EAAG,CACjB6pK,EAAUv7L,KAAKmvF,QAMrB,GAAIosG,EAAUj7L,OAAQ,CACpB45L,EAASliG,cAAc,CACrB3qF,OAAQkuL,EACR7jK,OAAQ4jK,SAKP,GAAIE,IAAcF,EAA2B,CAChDpB,EAASj6I,QAEX,OAEJ,IAAK,SACHi6I,EAAS52L,OAAOmwE,GAChB,MACF,IAAK,QACHlyE,EAAGk6L,cACH,MACF,IAAK,SACH,CACE,MAAMtvL,GACJA,GACE4nE,EAEJ,GAAI5nE,EAAI,CACNstC,GAAUkkF,cAAcp8H,EAAG4hH,eAAe35G,cAAcoC,EAAa8vL,wBAAwB,UAAWvvL,EAAGkP,WAAY,CACrHsgL,UAAWxvL,EAAGpL,QAGlBQ,EAAGq6L,YAAY5nH,GACf,QAGNzyE,EAAG+4L,UAELn5L,iBACEK,KAAK84L,UAEPn5L,UACE,MAAMI,EAAKC,KACX,GAAID,EAAG6qD,UAAW,CAChB,IAAIyvI,EACJ,MAAMtpB,GAAcspB,EAAgBt6L,EAAGF,aAAe,MAAQw6L,SAAuB,OAAS,EAAIA,EAActpB,WAEhHhxK,EAAGu6L,cAAgB,KAKnB,MAAMhzI,EAAOrP,GAAUoT,0BAA0BtrD,EAAGw6L,aAAc,CAChEvnI,SAAU,OAEZjzD,EAAGy6L,aAAa33D,WAAWv7E,GAG3B,GAAIypH,EAAY,CACdhxK,EAAGk5L,kBAAkBloB,GAEvBhxK,EAAG06L,cAAgB16L,EAAG06L,cAAgB,GAAK,EAC3C16L,EAAG02C,QAAQmI,UAAU7+C,EAAG6rE,MAAM5nD,MAAQ,EAAI,SAAW,OAAO,WAC5DjkB,EAAG26L,4BAGA,IAAK36L,EAAGu6L,cAAe,CAC1Bv6L,EAAGu6L,cAAgBv6L,EAAGovB,GAAG,CACvBwrK,MAAO,UACPr+K,QAASvc,EACT6sB,KAAM,QAIZjtB,aACE,MAAMI,EAAKC,KACTizI,EAAYlzI,EAAG4hH,eAAe35G,cAAcjI,EAAG+wK,cAC/C5gG,EAAYnwE,EAAG4hH,eAAezxC,UAChC,GAAI+iE,EAAW,CAGb,MAAMhwH,EAAQljB,EAAG4hH,eAAe5xD,iBAAiB,GAAGhwD,EAAG+wK,6BACvDgnB,GAAU91D,eAAeiR,GACzB6kD,GAAU71D,YAAYh/G,EAAMA,EAAMnkB,OAAS,IAC3Cg5L,GAAUl1D,qBACL,CAEL,GAAI1yD,EAAW,CACb4nH,GAAU8C,cAAc1qH,GACxB4nH,GAAU71D,YAAY/xD,OACjB,CACL4nH,GAAUz5D,SAASt+H,EAAG4hH,eAAgB,GACtCm2E,GAAUv5D,OAAOx+H,EAAG4hH,eAAgB,IAGxC,OAAOm2E,GAETn4L,eAAesyE,GACb,IAAK,MAAMO,KAAUP,EAAS,CAC5B,MAAMtgE,EAAO3R,KAAK0E,QAAQ8tE,GAG1B,GAAI7gE,EAAM,CACR,MAAMzB,EAAQlQ,KAAK4rE,MAAMnmE,QAAQ+sE,GAC/Bmb,EAAU11C,GAAUoT,0BAA0BrrD,KAAKm5L,eAAe3mH,EAAQtiE,IAC5E+nC,GAAUqtE,KAAK33B,EAASh8E,KAI9BhS,QAAQ08F,GAEN,GAAIA,GAAc,KAAM,CACtB,IAAIw+F,EACJ,UAAWx+F,IAAe,SAAU,CAGlC,OAAOr8F,KAAK2hH,eAAe35G,cAAc,gBAAgBq0F,EAAa,EAAIr8F,KAAK4rE,MAAM5nD,MAAQq4E,EAAaA,YACrG,GAAIA,EAAWxlD,WAAauH,QAAQC,aAAc,CACvDg+C,EAAaA,EAAW3lE,QAAQ/rB,GAGlC,KAAMkwL,EAAcx+F,KAAgB,MAAQw+F,SAAqB,OAAS,EAAIA,EAAYlwL,KAAO,KAAM,CACrG0xF,EAAaA,EAAW1xF,GAE1B,OAAO3K,KAAK2hH,eAAe35G,cAAcoC,EAAa8vL,wBAAwB,UAAW79F,KAQ7F18F,qBAAqB82C,GACnB,GAAIA,EAAQ93C,OAAQ,CAClB83C,EAAUA,EAAQ93C,OAEpB83C,EAAUA,EAAQwN,QAAQjkD,KAAK8wK,cAC/B,OAAO9wK,KAAK4rE,MAAMonB,MAAM5pF,SAASqtC,EAAQ/f,QAAQxmB,QAQnDvQ,YAAYsjB,GACV,MAAMljB,EAAKC,KACX,GAAID,EAAG6rE,OAAS7rE,EAAG6rE,MAAM+9B,YAAa,CACpC5pG,EAAG6rE,MAAM7vD,UAEXhc,EAAG6rE,MAAQg7B,GAAMM,SAASjkF,GAE5BtjB,eAAeigE,GACb1lD,MAAMkjI,kBAAkBv+I,WACxBmB,KAAKH,YAAcG,KAAKH,UAAU+/D,SAAWA,GAE/CjgE,eAAe+4L,EAAUoC,GACvB,GAAIpC,EAAU,CACZ,IAAIqC,EAGJ,GAAIrC,EAAS9tG,aAAc,CACzB5qF,KAAK85L,0BAA4B,SAC5B,CACL,GAAIvyL,MAAMC,QAAQkxL,GAAW,CAC3BqC,EAAmBrC,EACnBA,EAAW,QACN,GAAIA,EAAS7sL,OAAQ,CAC1BkvL,EAAmBrC,EAAS7sL,OAC5B6sL,EAAWh6L,EAAeA,EAAe,GAAIg6L,GAAW,GAAI,CAC1D7sL,OAAQ,KAGZ6sL,EAAW,IAAI7sG,GAAW6sG,GAE5BA,EAASvpK,GAAG,CACVi2D,OAAQ,oBACR9oE,QAAStc,OAKXA,KAAK+6L,iBAAmBA,MACnB,CACLD,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY/+K,UAExE,OAAO28K,EAET5nB,mBACE,MAAO,IAAI9wK,KAAK2vI,UAOlB+oD,eACE,OAAO14L,KAAKg7L,UAOdpvH,YAEE5rE,KAAKme,UAAU,SACf,OAAOne,KAAKi7L,OAEdt7L,YAAYisE,GACV,MAAM7rE,EAAKC,KACX,KAAM4rE,aAAiBg7B,IAAQ,CAC7B,GAAIr/F,MAAMC,QAAQokE,GAAQ,CACxBA,EAAQ,CACN1xC,KAAM0xC,GAGVA,EAAQ,IAAIg7B,GAAMh7B,GAEpB7rE,EAAGwpE,gBAAgB,SACnB,GAAIqC,EAAO,CACT,MAAMsvH,EAAiB,CACrBz2L,KAAM,QACN2gF,OAAQ,gBACR0zG,QAAS,iBACTx8K,QAASvc,GAEX,GAAI6rE,EAAM6iC,QAAS,CACjBysF,EAAeC,WAAa,oBAC5BD,EAAeE,aAAe,sBAEhC,GAAIxvH,EAAM2lB,UAAW,CACnBxxF,EAAG02C,QAAQmI,UAAU7/B,IAAI,aACzBm8K,EAAeG,YAAc,iBAE/BzvH,EAAMz8C,GAAG+rK,GAEX,OAAOtvH,EAETjsE,YAAYisE,GACV,MAAMmvH,iBACJA,GACE/6L,KAGJ,GAAI+6L,IAAqB,MAAQA,SAA0B,GAAKA,EAAiBj8L,OAAQ,CACvF,GAAI8sE,EAAM5nD,MAAO,CACfhkB,KAAKmH,OAAO4zL,OACP,CACLnvH,EAAMz8C,GAAG,CACP2pK,QAAS,IAAM94L,KAAKmH,OAAO4zL,GAC3BnuK,KAAM,QAIZ5sB,KAAK84L,UAEPn5L,gBAAgBE,EAAWy7L,GACzB,MAAMv7L,EAAKC,MACTy2C,QACEA,GACE12C,EACN,GAAI02C,EAAS,CACX,IAAIkjJ,EACJ95L,EAAY6wK,GAAUj5F,YAAY6jH,EAAcz7L,EAAY6wK,GAAUx4F,aAAa,CACjFyjD,SAAU57H,EACV6/D,SAAU7/D,EAAG6/D,SACbjhE,OAAQ83C,EACRm6H,eAAgBn6H,GACf52C,GAAa,KAAME,GAGtB,KAAM45L,EAAa95L,KAAe,MAAQ85L,SAAoB,OAAS,EAAIA,EAAW/oB,kBAAoBn6H,IAAY12C,EAAG4wK,cAAe,CACtIl6H,EAAQu5G,SAAW,GAGvB,OAAOnwJ,EAET07L,qBACE,MAAMp1J,EAAWnmC,KAAKy2C,QAAQyrF,iBAC5B7oF,EAAYr5C,KAAKq5C,UAEnB,GAAIA,GAAa,KAAM,CACrB,OAAOr5C,KAAK4rE,MAAM5nD,MAAQ5P,KAAKuU,IAAIwd,EAASquB,UAAYruB,EAASiR,aAAciC,GAAa,GAKhG15C,WAAW4b,GAETrB,MAAMm/B,UAAYr5C,KAAKu7L,eACvBrhL,MAAMoiC,WAAW/gC,GAEnB5b,QAAQ4b,GACNvb,KAAKH,YAAcG,KAAKH,UAAUkxK,WAAa,MAC/C,OAAO72J,MAAMy3G,QAAQp2G,GAEvB5b,OACE,MAAM86L,aACFA,GACEz6L,MACJ2yK,mBACEA,GACE3yK,KAAKH,UAEXqa,MAAMm/B,UAAYr5C,KAAKm6C,WACvB,MAAMqhJ,EAASthL,MAAMk2G,OAGrB,GAAIpwH,KAAKy6L,eAAiBA,EAAc,CACtCz6L,KAAKi5L,kBAAkBtmB,EAAoB,MAE7C,OAAO6oB,EAYT77L,kBAAkBoxK,EAAa/wK,KAAKH,UAAU8yK,mBAAoB/yH,EAAQ,WACxE,MAAM7/C,EAAKC,MACTH,UACEA,EAASq/H,cACTA,GACEn/H,EAIN,GAAIgxK,GAAc,KAAM,CACtB,UAAWnxH,IAAU,SAAU,CAC7B,MAAM67I,EAAYv8D,EAAgBA,EAActkF,KAAO,EAMvDgF,EAAQ67I,EAAY,EAAI,UAAYA,EAAY,QAAU,MAE5D1qB,EAAahxK,EAAG2E,QAAQqsK,GACxB,GAAIA,IAAehxK,EAAG6/D,SAAU,CAK9B7/D,EAAGujH,WAAW2oB,eAAe8kC,EAAY,CACvCnxH,MAAAA,IAEF//C,EAAUkxK,WAAaA,IAU7BpxK,YAAYwwB,GACV,MAAMpwB,EAAKC,KACTg5K,EAAc7oJ,EAAMurK,cAEtB,IAAKzjJ,GAAU4O,cAAgBmyH,GAAej5K,EAAGF,WAAaE,EAAG44L,oBAAqB,CACpF54L,EAAGgd,WAAW,CACZ/E,GAAI,kBACJ8E,MAAO,GACPvB,KAAM,CAACy9J,GACPtqJ,kBAAmB,QAIzB/uB,gBAAgBq5K,GACdh5K,KAAKH,UAAUkxK,WAAaiI,EAM9Br5K,QAAQwwB,GACN,MAAM6oJ,EAAc7oJ,EAAMxxB,OAAOslD,QAAQjkD,KAAK8wK,cAC9C,GAAIkI,EAAa,CACfh5K,KAAK27L,YAAY3iB,EAAa7oJ,IAOlCxwB,kBAAkBwwB,GAChB,MAAMpwB,EAAKC,KACTy5J,EAAS15J,EAAGF,UAAUkxK,WACxB,GAAIhxK,EAAG6/D,SAAU,CACf,OAEF,OAAQzvC,EAAMlxB,KACZ,IAAK,IAGH,GAAIkxB,EAAMxxB,OAAO6tD,SAASliD,gBAAkB,UAAY6lB,EAAMxxB,OAAOk6E,SAAU,CAC7E,MAGJ,IAAK,QAEH,GAAI4gF,EAAQ,CACVz5J,KAAK27L,YAAYliC,EAAQtpI,GAIzBA,EAAMutC,2BACNvtC,EAAM21B,mBAKdnmD,YAAYgS,EAAMwe,GAChB,MAAMpwB,EAAKC,KACTkQ,EAAQ9G,SAASuI,EAAK+kB,QAAQxmB,OAChC,IAAIsiE,EAASzyE,EAAG6rE,MAAMonB,MAAM9iF,GAC5B,GAAInQ,EAAG6/D,UAAY7/D,EAAGwtB,QAAQ,aAAc,CAC1C5b,KAAAA,EACA6gE,OAAAA,EACAtiE,MAAAA,EACAigB,MAAAA,EACAolH,WAAY,SACP,MAAO,CACZ,OAEFx1I,EAAG84H,cAAgB,KACnB,GAAI94H,EAAG04L,kBAAoBjmH,IAAWA,EAAO6T,aAAc,CAEzD,IAAK10E,EAAKomC,SAAS5nB,EAAMxxB,OAAOslD,QAAQ,oBAAqB,CAC3D,MAAMy0I,EAAW34L,EAAG24L,SACpB,IAAImB,EAAanB,EAAS9sL,SAAS4mE,GACnC,GAAIzyE,EAAGm4L,YAAa,CAClB,GAAIn4L,EAAGo4L,wBAA0BhoK,EAAM2yB,QAAS,CAC9C0vB,EAASzyE,EAAG6rE,MAAMqG,aACb,GAAIlyE,EAAG04L,kBAAoBjmH,EAAO6T,aAAc,CACrDwzG,GAAcrnH,EAAOof,cAAcjqF,MAAK+pF,IAAQgnG,EAAS9sL,SAAS8lF,KAClElf,EAASA,EAAOof,cAElB8mG,EAASmB,EAAa,SAAW,OAAOrnH,OACnC,CACLkmH,EAASxgL,OAAO,EAAGwgL,EAAS10K,MAAOwuD,SAEhC,GAAI7gE,EAAKomC,SAAS5nB,EAAMxxB,OAAOslD,QAAQ,sBAAuB,CACnElkD,EAAG67L,iBAAiBjqL,EAAMwe,IAG9BpwB,EAAG87L,YAAcrpH,EACjBzyE,EAAGwtB,QAAQ,OAAQ,CACjB5b,KAAAA,EACA6gE,OAAAA,EACAtiE,MAAAA,EACAigB,MAAAA,EACAolH,WAAY,OAEdx1I,EAAG84H,cAAgB,MAOrBl5H,mBAAkByyD,OAChBA,EAAMlvC,QACNA,EAAO2xD,MACPA,EAAKsW,SACLA,IAEA,MAAMprF,EAAKC,MACT+3L,YACEA,EAAW+D,cACXA,GACE/7L,EACN,IAAIyyE,EAAQ7gE,EACZ,GAAIygD,IAAW,QAAS,CACtB,IAAKzgD,KAAQ5R,EAAG02C,QAAQsZ,iBAAiB,IAAIgoI,KAAgB,CAC3DpmL,EAAKitC,UAAU98C,OAAOi2L,GACtBpmL,EAAK89C,aAAa,gBAAiB,OACnCqsI,GAAiBnqL,EAAKitC,UAAU98C,OAAOg6L,SAEpC,GAAI1pI,IAAW,gBAAiB,CACrC,IAAKogB,KAAUtvD,EAAS,CACtBvR,EAAO5R,EAAG2E,QAAQ8tE,GAClB,GAAI7gE,EAAM,CACRA,EAAKitC,UAAU98C,OAAOi2L,GACtBpmL,EAAK89C,aAAa,gBAAiB,QAGvC,IAAK+iB,KAAUqC,EAAO,CACpBljE,EAAO5R,EAAG2E,QAAQ8tE,GAClB,GAAI7gE,EAAM,CACRA,EAAKitC,UAAU7/B,IAAIg5K,GACnBpmL,EAAK89C,aAAa,gBAAiB,QAIzC1vD,EAAGq4L,eAAiBr4L,EAAG26L,uBAEzB/6L,iBAAiBgS,GACf,MAAMqkJ,EAAUrkJ,EAAKitC,UAAU7G,SAAS/3C,KAAK+3L,aAC7C,GAAI/hC,EAAS,CACXh2J,KAAKi6L,kBACA,CACLj6L,KAAK2xL,aAGThyL,uBACE,IAAIo8L,GACHA,EAAwB/7L,KAAKy2C,QAAQzuC,cAAc,yBAA2B,MAAQ+zL,SAA+B,OAAS,EAAIA,EAAsBn9I,UAAU8X,OAAO12D,KAAK+3L,YAAa/3L,KAAKy5L,aAOnMA,kBACE,MAAMf,SACJA,EAAQ9sH,MACRA,GACE5rE,KACJ,OAAO04L,EAAS10K,QAAU4nD,EAAMwgB,WAAaxgB,EAAMqG,QAAQ9hE,OAAM+f,GAAKwoK,EAAS9sL,SAASskB,KAAM07C,EAAM5nD,QAAU00K,EAAS10K,OAMzHrkB,UAAUqyH,GACR,MAAMjyH,EAAKC,KAEX,GAAID,EAAGm4L,cAAgBlmE,EAAU,CAC/BjyH,EAAG24L,SAAS35K,IAAIhf,EAAG6rE,MAAMqG,SACzB,GAAI+/C,IAAajyH,EAAGF,UAAUkxK,WAAY,CACxChxK,EAAGF,UAAUkxK,WAAahxK,EAAG2E,SAAS,KAQ5C/E,cACEK,KAAK04L,SAASj6I,QAWhB9+C,OAAOq8L,GACL,MAAMpwH,MACFA,GACE5rE,MACJu6E,WACEA,GACE3O,EACNowH,EAAWl5K,GAAYm7B,QAAQ+9I,GAAUvwL,QAAO,CAAC+B,EAAGlI,KAClDA,EAAIsmE,EAAMiB,QAAQ0N,EAAWiH,KAAKl8E,IAClC,GAAIA,EAAG,CACLkI,EAAEhP,KAAK8G,GAET,OAAOkI,IACN,IACHxN,KAAK04L,SAAS35K,IAAIi9K,GAWpBr8L,SAASs8L,GACP,MAAM1hH,WACJA,GACEv6E,KAAK4rE,MACTqwH,EAAan5K,GAAYm7B,QAAQg+I,GAAYxwL,QAAO,CAAC+B,EAAGlI,KACtDA,EAAItF,KAAK04L,SAAShnL,IAAI6oE,EAAWiH,KAAKl8E,IACtC,GAAIA,EAAG,CACLkI,EAAEhP,KAAK8G,GAET,OAAOkI,IACN,IACHxN,KAAK04L,SAAS52L,OAAOm6L,IAIzB9xE,GAAKvzC,YACLuzC,GAAKt8G,UAAUquL,eAAiBxrB,GAChCvmD,GAAKjiH,OAAS,OAWd,MAAMi0L,WAAiBhyE,GAErBp8G,mBACE,MAAO,WAGTlB,kBACE,MAAO,WAETrN,0BACE,MAAO,CACLmwI,QAAS,SAOTuoD,YAAa,MAYbhkC,SAAU,KAMVkoC,QAAS,KAMTC,aAAc,MAGlB18L,eAAe6yE,EAAQ5zE,GACrB,MAAMmB,EAAKC,KACX,OAAOmrK,GAAeG,GAAG,GAAGvrK,EAAGq8L,QAAUp8L,KAAKo8L,QAAQ5pH,GAAU;cACtDzyE,EAAGy5L,QAAQhnH,EAAQ5zE;cACnBmB,EAAGm0J,SAAW,qEAAuE,KAEjGv0J,kBAAkBwwB,GAChB,MAAMpwB,EAAKC,KACX,GAAID,EAAGm0J,UAAYn0J,EAAG24L,SAAS10K,QAAUmM,EAAMlxB,MAAQ,UAAYkxB,EAAMlxB,MAAQ,aAAc,CAC7Fc,EAAGyuB,SAASzuB,EAAGs8L,aAAct8L,EAAG4Y,MAAO,CAAC5Y,EAAG24L,SAAS7sL,OAAQ,CAC1DqpL,WAAY,YAET,CACLh7K,MAAM0xH,kBAAkBz7G,IAG5BxwB,eAAeu0J,GACbl0J,KAAKy2C,QAAQmI,UAAUs1G,EAAW,MAAQ,UAAU,oBACpDl0J,KAAKH,YAAcG,KAAKH,UAAU+/D,UAAYs0F,GAC9C,IAAKl0J,KAAKwd,cAAe,CACvBxd,KAAK84L,WAGTn5L,QAAQwwB,GACN,MAAMpwB,EAAKC,KACT2R,EAAOwe,EAAMxxB,OAAOslD,QAAQ,IAAIlkD,EAAG4vI,WACrC,GAAI5vI,EAAGm0J,UAAY/jI,EAAMxxB,OAAOigD,UAAU7G,SAAS,gBAAiB,CAClE,MAAMy6B,EAASzyE,EAAG6rE,MAAMonB,MAAM5pF,SAASuI,EAAK+kB,QAAQxmB,QACpDnQ,EAAGyuB,SAASzuB,EAAGs8L,aAAct8L,EAAG4Y,MAAO,CAAC,CAAC65D,SACpC,CACLt4D,MAAMoiL,QAAQnsK,KAKpBgsK,GAASvlH,YACTulH,GAASj0L,OAAS,WAElB,MAAMq0L,GAAqB,yBACzBC,GAAsB,0BACtBC,GAA0B,8BAwF5B,MAAMz0E,WAAc6tE,GAMlB9nL,mBACE,MAAO,QAGTlB,kBACE,MAAO,QAGTuqE,mBACE,MAAO,oBAET53E,0BACE,MAAO,CAyBLk9L,cAAe,GACf1G,OAAQ,CACNnpL,KAAM,OACNqwD,SAAU,KACVu5D,aAAc,UACdu8C,eAAgB,MAChB2lB,oBAAqB,KACrBtiJ,MAAO,CACLA,MAAO,QACP4E,SAAU,MAEZ+7E,UAAW,IACX1T,WAAY,CACVh2D,UAAW,MAEbw6F,SAAU,MACVqQ,aAAc,OAwBhB+/B,YAAa,KA2Cbj1K,MAAO,KAKP2oD,MAAO,KAMP+wH,WAAY/5L,UAKZq1L,aAAc,OAKd2E,YAAa,KAUb7F,SAAU,KACV2B,SAAU,KAwBVmE,YAAa,KAQbC,qBAAsB,KAKtBC,QAAS,KACTjP,SAAU,CACRj2F,OAAQ,CACN/hF,IAAK,gBACLjG,QAAS,mBASbo9F,gBAAiB,KA0BjB4B,mBAAoB7kB,GAAWA,EAAQngF,KAAIse,GAAKA,EAAE5oB,QAMlDy9L,cAAe,MAOfC,YAAa,KAObC,cAAe,KASfC,qBAAsB,KACtBrmE,cAAe,SAWfsmE,cAAe,MAkBfC,eAAgB,aAOhBj1G,cAAe,MAOfk1G,mBAAoB,KAUpBC,SAAU,CACR/7K,QAAS,CAAC,OAAQ,WAClBjiB,MAAO,CACLsN,KAAM,kBAGV2wL,UAAW,CACTh8K,QAAS,CAAC,OAAQ,WAClBjiB,MAAO,IAWTk+L,eAAgB,KAMhBC,UAAW,KAkBXn+L,MAAO,KACPo+L,gBAAiB,CACfn8K,QAAS,CAAC,UAAW,QACrBjiB,MAAO,IAOT6pH,eAAgB,KAMhBw0E,sBAAuB,KAEvBC,aAAc,MAQdC,oBAAqB,IAyCrBC,kBAAmB,KACnB9rI,KAAM,WASN+rI,aAAc,KACd/7K,WAAY,CAGVk7K,qBAAsB,GASxBc,sBAAuB,MAMvBC,WAAY,MAUhBC,uBACE,MAAO,OAGTx+L,UAAUwY,GACR+B,MAAMsB,aAAa3c,WAEnB,IAAKmB,KAAK4rE,MAAO,CACf5rE,KAAKijB,MAAQ,GAEf,GAAIjjB,KAAKg9L,cAAe,CACtBh9L,KAAKi9L,YAAc,MAGvBt9L,eAAewY,GACbnY,KAAKo+L,mBAAqBjmL,EAAOwkL,aAAe,KAChDziL,MAAM0D,kBAAkB/e,WAE1Bc,iBACEua,MAAM2B,iBACN,MAAM9b,EAAKC,KACX,IAAKgxC,GAAa9+B,OAAOnS,EAAI,UAAW,CACtCA,EAAG4vD,OAAS5vD,EAAG48L,aAAe58L,EAAGk4L,aAAe,GAAK,KAErDl4L,EAAGkzL,WAAalzL,EAAGkzL,YAAclzL,EAAG4vD,QAGxC+6E,iBACE,MAAM2zD,UACFA,EAAS5H,QACTA,GACEz2L,KACJmM,EAAS+N,MAAMwwH,WACjB,GAAI2zD,EAAW,CACblyL,EAAO3N,KAAK6/L,GAEd,GAAI5H,EAAS,CACXtqL,EAAO3N,KAAKi4L,GAEd,OAAOtqL,EAET8jL,oBACE,IAAIqO,EACJ,MAAMC,GAAmBD,EAAkBt+L,KAAKq+L,aAAe,MAAQC,SAAyB,OAAS,EAAIA,EAAgB7nJ,SAE3H0vF,MACEA,EAAK+qD,aACLA,GACElxL,KACN,GAAIu+L,EAAiB,CAGnBhkF,GAAQ+K,KAAK,CACX1jE,cAAeukF,EACf/oF,UAAW8zI,IAGf,MAAO,CAACqN,GAAmBrN,GAE7BvxL,mBAAmBq+L,GACjB,GAAIA,EAAc,CAChBh+L,KAAKy2C,QAAQmI,UAAU7/B,IAAI,mBAE3B/e,KAAKme,UAAU,UAEfne,KAAK8tL,SAASj2F,OAAS,KACvB73F,KAAK22L,cAAgB,MAGzBh3L,aACE,IAAKK,KAAKg+L,aAAc,CACtB,OAAO9jL,MAAM28K,cAAch4L,YAG/Bc,gBAAgB69L,GACd,GAAIA,KAAeA,aAAqB52F,IAAQ,CAC9C42F,EAAY,IAAI52F,GAAMA,GAAM1uB,aAAa,CACvCh0E,QAASlE,KAAK29L,iBACbH,IAEL,OAAOA,EAET79L,gBAAgBisE,EAAOtzD,GACrBA,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAIyD,UAEhDpc,eAAe49L,EAAUiB,GACvB,MAAMz+L,EAAKC,KACXD,EAAG02C,QAAQmI,UAAU2+I,EAAW,MAAQ,UAAU,mBAClD,GAAIA,EAAU,CACZ,MAAMp3D,MACJA,GACEpmI,EACJ,IAAKA,EAAGy9L,UAAW,CACjBz9L,EAAGy9L,UAAY,GAEjB,OAAOiB,GAAchnH,YAAY+mH,EAAajB,EAAU,CACtDt7I,SAAU,CACR3vC,OAAQvS,EACR2zD,aAAcyyE,EACdv6D,MAAO7rE,EAAGy9L,UACVtpC,UAAWn0J,EAAG84E,SACdh5E,UAAW,CACTgN,KAAM,qBACN+jK,eAAgBzqC,MAKxBq4D,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYziL,UAExEpc,eAAe49L,GACb,IAAImB,EACJ,MAAM3+L,EAAKC,KACXD,EAAG4+L,wBAA0BD,EAAwB3+L,EAAG4+L,0BAA4B,MAAQD,SAA+B,OAAS,EAAIA,EAAsB73L,KAAK9G,GACnKA,EAAGy9L,UAAYD,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAAS3xH,MAC5E,GAAI2xH,EAAU,CAEZA,EAAS9mJ,QAAQh1C,YAAY1B,EAAGomI,OAEhCpmI,EAAG4+L,uBAAyB79I,GAAY3xB,GAAG,CACzCsnB,QAAS8mJ,EAAS9mJ,QAClB2P,UAAW,sBACX9pC,QAASvc,KAIfJ,kBAAkBu4L,EAAa0G,GAC7B,MAAM7+L,EAAKC,MACTmmI,MACEA,EAAK1vF,QACLA,GACE12C,EACJ8+L,GAAY9+L,EAAGyd,cACjB,IAAIje,MACFA,GACEQ,EACJ02C,EAAQmI,UAAUs5I,EAAc,MAAQ,UAAU,iBAClD,GAAIA,EAAa,CACf,MAAMqF,SACFA,GACEx9L,GACJ0qD,WACEA,GACE07E,EACJ24D,EAAavB,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAAS9mJ,QAE5E,GAAIqoJ,GAAcA,IAAer0I,EAAY,CAE3CA,EAAWiJ,aAAaorI,EAAY34D,GACpC24D,EAAWr9L,YAAY0kI,GACvBpmI,EAAGw9L,SAASzE,UAEd3yD,EAAM5mI,MAAQ,GACd,GAAIs/L,EAAU,CACZt/L,EAAQujB,GAAYm7B,QAAQ1+C,QAK3B,CAEH,MAAMg+L,EAAWx9L,EAAGs+L,WAClB5zI,WACEA,GACE07E,EACJ24D,EAAavB,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAAS9mJ,QAC5E,GAAIqoJ,IAAer0I,EAAY,CAE7Bq0I,EAAWr0I,WAAWiJ,aAAayyE,EAAO24D,GAI1CA,EAAWh9L,SACX20C,EAAQmI,UAAU98C,OAAO,mBAE3B,GAAI+8L,UAAmBt/L,IAAU,SAAU,CACzC,IAAIowD,EACJpwD,GAASowD,EAASpwD,KAAW,MAAQowD,SAAgB,GAAKA,EAAO7wD,OAASS,EAAM,GAAK,MAGzF,GAAIs/L,EAAU,CACZ9+L,EAAGR,MAAQA,GAGfI,oBAAoBo/L,GAClBA,EAAej5I,iBACf,IAAK9lD,KAAKwrI,cAAe,CACvBxrI,KAAK80D,SAGTn1D,YAAYsyE,EAASrlE,EAAU,IAG7B,GAAIA,EAAQsoL,YAAcl1L,KAAKmmI,MAAM5mI,QAAU,KAAOqN,EAAQsoL,WAAY,CACxEl1L,KAAK64H,cAAgB,KACrB74H,KAAK29L,gBAAgB77L,OAAOmwE,GAC5BjyE,KAAK64H,cAAgB,OAGzBl5H,sBAAsBstG,GACpB,GAAIjtG,KAAKi9L,cAAgB,MAAO,CAC9Bj9L,KAAKi9L,YAAc/8L,QAAQ+sG,IAG/BttG,kBAAkBs9L,GAChBj9L,KAAKy2C,QAAQmI,UAAUq+I,EAAc,MAAQ,UAAU,kBAGzDt9L,2BAA2Bmd,GACzB,MAAM/c,EAAKC,KACX,GAAI8c,EAAO,CACT/c,EAAGi/L,cAAgBj/L,EAAGinB,OAAOjnB,EAAGi/L,cAAeliL,IAGnDnd,eAAek5E,GACb3+D,MAAM6tI,kBAAkBlpJ,WAExBmB,KAAKq+L,YAAcr+L,KAAKq+L,UAAUnqC,UAAYr7E,GAEhDl5E,eAAeigE,GACb1lD,MAAMkjI,kBAAkBv+I,WAExBmB,KAAKq+L,YAAcr+L,KAAKq+L,UAAUnqC,UAAYt0F,GAEhDjgE,qBAAqB09L,GACnB,GAAIr9L,KAAK08L,cAAe,CACtB18L,KAAK08L,cAAcx0G,SAAWm1G,GAGlCtG,eACE,MAAMA,EAAW/2L,KAAKi/L,UACtB,GAAIlI,GAAY,KAAM,CACpB,OAAOA,EAGT,OAAO/2L,KAAK+1F,aAAe,EAAI,EAEjCqzB,qBAEE,OAAOppH,KAAKk/L,kBAAoBl/L,KAAK+9L,kBAEvC96K,YACE,OAAOjjB,KAAK4rE,MAAMmP,WAEpBp7E,iBAAiBqY,GACf,GAAIA,EAAI,CACNhY,KAAKijB,MAAQjL,EAAGnR,KAAK7G,OAOzBL,YAAYsjB,GACV,IAAImwH,EACJ,MAAMrzI,EAAKC,KACX,GAAIijB,GAAS,KAAM,CACjB,GAAIljB,EAAG6rE,QAAU7rE,EAAG6rE,MAAMuzH,YAAa,CACrC,OAEFl8K,EAAQ,GAEV,GAAIljB,EAAGm+L,eAAiB9qD,EAASnwH,KAAW,MAAQmwH,SAAgB,GAAKA,EAAOt0I,QAAS,CACvFmkB,EAAQljB,EAAGm+L,aAEb,GAAIj7K,aAAiB2jF,GAAO,CAC1B7mG,EAAG6rE,MAAQ3oD,EACX,OAEF,MAAMg1K,EAAel4L,EAAGk4L,aACxB,IAAImH,EACFzC,EAAa58L,EAAG48L,WAChBjzF,EACF,GAAIniG,MAAMC,QAAQyb,GAAQ,CACxBymF,EAAYzmF,EAAMpZ,KAAI8H,IACpB,IAAIxF,EAASwF,EACb,GAAIA,aAAgBgqE,GAAO,CACzByjH,EAAYztL,EAAKtB,YACjB,IAAKssL,EAAY,CACf58L,EAAG48L,WAAaA,EAAayC,EAAUxjH,aAEpC,CACL,UAAWjqE,IAAS,iBAAmBA,IAAS,SAAU,CACxD,IAAKgrL,EAAY,CACf58L,EAAG48L,WAAaA,EAAa58L,EAAGk4L,aAElC9rL,EAAS,CACPxM,CAACg9L,GAAahrL,EACdhS,CAACs4L,GAAetmL,OAEb,CACL,IAAKgrL,EAAY,CACf58L,EAAG48L,WAAaA,EAAa,QAE/B,GAAIp1L,MAAMC,QAAQmK,GAAO,CACvBxF,EAAS,CACPxM,CAACg9L,GAAahrL,EAAK,GACnBhS,CAACs4L,GAAetmL,EAAK,MAK7B,GAAIA,EAAK+mL,SAAU,CACjB34L,EAAGR,MAAQ4M,EAEb,OAAOA,SAIN,CACH,IAAKwwL,EAAY,CACf58L,EAAG48L,WAAaA,EAAa,QAE/BjzF,EAAY,GACZzrG,OAAO6I,QAAQmc,GAAOjkB,SAAQ,EAAEC,EAAKM,MACnCmqG,EAAUlrG,KAAK,CACbmB,CAACg9L,GAAa19L,EACdU,CAACs4L,GAAe14L,OAKtB,GAAIQ,EAAG6rE,MAAO,CACZ7rE,EAAG6rE,MAAM1xC,KAAOwvE,MACX,CACL,MAAM21F,EAAuB1C,IAAe1E,EAAe,CACzDxzL,KAAM,QACN8zE,WAAY0/G,GACV0E,EACJ58L,EAAG6rE,MAAQ,IAAIg7B,GAAM,CACnBu4F,YAAa,KACbjlK,KAAMwvE,EACN9tB,QAAS+gH,EAGTliH,qBAAsB,MACtBF,WAAY6kH,GAAa,cAAczjH,GACrCC,qBAGE,OAAO77E,EAAG48L,WAEZ/gH,mBAAmBA,GACjB1hE,MAAM0hE,QAAUA,EAElBvC,oBACE,MAAO,CAACgmH,EAAsBpH,QAMxC14L,YACE,MAAMQ,EAAKC,MACT29L,gBACEA,EAAehB,WACfA,GACE58L,EACN,GAAI48L,GAAc,KAAM,CACtB,OAAO58L,EAAGm4L,YAAcyF,EAAgB9xL,OAAOoG,QAAU0rL,EAAgBryJ,MAE3E,IAAI/rC,EACJ,GAAIQ,EAAGm4L,YAAa,CAClB34L,EAAQo+L,EAAgB35K,MAAQ25K,EAAgB9zL,KAAIqmB,GAAKA,EAAEysK,KAAe58L,EAAGkzL,YAAc,OACtF,CACL1zL,EAAQo+L,EAAgB35K,MAAQ25K,EAAgBryJ,MAAMqxJ,GAAc58L,EAAGkzL,WAEzE,OAAO1zL,EAETA,UAAUA,GACR2a,MAAM3a,MAAQA,EAGhBm0L,qBAIE,OAAO1zL,KAAKs/L,aAAe,OAASt/L,KAAK6tL,SAE3CluL,YAAYJ,EAAOsa,GACjB,IAAI0lL,EACJ,MAAMx/L,EAAKC,KACX,GAAIT,IAAUsa,EAAU,CAEtB9Z,EAAGmzL,oBAAoB,MACvB,OAEF,IAAKnzL,EAAGm4L,aAAe3wL,MAAMC,QAAQjI,IAAUA,EAAMT,OAAS,EAAG,CAC/D,MAAM,IAAI4R,MAAM,4DAGlB3Q,EAAGse,cAAc,SAGjB,IAAKte,EAAGgzL,UAAW,CACjB,IAAIyM,GACHA,EAAgBz/L,EAAGs+L,aAAe,MAAQmB,SAAuB,OAAS,EAAIA,EAAc9G,SAASj6I,QAGxG,IAAK1+C,EAAG6rE,MAAO,CACb7rE,EAAGkjB,MAAQ,GAEb,MAAM05K,WACFA,EAAU1E,aACVA,EAAYrsH,MACZA,EAAK+xH,gBACLA,EAAelH,QACfA,GACE12L,GACJmE,QACEA,GACE0nE,EACJirH,GAAc0I,EAAwBx/L,EAAGu9L,sBAAwB,MAAQiC,SAA+B,EAAIA,GAAyBx/L,EAAGm4L,YACxIuH,EAAe1/L,EAAG84H,gBAAkB49D,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ59D,gBAAkBg+D,GAAc92L,EAAG42L,eAAiB,MAEpJ,IAAK52L,EAAGg2F,cAAgBnqB,EAAM8zH,cAAgB9zH,EAAM5nD,MAAO,CACzD4nD,EAAMz8C,GAAG,QAAQ,IAAMpvB,EAAGR,MAAQA,GAAO,CACvCqtB,KAAM,KACNtQ,QAASvc,IAGXA,EAAGkzL,WAAa1zL,EAChB,OAIF,GAAIQ,EAAGg2F,aAAc,CAEnB,GAAIx2F,GAAS,KAAM,CACjB,GAAIyxC,GAAaphC,SAASrQ,IAAUA,EAAMkvE,QAAS,CACjDzuE,KAAK4rE,MAAM1xC,KAAO,CAAC36B,GACnBS,KAAK29L,gBAAgBzlL,OAAO,EAAGlY,KAAK29L,gBAAgB35K,MAAOhkB,KAAK4rE,MAAMtgC,WACjE,CACL,MAAM5tB,EAAiB3d,EAAGyd,cAC1Bzd,EAAG28L,cAAcljL,UAAU,CACzBja,MAAAA,EACAqgE,SAAU,QAEZgM,EAAMyqB,cAAc,MAAM5lF,MAAK,KAC7B,MAAM+M,cACJA,GACEzd,EAGJA,EAAGyd,cAAgBE,EACnBigL,EAAgBzlL,OAAO,EAAGylL,EAAgB35K,MAAO4nD,EAAMmP,YACvDh7E,EAAGyd,cAAgBA,KAGvB,aAKC,GAAIouD,EAAMmrB,SAAU,CACvBh3F,EAAG28L,cAAc98H,SAAW,KAC5BgM,EAAMxtE,SAER,IAAIo0E,EACJ,GAAIjzE,GAAS,KAAM,CAEjB,MAAMogM,EAAcp4L,MAAMC,QAAQjI,GAChCsM,EAAS8zL,EAAcpgM,EAAM0S,QAAU,CAAC1S,GAC1C,IAAK,IAAIX,EAAI,EAAGykB,EAAMxX,EAAO/M,OAAQF,EAAIykB,EAAKzkB,IAAK,CACjD,IAAI2a,EAAe1N,EAAOjN,GAC1B,GAAI2a,aAAwBoiE,GAAO,CAGjC,IAAKz3E,EAAQ0H,SAAS2N,EAAc,MAAO,CACzCqyD,EAAM7sD,IAAIxF,QAEP,CACL,MAAM3J,EAAWohC,GAAaphC,SAAS2J,GAEvC,GAAI3J,EAAU,CACZ2J,EAAeA,EAAaojL,GAM9BnqH,EAAStuE,EAAQ4qF,MAAMmpG,EAAc1+K,IAAiBrV,EAAQ4qF,MAAM6tG,EAAYpjL,IAAiBokL,EAAgB7uG,MAAMmpG,EAAc1+K,IAAiBokL,EAAgB7uG,MAAM6tG,EAAYpjL,GAGxL,GAAIi5D,aAAkB3zD,IAAK,CACzB2zD,EAAS,IAAIA,GAAQ,GAEvB,GAAIA,EAAQ,CAEV,GAAI5iE,EAAU,CACZ4iE,EAAOlhE,IAAIzF,EAAOjN,IAEpBiN,EAAOjN,GAAK4zE,MACP,CACL3mE,EAAOqM,OAAOtZ,EAAG,GACjBykB,IACAzkB,MAIN,MAAMo7L,GAAanuL,EAAO/M,OAE1B,MAAM8gM,EAAQjC,EAAgBtgH,WAC9BsgH,EAAgBzlL,OAAO,EAAGylL,EAAgB35K,MAAOnY,GAIjD,GAAImuL,EAAW,CACbj6L,EAAG4vD,OAASgwI,GAAepgM,EAAMT,SAAW,EAAI,KAAOS,EAEvDQ,EAAGkzL,WAAalzL,EAAG4vD,OAKrB,GAAIqqI,GAAa2D,EAAgBtgH,aAAeuiH,EAAO,CACrD7/L,EAAGmzL,sBAELnzL,EAAG+wL,YAGH,GAAIkJ,IAAcj6L,EAAGyd,cAAe,CAClCzd,EAAGwzL,mBAAmB,CACpBh0L,MAAAA,EACAsa,SAAAA,EACA07H,WAAYkqD,EACZhpD,MAAO12I,EAAG0mF,eAGT,CACL,GAAIk3G,EAAgB35K,MAAO,CACzB25K,EAAgBl/I,YACX,CACL,MAAM5kC,EAAW9Z,EAAG4vD,OAGpB5vD,EAAG4vD,OAAS,KACZ5vD,EAAGmzL,sBACHnzL,EAAG+wL,YACH,IAAK/wL,EAAGyd,cAAe,CACrBzd,EAAGwzL,mBAAmB,CACpBh0L,MAAAA,EACAsa,SAAAA,EACA07H,WAAYkqD,EACZhpD,MAAO12I,EAAG0mF,YAKlB1mF,EAAGkzL,WAAalzL,EAAG4vD,OAErBhwD,WAAWka,EAAUrB,GACnB,GAAIxY,KAAKk4L,YAAa,CACpB,OAAQlnJ,GAAaxF,QAAQ3xB,EAAUrB,GAEzC,OAAO0B,MAAM44K,cAAcj0L,WAE7Bc,oBAAmByyD,OACjBA,IAGA,GAAIA,IAAW,SAAU,CACvBpyD,KAAKkzL,oBAAoB,OAG7BvzL,oBAAoByzL,GAIlB,IAAKpzL,KAAKs/L,aAAc,CACtBplL,MAAMg5K,oBAAoBE,IAG9BkM,mBACE,OAAOp/L,QAAQF,KAAKk4L,aAAel4L,KAAKq+L,WAO1CrgJ,cACE,OAAOh+C,KAAK29L,gBAAgB35K,QAAU,EAExCsvK,iBAKE,MAAMvzL,EAAKC,KACX,IAAImM,EAASpM,EAAG24L,SAAW34L,EAAG24L,SAAS34L,EAAGk4L,cAAgBl4L,EAAGR,MAC7D,GAAIQ,EAAG+8L,qBAAsB,CAC3B3wL,EAASpM,EAAGyuB,SAASzuB,EAAG+8L,qBAAsB/8L,EAAI,CAACA,EAAG24L,SAAU34L,IAElE,OAAOoM,GAAU,KAAO,GAAKA,EAE/BkqL,6BACE,OAAOr2L,KAAKk4L,YAAcl4L,KAAKu9L,SAAS9mJ,QAAUv8B,MAAMm8K,uBAY1D12L,sBAAsBg+L,EAAiBkC,GACrCA,IAAuB,MAAQA,SAA4B,OAAS,EAAIA,EAAmB9jL,UAC3F,GAAI4hL,EAAiB,CACnB,IAAKA,EAAgB/yG,aAAc,CACjC+yG,EAAkB,IAAI9xG,GAAW,CAC/Bx+D,UAAW,CACTyyK,SAAU,4BACV16G,OAAQ,0BACRv4D,MAAO,IAEPvQ,QAAStc,QAIf,OAAO29L,GAGXh+L,oBAAoB+8L,GAClB,KAAMA,aAAyBz0G,IAAmB,CAChD,UAAWy0G,IAAkB,WAAY,CACvCA,EAAgB,CACdv0G,SAAUu0G,GAIdA,EAAgB,IAAIz0G,GAAiBvpF,EAAe,CAGlDiM,GAAM,UAENi1D,SAAU,KACVztD,SAAUnS,KAAKi4L,aACf/vG,SAAUloF,KAAKq9L,eACfj1G,cAAepoF,KAAKooF,eACnBs0G,IAEL,OAAOA,EAET/8L,YAAYisE,GACV,MAAM7rE,EAAKC,KACX,GAAIuH,MAAMC,QAAQokE,GAAQ,CACxB7rE,EAAGkjB,MAAQ2oD,EACX,OAEF,GAAIA,EAAO,CACT,UAAWA,IAAU,SAAU,CAC7BA,EAAQg7B,GAAMM,SAASt7B,QAClB,GAAI56B,GAAaphC,SAASg8D,GAAQ,CACvCA,EAAQ,IAAKA,EAAM6iC,QAAUhC,GAAY7F,IAAOh7B,GAChD7rE,EAAG89L,aAAe,KAEpB,MAAM9nG,EAAeh2F,EAAGg2F,cAAgBnqB,EAAMshC,eAC5CD,gBACEA,EAAe0wF,gBACfA,EAAeR,qBACfA,GACEp9L,EACJggM,EAAe,GACjB,GAAIhqG,GAAgBkX,EAAiB,CACnCrhC,EAAMqhC,gBAAkBA,EACxB,GAAIltG,EAAG8uG,mBAAoB,CACzBjjC,EAAMijC,mBAAqB9uG,EAAG8uG,oBAKlC,IAAK9uG,EAAG48L,aAAe58L,EAAGq+L,mBAAoB,CAC5Cr+L,EAAG48L,WAAa/wH,EAAM2O,WAAWqB,QAEnCmkH,EAAavhM,KAAKuB,EAAG28L,eACrB,GAAI3mG,EAAc,CAChB,GAAIh2F,EAAG09L,eAAgB,CACrB7xH,EAAM1nE,QAAQ8nF,WAAa,KAC3BpgB,EAAM1nE,QAAQkyF,UAAU,CACtBzrF,GAAI,GAAG5K,EAAG4K,qBACVw9E,SAAUj4D,IAAMytK,EAAgB/xL,SAASskB,WAGxC,GAAInwB,EAAG09L,eAAgB,CAC5B19L,EAAGigM,oBAAsB9vK,IAAMytK,EAAgB/xL,SAASskB,GACxD6vK,EAAavhM,KAAKuB,EAAGigM,qBACrBp0H,EAAMwpB,mBAAqB,KAM7BuoG,EAAgB3uG,SAAS,CACvB78E,SAAUpS,EAAGk4L,aACb1sG,OAAQ,QAEVoyG,EAAgB3uG,SAAS,CACvB78E,SAAUpS,EAAG48L,WACbpxG,OAAQ,OAGVw0G,EAAa/gM,SAAQmpB,GAAKyjD,EAAMwqB,UAAUjuE,EAAG,QAI7C,GAAI4tE,EAAc,CAEhBh2F,EAAGo9L,qBAAuB/oL,KAAKC,IAAI,IAAK8oL,GAAwB,OAC3D,CACLp9L,EAAGo9L,qBAAuBA,IAAyB,MAAQA,SAA8B,EAAIA,EAAuB,IAGxH,OAAOvxH,EAETjsE,YAAYisE,EAAOq0H,GACjB,MAAMlgM,EAAKC,MACTy2L,QACEA,GACE12L,EACN,IAAIm7L,EACJ,GAAIl7L,KAAK69L,cAAgBoC,EAAU,CACjCA,EAASlkL,UAEX,GAAI06K,EAAS,CACXA,EAAQ7qH,MAAQA,EAGlBA,EAAM1nE,QAAQ8qF,SAAS,CACrB78E,SAAUpS,EAAGk4L,aACb1sG,OAAQ,QAEV3f,EAAM1nE,QAAQ8qF,SAAS,CACrB78E,SAAUpS,EAAG48L,WACbpxG,OAAQ,OAEV2vG,EAAiB,CACf98L,OAAQ,iBAEV,GAAI2B,EAAG+8L,qBAAsB,EAC1B5B,IAAmBA,EAAiB,KAAK91G,OAAS,qBACnDrlF,EAAGmzL,sBAELnzL,EAAGwpE,gBAAgB,SAGnB,GAAI02H,EAAU,CACZ,MAAMpmL,EAAW9Z,EAAGR,MACpBQ,EAAGyd,cAAgB,KACnBzd,EAAGR,MAAQ,KACXQ,EAAGyd,cAAgB,MACnBzd,EAAGR,MAAQsa,EAEb,GAAIqhL,EAAgB,CAClBA,EAAez2L,KAAO,QACtBy2L,EAAe5+K,QAAUvc,EACzB6rE,EAAMz8C,GAAG+rK,IAGbnlG,mBACE,IAAImqG,EAEJ,OAAOhgM,QAAQF,KAAKitG,mBAAqBizF,EAAelgM,KAAKi7L,UAAY,MAAQiF,SAAsB,OAAS,EAAIA,EAAahzF,gBAOnI16B,aACE,OAAOxyE,KAAK04L,SAOdzmH,cACE,OAAOjyE,KAAK29L,gBAAgB9xL,OAAOoG,QAErCymL,eACE,MAAM9sH,MACJA,GACE5rE,KAGJ,OAAOA,KAAKk4L,YAAcl4L,KAAK29L,gBAAgB9xL,OAAOoG,QAAQgG,MAAK,CAACmX,EAAGc,IAAM07C,EAAMnmE,QAAQ2pB,GAAKw8C,EAAMnmE,QAAQyqB,KAAI,GAAKlwB,KAAK29L,gBAAgBryJ,MAQ9I3rC,iBACE,MAAMI,EAAKC,KACTmgM,EAAiBpgM,EAAG49L,gBAAgB35K,MACtC9J,MAAM81K,iBAEN,GAAImQ,EAAgB,CAClBpgM,EAAGg0L,WAAWyI,IACdz8L,EAAGmzL,sBAEL,GAAInzL,EAAGutL,WAAa6S,EAAgB,CAClCpgM,EAAGk0L,SAASsI,KAShB58L,eAAewwB,GACb,IAAIiwK,EACJ,MAAMrgM,EAAKC,KACTqgM,EAAkB,QAASlwK,EAE7B,GAAIpwB,EAAGi3L,oBAAsBj3L,EAAGg2F,cAAgBh2F,EAAGi9L,cAAe,CAChE,OAEF,GAAIj9L,EAAG42L,cAAe,CACpB52L,EAAG82L,kBACE,IAAK92L,EAAG84E,WAAa94E,EAAG6/D,SAAU,CACvC,QAASwgI,EAAoBrgM,EAAGq9L,iBAAmB,MAAQgD,SAA2B,OAAS,EAAIA,EAAkBn3L,eACnH,IAAK,MACHlJ,EAAGugM,SAAS,KAAMD,GAClB,MACF,IAAK,OACHtgM,EAAGugM,SAASvgM,EAAGwgM,UAAWF,GAC1B,MACF,QACEtgM,EAAGugM,SAASvgM,EAAGomI,MAAM5mI,MAAO8gM,KAQpC1gM,gBAAgBwwB,GACd,MAAMpwB,EAAKC,KACXD,EAAG+wL,YACH/wL,EAAGygM,iBAEHzgM,EAAGi/L,cAAc7uK,GAQjBpwB,EAAGwtB,QAAQ,QAAS,CAClBhuB,MAAOQ,EAAGomI,MAAM5mI,MAChB4wB,MAAAA,IAGJxwB,cAAcwwB,GACZ,MAAMpwB,EAAKC,KACTT,EAAQ4wB,EAAMxxB,OAAOY,MACrBkhM,EAAWlhM,EAAMT,OACnBiB,EAAGgzL,UAAY,KAIf,GAAIhzL,EAAGi+L,cAAgByC,GAAY1gM,EAAGg3L,YAAch3L,EAAGi9L,eAAiB7sK,EAAMlxB,MAAQ,SAAU,CAC9Fc,EAAGugM,SAAS/gM,OACP,CAEL,GAAIQ,EAAGqpH,iBAAmBrpH,EAAGg2F,aAAc,CACzCh2F,EAAG0gM,EAAW,WAAa,cAAcjE,IAE3Cz8L,EAAG82L,aAEL92L,EAAGgzL,UAAY,MAEjBpzL,iBACE,MAAMI,EAAKC,KACX,GAAID,EAAGu/L,aAAc,CACnB,MAAMn5D,EAAQpmI,EAAGomI,MAEfu6D,EAAe3gM,EAAG4gM,gBAAkB5gM,EAAG4gM,cAAgB1oJ,GAAU2oJ,YAAYz6D,EAAO,UAAW,OAC/F5mI,EAAQ4mI,EAAM5mI,OAAS,GACvB2H,EAEA+wC,GAAU4oJ,YAAYthM,EAAQ,IAAK4mI,EAAO,MAAOpmI,EAAG02C,SAAWiqJ,EAAax5L,MAK9Ei/H,EAAM9kI,MAAM+1H,KAAO,OAAOhjH,KAAKuqB,KAAKz3B,QAGxCvH,SAAS6G,EAAa65L,GACpB,IAAIS,EACJ,MAAM/gM,EAAKC,MACT4rE,MACEA,EAAKoqH,OAELA,GACEj2L,EACJghM,EAAgBv6L,GAAe,MAAQA,IAAgB,GACzDzG,EAAGwgM,UAAY/5L,EACfzG,EAAG28L,cAAcljL,UAAU,CACzBja,MAAOiH,EACPo5D,SAAUmhI,IAEZ,GAAIhhM,EAAGg2F,aAAc,CACnBnqB,EAAMntB,MAAM,MAEd,MAAMuiJ,EAAgB,KACpB,MAAMnhM,UACJA,EAAS+qD,UACTA,GACEorI,EACJ,GAAIpqH,EAAM5nD,MAAO,CAEf,IAAK+8K,GAAiBlhM,EAAW,CAC/BA,EAAUkxK,WAAa,QAOtB,IAAKhxK,EAAGg2F,eAAiBgrG,EAAe,CAC3C,GAAIlhM,EAAW,CACbA,EAAUkxK,WAAa,KAEzB,GAAIhxK,EAAGqpH,eAAgB,CACrBrpH,EAAGk0L,SAASuI,KAKhB5xI,GAAaorI,EAAOt9D,YAGrBooE,EAAoB/gM,EAAGkhM,cAAgBr1H,EAAMxtE,YAAc,MAAQ0iM,SAA2B,OAAS,EAAIA,EAAkBrwL,MAAK,KACjI1Q,EAAGkhM,cAAgB,KACnBD,OAEF,IAAKjhM,EAAGi+L,aAAc,CACpB,GAAIhI,IAAW,MAAQA,SAAgB,GAAKA,EAAOprI,UAAW,CAE5D,GAAIorI,EAAO92D,cAActkF,OAAS,EAAG,CACnCo7I,EAAOt9D,eAEJ,CACL34H,EAAGm3L,WAAWmJ,IAGlB,IAAKtgM,EAAGkhM,cAAe,CACrBD,KAGJrhM,eACEZ,OAAQ6sE,IAER,MAAM7rE,EAAKC,KACTg2L,EAASj2L,EAAG02L,QACZ//J,EAAUs/J,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOv/I,QAAQ/f,SACzE1S,MACEA,GACE4nD,EACN,GAAI7rE,EAAGg2F,aAAc,CAEnB,GAAI/xE,EAAO,CACT,GAAIgyK,EAAQ,CACVA,EAAOn2L,UAAUkxK,WAAa,OAI7B,CACH,GAAIhxK,EAAGqpH,eAAgB,CACrBrpH,EAAGk0L,SAASuI,KAIhB,GAAIz8L,EAAG09L,gBAAkB19L,EAAG49L,gBAAgB35K,MAAO,CACjD4nD,EAAM1nE,QAAQuqF,iBAAiB,CAC7Br8B,OAAQ,SACRo7B,SAAU,IAIZ,GAAIwoG,EAAQ,CACVA,EAAO8C,YAKb,GAAI/4L,EAAGg+L,oBAAsB/5K,EAAO,CAClC0S,EAAQyxF,YAAcpoH,EAAGo7B,EAAE,iBAALp7B,CAAuBA,EAAG28L,cAAcn9L,WACzD,CACLm3B,IAAY,MAAQA,SAAiB,EAAI,YAAcA,EAAQyxF,aAgBnExoH,yBACEZ,OAAQ4+L,IAER,IAAIuD,EACJ,MAAMnhM,EAAKC,MACTk4L,YACEA,EAAWzB,QACXA,GACE12L,EACJ82L,GAAcqK,EAAyBnhM,EAAGu9L,sBAAwB,MAAQ4D,SAAgC,EAAIA,GAA0BhJ,EACxI1lH,EAAS0lH,EAAcyF,EAAgB9xL,OAAOoG,QAAU0rL,EAAgBryJ,MACxE2mC,EAAU0rH,EAAgB9xL,OAAOoG,QACjCwtL,EAAe1/L,EAAG84H,gBAAkB49D,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ59D,gBAAkBg+D,GAAc92L,EAAG42L,eAAiB,MAClJ98K,EAAW9Z,EAAG4vD,OAChB,GAAIknI,EAAY,CACd92L,EAAG82L,aAEL,IAAK8G,EAAgB35K,OAASjkB,EAAGutL,SAAU,CACzCvtL,EAAGk0L,SAASsI,QACP,CACLx8L,EAAGg0L,WAAWwI,IACdx8L,EAAGg0L,WAAWyI,IAEhB,GAAIz8L,EAAGqpH,gBAAkB52C,EAAQ,CAC/BzyE,EAAGg0L,WAAWyI,IAIhB,GAAIz8L,EAAG09L,eAAgB,CACrB,GAAI19L,EAAGg2F,aAAc,CACnBh2F,EAAG6rE,MAAM1nE,QAAQuqF,iBAAiB,CAChCr8B,OAAQ,SACRo7B,SAAU,IAIZ,GAAIztF,EAAG02L,QAAS,CACd12L,EAAG02L,QAAQqC,eAER,CACL/4L,EAAG6rE,MAAMxtE,UAIb2B,EAAG4vD,OAAS,KACZ5vD,EAAGkzL,WAAa,KAGhB,MAAM1zL,EAAQQ,EAAGohM,kBAAkBphM,EAAGR,OACtCQ,EAAGmzL,sBACHnzL,EAAG+wL,YACH,IAAK/wL,EAAGyd,cAAe,CACrBzd,EAAGwzL,mBAAmB,CACpBh0L,MAAAA,EACAsa,SAAAA,EACA07H,WAAYkqD,EACZhpD,MAAO12I,EAAG0mF,UAUZ1mF,EAAGwtB,QAAQ,SAAU,CACnBilD,OAAAA,EACAP,QAAAA,EACAsjE,WAAYkqD,IAWd,GAAI1/L,EAAG+2H,gBAAkB,SAAU,CACjC/2H,EAAGwtB,QAAQ,SAAU,CACnBhuB,MAAAA,EACAizE,OAAAA,EACAP,QAAAA,EACAsjE,WAAYkqD,MAMpB9/L,kBAAkB6N,GAChB,OAAOxN,KAAK2vD,OAASniD,EASvB7N,2BAA0B6kB,MACxBA,IAEA,IAAKxkB,KAAKg+L,eAAiBh+L,KAAKk4L,aAAe1zK,EAAM1lB,QAAUkB,KAAK22L,cAAe,CACjF32L,KAAKg2L,OAAOrkE,QAKhBhyH,aACE,MAAMI,EAAKC,MACTg2L,OACEA,GACEj2L,EACN,GAAIA,EAAG84E,UAAY94E,EAAGi+L,aAAc,CAClC,OAEFhI,EAAOkC,YAAcn4L,EAAGm4L,YACxBh+K,MAAMg9K,cAAcr4L,WAEpB,GAAIkB,EAAGm9L,gBAAkBlH,EAAO3/I,MAAMvH,OAAQ,CAC5CknJ,EAAO3/I,MAAMvH,QAAUknJ,EAAO96I,WAAW,GACzC86I,EAAOt9D,UAGT,GAAIs9D,EAAOiD,kBAAmB,CAM5B,GAAIl5L,EAAGm4L,YAAa,CAClB,IAAIkJ,EACJpL,EAAOiD,oBAAoBmI,EAAoBpL,EAAOn2L,aAAe,MAAQuhM,SAA2B,OAAS,EAAIA,EAAkBzuB,qBAAuB5yK,EAAG24L,UAAY,EAAG,UAC3K,CACL1C,EAAOiD,kBAAkBl5L,EAAG24L,UAAY,EAAG,OAG/C34L,EAAGomI,MAAMrxE,QAOXn1D,aAAaq2L,EAAQQ,GACnB,IAAI6K,EACJ,MAAMthM,EAAKC,KACT48L,EAAc78L,EAAG68L,eAAiByE,EAAWrL,KAAY,MAAQqL,SAAkB,OAAS,EAAIA,EAASn6L,OACzGiR,EAASgyG,GAAKjyC,aAAa,CACzBv/D,MAAO5Y,EACP6rE,MAAO7rE,EAAG6rE,MACV8sH,SAAU34L,EAAG49L,gBACbzF,YAAan4L,EAAGm4L,YAChBpiL,IAAK/V,EAAGg9L,QACR9E,aAAcl4L,EAAGk4L,aACjBhxD,WAAYlnI,EAAGA,EAAG+1L,oBAClBz/I,MAAO,CACLqE,UAAWkiJ,GAAe,KAC1B7rL,OAAQhR,EAAGm9L,cACXv+L,OAAQoB,EAAGA,EAAG+1L,oBAKdz8I,UAAWt5C,EAAGi+L,aAAe,KAAO5pL,KAAKuU,IAAI,EAAG5oB,EAAG6rE,MAAM5nD,OAAS,IAEpErkB,CAACI,EAAG88L,YAAc,UAAYj6L,WAAY7C,EAAG88L,YAC7C31L,MAAO01L,EACP/8L,UAAW,CACT+wK,eAAgB7wK,EAAGomI,QAEpB6vD,GACL,GAAIj2L,EAAGi+L,aAAc,CACnB//L,OAAOmZ,OAAOe,EAAQ,CACpB+kD,SAAU,MACV7mB,MAAO,KACPsiJ,oBAAqB,MACrB3hE,UAAW,KACXf,SAAUl2H,EAAG02C,UAGjBu/I,EAAS7rE,GAAK1yC,YAAY++G,EAAWR,EAAS79K,EAAS,KAAMpY,GAC7D,GAAIi2L,EAAQ,CACVA,EAAOv/I,QAAQmI,UAAU7/B,IAAI,kBAC7Bi3K,EAAOv/I,QAAQ/f,QAAQgnK,UAAY39L,EAAG29L,UAAY39L,EAAGo7B,EAAEp7B,EAAG29L,WAAa39L,EAAGo7B,EAAE,gBAG5E66J,EAAO7mK,GAAG,CACRmyK,SAAU,mBACVhlL,QAASvc,IAGb,OAAOi2L,EAETr2L,kBAAiBwwB,MACfA,IAGA,GAAIA,EAAMxxB,OAAO2D,QAAQ,wBAAyB,CAChDtC,KAAKuhM,aAAavhM,KAAK08L,cAAcn9L,QAGzCI,eACE,MAAMI,EAAKC,KACXka,MAAMsnL,eAEN,GAAIzhM,EAAGm4L,aAAen4L,EAAG69L,sBAAuB,CAC9C79L,EAAGomI,MAAM5mI,MAAQ,IAIrBI,yBAAyBqyH,GACvB,MAAMjyH,EAAKC,KACTT,EAAQQ,EAAGomI,MAAMpmI,EAAGszL,gBACpBoN,EAAWlhM,EAAMT,QACjBG,IACEA,GACE+yH,GACJpmD,MACEA,EACA6qH,QAAST,EAAMkC,YACfA,GACEn4L,EAMN,GAAIiyH,EAASnlH,OAAS,WAAampL,IAAW,MAAQA,SAAgB,GAAKA,EAAOprI,WAAaorI,EAAOn2L,UAAW,CAC/G,MAAMkxK,WACJA,GACEilB,EAAOn2L,UAEX,GAAIkxK,GAAcmnB,GAAej5L,IAAQc,EAAG+9L,oBAAqB,CAC/D/9L,EAAGomI,MAAM5mI,MAAQ,GACjBQ,EAAG28L,cAAcljL,UAAU,CACzBja,MAAO,GACPqgE,SAAU,OAEZgM,EAAMxtE,SACN43L,EAAO2F,YAAY5qB,EAAY/+C,GAC/BgkE,EAAOrkE,OACPK,EAASlsE,iBACT,OAIF,IAAKirH,GAAchxK,EAAGg+L,oBAAsB7F,GAAej5L,IAAQc,EAAG+9L,qBAAuB7+L,IAAQ,SAAU,CAC7G+yH,EAASlsE,uBACH/lD,EAAGwhM,aAAahiM,GACtB,QAGJ2a,MAAM48K,sBAAsBj4L,WAC5B,GAAImzH,EAASnlH,OAAS,WAAa5N,IAAQ,SAAWc,EAAGi9L,eAAiByD,GAAY1gM,EAAGg3L,SAAU,CACjG/kE,EAASkrB,kBACTn9I,EAAGi/L,cAAchtE,IAGrBryH,mBAAmBJ,GACjB,MAAMQ,EAAKC,MACT4rE,MACEA,EACA6qH,QAAST,EAAM2H,gBACfA,EAAezF,YACfA,EAAWwE,cACXA,GACE38L,EACJ0hM,EAAmB71H,EAAMmqB,cAAgBnqB,EAAMwlB,WAMjD,GAAIrxF,EAAGkhM,cAAe,OACdlhM,EAAGkhM,cAKX,IAAKQ,EAAkB,CACrB/E,EAAcljL,UAAU,CACtBja,MAAO,GACPqgE,SAAU,OAEZgM,EAAMxtE,SAER,MAAO20E,GAAanH,EAAM7sD,IAAIhf,EAAGyuB,SAASzuB,EAAGg+L,kBAAmBh+L,EAAI,CAACR,EAAOQ,KAG5E,GAAI6rE,EAAMyY,aAAc,CACtB,IAAIrvD,EACJ,UACQ42C,EAAMmiC,cACZ,MAAOjL,GACP,IAAI4+F,EAAqBC,EACzB3sK,GAAS0sK,EAAsB5+F,EAAUnuE,YAAc,MAAQ+sK,SAA6B,OAAS,GAAKC,EAAwBD,EAAoB5sK,cAAgB,MAAQ6sK,SAA+B,OAAS,EAAIA,EAAsB3sK,MAIlP,GAAI+9C,EAAUuS,UAAW,CACvBvlF,EAAGg0L,aACHh0L,EAAGk0L,SAASj/J,GAASynK,GAAyB,MAAO,MACrD7wH,EAAM9pE,OAAOixE,GAIbnH,EAAM1oD,QAAQphB,OAAOixE,IAIzB,GAAI0uH,EAAkB,CACpB/E,EAAcljL,UAAU,CACtBja,MAAO,GACPqgE,SAAU,OAEZgM,EAAMxtE,SAER2B,EAAGomI,MAAM5mI,MAAQ,GAEjB,GAAIqsE,EAAMhgE,SAASmnE,GAAY,CAE7B4qH,EAAgBzlL,OAAOggL,EAAcyF,EAAgB35K,MAAQ,EAAGk0K,EAAc,EAAIyF,EAAgB35K,MAAO+uD,GAE3GijH,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOrkE,OAEzDhyH,wBAAwBo+L,GACtB,GAAIA,IAAsB,KAAM,CAC9BA,EAAoB/9L,KAAK4hM,qBAE3B,OAAO7D,EAETp+L,qBAAqBJ,GACnB,OAAOS,KAAK4rE,MAAM8C,aAAa,CAC7B/uE,CAACK,KAAKi4L,cAAe14L,IAGzBI,qBACEua,MAAMsf,qBACN,MAAMz5B,EAAKC,MACTi4L,aACEA,GACEl4L,EACN,IAAI8hM,0BACFA,GACE9hM,EACJ,GAAIA,EAAGk+L,wBAA0B,KAAM,CAErC,IAAK4D,EAA2B,CAC9B9hM,EAAG8hM,0BAA4BA,EAA4B,IAAIrwL,IAEjE,IAAKzR,EAAG6rE,OAAS7rE,EAAGm+L,WAAY,CAC9Bn+L,EAAGkjB,MAAQljB,EAAGm+L,aAEhB,IAAK,MAAMvsL,KAAQ5R,EAAGkjB,MAAO,CAE3B,GAAItR,EAAKhH,GAAI,CACX,IAAIm3L,EACJ,IAAIC,EAAeF,EAA0BnwL,IAAIC,EAAKhH,IAEtD,IAAKo3L,IAAiBD,EAAqBnwL,EAAKsmL,MAAmB,MAAQ6J,SAA4B,GAAKA,EAAmBl0L,WAAW,MAAO,CAC/Im0L,EAAepwL,EAAKsmL,GACpB4J,EAA0BvwL,IAAIK,EAAKhH,GAAIo3L,GAGzC,GAAIA,EAAc,CAChBpwL,EAAKsmL,GAAgBl4L,EAAGo7B,EAAE4mK,KAKhChiM,EAAGmzL,wBAIT,MAAMuL,WAAsBtC,GAC1BpuL,mBACE,MAAO,gBAETlB,kBACE,MAAO,gBAETgV,2BACE,MAAO,CACLw6K,aAAc,iBACdrpB,eAAgB,MAChBklB,YAAa,KACbv4L,QAAQ6yE,GACN,OAAOpoE,EAAaY,WAAWwnE,EAAOxyE,KAAK2Y,MAAMs/K,gBAEnD30E,WAAY,CACVh2D,UAAW,UAKnB,MAAM00I,WAA2BtxB,GAC/B3iK,mBACE,MAAO,qBAGTlB,kBACE,MAAO,qBAETrN,0BACE,MAAO,CACL0xK,cAAe,MAGnBvxK,cAAcg8I,GACZ,MAAM57I,EAAKC,KACT2R,EAAOgqI,EAAWh9I,OAAOslD,QAAQlkD,EAAG+wK,cAEtC,GAAIn/J,IAASgqI,EAAWh9I,OAAOigD,UAAU7G,SAAS,gBAAiB,CACjE,IAAK4jG,EAAWviC,WAAaznG,EAAKomC,SAAS4jG,EAAWh9I,OAAOslD,QAAQ,oBAAqB,CACxFlkD,EAAG47H,SAAS+8D,SAASj6I,QAKvB1+C,EAAGkiM,eAAiB,KACpBliM,EAAGgxK,WAAap/J,EAChB5R,EAAGkiM,eAAiB,OAGxBtiM,UAAUqyH,GAGR,GAAIA,EAAS/yH,MAAQ,QAAS,CAC5Bib,MAAMgoL,UAAUlwE,IAGpBryH,iBAAiBoxK,EAAYsC,GAC3B,MAAMkqB,EAAWv9L,KAAK27H,SACtBzhH,MAAMioL,iBAAiBpxB,EAAYsC,GAEnC,GAAItC,IAAe/wK,KAAKiiM,eAAgB,CACtC1E,EAAS7E,SAAS35K,IAAIw+K,EAAS6E,qBAAqBrxB,KAGxDpxK,iBAAiBqyH,GACf,MAAMurE,EAAWv9L,KAAK27H,SACtB,GAAI4hE,EAAS19L,UAAUkxK,aAAe/+C,EAAS5Y,SAAU,CACvDmkF,EAAS7E,SAASj6I,QAEpB,GAAIz+C,KAAK6+H,SAAU,CACjB3kH,MAAMi4J,iBAAiBngD,OAClB,CACLhyH,KAAK+wK,WAAa,MAGtBpxK,aAAaqyH,GACX,MAAMurE,EAAWv9L,KAAK27H,SAEtB,GAAI4hE,EAAS19L,UAAUkxK,aAAe/+C,EAAS5Y,SAAU,CACvDmkF,EAAS7E,SAASj6I,QAEpB,GAAIz+C,KAAKulB,KAAM,CACbrL,MAAMk4J,aAAapgD,OACd,CACLhyH,KAAK+wK,WAAa,OAKxB/oD,GAAMpxC,YACN6nH,GAAc7nH,YACdorH,GAAmBprH,YACnBoxC,GAAM9/G,OAAS,QAWf,MAAMm6L,WAAqBjwD,GACzBrkI,mBACE,MAAO,eAETlB,kBACE,MAAO,eAETrN,0BACE,MAAO,CAEL+rG,QAAS,KACT5/B,IAAK,KAML1gE,KAAM,KAKNixD,MAAO,KAMPomI,oBAAqB,KACrBxsL,IAAK,4BACLw8H,YAAa,CACXiwD,WAAY,UACZC,SAAU,aACVlhM,SAAU,WAEZ2hB,MAAO,CACLw/K,QAAS,CACP51L,KAAM,SACN+iH,KAAM,cACNhnE,QAAS,6BACT85I,SAAU,aAGZC,kBAAmB,CACjB91L,KAAM,QACN8vL,WAAY,MACZ9O,SAAU,MACVjiH,MAAO,GACP8xH,UAAW,wBACXgF,SAAU,2BACV5F,qBAAsB,uCAExB8F,QAAS,CACP/1L,KAAM,SACN+iH,KAAM,cACNhnE,QAAS,6BACT85I,SAAU,eAKlB/iM,iBACEK,KAAK6iM,yBAEPljM,UAAUgsE,GACRA,EAAIx8C,GAAG,CACL2zK,cAAe,yBACfC,cAAe,yBACfC,WAAY,yBACZpjI,SAAU,yBACVtjD,QAAStc,OAEX,OAAO2rE,EAEThsE,YAAYsjB,GACV,MAAMw/K,QACJA,EAAOG,QACPA,GACE3/K,EACJ,GAAIjjB,KAAKk8D,MAAO,CACdumI,IAAYA,EAAQvmI,MAAQl8D,KAAKk8D,OACjC0mI,IAAYA,EAAQ1mI,MAAQl8D,KAAKk8D,OAEnC,GAAIl8D,KAAKiL,KAAM,CACbw3L,IAAYA,EAAQx3L,KAAO,oBAC3B23L,IAAYA,EAAQ33L,KAAO,oBAE7B,OAAOiP,MAAM+oL,YAAYhgL,GAE3BtjB,cAAc4rG,GACZvrG,KAAK2rE,IAAM4/B,EAAQ5/B,IAErBhsE,oBACE,MAAMgjM,kBACJA,GACE3iM,KAAKsrI,UAETq3D,IAAsBA,EAAkB1/K,MAAQjjB,KAAK2rE,IAAI55C,MAAMloB,KAAI,CAACsoG,EAAO7gE,IAAQ,CAACA,EAAK6gE,GAAS,eAAe7gE,QAEnH3xC,yBACE,MAAMgsE,IACFA,EAAG22H,oBACHA,GACEtiM,MACJyiM,QACEA,EAAOG,QACPA,GACE5iM,KAAKsrI,UACXm3D,EAAQ17C,MAAQp7E,EAAIvwB,WAAaknJ,EAAsB,IAAM,IAC7DM,EAAQ77C,MAAQp7E,EAAI7sE,OAAS6sE,EAAIvwB,WAAaknJ,EAAsB,IAAM,IAC1EG,EAAQ7iI,UAAY+L,EAAIusC,QACxB0qF,EAAQhjI,UAAY+L,EAAIwsC,QACxBn4G,KAAKkjM,oBAEPvjM,iCAAiC6yE,EAAQ2wH,GACvC,IAAIC,EACJ,MAAMC,IAAWD,EAAYpjM,KAAK2rE,OAAS,MAAQy3H,SAAmB,OAAS,EAAIA,EAAUhoJ,WAAa,EAC1G,MAAO,GAAGioJ,oBAAyBF,EAAMv3H,MAAM5nD,MAAQq/K,iBAEzD1jM,SACEK,KAAK2rE,IAAIusC,SAAWl4G,KAAK2rE,IAAI+lC,OAE/B/xG,SACEK,KAAK2rE,IAAIwsC,SAAWn4G,KAAK2rE,IAAIgmC,OAE/BhyG,sBAAsBwjM,GACpB,MAAMx3H,EAAM3rE,KAAK2rE,IACfpsE,EAAQ4jM,EAAM5jM,MAChB,GAAIA,GAAS,EAAG,CACd,GAAIosE,EAAIusC,SAAW34G,EAAQosE,EAAIvwB,SAAU,CACvCuwB,EAAI+lC,KAAK/lC,EAAIvwB,SAAW77C,QACnB,GAAIosE,EAAIwsC,SAAW54G,GAASosE,EAAIvwB,SAAU,CAC/CuwB,EAAIgmC,KAAKpyG,EAAQosE,EAAIvwB,SAAW,MAKxCinJ,GAAan6L,OAAS,eAWtB,MAAMo7L,WAAqBt7E,GACzBj6G,mBACE,MAAO,eAETlB,kBACE,MAAO,eAGTrN,0BACE,MAAO,CAML+jM,cAAe,KAMfC,aAAc,KAMdC,cAAe,MAMfC,aAAc,KACd93H,MAAO,CACLrsE,MAAO,GACPiiB,QAAS,QAOXjiB,MAAO,OAIXI,YAAYisE,EAAOq0H,GACjB,MAAMlgM,EAAKC,KAGX,OAAOka,MAAMypL,YAAY,IAAI/8F,GAAM,CACjC1sE,KAAM,CAAC,CACLvvB,GAAI5K,EAAGwjM,cACPt4L,KAAMlL,EAAGyjM,cAAgBzjM,EAAGo7B,EAAE,kBAC7B,CACDxwB,GAAI5K,EAAG0jM,cACPx4L,KAAMlL,EAAG2jM,cAAgB3jM,EAAGo7B,EAAE,oBAE9B8kK,IAIRqD,GAAa1sH,YACb0sH,GAAap7L,OAAS,eA0BtB,MAAM07L,WAAoBxxD,GAAU5xH,MAAM47H,KAsBxCz8I,WAAWgS,GACTuI,MAAMw5H,WAAW/hI,GACjBA,EAAKwd,GAAG,CACNjpB,MAAO,kBACPwwD,OAAQ,eACRp6C,QAAStc,KAGT6sB,KAAM,MAGVltB,cAAcgS,GACZA,EAAK2c,GAAG,CACNooC,OAAQ,kBACRxwD,MAAO,kBACPoW,QAAStc,OAEXka,MAAMo5H,cAAc3hI,GAEtBhS,aAAawwB,GACX,MAAMpwB,EAAKC,KACXD,EAAG8jM,kBACH,IAAK9jM,EAAG+jM,kBAAoB/jM,EAAG4nJ,aAAex3H,EAAMu3H,SAAU,CAC5D3nJ,EAAGwzL,mBAAmB,CACpBh0L,MAAOQ,EAAGR,MACVg2I,WAAY,KACZplH,MAAAA,KAINxwB,kBAEEK,KAAK2vD,OAAS,KAEhBhwD,aAAa+hH,GACX,MAAM3hH,EAAKC,KACT6M,EAAO9M,EAAGsQ,YAAY2nE,YAAY0pC,EAAO70G,MAAQ,UACnD,GAAIA,EAAKgoJ,SAAU,CACjB,GAAI90J,EAAGm8D,QAAUwlD,EAAOxlD,MAAO,CAC7BwlD,EAAOxlD,MAAQn8D,EAAGm8D,MAEpB,GAAIn8D,EAAG4nJ,cAAgBjmC,EAAOimC,YAAa,CACzC,UAAW5nJ,EAAG4nJ,cAAgB,UAAW,CACvC5nJ,EAAG4nJ,YAAci8C,GAAYz4H,WAAW,eAE1Cu2C,EAAOimC,YAAc5nJ,EAAG4nJ,aAG5B,GAAI5nJ,EAAGgkM,QAAS,CACdriF,EAAOx6G,MAAQ,GAAG,IAAMnH,EAAGgkM,WAE7BriF,EAASxnG,MAAMu5H,aAAa/xB,GAC5B3hH,EAAGikM,YAAYtiF,EAAQ,CAAC,QAAS,SAAU,WAC3C,OAAOA,EAET/hH,aAAa08I,GACXr8I,KAAK06H,YAAWupE,IACd,GAAIA,EAAI5nD,SAAW,MAAO,CACxB4nD,EAAI5nD,OAASA,MAInB98I,YAGE,IAAKS,KAAK2vD,OAAQ,CAChB,MAAM9jD,EAAS,GAEf7L,KAAKijB,MAAMjkB,SAAQilC,IACjB,GAAIA,EAAEyjH,SAAWzjH,EAAE1kC,QAAUqD,UAAW,CACtCiJ,EAAOrN,KAAKylC,EAAE1kC,WAIlBS,KAAK2vD,OAAS9jD,EAAO5B,KAAKjK,KAAKkkM,gBAEjC,OAAOlkM,KAAK2vD,OAEdpwD,UAAUA,GACR,MAAMQ,EAAKC,KACT6Z,EAAW9Z,EAAGR,MAChB,IAAKgI,MAAMC,QAAQjI,GAAQ,CACzB,GAAIA,IAAUqD,WAAarD,IAAU,KAAM,CACzCA,EAAQ,QACH,UAAWA,GAAS,SAAU,CACnCA,EAAQA,EAAM8F,MAAMtF,EAAGmkM,oBAClB,CACL3kM,EAAQ,CAACA,IAGbQ,EAAG4vD,OAASpwD,EAAM0K,KAAKlK,EAAGmkM,gBAC1BnkM,EAAG+jM,eAAiB,KAEpB/jM,EAAGkjB,MAAMjkB,SAAQilC,IACf,GAAIA,EAAE1kC,QAAUqD,UAAW,CACzBqhC,EAAEyjH,QAAUnoJ,EAAMqM,SAASq4B,EAAE1kC,WAGjCQ,EAAG+jM,eAAiB,MACpB,IAAK/jM,EAAGyd,eAAiB3D,IAAa9Z,EAAGR,MAAO,CAC9CQ,EAAGwzL,mBAAmB,CACpBh0L,MAAOQ,EAAGR,MACVg2I,WAAY,SAIlB51I,eAAeigE,GACb5/D,KAAKijB,MAAMjkB,SAAQilC,GAAKA,EAAE27B,SAAWA,IAEvCi8D,sBACE,MAAMj9E,EAAY1kC,MAAM2hH,gBAExB77H,KAAK+jM,SAAWnlJ,EAAUpgD,KAAK,cAC/B,OAAOogD,GAIX1/C,EAAgB0kM,GAAa,QAAS,eACtC1kM,EAAgB0kM,GAAa,OAAQ,eACrC1kM,EAAgB0kM,GAAa,eAAgB,CAC3CtsH,YAAa,SAkBbxhE,IAAK,KAKLmN,MAAO,KAMPi5C,MAAO,KAOPyrF,YAAa,KACbu8C,eAAgB,IAChBH,QAAS,KACTrxD,cAAe,KACf7b,oBAAqB,UAEvB+sE,GAAYhtH,YACZgtH,GAAY17L,OAAS,cAYrB,MAAMi8L,WAAsBj1C,GAC1BnhJ,mBACE,MAAO,gBAGTlB,kBACE,MAAO,gBAETrN,0BACE,MAAO,CACL83D,YAAa,MAUb96B,KAAM,CACJhb,QAAS,CACPlK,MAAO,QAET/X,MAAO,MAOTi/B,MAAO,GACPwD,KAAM,KAMN4I,aAAc,KAMdq2I,SAAU,KAMVmjB,eAAgB,KAKhBC,eAAgB,KAOhBC,cAAe,KASfC,eAAgB,KAQhBC,aAAc,KAcdC,aAAc,KAKdC,gBAAiB,KACjB1jB,mBAAoB,KACpB2jB,sBAAuB,yBAMvBt4J,eAAgB,KAYhBm9I,IAAK,KACLob,WAAY,kBACZC,aAAc,wBAMdC,YAAa,kBAMbC,cAAe,gBAMfC,WAAY,YAMZC,SAAU,UAMVC,iBAAkB,mBAOlBC,cAAe,MAafC,aAAc,CACZ5jL,QAAS,CAAC,QACVjiB,MAAO,MAWT8lM,eAAgB,CACd7jL,QAAS,CAAC,QACVjiB,MAAO,MAOT+lM,uBAAwB,KACxBC,0BAA2B,6BAK3BC,oBAAqB,KACrBC,uBAAwB,0BASxBC,iBAAkB,MAGtB/lM,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChB,IAAKnY,KAAKy6L,aAAc,CACtBz6L,KAAK84L,WAGTn5L,SAAQipI,WACNA,IAEA,IAAIgN,GACHA,EAAiB17H,MAAM27H,WAAa,MAAQD,SAAwB,OAAS,EAAIA,EAAe/uI,KAAK7G,QAASnB,WAE/G,GAAI+pI,EAAY,CAEd,IAAK5oI,KAAKy6L,aAAc,CACtBz6L,KAAK84L,UAEP94L,KAAKme,UAAU,kBACfne,KAAKme,UAAU,iBAGnBikH,sBACE,OAAOpiI,KAAK2lM,aAEdhmM,YACE,IAAIimM,GACHA,EAAY5lM,KAAKwpL,OAAS,MAAQoc,SAAmB,OAAS,EAAIA,EAAU7pL,UAC7E7B,MAAM8B,YAERrc,mBAAmBylM,GAEjB,MAAMS,EAAWz8L,SAAS6uC,GAAUC,cAAcl4C,KAAKy2C,QAAS,oBAAqB,KAAO,GAC5F,OAAOviC,MAAMkxL,GAAgBA,EAAehxL,KAAKC,IAAIjL,SAASg8L,IAAiB,EAAGS,GAEpFlmM,mBAAmBylM,GACjBplM,KAAK8lM,aAAa9mM,SAAQilC,GAAKgU,GAAUod,UAAUpxB,EAAG,YAAamhK,KACnEplM,KAAKsjH,WAAa,CAChBh2D,UAAW83I,EAAe,OAAS,OAGvCzlM,qBAAqB0lM,GAEnB,MAAMQ,EAAWz8L,SAAS6uC,GAAUC,cAAcl4C,KAAKy2C,QAAS,sBAAuB,KAAO,GAC9F,OAAO4uJ,GAAkB,KAAOA,EAAiBjxL,KAAKC,IAAIjL,SAASi8L,IAAmB,EAAGQ,GAE3FlmM,qBAAqB0lM,GACnB,MAAMtlM,EAAKC,KACXD,EAAGgmM,aAAa/mM,SAAQsG,GAAK2yC,GAAUod,UAAU/vD,EAAG,WAAY+/L,KAChEtlM,EAAGimM,aAAahnM,SAAQsG,GAAKA,EAAEhD,QAAQ,IAAIvC,EAAG6kM,eAAiB3sJ,GAAUod,UAAU/vD,EAAG,WAAY+/L,KAClGtlM,EAAGujH,WAAa,CACdj2D,UAAWg4I,EAAiB,OAAS,OAEvCtlM,EAAGqiI,gBAAgBxjF,UAAUymJ,EAAiB,MAAQ,UAAU,qBAElE1lM,oBAAoBk9I,GAClB,MAAMpmG,GAAWomG,EAAShmG,WAAauH,QAAQC,aAAew+F,EAAWA,EAASl+I,QAAQslD,QAAQ,IAAIjkD,KAAK2K,kBAC3G,GAAI8rC,EAAS,CACX,OAAO5W,GAAWomK,SAASxvJ,EAAQ/f,QAAQ8F,OAG/C78B,UAAU6pL,EAAK0c,GACb,MAAMnmM,EAAKC,KACX,OAAOu5H,GAAQ9hD,YAAYyuH,EAAa1c,EAAK,CAC3C7wK,MAAO5Y,EACPkiD,SAAU,CACRp1C,KAAM,UACN8L,MAAO5Y,EACP4K,GAAI,GAAG5K,EAAG4K,cACVs8H,WAAYlnI,EAAG+zJ,YACf5sB,YAAa,IAAInnI,EAAG6kM,gBAI1BjlM,UAAU6pL,GACRxpL,KAAKupE,gBAAgB,OACrBigH,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAIr6J,GAAG,CAC/Cg3K,YAAa,gBACb1hM,KAAM,MACN6X,QAAStc,OAGbL,cAAc82C,EAASn+B,GACrB,MAAMvY,EAAKC,KACXka,MAAM6+G,cAActiF,EAASn+B,GAC7BvY,EAAGqmM,yBAAyBrmM,EAAGihL,oBAC/BjhL,EAAGgmM,aAAex+L,MAAMyd,KAAKyxB,EAAQsZ,iBAAiB,2BACtDhwD,EAAG+lM,aAAev+L,MAAMyd,KAAKyxB,EAAQsZ,iBAAiB,qBACtDhwD,EAAGsmM,gBAAkB9+L,MAAMyd,KAAKyxB,EAAQsZ,iBAAiB,qBACzDhwD,EAAGimM,aAAe,GAClB,IAAK,IAAIpnM,EAAI,GAAGE,OACZA,GACEiB,EAAGsmM,gBAAiBznM,EAAIE,EAAQF,IAAK,CACzCmB,EAAGimM,aAAaxnM,KAAKuB,EAAGsmM,gBAAgBznM,GAAGyxE,mBAAoBtwE,EAAGsmM,gBAAgBznM,GAAGyoD,WAGzF1nD,WAAW68B,GACTA,SAAcA,IAAS,SAAWqD,GAAW7zB,MAAMwwB,GAAQ,IAAIhuB,KAAKguB,GACpE,GAAItoB,MAAMsoB,GAAO,CACf,MAAM,IAAI9rB,MAAM,mFAElB,OAAOmvB,GAAWoL,UAAUzO,GAO9B78B,WAAWJ,GAETS,KAAKw+B,MAAMhC,KAAOj9B,EAEpBI,sBAEE,MAAMw/B,EAAI,IAAI3wB,KAAK,uBACnBxO,KAAKsmM,cAAgB,GAErB,IAAK,IAAI9pK,EAAO,EAAGA,EAAO,GAAIA,IAAQ,CACpC2C,EAAEgL,QAAQ3N,GACVx8B,KAAKsmM,cAAc9nM,KAAKqhC,GAAW/C,OAAOqC,EAAGn/B,KAAKmlM,iBAGtDv6J,mBAEE,cAAc5qC,KAAKosC,gBAAkB,SAAWpsC,KAAKosC,cAAgBvM,GAAW+K,aAOlFjrC,mBAAmBirC,GACjB,MAAM7qC,EAAKC,KACX,GAAID,EAAGgiL,OAAQ,CACbhiL,EAAGy+B,MAAMoM,aAAeA,EACxB7qC,EAAGwvC,SAAW,GAGd,IAAK,IAAI3wC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1BmB,EAAGwvC,SAAS3wC,GAAKmB,EAAGumM,cAAcvmM,EAAGgkL,oBAAoBnlL,IAE3D,GAAImB,EAAG06L,aAAc,CACnB16L,EAAG+4L,YAITn5L,yBAAyBqhL,GACvB,IAAIulB,EAEJvmM,KAAK2hH,eAAe/iE,UAAU8X,OAAO12D,KAAK2kM,sBAAuBzkM,QAAQ8gL,KACxEulB,EAAmBvmM,KAAKsjH,cAAgB,MAAQijF,SAA0B,OAAS,EAAIA,EAAiBvhF,oBACzG,GAAIhlH,KAAK+hL,OAAQ,CACf/hL,KAAKw+B,MAAMwiJ,mBAAqBA,GAGpCrhL,0BAA0B6lM,GACxB,IAAIgB,EAEJxmM,KAAKy2C,QAAQmI,UAAU8X,OAAO12D,KAAKylM,uBAAwBvlM,QAAQslM,KAClEgB,EAAoBxmM,KAAKsjH,cAAgB,MAAQkjF,SAA2B,OAAS,EAAIA,EAAkBxhF,oBAE9GrlH,6BAA6B2lM,GAC3B,IAAImB,EAEJzmM,KAAKy2C,QAAQmI,UAAU8X,OAAO12D,KAAKulM,0BAA2BrlM,QAAQolM,KACrEmB,EAAoBzmM,KAAKsjH,cAAgB,MAAQmjF,SAA2B,OAAS,EAAIA,EAAkBzhF,oBAE9G34E,qBAGE,OAAOrsC,KAAK6iL,iBAAmB7iL,KAAK0mM,wBAA0B1mM,KAAK0mM,sBAAwB7mK,GAAWwM,gBAExGE,eAGE,OAAOvsC,KAAK2mM,kBAAoB3mM,KAAK2mM,gBAAkB9mK,GAAW0M,UAEpE5sC,qBAAqB0sC,GACnB,OAAO2E,GAAa55B,OAAO,GAAIi1B,GAEjC1sC,qBAAqB0sC,GACnB,GAAIrsC,KAAK+hL,OAAQ,CACf,IAAI6kB,EACJ5mM,KAAKw+B,MAAM6N,eAAiBA,EAC5BrsC,KAAK84L,WACJ8N,EAAoB5mM,KAAKsjH,cAAgB,MAAQsjF,SAA2B,OAAS,EAAIA,EAAkB5hF,qBAGhHq+D,4BACE,OAAOrjL,KAAKw+B,MAAM6kJ,sBAEpBhC,qBACE,OAAOrhL,KAAKw+B,MAAM6iJ,eAEpB0C,0BACE,OAAO/jL,KAAKw+B,MAAMulJ,oBAEpBD,yBACE,OAAO9jL,KAAKw+B,MAAMslJ,mBAEpBG,iBACE,OAAOjkL,KAAKw+B,MAAMylJ,WAQpB92I,gBACE,OAAOntC,KAAKw+B,MAAM2O,UAEpB7kB,eAEE,OAAOuX,GAAW6K,KAAK1qC,KAAKw+B,MAAM2O,UAAWntC,KAAKw+B,MAAM4O,QAAS,OAAS,EAU5EA,cACE,MAAMA,QACJA,GACEptC,KAAKw+B,MACT,GAAI4O,EAAS,CACX,OAAOvN,GAAW9gB,IAAIquB,EAAS,EAAG,QAGtCztC,YAAY6+B,EAAOqoK,GACjB,MAAM9mM,EAAKC,KACX,KAAMw+B,aAAiBuiJ,IAAQ,CAG7B,UAAWviJ,IAAU,SAAU,CAC7B,GAAIqoK,EAAc,CAChBA,EAAaroK,MAAQA,EACrB,OAEF,MAAMhC,EAAOz8B,EAAGy8B,MAAQqD,GAAWoL,UAAU,IAAIz8B,MACjDguB,EAAK+N,SAAS/L,GACdA,EAAQ,CACNhC,KAAAA,GAGJgC,EAAQuiJ,GAAMlwD,IAAI,CAChBjmF,aAAc7qC,EAAG6qC,aACjByB,eAAgBtsC,EAAGssC,eACnB20I,mBAAoBjhL,EAAGihL,mBACvBC,SAAUlhL,EAAGkhL,UACZziJ,GAELA,EAAMrP,GAAG,CACP23K,WAAY,oBACZxqL,QAASvc,IAEX,OAAOy+B,EAET7+B,mBACEZ,OAAQy/B,EAAK2iJ,QACbA,EAAOC,QACPA,EAAO7uG,QACPA,IAEA,MAAMxyE,EAAKC,KAEXD,EAAGiiC,KAAOxD,EAAMwD,KAChB,IAAKjiC,EAAGyd,cAAe,CAGrB,IAAKzd,EAAGgnM,QAAQ5lB,IAAY5uG,EAAQxpE,GAAKwpE,EAAQ/tC,EAAG,CAClDzkC,EAAG+4L,UACH,GAAI/4L,EAAG2lM,mBAAqB3lM,EAAGyiG,OAAQ,CACrCvqD,GAAU+uJ,QAAQjnM,EAAG4hH,eAAgBw/D,EAAUC,EAAU,GAAK,IAclErhL,EAAGwtB,QAAQ,aAAc,CACvBglD,QAAAA,EACAhzE,MAAO4hL,EACPtnK,SAAUunK,KAIhBzhL,WAAWqiC,GACThiC,KAAKw+B,MAAMwD,KAAOA,EAEpBriC,qBAAqBykM,GACnBpkM,KAAKinM,qBAAqB7C,GAE5BzkM,qBAAqB0kM,GACnB,MAAMtkM,EAAKC,KACXD,EAAG02C,QAAQmI,UAAUylJ,EAAiB,MAAQ,UAAU,sBACxD,GAAItkM,EAAGm9D,SAAU,CAEf,IAAKn9D,EAAGqgI,WAAY,CAClBrgI,EAAG24H,YAIT/4H,eAAeshL,GACb,GAAIjhL,KAAKw+B,MAAO,CACdx+B,KAAKw+B,MAAMyiJ,SAAWA,EACtBjhL,KAAK84L,WAMTn5L,UAEEK,KAAKknM,YAMPvnM,YAEEK,KAAKme,UAAU,WACf,MAAMpe,EAAKC,KACT+/K,EAAQlgJ,GAAWoL,UAAU,IAAIz8B,OACjCs3L,aACEA,EAAYO,gBACZA,EAAe7pK,KACfA,EAAIgC,MACJA,EAAKomK,WACLA,EAAUC,aACVA,EAAYC,YACZA,EAAWC,cACXA,EAAaC,WACbA,EAAUC,SACVA,EAAQC,iBACRA,EAAgB74J,eAChBA,EAAc03I,oBACdA,EAAmB9C,SACnBA,GACElhL,EAEN,IAAKy8B,EAAM,CACTz8B,EAAGy8B,KAAOujJ,EACV,OAOFhgL,EAAGwtB,QAAQ,iBAEXxtB,EAAGoe,UAAU,iBACb,IAAK,IAAIqlK,EAAc,EAAGA,EAAc,EAAGA,IAAe,CACxD,MAAM2jB,EAAOpnM,EAAGgmM,aAAaviB,GAC3B4jB,EAAUrnM,EAAGgkL,oBAAoBP,GACjC6jB,EAAgB,CACd1nM,CAACklM,GAAe,EAChBllM,CAACqlM,GAAanlK,GAAW0M,SAAS66J,GAClCznM,CAACulM,GAAmB74J,EAAe+6J,IAEvC,GAAIrnM,EAAGwkM,eAAgB,CACrB4C,EAAKz1I,UAAY,GACjB3xD,EAAGyuB,SAASzuB,EAAGwkM,eAAgBxkM,EAAI,CAAConM,EAAM3jB,EAAa4jB,QAClD,CACLnvJ,GAAUwZ,aAAa01I,EAAMpnM,EAAGumM,cAAcc,IAGhDnvJ,GAAU0jE,cAAcwrF,EAAME,GAC9BF,EAAKzwK,QAAQ8sJ,YAAcA,EAC3B2jB,EAAKzwK,QAAQ0wK,QAAUA,EAGzB,IAAIE,EAAW,EACbC,EAAY,EACZC,EAAoB,EAEtB,IAAK,IAAIhkB,EAAc,EAAGA,GAAe,EAAGA,IAAe,CACzD,IAAKn3I,EAAe03I,EAAoBP,IAAe,CACrDgkB,EAAoBhkB,EACpB,OAIJsiB,EAAa,GAAGlnJ,UAAU8X,OAAO,iBAAkBl4B,EAAM8iJ,UAAY,IAAML,GAC3E6kB,EAAa,GAAGlnJ,UAAU8X,OAAO,iBAAkBl4B,EAAM8iJ,UAAY,IAAML,GAC3EziJ,EAAMipK,UAAS,CAAC7jK,EAAMiE,KACpB,MAAM6/J,EAAiBrB,EAAgBiB,GACrCK,EAAY,CAACD,EAAer3H,mBAAoBq3H,EAAergJ,UAEjEy+I,EAAawB,GAAU5wK,QAAQkN,KAAO,GAAGA,EAAK,MAAMA,EAAK,KACzD,GAAI7jC,EAAGykM,aAAc,CACnBzkM,EAAGyuB,SAASzuB,EAAGykM,aAAczkM,EAAI,CAAC4nM,EAAU,GAAI/jK,QAC3C,CACL+jK,EAAU,GAAGtvI,UAAYz0B,EAAK,GAEhC,IAAK,IAAI4/I,EAAc,EAAGA,EAAc,EAAGA,IAAe,CACxD,MAAMhnJ,EAAOqL,EAAM27I,GACjBhmJ,EAAMhB,EAAK4C,SACX+nK,EAAOQ,EAAUnkB,EAAc,GAC/B6jB,EAAgB,CACd1nM,CAACilM,GAAa,EACdjlM,CAACmlM,GAAc/kM,EAAG6nM,eAAeprK,GACjC78B,CAAColM,GAAgBvoK,EAAKtvB,aAAesxB,EAAMA,MAC3C7+B,CAACqlM,GAAanlK,GAAW0M,SAAS/O,GAClC79B,CAACslM,GAAWzoK,EAAKxsB,YAAc+vK,EAAM/vK,UACrCrQ,CAACulM,GAAmB74J,EAAe7O,GACnCqqK,qBAAsBrkB,IAAgBgkB,EACtCM,yBAA0BtrK,GAAQz8B,EAAGgoM,mBAAqB,KAG9D9vJ,GAAU0jE,cAAcwrF,EAAME,GAC9BF,EAAKzwK,QAAQ8F,KAAOqD,GAAWsgJ,QAAQ3jJ,GACvC2qK,EAAKzwK,QAAQ6wK,UAAYA,EACzBJ,EAAKzwK,QAAQ8sJ,YAAcA,EAG3B,GAAI2jB,EAAKt0I,cAAe,QACfs0I,EAAKt0I,cAAc3yC,aACnBinL,EAAKt0I,cAAcnU,UAE5B,GAAI3+C,EAAG0kM,aAAc,CACnB1kM,EAAGyuB,SAASzuB,EAAG0kM,aAAc1kM,EAAI,CAAC,CAChConM,KAAAA,EACA3qK,KAAAA,EACAgB,IAAAA,EACAmxI,IAAKm3B,EAAawB,GAClBA,SAAAA,EACAC,UAAAA,EACA/jB,YAAAA,EACAJ,mBAAoBrjL,EAAGsjL,sBAAsB7lJ,GAC7CoG,KAAAA,SAEG,CACLujK,EAAKz1I,UAAYl1B,EAAKrvB,UAExBo6L,IAEFD,OAQFvnM,EAAGioM,iBAAmBV,EACtB,GAAIvnM,EAAGm9D,SAAU,CAEf,IAAKn9D,EAAGqgI,WAAY,CAClBrgI,EAAG24H,WAGP34H,EAAG06L,cAAgB16L,EAAG06L,cAAgB,GAAK,EAK3C16L,EAAGwtB,QAAQ,WAEb5tB,eAAe68B,GACb,MAAMgB,EAAMhB,EAAK4C,UACfklK,cACEA,EAAaj4J,eACbA,GACErsC,KACN,GAAIA,KAAK0kM,iBAAmBr4J,EAAe7O,GAAM,CAC/C,OAAO,KAET,GAAI8mK,EAAe,CACjB,GAAI/8L,MAAMC,QAAQ88L,GAAgB,CAChC9nK,EAAOqD,GAAWoL,UAAUzO,EAAM,MAClC,OAAO8nK,EAAc38L,MAAKw3B,KAAOU,GAAWoL,UAAU9L,EAAG,MAAQ3C,SAC5D,CACL,OAAOx8B,KAAKwuB,SAASxuB,KAAKskM,cAAetkM,KAAM,CAACw8B,MAItDg0H,iBACE,MAAMrkJ,EAAS+N,MAAMs2I,WACnBy3C,EAAyB,GAC3B97L,EAAOk7C,SAAW,CAAC,CACjB5mC,IAAK,MACLi+B,UAAW,qCACXqK,UAAW,iBACX1B,SAAU,CAAC,CACTnnC,MAAO,yBACH4C,GAAYolL,KAAK,EAAG,CACxBhoL,MAAOlgB,KAAK6kM,eACV5sJ,GAAU6e,sBACb,CAEDpY,UAAW,gCACXqK,UAAW,eACX1B,SAAU4gJ,IAEZ,IAAK,IAAIrpM,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMupM,EAAU,CACdzpJ,UAAW,iCACXhoB,QAAS,CACP4wK,SAAU1oM,GAEZyoD,SAAU,CAAC,CACT3I,UAAW,sBACV,CACDA,UAAW,kBACX2I,SAAU,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IACnC8B,YAAa,CACX0E,WAAY,KACZj0C,OAAQ,UAKdquL,EAAuBzpM,KAAK2pM,GAE9B,OAAOh8L,EAET47L,uBACE,GAAI/nM,KAAKwlM,oBAAqB,CAC5B,MAAMxjK,KACJA,EAAIxD,MACJA,GACEx+B,KAAKw+B,MACT,OAAO,IAAIhwB,KAAKwzB,EAAMxD,EAAO,GAE/B,IAAK,MAAMz+B,EAAKC,KAAMw8B,EAAOz8B,EAAGy+B,MAAM2O,WAAY3Q,EAAK2N,QAAQ3N,EAAKrvB,UAAY,GAAI,CAClF,IAAKpN,EAAGihL,qBAAuBjhL,EAAGssC,eAAe7P,EAAK4C,UAAW,CAC/D,OAAO5C,IAYb78B,QAAQ68B,EAAM5iB,GACZ,YAAa4iB,IAAS,UAAW,CAC/BA,EAAOqD,GAAWsgJ,QAAQ3jJ,GAE5B,MAAM2qK,EAAOnnM,KAAK2lM,aAAa39L,cAAc,eAAew0B,OAC5D,GAAI2qK,KAAUvtL,IAAWutL,EAAKvoJ,UAAU7G,SAAS/3C,KAAK+kM,gBAAiB,CACrE,OAAOoC,GAGXxnM,eACEZ,OAAQyqL,EAAG7qL,OACXA,IAEA6qL,EAAIhtJ,KAAOqD,GAAWomK,SAAStnM,EAAO+3B,QAAQ8F,MAEhD78B,qBAEEK,KAAK0mM,sBAAwB1mM,KAAK2mM,gBAAkB,KACpD3mM,KAAKooM,sBACLpoM,KAAKqoM,mBAAmBroM,KAAK4qC,cAC7B1wB,MAAMsf,sBAIV2qK,GAAcvtH,YACdutH,GAAcj8L,OAAS,gBAKvB,MAAMogM,GAAiB/xL,IAAUA,EAAMhX,MAuBvC,MAAMgpM,WAAiBnb,GAErBr/K,mBACE,MAAO,WAGTlB,kBACE,MAAO,WAGTuqE,mBACE,MAAO,QAET53E,0BACE,MAAO,CACL4uL,UAAW,WAWXoa,aAAc,KACdha,kBAAmB,CACjBrC,gBAAiB,CACfvsH,SAAUrpD,GAASA,EAAMqpD,WAAarpD,EAAMhX,OAE9C6sL,mBAAoB,CAClBoc,aAAc,EACdjpM,MAAO,IAWX0L,KAAM,GAQNw9L,aAAc,KASdC,eAAgB,MAShBxsI,MAAO,KASP38D,MAAO,GACPooJ,YAAa,KACb1uH,sBAAuB,CAAC,QAAS,SAKrCt5B,UAAUwY,GAER,GAAI,YAAaA,EAAQ,CACvBA,EAAS64B,GAAa55B,OAAO,GAAIe,GACjCA,EAAO5Y,MAAQ4Y,EAAO69I,eACf79I,EAAO69I,QAEhB97I,MAAMsB,UAAUrD,GAChBnY,KAAK2oM,cAEPC,mBACE,MAAO,mBAGT3Y,oBACE,MAAO,CAACjwL,KAAKkxL,aAAc,CACzBzwK,IAAK,QACLP,MAAOlgB,KAAK4oM,aACZpgJ,IAAK,GAAGxoD,KAAK2K,WACbo+C,UAAW,YACXJ,KAAM3oD,KAAKiL,MAAQ,KAGvBimL,mBACE,MAAM/4K,EAAS+B,MAAMg3K,aACrB,GAAIlxL,KAAK2nJ,YAAa,CACpBxvI,EAAOue,QAAU,CACftY,MAAOpe,KAAK2nJ,aAGhBxvI,EAAOkV,UAAY,CACjBnnB,MAAO,kBACPk/E,OAAQ,mBACR+gD,MAAO,mBAET,OAAOhuH,EAQT69I,cACE,OAAOh2J,KAAKT,MAEdy2J,YAAYz2J,GACVS,KAAKT,MAAQA,EAEfI,cACEK,KAAKy2C,QAAQmI,UAAU5+C,KAAKiL,KAAO,MAAQ,UAAU,UAEvDtL,WAAWJ,GACT,GAAIS,KAAK6oM,UAAW,CAClB7oM,KAAK2oM,cACL3oM,KAAK6oM,UAAUn3I,UAAYnyD,GAG/BI,sBAAsB20D,GACpBp6C,MAAM2yK,sBAAsBv4H,GAC5B,IAAIk0I,aACFA,GACExoM,KACJ,GAAIwoM,EAAc,CAChBA,EAAeA,IAAiB,KAAOF,GAAiBE,EACxDl0I,EAAUkb,UAAYg5H,EAAaxoM,OAGvCL,iBAAiBkM,EAAQ5M,EAAKM,GAC5BS,KAAKT,MAAQA,IAAUS,KAAKyoM,eAAiBlpM,IAAUS,KAAK0oM,eAAiB,MAAQ,MAEvF/oM,kBACE,IAAKK,KAAK64E,SAAU,CAClB74E,KAAKT,MAAQS,KAAKmmI,MAAM6vB,SAG5Br2J,YAAYkM,GACV,IAAIi9L,EACJ,MAAM/oM,EAAKC,KACTT,EAAQQ,EAAGR,MAAQQ,EAAG0oM,aAAe1oM,EAAG2oM,eACxC5T,EAAcv1L,IAAUqD,WACxBy3H,UACEA,GACEt6H,EACN,GAAI+0L,EAAa,CACfjpL,EAAOwuH,GAAa96H,EAEtBQ,EAAG+2I,aAAajrI,EAAQipL,GACxB,GAAIv1L,IAAU,QAAUupM,EAAoBj9L,EAAOwuH,MAAgB,MAAQyuE,SAA2B,OAAS,EAAIA,EAAkBvpM,SAAWA,EAAO,QAC9IsM,EAAOwuH,GAAW96H,OAG7BI,YAAYJ,GACV,OAAOA,IAAU,QAAU,MAAQW,QAAQX,GAE7CI,YAAYJ,GACV,IAAIsvL,EACJ,MAAM9uL,EAAKC,KACTi5D,EAAUl5D,EAAGomI,MAAM6vB,UAAYz2J,EACjCQ,EAAGomI,MAAM6vB,QAAUz2J,GAClBsvL,EAAgB9uL,EAAGu0D,aAAe,MAAQu6H,SAAuB,OAAS,EAAIA,EAAcxC,mBAC7F,GAAIpzH,IAAYl5D,EAAGgzL,YAAchzL,EAAGyd,cAAe,CACjDzd,EAAGu3J,4BAEHv3J,EAAGizL,cAAc,QAGrBK,qBACE,MAAO,UAET1zL,YAAYJ,EAAO+Y,GACjB,MAAMqlC,EAAU39C,KAAKy2C,QAAQmI,UAC7B,GAAItmC,EAAK,CACPqlC,EAAQ77C,OAAOwW,GAEjB,GAAI/Y,EAAO,CACTo+C,EAAQ5+B,IAAIxf,IAGhBI,wBACE,MAAMI,EAAKC,MACTg2J,QACEA,EAAOrO,YACPA,EACAxhB,MAAO4iE,EAAcl8L,KACrBA,GACE9M,EACJoM,EAAS,GACX,GAAI6pJ,GAAWrO,EAAa,CAC1B1vG,GAAUsY,gBAAgBxwD,EAAGqnD,YAAa,cAAcv6C,iBAAoB86I,MAAgBqhD,IAC1F,GAAIA,IAAYD,EAAgB,CAC9B,MAAME,EAAkB38I,GAAOC,YAAYy8I,GAC3CC,GAAmB98L,EAAO3N,KAAKyqM,OAIrC,OAAO98L,EAETxM,4BACE,GAAIK,KAAKg2J,SAAWh2J,KAAK2nJ,YAAa,CACpC3nJ,KAAKy3J,wBAAwBz4J,SAAQ0iH,GAAUA,EAAOs0C,QAAU,SAMpEr2J,QACEK,KAAKg2J,QAAU,KAKjBr2J,UACEK,KAAKg2J,QAAU,MAKjBr2J,SACEK,KAAKg2J,SAAWh2J,KAAKg2J,QAIvBr2J,gBAAgBwwB,GAEd,GAAInwB,KAAK64E,SAAU,CACjB1oD,EAAM21B,iBACN,OAAO,MAQT,OAAO9lD,KAAKutB,QAAQ,QAAS,CAC3B4C,MAAAA,IAUJxwB,iBAAiBwwB,GACf,MAAMpwB,EAAKC,KAEX,GAAID,EAAG84E,UAAY94E,EAAGR,QAAUQ,EAAGomI,MAAM6vB,QAAS,CAChDj2J,EAAGomI,MAAM6vB,QAAUj2J,EAAGR,MACtB,OAEFQ,EAAGR,MAAQQ,EAAGomI,MAAM6vB,QACpB,IAAKj2J,EAAGgzL,UAAW,CACjBhzL,EAAGgzL,UAAY,KACfhzL,EAAGizL,cAAc,MACjBjzL,EAAGgzL,UAAY,OAInBpzL,oBAAoBk5E,IAQpBl5E,cAAc41I,GACZ,MAAMx1I,EAAKC,MACTg2J,QACEA,GACEj2J,EAAGomI,MAgBT,MAAMskC,EAAc,CAChBzU,QAAAA,EACAz2J,MAAOy2J,EACPzgB,WAAAA,EACAkB,MAAO,MAETyyD,GAAalzC,GAAWzgB,GAAcx1I,EAAG4nJ,aAAe5nJ,EAAG03J,wBAAwBr5J,QAAOsjH,GAAUA,EAAO92D,YAAc82D,EAAO9hD,WAAU9gE,QAG1IiB,EAAGwtB,QAAQ,eAAgBk9I,KAAiB,MAE9C,GAAIy+B,EAAW,CAGbnpM,EAAGomI,MAAM6vB,QAAUj2J,EAAG4vD,QAAUqmG,MAC3B,CACLj2J,EAAGwzL,mBAAmB9oB,EAAa,OACnC,GAAIl1B,EAAY,CACdx1I,EAAGu3J,4BAQLv3J,EAAGwtB,QAAQ,SAAUk9I,GACrB1qK,EAAGwtB,QAAQ,SAAUk9I,GACrB,OAAO,OAMb89B,GAAS3xH,YACT2xH,GAASrgM,OAAS,WAqBlB,MAAMihM,WAAmBj6C,GAGvBvvJ,UAAUwY,GACR+B,MAAMsB,UAAU9c,EAAe,CAC7BsjC,MAAM,IAAIxzB,MAAOvB,eAChBkL,IACH2oC,GAAY3xB,GAAG,CACbsnB,QAASz2C,KAAK2hH,eACdz7G,MAAO,cACPq5C,SAAU,qBACVjjC,QAAStc,OAGb++D,mBACE,OAAO/+D,KAAKopM,cAAcppM,KAAKgiC,OAAShiC,KAAKopM,cAAcppM,KAAKqpM,WAElE1pM,cAAc6kC,GACZ,OAAOxkC,KAAK2hH,eAAe35G,cAAc,iCAAiCw8B,OAM5EjlC,YACE,OAAOS,KAAKgiC,KAEdziC,UAAUyiC,GACRhiC,KAAKgiC,KAAOA,EAEdriC,aAAYhB,OACVA,IAEA,MAAM2qM,EAAcl1L,KAAKuU,IAAIvU,KAAKC,IAAIjL,SAASzK,EAAO05D,WAAYr4D,KAAKupM,SAAW,GAAIvpM,KAAKwpM,SAAW,MAEtG,GAAIxpM,KAAKgiC,OAASsnK,EAAa,CAC7BtpM,KAAKutB,QAAQ,SAAU,CACrB1T,SAAUyvL,EACV/pM,MAAO+pM,QAEJ,CACLtpM,KAAKgiC,KAAOsnK,GAGhB3pM,iBAAiBqE,GACfhE,KAAKutB,QAAQ,aAAcvpB,GAE7BrE,WACEK,KAAKqpM,UAAYrpM,KAAKqpM,UAAYrpM,KAAKypM,gBAEzC9pM,OACEK,KAAKqpM,UAAYrpM,KAAK0pM,QAAU,EAElC/pM,WAAWqiC,GACT,IAAK9tB,MAAM8tB,GAAO,CAChB,OAAOgP,GAAajhC,OAAOiyB,GAAQA,EAAK/0B,cAAgB+0B,GAG5DriC,WAAWqiC,GAET,GAAIA,EAAOhiC,KAAK2pM,WAAW3nK,GAAO,CAChC,OAAO5tB,KAAKuU,IAAIvU,KAAKC,IAAI2tB,EAAMhiC,KAAKupM,SAAW,GAAIvpM,KAAKwpM,SAAW,OAGvE7pM,WAAWqiC,EAAMnoB,GACf,MAAM9Z,EAAKC,KACX,IAAKD,EAAGspM,WAAarnK,EAAOjiC,EAAG2pM,QAAS,CACtC3pM,EAAGspM,UAAYrnK,OACV,GAAIA,EAAOjiC,EAAGspM,UAAW,CAC9BtpM,EAAGspM,UAAYrnK,GAAQjiC,EAAG0pM,gBAAkB,GAE9C,IAAK1pM,EAAGyd,cAAe,CAOrBzd,EAAGwtB,QAAQ,SAAU,CACnB1T,SAAAA,EACAta,MAAOyiC,KASb0nK,cACE,OAAO1pM,KAAKqpM,UAAYrpM,KAAKypM,gBAAkB,EAEjD9pM,gBAAgB0pM,GAEd,GAAIA,EAAYrpM,KAAK2pM,WAAWN,GAAY,CAC1CA,EAAYrpM,KAAKupM,QAAUn1L,KAAKC,IAAIg1L,EAAWrpM,KAAKupM,SAAWF,EAC/D,OAAOrpM,KAAKwpM,QAAUp1L,KAAKuU,IAAI0gL,EAAWrpM,KAAKwpM,SAAWxpM,KAAKypM,gBAAkB,IAAMJ,GAG3F1pM,sBAAsB0pM,EAAWO,GAC/B,GAAI5pM,KAAK4qD,UAAW,CAClB3S,GAAU+uJ,QAAQhnM,KAAK2hH,eAAgBvtG,KAAKkvB,KAAK+lK,EAAYO,KAGjEjqM,cAEEK,KAAKme,UAAU,QACf,MAAMkrL,UACFA,GACErpM,KACJmM,EAAS+N,MAAM41I,cACfzoG,EAAWl7C,EAAOk7C,SAASrnD,KAAKwvJ,KAAO,EAAI,GAAGnoG,SAAW,GAC3DrnD,KAAKsrI,UAAUn5B,MAAMlnG,KAAO,GAAG,MAAMo+L,IAAYp3L,OAAO,QAAQ,MAAMjS,KAAK0pM,UAAUz3L,OAAO,KAC5F,IAAK,IAAIrT,EAAI,EAAG4lC,EAAI6kK,EAAWzqM,EAAIoB,KAAKypM,gBAAiB7qM,IAAK4lC,IAAK,CACjE6iB,EAAS7oD,KAAK,CACZiiB,IAAK,SACLiW,QAAS,CACPsL,KAAMwC,GAERtkB,MAAO,CACL2pL,oBAAqB,EACrBC,aAActlK,IAAMxkC,KAAKgiC,MAE3B/2B,KAAM,MAAMu5B,IAAIvyB,OAAO,KAG3B,OAAO9F,GAIXjN,EAAgBiqM,GAAY,QAAS,cACrCjqM,EAAgBiqM,GAAY,OAAQ,cACpCjqM,EAAgBiqM,GAAY,eAAgB,CAC1C7xI,YAAa,MA8Bbk4F,KAAM,CACJluJ,SAAU,KACV2hB,MAAO,CACL47G,SAAU,CACRhyH,KAAM,OACNiJ,IAAK,yBACL4sL,SAAU,cACVjvE,OAAQ,KAEVthB,MAAO,CACLtlG,KAAM,SACNiJ,IAAK,qBACL29G,OAAQ,IACRivE,SAAU,uBAEZn9K,KAAM,CACJ1Y,KAAM,OACNiJ,IAAK,qBACL4sL,SAAU,UACVjvE,OAAQ,OAIdkc,QAAS,mBAQT85D,gBAAiB,GASjBznK,KAAM,KAKNunK,QAAS,KAKTC,QAAS,KASTH,UAAW,OAEbF,GAAWvyH,YACXuyH,GAAWjhM,OAAS,aAuBpB,MAAM6hM,WAAqBnU,GACzB7nL,mBACE,MAAO,eAGTlB,kBACE,MAAO,eAGTuqE,mBACE,MAAO,UAET53E,0BACE,MAAO,CACLq5E,SAAU,KACVg1G,SAAU,MACV/3K,IAAK,kBAeLg9C,SAAU,KACVglE,YAAa,kBAGjB/4D,oBAGAp/D,iBACE,OAAO,KAETA,iBACE,OAAO,MAETuxL,mBACE,MAAO,CACLzwK,IAAK,OACL9V,GAAI,GAAG3K,KAAK2K,WACZo+C,UAAW,iBACXJ,KAAM3oD,KAAK8yD,SAAW9yD,KAAK8yD,SAAS9yD,KAAKT,OAAS6K,EAAaY,WAAWhL,KAAKT,SAKrFwqM,GAAanzH,YACbmzH,GAAa7hM,OAAS,eAEtB,MAAM8hM,GAAqB,IAAMnqK,GAAWoqK,gBAAgBpgM,KAAI,CAACd,EAAGnK,IAAM,CAACA,EAAGmK,KAC5EmhM,GAAW,CAACpmL,EAAKC,IAAQD,EAAIykB,UAAYxkB,EAAIwkB,UAC/C,MAAM4hK,WAAsBniF,GAC1Bj6G,mBACE,MAAO,gBAETlB,kBACE,MAAO,gBAETrN,0BACE,MAAO,CACLquL,SAAU,MACVM,gBAAiB,CACf1tK,IAAK,MACLuvI,UAAW,GAEbqjC,eAAgB,YAChBt/D,wBAAyB,MACzB+5D,SAAU,CACRj2F,OAAQ,OAEVm+F,OAAQ,CACN3/I,MAAO,CACLA,MAAO,MACP4E,SAAU,KACVP,UAAW,OAEb5kC,IAAK,wBACLwtG,WAAY,CACVj2D,UAAW,UAMrB88I,GAAcvzH,YAiCd,MAAM2yC,WAAmB46E,GACvBp2L,mBACE,MAAO,aAGTlB,kBACE,MAAO,aAET+b,uBACE,MAAO,CACLkwK,QAAS,OAGbt5L,0BACE,MAAO,CAYL4qM,WAAY,CACV7qM,MAAO,IAAIiP,KACXgT,QAAS,CACPlK,MAAO,SAGXq4I,UAAW,KACXr4F,YAAa,MACbk4F,KAAM,CACJluJ,SAAU,KACV2hB,MAAO,CACLonL,SAAU,CACRv0L,IAAK,sBACL4sL,SAAU,kBACV95I,QAAS,8BAEX0hJ,UAAW,CACTx0L,IAAK,yBACL4sL,SAAU,mBACV95I,QAAS,+BAEXywB,OAAQ,CACNxsE,KAAM,YACNuqH,KAAM,EACNthH,IAAK,qBACLmN,MAAO,CACLsnL,WAAY,CACV19L,KAAM,gBACNiJ,IAAK,0BACLmN,MAAO+mL,KACP38K,UAAW,CACTlmB,OAAQ,qBAGZqjM,WAAY,CACV39L,KAAM,SACNiJ,IAAK,0BACLuX,UAAW,CACTnnB,MAAO,+BAKfukM,UAAW,CACT30L,IAAK,qBACL4sL,SAAU,mBACV95I,QAAS,+BAEX8hJ,SAAU,CACR50L,IAAK,qBACL4sL,SAAU,kBACV95I,QAAS,gCAIf+hJ,WAAY,CACVprM,MAAO,CACLsN,KAAM,aACN48L,gBAAiB,GACjBp6C,UAAW,KACXxiG,WAAY,KACZ21C,OAAQ,KACRn1E,UAAW,CACTu9K,WAAY,4BACZzjM,OAAQ,oBAGZqa,QAAS,QAMXgb,KAAM,KAMNquK,QAAS,CACPtrM,MAAO,KACPiiB,QAAS,CACPlK,MAAO,SAQXwzL,QAAS,CACPvrM,MAAO,KACPiiB,QAAS,CACPlK,MAAO,SAUXyzL,mBAAoB,KAWpB7S,YAAa,MASbj8B,UAAW,GAMX+uC,UAAW,KAMX7F,cAAe,KACf91C,UAAW,KACXp9F,KAAM,OACN+M,gBAAiB,KAWjBisI,2BAA4B,MAGhClpL,iCACE,MAAO,CAOLmpL,cAAe,iBAMfnwB,UAAW,gBAMXgd,YAAa,mBAIjBp4L,UAAUwY,GACR,MAAMpY,EAAKC,KACXka,MAAMsB,UAAUrD,GAChBpY,EAAGorM,qBAAuBprM,EAAG0kM,aAC7B1kM,EAAG0kM,aAAe1kM,EAAGqrM,qBACrBrrM,EAAG02C,QAAQgZ,aAAa,wBAAyB,GAAG1vD,EAAG4K,iBACvD5K,EAAG4lM,aAAal2I,aAAa,OAAQ,QACrC1vD,EAAG+lM,aAAa9mM,SAAQilC,GAAKA,EAAEwrB,aAAa,OAAQ,SACpD1vD,EAAG02C,QAAQgZ,aAAa,iBAAkB1vD,EAAGurI,UAAUjyD,OAAO1uE,IAC9Dm2C,GAAY3xB,GAAG,CACbsnB,QAAS12C,EAAG4lM,aACZz/L,MAAO,CACL2J,QAAS,cACT0vC,SAAU,IAAIx/C,EAAG6kM,mBAAmB7kM,EAAG+kM,qBAAqB/kM,EAAGmrM,kBAEjE9kJ,UAAW,CACTv2C,QAAS,kBACT0vC,SAAU,IAAIx/C,EAAG6kM,cAEnBtoL,QAASvc,IAEXA,EAAGurI,UAAUi/D,WAAW1xH,SAAW94E,EAAGurI,UAAUk/D,WAAW5qI,UAAY7/D,EAAGirM,UAE1EjrM,EAAG+4L,QAAQl1H,QAEbjkE,eAAewY,GACb,MAAMgnB,EAAIhnB,EAAOqkB,MAAQrkB,EAAO5Y,MAChC,GAAI4/B,EAAG,CACLn/B,KAAKi8J,UAAY98H,EACjBn/B,KAAKkZ,WAAWkxL,WAAalqM,QAAQF,KAAKqrM,iBACrC,CACLlzL,EAAOqkB,KAAOqD,GAAWyrK,MAAMnzL,EAAOiyL,WAAYjyL,EAAO0yL,QAAS1yL,EAAO2yL,SACzE9qM,KAAKkZ,WAAWsjB,KAAO,MAEzBtiB,MAAM0D,kBAAkB/e,WAE1Bc,YACE,IAAI4rM,GACHA,EAAoBvrM,KAAKwrM,eAAiB,MAAQD,SAA2B,OAAS,EAAIA,EAAkB55E,OAC7Gz3G,MAAMwvH,aAAa7qI,WAErBc,YACE,IAAI8rM,EAAkBC,GACrBD,EAAmBzrM,KAAKwqM,cAAgB,MAAQiB,SAA0B,OAAS,EAAIA,EAAiB1vL,WACxG2vL,EAAmB1rM,KAAKuqM,cAAgB,MAAQmB,SAA0B,OAAS,EAAIA,EAAiB3vL,UACzG7B,MAAM8B,YAGR+iD,mBACE,OAAO/+D,KAAK2lM,aAAa39L,cAAc,IAAIhI,KAAK4kM,4BAElDjlM,YACE,MAAMI,EAAKC,MACToqM,WACEA,GACErqM,EACJ4rM,EAAa5rM,EAAGgnM,QAAQqD,GAC1BlwL,MAAMgtL,aAAaroM,WAEnBkB,EAAGurI,UAAUjyD,OAAO5iC,QAAQp1C,MAAMi4C,SAAW,GAAGv5C,EAAG6rM,aAAe,QAGlE7rM,EAAG8rM,iBAAiB9rM,EAAGqqM,WAAYvqK,GAAWomK,SAAS0F,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWj1K,QAAQ8F,OAEpI78B,sBAAqBwnM,KACnBA,EAAI3qK,KACJA,IAEA,MAAMz8B,EAAKC,MACT+6K,UACEA,EAASgd,YACTA,EAAWoT,qBACXA,GACEprM,EACJ85L,EAAa95L,EAAG+rM,eAAetvK,GAC/B6qK,EAAgB,CACd1nM,CAACo7K,GAAYA,GAAah7K,EAAGgsM,aAAavvK,GAC1C78B,CAACo4L,GAAc8B,EACfl6L,CAACI,EAAGmrM,eAAgBnrM,EAAG8qM,SAAWruK,EAAOz8B,EAAG8qM,SAAW9qM,EAAG+qM,SAAWtuK,EAAOz8B,EAAG+qM,SAEnF,GAAIjR,EAAY,CAEd,GAAI95L,EAAGm4L,YAAa,CAClB,MAAM8T,GAAWjsM,EAAG+rM,eAAejsK,GAAW9gB,IAAIyd,GAAO,EAAG,MAC1DunF,GAAShkH,EAAG+rM,eAAejsK,GAAW9gB,IAAIyd,EAAM,EAAG,MACrD6qK,EAAc,iBAAmB2E,EACjC3E,EAAc,eAAiBtjF,EAC/BsjF,EAAc,eAAiB2E,IAAYjoF,GAG/C9rE,GAAUg0J,gBAAgB9E,EAAME,GAEhCF,EAAKz1I,UAAY,wCAAwCl1B,EAAKrvB,kBAC9Dg6L,EAAK13I,aAAa,OAAQ,YAC1B03I,EAAK13I,aAAa,aAAc5vB,GAAW/C,OAAON,EAAM,iBACxD,GAAIz8B,EAAGgsM,aAAavvK,GAAO,CACzB2qK,EAAKx8L,GAAK,GAAG5K,EAAG4K,oBACX,CACLw8L,EAAK33I,gBAAgB,MAEvB,GAAI27I,EAAsB,CACxBtsM,UAAU,GAAGsoM,KAAOA,EAAK7uI,WACzBv4D,EAAGyuB,SAAS28K,EAAsBnrM,KAAMnB,YAG5Cc,gBAAgBwwB,GACd,MAAMg3K,EAAOh3K,EAAMxxB,OAAOslD,QAAQ,eAClC9zB,EAAM21B,iBACNqhJ,EAAKryI,QACL90D,KAAKoqM,WAAavqK,GAAWomK,SAASkB,EAAKzwK,QAAQ8F,MAErD78B,YAAYwwB,GACV,MAAMg3K,EAAOh3K,EAAMxxB,OAAOslD,QAAQ,eAClCjkD,KAAKksM,eAAersK,GAAWomK,SAASkB,EAAKzwK,QAAQ8F,MAAOrM,GAE9DxwB,mBAAkBwhL,QAChBA,EAAO5uG,QACPA,IAGAvyE,KAAKme,UAAU,QAEf,GAAIo0D,EAAQxpE,GAAKwpE,EAAQ/tC,EAAG,CAC1BxkC,KAAKsrI,UAAUi/D,WAAWhrM,MAAQ4hL,EAAQj0K,WAC1ClN,KAAKsrI,UAAUk/D,WAAWv/L,KAAOk2K,EAAQl0K,cAE3CiN,MAAMiyL,qBAAqBttM,WAS7Bc,eAAe68B,EAAMrM,GACnB,MAAMpwB,EAAKC,MACTosM,gBACEA,EAAelU,YACfA,GACEn4L,EACNA,EAAGqsM,gBAAkB5vK,EACrB,IAAKz8B,EAAG6nM,eAAeprK,GAAO,CAC5Bz8B,EAAGssM,gBAAkBl8K,EAIrB,GAAI+nK,EAAa,CACf,GAAIn4L,EAAGusM,kBAAkBF,EAAiB5vK,EAAMrM,GAAQ,CACtDpwB,EAAG+4L,UAUH/4L,EAAGwtB,QAAQ,kBAAmB,CAC5B0uI,UAAWl8J,EAAGk8J,UACd1mB,WAAYr1I,QAAQiwB,UAGnB,CACL,IAAKpwB,EAAGR,OAASQ,EAAGR,MAAMyQ,YAAcwsB,EAAKxsB,UAAW,CACtDjQ,EAAGR,MAAQi9B,OACN,GAAIz8B,EAAGm9D,SAAU,CACtBn9D,EAAG4xH,QAGP5xH,EAAGssM,gBAAkB,MAIzB1sM,kBAAkBysM,EAAiB5vK,EAAMrM,GACvC,MAAMpwB,EAAKC,MACTk4L,YACEA,EAAWqU,WACXA,GACExsM,EACJk8J,EAAYswC,EAAW1kK,MACvB2kK,EAActU,IAAgB,SAC9B3mL,KACEA,EAAI8rE,WACJA,GACEkvH,EACJE,EAAYl7L,GAAQ,CAClB5R,CAACkgC,GAAWsgJ,QAAQtgJ,GAAW9gB,IAAIk9I,EAAU,IAAK,EAAG,OAAQ,EAC7Dt8J,CAACkgC,GAAWsgJ,QAAQlkB,EAAU,KAAM,EACpCt8J,CAACkgC,GAAWsgJ,QAAQlkB,EAAUA,EAAUn9J,OAAS,KAAM,EACvDa,CAACkgC,GAAWsgJ,QAAQtgJ,GAAW9gB,IAAIk9I,EAAUA,EAAUn9J,OAAS,GAAI,EAAG,OAAQ,GAEjF+6L,EAAa0S,EAAWtuL,IAAIue,GAC5BkwK,EAAW7S,EAAa,SAAW,MAErC,MAAM8S,EAAkBH,IAAgBC,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU5sK,GAAWsgJ,QAAQ3jJ,KAE3H,GAAIrM,EAAM2yB,QAAS,CAGjB,GAAIo1I,IAAgB,OAAS3mL,GAAQo7L,EAAiB,CACpDJ,EAAWG,GAAUlwK,GAErB,GAAIgwK,IAAgBD,EAAWtuL,IAAIle,EAAG6sM,gBAAiB,CACrD7sM,EAAG6sM,eAAeziK,QAAQpqC,EAAG6sM,eAAez/L,WAAaqvB,EAAOy/H,EAAU,GAAK,GAAK,WAKrF,GAAI9rI,EAAMipF,UAAY7nG,EAAM,CAC/B,MAAOiX,EAAO9E,GAAO,CAAC,IAAIlV,KAAKg+L,EAAczsM,EAAG6sM,iBAAmB7sM,EAAG6sM,eAAiB3wC,EAAU,IAAMmwC,GAAkB5vK,GAAMvkB,KAAKiyL,IAEpI,GAAIsC,EAAa,CACfD,EAAW9tJ,QAGb,IAAK,MAAMtf,EAAI3W,EAAO2W,GAAKzb,EAAKyb,EAAEgL,QAAQhL,EAAEhyB,UAAY,GAAI,CAC1Do/L,EAAWxtL,IAAIogB,SAKd,KAAMotK,EAAWtuL,IAAIue,IAAS+vK,EAAWh7L,OAAS,GAAI,CACzDg7L,EAAW9tJ,QACX8tJ,EAAWxtL,IAAIyd,GAEjB,MAAMqwK,EAAUN,EAAWh7L,KAG3B,GAAIs7L,IAAY,EAAG,CACjB9sM,EAAG6sM,eAAiBpwK,OACf,IAAKqwK,EAAS,CACnB9sM,EAAG6sM,eAAiB,KAGtB,OAAOL,EAAWlvH,aAAeA,EAEnC19E,gBAAgBs8J,EAAW6wC,GAGzB,MAAM3gM,EAAS2gM,GAAgB,IAAIC,IACjC1vH,WACEA,GACElxE,EACN2gM,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAaruJ,QACzE,IAAImuJ,EACJ,GAAI3wC,EAAW,CACb,GAAIA,EAAUj9J,QAAS,CAGrB4tM,EAAiB3wC,EAAU,GAC3BA,EAAYA,EAAUhkJ,KAAKiyL,IAE3B,GAAIlqM,KAAKk4L,cAAgB,SAAWj8B,EAAUn9J,SAAW,EAAG,CAC1D,IAAK,MAAMqgC,EAAI,IAAI3wB,KAAKytJ,EAAU,IAAK98H,GAAK88H,EAAU,GAAI98H,EAAEgL,QAAQhL,EAAEhyB,UAAY,GAAI,CACpFhB,EAAO4S,IAAIogB,QAER,CACL,IAAI6tK,EAAaC,EAEjBL,EAAiB3wC,EAAU,IAC1B+wC,EAAc/wC,KAAe,MAAQ+wC,SAAqB,OAAS,GAAKC,EAAsBD,EAAYhuM,WAAa,MAAQiuM,SAA6B,OAAS,EAAIA,EAAoBpmM,KAAKmmM,GAAa7tK,GAAKhzB,EAAO4S,IAAIogB,UAE7N,CACLytK,EAAiB3wC,EACjB9vJ,EAAO4S,IAAIk9I,IAGf,GAAI2wC,EAAgB,CAClB5sM,KAAKoqM,WAAapqM,KAAK4sM,eAAiB/sK,GAAWoL,UAAU2hK,GAG/D,GAAIzgM,EAAOkxE,aAAeA,EAAY,CACpCr9E,KAAK84L,UAEP,OAAO3sL,EAETxM,kBAEE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAK84L,WAaT78B,gBACE,MAAMp0H,MACJA,GACE7nC,KAAKusM,WACT,OAAOvsM,KAAKk4L,cAAgB,SAAWrwJ,EAAM/oC,OAAS,CAAC+oC,EAAM,GAAIA,EAAMA,EAAM/oC,OAAS,IAAM+oC,EAE9FloC,kBAAkBqyH,GAChB,MAAMjyH,EAAKC,KACTg9I,EAAUhrB,EAAS/yH,IAAIuN,QAAUwlH,EAASxtH,KAC1C4lM,EAAarqM,EAAGqqM,WAClB,IAAIjpB,EAAU,IAAI3yK,KAAK47L,GACvB,GAAIptD,IAAY,UAAYj9I,EAAGm9D,SAAU,CACvC,OAAOn9D,EAAG4xH,OAIZ,GAAIy4E,GAAcrqM,EAAG4lM,aAAa5tJ,SAASi6E,EAASrzH,QAAS,CAC3D,EAAG,CACD,OAAQq+I,GACN,IAAK,YAIHhrB,EAASlsE,iBACT,GAAIksE,EAASlvE,QAAS,CACpBq+H,EAAUphL,EAAG0pH,oBACR,CACL03D,EAAQh3I,QAAQg3I,EAAQh0K,UAAY,GAEtC,MACF,IAAK,UAGH6kH,EAASlsE,iBACTq7H,EAAQh3I,QAAQg3I,EAAQh0K,UAAY,GACpC,MACF,IAAK,aAIH6kH,EAASlsE,iBACT,GAAIksE,EAASlvE,QAAS,CACpBq+H,EAAUphL,EAAG2pH,oBACR,CACLy3D,EAAQh3I,QAAQg3I,EAAQh0K,UAAY,GAEtC,MACF,IAAK,YAGH6kH,EAASlsE,iBACTq7H,EAAQh3I,QAAQg3I,EAAQh0K,UAAY,GACpC,MACF,IAAK,QACH,OAAOpN,EAAGmsM,eAAe9B,EAAYp4E,UAElCjyH,EAAG6nM,eAAezmB,KAAaphL,EAAGgrM,oBAE3C,GAAIhrM,EAAG8qM,SAAW1pB,EAAUphL,EAAG8qM,QAAS,CACtC,OAEF,GAAI9qM,EAAG+qM,SAAW3pB,EAAUphL,EAAG+qM,QAAS,CACtC,OAEF/qM,EAAGqqM,WAAajpB,GAGpBxhL,cAAckrM,GACZ,OAAOA,EAAU7qM,KAAKktM,WAAWrC,GAAW,KAE9ClrM,cAAckrM,GACZ7qM,KAAKmtM,cAAgBntM,KAAKmtM,YAAY5D,QAAUsB,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ59L,eAC1GjN,KAAK84L,UAEPn5L,cAAcmrM,GACZ,OAAOA,EAAU9qM,KAAKktM,WAAWpC,GAAW,KAE9CnrM,cAAcmrM,GACZ9qM,KAAKmtM,cAAgBntM,KAAKmtM,YAAY3D,QAAUsB,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ79L,eAC1GjN,KAAK84L,UAEPn5L,WAAW68B,GACTx8B,KAAKoqM,WAAa5tK,EAGlB,IAAKx8B,KAAK+mM,QAAQvqK,IAASx8B,KAAKotM,aAAc,CAC5ClzL,MAAM0oK,WAAWpmJ,IAGrB78B,iBAAiByqM,EAAYiD,GAC3B,GAAIrtM,KAAKutB,QAAQ,yBAA0B,CACzC68K,WAAAA,EACAiD,cAAAA,MACK,MAAO,CACZ,OAEFjD,EAAaA,EAAapqM,KAAKktM,WAAW9C,GAAcpqM,KAAKw8B,OAASx8B,KAAKw8B,KAAOqD,GAAWoL,UAAU,IAAIz8B,OAC3G,GAAI0F,MAAMk2L,GAAa,CACrB,MAAM,IAAI15L,MAAM,gFAElB,OAAOmvB,GAAWyrK,MAAMlB,EAAYpqM,KAAK6qM,QAAS7qM,KAAK8qM,SAEzDnrM,iBAAiByqM,EAAYkD,GAC3B,MAAMvtM,EAAKC,MACT+6K,UACEA,EAAS0f,aACTA,EAAYj8J,MACZA,GACEz+B,EACJwtM,EAAgBD,GAAiBvtM,EAAGgnM,QAAQuG,GAC9C,GAAI7S,EAAc,CAChB,MAAM+S,EAAWhvK,EAAMA,MACrBowB,EAAgB3W,GAAUwmB,iBAAiB1+D,EAAG02C,SAIhD,GAAI2zJ,EAAWl9L,aAAesgM,IAAaztM,EAAGgnM,QAAQqD,IAAerqM,EAAGkrM,2BAA4B,CAElGzsK,EAAMhC,KAAO4tK,EAGf,GAAI5rK,EAAMA,QAAUgvK,GAAYztM,EAAG2lM,mBAAqB3lM,EAAGyiG,OAAQ,CACjEvqD,GAAU+uJ,QAAQjnM,EAAG4hH,eAAgByoF,EAAakD,EAAgB,GAAK,GAGzEvtM,EAAG+4L,QAAQl1H,QACX,MAAM+nI,EAAa5rM,EAAGgnM,QAAQqD,GAC9BuB,EAAWl8I,aAAa,WAAY,GACpCsrH,GAAa4wB,EAAW/sJ,UAAU7/B,IAAIg8J,GACtC4wB,EAAWhhM,GAAK,GAAG5K,EAAG4K,gBACtB,GAAI5K,EAAG4lM,aAAa5tJ,SAAS6W,GAAiE,CAC5F+8I,EAAW72I,QAEb,GAAIy4I,GAAiBA,IAAkB5B,EAAY,CACjD4B,EAAc/9I,gBAAgB,YAC9BurH,GAAawyB,EAAc3uJ,UAAU98C,OAAOi5K,GAC5CwyB,EAAc/9I,gBAAgB,WAI7B,CACHzvD,EAAGy+B,MAAMhC,KAAO4tK,EAChBrqM,EAAGovB,GAAG,CACJ2pK,QAAS,IAAM/4L,EAAG8rM,iBAAiBzB,GACnCx9K,KAAM,QAIZrtB,UAAUA,GACR,MAAMQ,EAAKC,MACTq9E,WACEA,GACEt9E,EAAGwsM,WACT,GAAIhtM,EAAO,CACTA,EAAQQ,EAAGmtM,WAAW3tM,EAAOQ,EAAGR,OAEhC,GAAIA,IAAUqD,UAAW,CACvB,OAEF,IAAK7C,EAAGR,OAASA,EAAMyQ,YAAcjQ,EAAGR,MAAMyQ,UAAW,CACvDjQ,EAAGk8J,UAAY18J,EAEjBQ,EAAGy8B,KAAOj9B,MACL,CACLQ,EAAGwsM,WAAW9tJ,QAEd1+C,EAAGy8B,KAAO,IAAIhuB,KAEhB,IAAKzO,EAAGyd,eAAiBzd,EAAGwsM,WAAWlvH,aAAeA,EAAY,CAChEt9E,EAAG+4L,UACH/4L,EAAGwtB,QAAQ,kBAAmB,CAC5B0uI,UAAWl8J,EAAGk8J,UACd1mB,WAAYr1I,QAAQH,EAAGssM,oBAI7B9sM,YACE,OAAOS,KAAKi8J,UAAUj8J,KAAKi8J,UAAUn9J,OAAS,GAEhDa,eACE,OAAOK,KAAKytM,MAAM,EAAG,QAEvB9tM,gBACE,OAAOK,KAAKytM,MAAM,EAAG,SAEvB9tM,gBACE,OAAOK,KAAKytM,KAAK,EAAG,SAEtB9tM,eACE,OAAOK,KAAKytM,KAAK,EAAG,QAEtB9tM,KAAKwsD,EAAWlkB,GACd,MAAMloC,EAAKC,MACToqM,WACEA,GACErqM,EAEJ2tM,EAAWtD,GAAcrqM,EAAGgnM,QAAQqD,GAAcA,EAAarqM,EAAGy8B,KAClE2kJ,EAAUthJ,GAAW9gB,IAAI2uL,EAAUvhJ,EAAWlkB,GAC9C0lK,EAAsB,IAAIn/L,KAAK2yK,GACjCwsB,EAAoBxjK,QAAQ,GAC5B,MAAMyjK,EAAqB/tK,GAAW9gB,IAAI8gB,GAAW9gB,IAAI4uL,EAAqB,EAAG,UAAW,EAAG,OAE/F,GAAI5tM,EAAG8qM,SAAW1+I,EAAY,GAAKyhJ,EAAqB7tM,EAAG8qM,SAAW9qM,EAAG+qM,SAAW3+I,EAAY,GAAKwhJ,EAAsB5tM,EAAG+qM,QAAS,CACrI,OAIF/qM,EAAGqtM,aAAe,KAClB,MAAMjhM,EAASpM,EAAGy8B,KAAO2kJ,EACzBphL,EAAGqtM,aAAe,MAClB,OAAOjhM,EAETxM,aAAa68B,GACX,OAAOx8B,KAAKoqM,YAAcpqM,KAAKktM,WAAW1wK,GAAMxsB,YAAchQ,KAAKoqM,WAAWp6L,UAEhFrQ,eAAe68B,GACb,OAAOx8B,KAAKusM,WAAWtuL,IAAIue,GAE7B78B,eAAc6yE,OACZA,EAAM+iE,WACNA,IAEAv1I,KAAKoqM,WAAavqK,GAAW9gB,IAAI/e,KAAKoqM,WAAY53H,EAAOjzE,MAAQS,KAAKoqM,WAAWl9L,WAAY,SAC7F,GAAIqoI,EAAY,CACd,IAAIs4D,GACHA,EAAqB7tM,KAAK++D,gBAAkB,MAAQ8uI,SAA4B,OAAS,EAAIA,EAAmB/4I,SAGrHn1D,wBACE,MAAMgrM,WACJA,GACE3qM,KACJ,GAAI2qM,EAAW//I,UAAW,CACxB+/I,EAAWh5E,WACN,CACLg5E,EAAW3oK,KAAO2oK,EAAWtB,UAAYrpM,KAAKoqM,WAAWn9L,cACzD09L,EAAWv6E,OACXu6E,EAAW71I,SAGfn1D,yBACEK,KAAK2qM,WAAWh5E,OAElBhyH,cAAaJ,MACXA,EAAKR,OACLA,IAEA,MAAMoiL,EAAU,IAAI3yK,KAAKxO,KAAKoqM,YAC9BjpB,EAAQ32I,YAAYjrC,GACpBS,KAAKoqM,WAAajpB,EAGlBnhL,KAAK++D,cAAgB9mB,GAAUmrE,sBAAsBpjH,KAAK++D,cAC1DhgE,EAAO4yH,OAEThyH,iBAAiBgrM,EAAYmD,GAC3B,IAAIC,EAAeC,EACnB,OAAO7E,GAAW1xH,YAAYq2H,EAAenD,EAAaxB,GAAWjxH,aAAa,CAChFv/D,MAAO3Y,KACPi2H,SAAUj2H,KAAKy2C,QACf8yJ,SAAUwE,EAAgB/tM,KAAK6qM,WAAa,MAAQkD,SAAuB,OAAS,EAAIA,EAAc9gM,cACtGu8L,SAAUwE,EAAgBhuM,KAAK8qM,WAAa,MAAQkD,SAAuB,OAAS,EAAIA,EAAc/gM,eACrG09L,GAAc,KAAM3qM,MAEzB0qI,iBACE,MAAM8gE,YACFA,GACExrM,KACJmM,EAAS+N,MAAMwwH,WACjB,GAAI8gE,EAAa,CACfr/L,EAAO3N,KAAKgtM,GAEd,OAAOr/L,EAETxM,qBACE,MAAM05E,OACFA,EAAMkxH,WACNA,GACEvqM,KAAKsrI,UACTt+D,EAAUg9H,KACZhqM,KAAK4rM,aAAex3L,KAAKC,OAAO24D,EAAQnjE,KAAIs1B,GAAKA,EAAE,GAAGrgC,UACtD,IAAKkB,KAAKwd,gBAAkBxd,KAAK0b,eAAgB,CAC/CsxD,EAAQu9H,EAAWhrM,OAAOm5L,SAAW,KACrC6R,EAAWtnL,MAAQ+pD,EAErB9yD,MAAMsf,qBAEN6/C,EAAO5iC,QAAQp1C,MAAMi4C,SAAW,GAAGt5C,KAAK4rM,aAAe,SAI3D,MAAMmB,WAAgBluL,IACpBlf,IAAIw/B,GACFA,EAAIA,EAAEgL,QAAUtK,GAAWsgJ,QAAQhhJ,GAAKA,EACxC,IAAKn/B,KAAKie,IAAIkhB,GAAI,CAChBn/B,KAAKq9E,YAAcr9E,KAAKq9E,YAAc,GAAK,EAE7C,OAAOnjE,MAAM6E,IAAIogB,GAEnBx/B,OAAOw/B,GACLA,EAAIA,EAAEgL,QAAUtK,GAAWsgJ,QAAQhhJ,GAAKA,EACxC,GAAIn/B,KAAKie,IAAIkhB,GAAI,CACfn/B,KAAKq9E,aAEP,OAAOnjE,MAAMZ,OAAO6lB,EAAEgL,QAAUtK,GAAWsgJ,QAAQhhJ,GAAKA,GAE1Dx/B,IAAIw/B,GACF,OAAOjlB,MAAM+D,IAAIkhB,EAAEgL,QAAUtK,GAAWsgJ,QAAQhhJ,GAAKA,GAEvDx/B,QACE,GAAIK,KAAKuR,KAAM,CACbvR,KAAKq9E,aAEP,OAAOnjE,MAAMukC,QAEf5W,YACE,MAAO,IAAI7nC,MAAMiY,OAAOpO,KAAI4H,GAAKouB,GAAWomK,SAASx0L,MAIzD83G,GAAW3yC,YACX2yC,GAAWrhH,OAAS,aA2BpB,MAAMmhH,WAAkBwsE,GAEtB9nL,mBACE,MAAO,YAGTlB,kBACE,MAAO,YAGTuqE,mBACE,MAAO,OAET53E,0BACE,MAAO,CAWLs9B,OAAQ,IAERmxK,eAAgB,aAChBC,WAAY,eAeZC,SAAU,MAKVC,aAAc,KAMdC,iBAAkB,KAClBvgB,SAAU,CACRj2F,OAAQ,CACN/hF,IAAK,kBACLjG,QAAS,iBACT4jH,OAAQ,KAEVk/D,KAAM,CACJ78K,IAAK,0CACL7W,IAAK,kBACL4Q,QAAS,cACTwmC,MAAO,QACPo9E,OAAQ,KAEVm/D,QAAS,CACP98K,IAAK,2CACL7W,IAAK,gBACL4Q,QAAS,iBACTwmC,MAAO,MACPo9E,OAAQ,MAIZ66E,qBAAsB,GAWtB3lL,IAAK,KAWLtU,IAAK,KAuBLgxB,KAAM,MACNqtJ,aAAc,KAMd9nJ,aAAc,KAYdorJ,OAAQ,CACNnpL,KAAM,aACNolD,KAAM,SACNiL,SAAU,KACVu5D,aAAc,UACdpgF,MAAO,CACLA,MAAO,QACP4E,SAAU,OAcd17C,MAAO,MAUXI,aAAaq2L,EAAQQ,GACnB,MAAMz2L,EAAKC,KACTiiD,EAAW,CACTtpC,MAAO5Y,EACPknI,WAAYlnI,EAAGA,EAAG+1L,oBAClB+U,QAAS9qM,EAAG4oB,IACZmiL,QAAS/qM,EAAGsU,IACZu2B,aAAc7qC,EAAGqsC,cAEjBiK,MAAO,CACLtlC,OAAQhR,EAAGm9L,cACXv+L,OAAQoB,EAAGA,EAAG+1L,qBAEhByY,kBAAmB,EACjBtyC,UAAAA,EACAl9J,OAAQi3L,MAGR,GAAIA,EAAOprI,UAAW,CACpB7qD,EAAG84H,cAAgB94H,EAAGyuM,eAAiB,KACvCzuM,EAAGR,MAAQ08J,EAAU,GACrBl8J,EAAGyuM,eAAiBzuM,EAAG84H,cAAgB,MACvCm9D,EAAOrkE,UAIf,GAAI5xH,EAAGuuM,qBAAsB,CAC3BrsJ,EAASnsC,IAAM/V,EAAGuuM,qBAIpB,GAAIvuM,EAAGR,MAAO,CACZ0iD,EAAS1iD,MAAQQ,EAAGR,UACf,CACL0iD,EAASmoJ,WAAa,IAAI57L,KAE5B,MAAMrC,EAASo9G,GAAW9xC,YAAY++G,EAAWR,EAAQ,CACvDr9K,MAAO5Y,EACPkiD,SAAAA,IAGF91C,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO2sL,QAAQl1H,QAC/D,OAAOz3D,EAITsiM,oBACE,OAAO5uK,GAAW9gB,IAAI/e,KAAKT,OAAQ,EAAIS,KAAK0uM,MAAM3kK,UAAW/pC,KAAK0uM,MAAMzmK,MAE1EtoC,cACE,MAAMI,EAAKC,MACT2oB,IACEA,GACE5oB,EACN,IAAKA,EAAG84E,UAAY94E,EAAGR,MAAO,CAC5B,MAAMiZ,EAAWzY,EAAG0uM,cACpB,IAAK9lL,GAAOA,EAAI3Y,WAAawI,EAAU,CACrCzY,EAAG84H,cAAgB,KACnB94H,EAAGR,MAAQiZ,EACXzY,EAAG84H,cAAgB,QAIzB81E,uBACE,OAAO9uK,GAAW9gB,IAAI/e,KAAKT,MAAOS,KAAK0uM,MAAM3kK,UAAW/pC,KAAK0uM,MAAMzmK,MAErEtoC,iBACE,MAAMI,EAAKC,MACTqU,IACEA,GACEtU,EACN,IAAKA,EAAG84E,UAAY94E,EAAGR,MAAO,CAC5B,MAAMiZ,EAAWzY,EAAG4uM,iBACpB,IAAKt6L,GAAOA,EAAIrE,WAAawI,EAAU,CACrCzY,EAAG84H,cAAgB,KACnB94H,EAAGR,MAAQiZ,EACXzY,EAAG84H,cAAgB,QAMzBl5H,WAAW23L,GACT,GAAIt3L,KAAK64E,SAAU,CACjB,OAEF,MAAM94E,EAAKC,MACTy2L,QACEA,GACE12L,EAGN,GAAI02L,EAAS,CAEX,MAAMmY,EAAe,CACnB/D,QAAS9qM,EAAG4oB,IACZmiL,QAAS/qM,EAAGsU,KAEd,GAAItU,EAAGR,MAAO,CACZqvM,EAAarvM,MAAQQ,EAAGR,UACnB,CACLqvM,EAAaxE,WAAa,IAAI57L,KAGhCioL,EAAQj9K,UAAUo1L,GAEpB10L,MAAMg9K,WAAWI,GAEnB33L,cACEK,KAAKg2L,OAAOlhI,QAId2xB,cACE,MAAM1mF,EAAKC,KACXD,EAAGg0L,WAAW,iCAAkC,MAChDh0L,EAAGg0L,WAAW,iCAAkC,MAChD,IAAIx0L,EAAQQ,EAAGR,MACf,GAAIA,EAAO,CACT,MAAMopB,IACJA,EAAGtU,IACHA,EAAGg6L,iBACHA,GACEtuM,EAEJ,GAAIsuM,EAAkB,CACpB9uM,EAAQsgC,GAAWoL,UAAU1rC,EAAO,OAEtC,GAAIopB,GAAOppB,EAAQopB,EAAK,CACtB5oB,EAAGk0L,SAAS,iCAAkC,MAC9C,OAAO,MAET,GAAI5/K,GAAO9U,EAAQ8U,EAAK,CACtBtU,EAAGk0L,SAAS,iCAAkC,MAC9C,OAAO,OAGX,OAAO/5K,MAAMusE,QAIf9mF,mBAAmBJ,GACjB,MAAMQ,EAAKC,KACX,GAAIT,GAAS,KAAM,CACjB,IAAKsgC,GAAW9vB,OAAOxQ,GAAQ,CAC7B,UAAWA,IAAU,SAAU,CAE7BA,EAAQsgC,GAAW7zB,MAAMzM,EAAOQ,EAAG+8B,SAAW+C,GAAW7zB,MAAMzM,EAAOQ,EAAGkuM,oBACpE,CACL1uM,EAAQ,IAAIiP,KAAKjP,IAIrB,GAAIsgC,GAAWgvK,YAAYtvM,GAAQ,CACjC,KAAMQ,EAAG4oB,KAAOppB,EAAQQ,EAAG4oB,KAAOkX,GAAWivK,eAAiB/uM,EAAGsU,KAAO9U,GAASQ,EAAGsU,KAAM,CACxF,OAAOtU,EAAGgvM,mBAAmBxvM,GAE/B,OAAOA,GAGX,OAAO,KAETI,mBAAmBJ,GACjB,MAAMQ,EAAKC,MACTmuM,SACEA,GACEpuM,EACNR,EAAQsgC,GAAWtwB,MAAMhQ,GACzB,IAAK4uM,EAAU,CACbtuK,GAAWoL,UAAU1rC,EAAO,YAGzB,GAAI4uM,IAAa,UAAW,CAC/B,MAAMa,EAAYnvK,GAAW7zB,MAAMmiM,EAAUpuM,EAAGmuM,YAEhD,GAAIruK,GAAWgvK,YAAYG,GAAY,CACrCnvK,GAAWovK,eAAe1vM,EAAOyvM,QAG9B,GAAInvK,GAAWgvK,YAAY9uM,EAAGR,OAAQ,CACzCsgC,GAAWovK,eAAe1vM,EAAOQ,EAAGR,aAInC,GAAIQ,EAAGyuM,gBAAkB3uK,GAAWgvK,YAAY9uM,EAAGR,OAAQ,CAC9DsgC,GAAWovK,eAAe1vM,EAAOQ,EAAGR,OAGtC,OAAOA,EAETI,UAAUJ,GACR,OAAOS,KAAKkvM,mBAAmB3vM,GAEjCI,UAAUgpB,GACR,MAAMw9G,MACJA,EAAKswD,QACLA,GACEz2L,KACJ,GAAImmI,EAAO,CACT,GAAIx9G,GAAO,KAAM,CACfw9G,EAAM32E,gBAAgB,WACjB,CACL22E,EAAMx9G,IAAMA,GAIhB,GAAI8tK,EAAS,CACXA,EAAQoU,QAAUliL,EAEpB3oB,KAAKgxL,cAEPrxL,UAAUJ,GACR,OAAOS,KAAKkvM,mBAAmB3vM,GAEjCI,UAAU0U,GACR,MAAM8xH,MACJA,EAAKswD,QACLA,GACEz2L,KACJ,GAAImmI,EAAO,CACT,GAAI9xH,GAAO,KAAM,CACf8xH,EAAM32E,gBAAgB,WACjB,CACL22E,EAAM9xH,IAAMA,GAGhB,GAAIoiL,EAAS,CACXA,EAAQqU,QAAUz2L,EAEpBrU,KAAKgxL,cAEPpmJ,mBAEE,cAAc5qC,KAAKosC,gBAAkB,SAAWpsC,KAAKosC,cAAgBvM,GAAW+K,aAElFjrC,mBAAmBirC,GACjB,GAAI5qC,KAAKy2L,QAAS,CAChBz2L,KAAKy2L,QAAQ7rJ,aAAeA,GAGhCjrC,YAAYJ,EAAOsa,GACjB,MAAM9Z,EAAKC,KACTwY,EAAWzY,EAAGmvM,mBAAmB3vM,GAEnC,GAAIA,IAAUiZ,EAAU,CAEtBzY,EAAGk0L,SAAS,kBACZ,OAEFl0L,EAAGg0L,WAAW,kBAEd,GAAIh0L,EAAG+yL,WAAWj5K,EAAUrB,GAAW,CACrC,OAAO0B,MAAMi1L,YAAY32L,EAAUqB,GAIrC,IAAK9Z,EAAGgzL,UAAW,CACjBhzL,EAAGmzL,uBAGPvzL,YAAYJ,EAAOsa,GACjB,MAAMm8K,EAASh2L,KAAKy2L,QACpB,GAAIT,IAAWh2L,KAAK+yL,UAAW,CAC7BiD,EAAOz2L,MAAQA,EAEjB2a,MAAMk1L,YAAY7vM,EAAOsa,GAE3Bla,WAAWJ,EAAO+Y,GAChB,MAAMzL,SAActN,EACpB,IAAKA,EAAO,CACV,OAAO,KAET,GAAIsN,IAAS,SAAU,CACrBtN,EAAQ,CACNwqC,UAAW31B,KAAK41B,IAAIzqC,GACpB0oC,KAAM3vB,EAAMA,EAAI2vB,KAAO,YAEpB,GAAIp7B,IAAS,SAAU,CAC5BtN,EAAQsgC,GAAWiK,cAAcvqC,GAEnC,GAAIA,GAASA,EAAM0oC,MAAQ1oC,EAAMwqC,UAAW,CAC1C,GAAIxqC,EAAMwqC,UAAY,EAAG,CACvBxqC,EAAQ,CACNwqC,WAAYxqC,EAAMwqC,UAElB9B,KAAM1oC,EAAM0oC,MAGhB,OAAO1oC,GAGXI,WAAWJ,GAETS,KAAKy2C,QAAQmI,UAAUr/C,EAAQ,SAAW,OAAO,iBACjDS,KAAKgxL,cAEPrxL,WAAWka,EAAUrB,GAEnB,GAAIqB,IAAa,MAAQA,SAAkB,GAAKA,EAAS7J,SAAWwI,IAAa,MAAQA,SAAkB,GAAKA,EAASxI,SAAWhQ,KAAKmuM,WAAa,UAAW,CAE/J,OAAQtuK,GAAW2L,QAAQ3L,GAAWoL,UAAUpxB,GAAWgmB,GAAWoL,UAAUzyB,IAElF,OAAO0B,MAAM44K,WAAWj5K,GAAYA,EAAS7J,UAAWwI,GAAYA,EAASxI,WAE/EsjL,iBAGE,MAAM92J,EAAOx8B,KAAKT,MAClB,OAAOi9B,EAAOqD,GAAW/C,OAAON,EAAMx8B,KAAK88B,QAAU,GAEvDn9B,eACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAKkzL,oBAAoB,OAK7BvzL,qBACEua,MAAMsf,qBACNx5B,KAAKkzL,oBAAoB,MAI3BvzL,mBAAmBwwB,GACjBjW,MAAM48K,mBAAmB3mK,GACzB,GAAIA,EAAMlxB,MAAQ,SAAWe,KAAKymF,QAAS,CACzCzmF,KAAKg2L,OAAOrkE,SAMlBtI,GAAUzyC,YACVyyC,GAAUnhH,OAAS,YAqCnB,MAAMmnM,WAAoBjiB,GAExBr/K,mBACE,MAAO,cAGTlB,kBACE,MAAO,cAGTuqE,mBACE,MAAO,SAET53E,0BACE,MAAO,CAKLmpB,IAAK,KAKLtU,IAAK,KAULgxB,KAAM,EAONiqK,UAAW,EAKX/vM,MAAO,KAYPu9B,OAAQ,GAoBRyyK,iBAAkB,KAoBlBC,cAAe,KACf1hB,SAAU,CACR2hB,KAAM,CACJ5iM,KAAM,gBAgBV6iM,aAAc,KAyBdthB,UAAW,MAKfzuL,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChB,MAAMpY,EAAKC,KAGXD,EAAGomI,MAAMhkF,iBAAiB,YAAY,KACpCpiD,EAAGoH,YAEL,UAAWpH,EAAG2vM,eAAiB,SAAU,CACvC3vM,EAAG4vM,mBAAqB5vM,EAAGinB,OAAOjnB,EAAGizL,cAAejzL,EAAG2vM,eAK3D/vM,YAAYJ,EAAOqwM,GACjB,IAAIC,GAAU37L,MAAM3U,GAKpB,GAAIswM,IAAW7vM,KAAK0xL,iBAAkB,CACpCme,EAAS,MACT,MAAM98I,EAAM/yD,KAAKmmI,MAAM5mI,MACrBq5C,EAAU32C,WAAW8wD,GACvB,GAAIA,IAAQ68I,EAAU,CAKpBC,GAAU7vM,KAAK8vM,YAAYl3J,EAASma,IAMxC,OAAO88I,EAETlwM,MAAMJ,GACJ,OAAO2U,MAAMlU,KAAKqU,MAAQ9U,GAASS,KAAKqU,IAE1C1U,MAAMJ,GACJ,OAAO2U,MAAMlU,KAAK2oB,MAAQppB,GAASS,KAAK2oB,IAE1ChpB,mBAAmBqE,GACjB,GAAIA,EAAE6I,OAAS,UAAW,CACxB,MAAM9M,EAAKC,KACTf,EAAM+E,EAAE/E,IACV,IAAI2gD,EAGJ,GAAI3gD,IAAQ,UAAW,CACrBc,EAAG21L,SAAS1xL,EAAEo1G,UACdx5D,EAAQ,UACH,GAAI3gD,IAAQ,YAAa,CAC9Bc,EAAG41L,WAAW3xL,EAAEo1G,UAChBx5D,EAAQ,UACH,IAAK57C,EAAEyuH,SAAWzuH,EAAE8+C,SAAW7jD,GAAOA,EAAIH,SAAW,EAAG,CAG7D,MAAM4+C,EAAQ39C,EAAGgwM,cAAc9wM,GAC7B+wM,EAAajwM,EAAG08B,UAAUwzK,YAAYvyJ,GAEtCwyJ,EAAWF,IAAejwM,EAAGR,OAASm+C,IAAU,MAAQxpC,MAAMnU,EAAG4oB,MAAQ5oB,EAAG4oB,IAAM,GACpFi3B,GAASswJ,IAAanwM,EAAG+vM,YAAYE,EAAYtyJ,GAEnD,GAAIz+C,IAAQ,SAAWc,EAAGowM,qBAAsB,CAC9CpwM,EAAGizL,cAAchvL,EAAG,MAEpBjE,EAAGowM,qBAAuB,MAE5B,GAAIvwJ,EAAO,CACT57C,EAAE8hD,kBAGN5rC,MAAM48K,mBAAmB9yL,GAE3BrE,SAAS2vM,EAAY,OACnB,MAAMvvM,EAAKC,KACX,GAAID,EAAG84E,SAAU,CACf,OAEF,IAAIrgE,GAAYzY,EAAGR,OAAS,IAAM+vM,EAAYvvM,EAAGuvM,UAAYvvM,EAAGslC,MAChE,IAAKtlC,EAAGqwM,MAAM53L,GAAW,CACvBA,EAAWzY,EAAG4oB,IAEhB,GAAI5oB,EAAGswM,MAAM73L,GAAW,CACtBzY,EAAGuwM,gBAAgB93L,IAGvB7Y,WAAW2vM,EAAY,OACrB,MAAMvvM,EAAKC,KACX,GAAID,EAAG84E,SAAU,CACf,OAEF,IAAIrgE,GAAYzY,EAAGR,OAAS,IAAM+vM,EAAYvvM,EAAGuvM,UAAYvvM,EAAGslC,MAChE,IAAKtlC,EAAGswM,MAAM73L,GAAW,CACvBA,EAAWzY,EAAGsU,IAEhB,GAAItU,EAAGqwM,MAAM53L,GAAW,CACtBzY,EAAGuwM,gBAAgB93L,IAGvB7Y,gBAAgB6Y,GACd,MAAMzY,EAAKC,KACXD,EAAG84H,cAAgB,KAEnB,GAAI94H,EAAG2vM,eAAiB,KAAM,CAC5B3vM,EAAGowM,qBAAuB,KAE1BpwM,EAAGwwM,cAAgB,KAEnBxwM,EAAG4vM,oBAAsB5vM,EAAG4vM,mBAAmB,KAAM,MAEvD5vM,EAAGR,MAAQiZ,EACXzY,EAAG84H,cAAgB,MACnB94H,EAAGwwM,cAAgB,MAErB5wM,gBACE,IAAKK,KAAKuwM,cAAe,CACvBr2L,MAAM84K,iBAAiBn0L,YAG3Bc,WAAWqE,GACT,IAAIwsM,EAAcC,EAAmBC,EACrCx2L,MAAM4kD,cAAcjgE,WACpB,MAAMkB,EAAKC,MACTmmI,MACEA,GACEpmI,EACJgzD,EAAMozE,EAAM5mI,MACZA,EAAQQ,EAAG08B,UAAUk0K,SAAS59I,GAC9B69I,EAAY18L,MAAM3U,GAASwzD,EAAMhzD,EAAG8wM,YAAYtxM,IAEjDixM,EAAezwM,EAAG+tL,YAAc,MAAQ0iB,SAAsB,OAAS,GAAKC,EAAoBD,EAAaf,QAAU,MAAQgB,SAA2B,OAAS,GAAKC,EAAwBD,EAAkBhb,iBAAmB,MAAQib,SAA+B,OAAS,EAAIA,EAAsB/oL,SAChT,GAAIorC,IAAQ69I,EAAW,CACrBzqE,EAAM5mI,MAAQqxM,EAEhB,GAAI7wM,EAAGowM,qBAAsB,CAC3BpwM,EAAGizL,cAAchvL,EAAG,MAEpBjE,EAAGowM,qBAAuB,OAG9BxwM,gBAAgBwwB,GACd,MAAMpwB,EAAKC,MACTy8B,UACEA,EAAS0pG,MACTA,GACEpmI,GACJ+lC,OACEA,GACErJ,EACJs2B,EAAMozE,EAAM5mI,MACZuxM,EAAWhrK,EAAOirK,cAAch+I,GAClC,GAAIt2B,EAAU24I,WAAa07B,EAAU,CACnC,IAAIvxM,EAAQwzD,EACZ,MAAMxsB,EAAQ9J,EAAUk0K,SAAS59I,GACjC,IAAK7+C,MAAMqyB,GAAQ,CACjBhnC,EAAQQ,EAAG8wM,YAAYtqK,GACvB,GAAIT,EAAOirK,cAAcxxM,GAASuxM,EAAU,CAM1C,MAAMp1J,EAAMqX,EAAIj0D,OAASiB,EAAGqxL,SAC5BjrD,EAAM5mI,MAAQA,EACdQ,EAAGqxL,SAAW7xL,EAAMT,OAAS48C,IAInCxhC,MAAM82L,gBAAgB7gL,GAExBxwB,YAAYJ,GACV,OAAOS,KAAKy8B,UAAUK,OAAOv9B,GAE/BI,aAAam9B,GACX,MAAM/8B,EAAKC,KACX,GAAI88B,IAAW,GAAI,CACjB,MAAM0yK,cACJA,EAAaD,iBACbA,GACExvM,EACJ+8B,EAAS0yK,EAAgB,GAAGA,MAAoB,KAChD,GAAID,GAAoB,KAAM,CAC5BzyK,EAAS,GAAGA,GAAU,OAAO,IAAI3uB,OAAOohM,UACnC,GAAIzyK,EAAQ,CAIjBA,GAAU,MAGd,OAAOA,EAETL,gBACE,MAAM18B,EAAKC,KACT88B,EAAS/8B,EAAG+8B,OACd,IAAIL,EAAY18B,EAAGkxM,WACnB,IAAKx0K,GAAa18B,EAAGmxM,cAAgBp0K,EAAQ,CAC3CL,EAAYmtF,GAAal4G,IAAI3R,EAAGmxM,YAAcp0K,GAK9C/8B,EAAGkxM,WAAax0K,EAElB,OAAOA,EAIT98B,WAAW0lC,GACTrlC,KAAKy2C,QAAQmI,UAAUvZ,EAAO,SAAW,OAAO,kBAChDrlC,KAAK0uM,MAAQrpK,EAEf1lC,gBAAgB2vM,GACd,OAAOA,GAAatvM,KAAKqlC,KAAO,GAElCwtJ,eACE,MAAMtzL,EAAQS,KAAKT,MACjBszL,EAAW,GAEb,GAAItzL,GAAS,KAAM,CACjBszL,EAASnqE,gBAAkB1oH,KAAKowM,MAAM7wM,GACtCszL,EAASpqE,eAAiBzoH,KAAKqwM,MAAM9wM,GAEvCszL,EAASp8C,OAASo8C,EAASnqE,iBAAmBmqE,EAASpqE,cACvD,OAAOoqE,EAMTlzL,YAAYJ,EAAO+Y,GACjB,MAAMvY,EAAKC,KACX,GAAIT,GAASA,IAAU,EAAG,CACxB,IAAI4xM,EAEJ,UAAW5xM,IAAU,SAAU,CAC7BA,SAAeA,IAAU,SAAWQ,EAAG08B,UAAUzwB,MAAMzM,GAAS0U,OAAO1U,GACvE4xM,EAAaj9L,MAAM3U,GACnB,GAAI4xM,EAAY,CACd5xM,EAAQ,IAGZ,IAAK4xM,GAAcpxM,EAAG+8B,OAAQ,CAC5Bv9B,EAAQQ,EAAG08B,UAAU6I,MAAM/lC,QAExB,CACLA,EAAQqD,UAEV,OAAOsX,MAAMi1L,YAAY5vM,EAAO+Y,GAElCg7K,iBACE,IAAI/zL,EAAQS,KAAKT,MACjB,GAAIA,GAAS,MAAQS,KAAK88B,OAAQ,CAChCv9B,EAAQS,KAAK6wM,YAAYtxM,GAE3B,OAAOA,GAKX8vM,GAAYz4H,YACZy4H,GAAYnnM,OAAS,cAuCrB,MAAMgiH,WAAmBkoB,GAEvBrkI,mBACE,MAAO,aAGTlB,kBACE,MAAO,aAITlN,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChBnY,KAAK84L,UAEPn5L,cAAcujC,GACZljC,KAAKsrI,UAAUvpG,OAAOmB,EAAU,OAAS,UAK3CvjC,gBACE,IAAKK,KAAKwd,gBAAkBxd,KAAKoxM,aAAc,CAC7CpxM,KAAKT,MAAQS,KAAKqxM,gBAGtB1xM,mBAAkBZ,OAChBA,IAEAiB,KAAKsxM,IAAMvyM,EAAOkvD,MAAQ,WAC1B,GAAIjuD,KAAK2vD,OAAQ,CACf3vD,KAAKT,MAAQS,KAAKqxM,gBAGtB1xM,kBAAkBqyH,GAChB,IAAIu/E,EACJ,MAAMxxM,EAAKC,KACX,OAAQgyH,EAAS/yH,KACf,IAAK,SAEHc,EAAGyxM,kBAAkBzxM,EAAG0xM,eACxB1xM,EAAG4xH,OACHK,EAASlsE,iBACT,OACF,IAAK,QACH/lD,EAAGR,MAAQQ,EAAGsxM,eACdtxM,EAAG4xH,OACHK,EAASlsE,iBACT,QAEHyrJ,EAAwBr3L,MAAM0xH,qBAAuB,MAAQ2lE,SAA+B,OAAS,EAAIA,EAAsB1qM,KAAK7G,KAAMgyH,GAI7IryH,eACE,MAAMI,EAAKC,KACT0xM,EAAK3xM,EAAGuxM,KACRvwK,KACEA,EAAIzD,OACJA,EAAMyE,OACNA,GACEhiC,EAAGurI,UACTvqG,EAAKjE,OAAS/8B,EAAG4xM,UAAY,MAAQ,KACrC,IAAI3uK,EAAQjC,EAAKxhC,MACfiZ,EAAW,IAAIhK,KAAKzO,EAAGR,OACzB,IAAKQ,EAAG4xM,UAAW,CACjB,GAAID,GAAM1uK,EAAQ,GAAIA,EAAQA,EAAQ,GACtC,IAAK0uK,GAAM1uK,IAAU,GAAIA,EAAQ,EAEnCxqB,EAAS4xB,SAASpH,GAClBxqB,EAASqyB,WAAWvN,EAAO/9B,OAC3B,GAAIQ,EAAGmjC,QAAS,CACd1qB,EAASsyB,WAAW/I,EAAOxiC,OAE7B,GAAIQ,EAAG6xM,KAAM,CACXp5L,EAAWqnB,GAAWxrB,IAAItU,EAAG6xM,KAAMp5L,GAErC,GAAIzY,EAAG8xM,KAAM,CACXr5L,EAAWqnB,GAAWlX,IAAI5oB,EAAG8xM,KAAMr5L,GAErC,OAAOA,EAET7Y,kBAAkBwoC,GAMhBnoC,KAAKutB,QAAQ,aAAc,CACzB4a,KAAAA,IAKJxoC,mBAAmBksG,GACjB7rG,KAAKT,MAAQssG,EAEflsG,YAAYJ,GACV,IAAIowD,EACJ,GAAIpwD,EAAO,CACTA,SAAeA,IAAU,SAAWsgC,GAAW7zB,MAAMzM,EAAOS,KAAK88B,QAAUv9B,EAE7E,IAAKS,KAAK4qD,UAAW,CACnB5qD,KAAKyxM,cAAgBlyM,EAEvB,OAAQowD,EAASpwD,KAAW,MAAQowD,SAAgB,EAAIA,EAAS9vB,GAAW7vB,QAAQ,GAEtFrQ,YAAYJ,GACV,GAAIS,KAAK4qD,UAAW,CAClB5qD,KAAKwxM,kBAAkBjyM,GAEzBS,KAAK84L,UAEPn5L,aAAam9B,GACX98B,KAAK2xM,UAAY9xK,GAAWiyK,eAAeh1K,GAC3C98B,KAAK84L,UAEPn5L,UAAUgpB,GACR,cAAcA,IAAQ,SAAWkX,GAAW7zB,MAAM2c,EAAK3oB,KAAK88B,QAAUnU,EAExEhpB,UAAU0U,GACR,cAAcA,IAAQ,SAAWwrB,GAAW7zB,MAAMqI,EAAKrU,KAAK88B,QAAUzoB,EAIxE1U,UACE,MAAMI,EAAKC,KACX,IAAKD,EAAGyd,eAAiBzd,EAAGR,MAAO,CACjCQ,EAAGqxM,aAAe,KAClB,MAAMrwK,KACFA,EAAIzD,OACJA,EAAMyE,OACNA,EAAMgwK,SACNA,EAAQC,SACRA,GACEjyM,EAAGurI,UACPnjG,EAAOpoC,EAAGR,MACV0yM,EAAOlyM,EAAG4xM,UACV3uK,EAAQmF,EAAK/6B,WACbskM,EAAK3xM,EAAGuxM,IAAMtuK,GAAS,GACzBjjC,EAAG02C,QAAQmI,UAAUqzJ,EAAO,MAAQ,UAAU,SAC9ClxK,EAAKpY,IAAMspL,EAAO,EAAI,EACtBlxK,EAAK1sB,IAAM49L,EAAO,GAAK,GACvBlxK,EAAKxhC,MAAQ0yM,EAAOjvK,EAAQA,EAAQ,IAAM,GAC1C1F,EAAO/9B,MAAQ4oC,EAAK96B,aACpB00B,EAAOxiC,MAAQ4oC,EAAK76B,aACpBykM,EAASrqD,SAAWgqD,EACpBM,EAAStqD,QAAUgqD,EACnBK,EAASvvG,OAASwvG,EAASxvG,OAASyvG,EACpClyM,EAAGqxM,aAAe,QAMxBlyM,EAAgBgrH,GAAY,eAAgB,CAC1ChtD,SAAU,KACVj6C,MAAO,CACL8d,KAAM,CACJ+nH,MAAO,qBACPj8I,KAAM,SACN8b,IAAK,EACLtU,IAAK,GACL0/G,wBAAyB,MACzBj3F,OAAQ,OAEVQ,OAAQ,CACNwrH,MAAO,uBACPj8I,KAAM,SACN8b,IAAK,EACLtU,IAAK,GACL0/G,wBAAyB,MACzBj3F,OAAQ,OAEViF,OAAQ,CACNygE,OAAQ,KACRsmD,MAAO,uBACPj8I,KAAM,SACN8b,IAAK,EACLtU,IAAK,GACL0/G,wBAAyB,MACzBj3F,OAAQ,OAEVi1K,SAAU,CACRllM,KAAM,SACN5B,KAAM,KACN08I,YAAa,QACb7xI,IAAK,SACLwmL,QAAS,wBAEX0V,SAAU,CACRnlM,KAAM,SACN5B,KAAM,KACN08I,YAAa,QACb7xI,IAAK,SACLwmL,QAAS,yBAGbx0C,SAAU,MACVuH,UAAW,KAOXnsH,QAAS,KAOT3jC,MAAO,CACLiiB,QAAS,CACPlK,MAAO,QAET/X,MAAO,MAOTu9B,OAAQ,KAORzoB,IAAK,KAOLsU,IAAK,KAOLkjF,aAAc,OAGhBqe,GAAWtzC,YACXszC,GAAWhiH,OAAS,aA4CpB,MAAM8hH,WAAkB6rE,GAEtB9nL,mBACE,MAAO,YAGTlB,kBACE,MAAO,YAGTuqE,mBACE,MAAO,OAET53E,0BACE,MAAO,CACLw2L,OAAQ,CACNnpL,KAAM,aACNwpC,MAAO,CACLA,MAAO,QACP4E,SAAU,OAcdne,OAAQ,KACRgxJ,SAAU,CACRj2F,OAAQ,CACNxhD,MAAO,MACPxmC,QAAS,iBACTyrH,QAAS,KAAA,CACPj0E,SAAU,CAAC,CACTnnC,MAAO,CACLgyL,oBAAqB,QAK7Bvf,KAAM,CACJt8I,MAAO,QACPvgC,IAAK,0CACL7W,IAAK,kBACL4Q,QAAS,eAEX+iL,QAAS,CACPv8I,MAAO,MACPvgC,IAAK,2CACL7W,IAAK,gBACL4Q,QAAS,mBAab8Y,IAAK,KAWLtU,IAAK,KAqBLgxB,KAAM,KACNqtJ,aAAc,KAYdnzL,MAAO,KAOP4yM,SAAU,OAKdxyM,aAAaq2L,EAAQQ,GACnB,MAAMz2L,EAAKC,KACX,OAAOkqH,GAAWzyC,YAAY++G,EAAWR,EAAQ,CAC/Cr9K,MAAO5Y,EACPkiD,SAAU,CACR1iD,MAAOQ,EAAGR,MACV0nI,WAAYlnI,EAAGA,EAAG+1L,oBAClBn9K,MAAO5Y,EACPs2C,MAAO,CACLtlC,OAAQhR,EAAGm9L,cACXv+L,OAAQoB,EAAGA,EAAG+1L,qBAEhBn2L,cAAawoC,KACXA,IAEApoC,EAAG84H,cAAgB,KACnB94H,EAAGR,MAAQ4oC,EACXpoC,EAAG84H,cAAgB,UAO3Bl5H,cACE,MAAMI,EAAKC,MACT2oB,IACEA,GACE5oB,EACN,IAAKA,EAAG84E,UAAY94E,EAAGR,MAAO,CAC5B,MAAMiZ,EAAWqnB,GAAW9gB,IAAIhf,EAAGR,OAAQ,EAAIQ,EAAGslC,KAAK0E,UAAWhqC,EAAGslC,KAAK4C,MAC1E,IAAKtf,GAAOA,EAAI3Y,WAAawI,EAAU,CACrCzY,EAAG84H,cAAgB,KACnB94H,EAAGR,MAAQiZ,EACXzY,EAAG84H,cAAgB,QAIzBl5H,iBACE,MAAMI,EAAKC,MACTqU,IACEA,GACEtU,EACN,IAAKA,EAAG84E,UAAY94E,EAAGR,MAAO,CAC5B,MAAMiZ,EAAWqnB,GAAW9gB,IAAIhf,EAAGR,MAAOQ,EAAGslC,KAAK0E,UAAWhqC,EAAGslC,KAAK4C,MACrE,IAAK5zB,GAAOA,EAAIrE,WAAawI,EAAU,CACrCzY,EAAG84H,cAAgB,KACnB94H,EAAGR,MAAQiZ,EACXzY,EAAG84H,cAAgB,QAMzBpyC,cACE,MAAM1mF,EAAKC,KACXD,EAAGg0L,WAAW,iCAAkC,MAChDh0L,EAAGg0L,WAAW,iCAAkC,MAChD,IAAIx0L,EAAQQ,EAAGR,MACf,GAAIA,EAAO,CACTA,EAAQA,EAAMyQ,UACd,GAAIjQ,EAAG6xM,MAAQ7xM,EAAG6xM,KAAK5hM,UAAYzQ,EAAO,CACxCQ,EAAGk0L,SAAS,iCAAkC,MAC9C,OAAO,MAET,GAAIl0L,EAAG8xM,MAAQ9xM,EAAG8xM,KAAK7hM,UAAYzQ,EAAO,CACxCQ,EAAGk0L,SAAS,iCAAkC,MAC9C,OAAO,OAGX,OAAO/5K,MAAMusE,QAEf9mF,WAAWka,EAAUrB,GACnB,GAAIqB,IAAa,MAAQA,SAAkB,GAAKA,EAAS7J,SAAWwI,IAAa,MAAQA,SAAkB,GAAKA,EAASxI,QAAS,CAEhI,OAAO6J,EAASzM,aAAeoL,EAASpL,YAAcyM,EAASxM,eAAiBmL,EAASnL,cAAgBwM,EAASvM,eAAiBkL,EAASlL,cAAgBuM,EAAStM,oBAAsBiL,EAASjL,kBAEtM,OAAO2M,MAAM44K,WAAWj5K,EAAUrB,GAOpC7Y,aACE,MAAMI,EAAKC,MACTg2L,OACEA,EAAMz2L,MACNA,GACEQ,EACN,GAAIA,EAAG84E,SAAU,CACf,OAEFm9G,EAAOz2L,MAAQA,EACfy2L,EAAOl5J,OAAS/8B,EAAG+8B,OACnBk5J,EAAOoc,QAAUryM,EAAGsU,IACpB2hL,EAAOqc,QAAUtyM,EAAG4oB,IAEpB,IAAKppB,EAAO,CACVQ,EAAGR,MAAQy2L,EAAOz2L,MAEpB2a,MAAMg9K,WAAW,MAEnBv3L,eACE,IAAI2yM,EACJp4L,MAAMq4L,eAENvyM,KAAKw3L,sBAAwB8a,EAAwBtyM,KAAKw3L,wBAA0B,MAAQ8a,SAA+B,OAAS,EAAIA,EAAsBzrM,KAAK7G,MAKrKL,cACEK,KAAKg2L,OAAOlhI,QAIdn1D,mBAAmBJ,GACjB,GAAIA,GAAS,KAAM,CACjB,UAAWA,IAAU,SAAU,CAC7BA,EAAQsgC,GAAW7zB,MAAMzM,EAAOS,KAAK88B,QACrC,GAAI98B,KAAKmyM,SAAU,CACjB5yM,EAAQsgC,GAAWovK,eAAe,IAAIzgM,KAAKxO,KAAKT,OAAQA,QAErD,CACLA,EAAQ,IAAIiP,KAAKjP,GAGnB,GAAIsgC,GAAWgvK,YAAYtvM,GAAQ,CACjC,IAAKS,KAAKmyM,SAAU,CAElB,OAAOtyK,GAAW7vB,QAAQzQ,OACrB,CACL,OAAOA,IAIb,OAAO,KAETI,UAAUJ,GACR,OAAOS,KAAK+uM,mBAAmBxvM,GAEjCI,UAAUJ,GACR,MAAM4mI,MACJA,GACEnmI,KACJ,GAAImmI,EAAO,CACT,GAAI5mI,GAAS,KAAM,CACjB4mI,EAAM32E,gBAAgB,WACjB,CACL22E,EAAMx9G,IAAMppB,GAGhBS,KAAKgxL,cAEPrxL,UAAUJ,GACR,OAAOS,KAAK+uM,mBAAmBxvM,GAEjCI,UAAUJ,GACR,MAAM4mI,MACJA,GACEnmI,KACJ,GAAImmI,EAAO,CACT,GAAI5mI,GAAS,KAAM,CACjB4mI,EAAM32E,gBAAgB,WACjB,CACL22E,EAAM9xH,IAAM9U,GAGhBS,KAAKgxL,cAEPrxL,YAAYJ,EAAO+Y,GACjB,MAAMvY,EAAKC,KACTwY,EAAWzY,EAAGgvM,mBAAmBxvM,GAEnC,GAAIA,IAAUiZ,GAAYzY,EAAGyyM,YAAcjzM,IAAU,GAAI,CAEvDQ,EAAGk0L,SAAS,kBACZ,OAEFl0L,EAAGg0L,WAAW,kBAEd,GAAIh0L,EAAG+yL,WAAWx6K,EAAKE,GAAW,CAChC,OAAO0B,MAAMi1L,YAAY32L,EAAUF,GAIrC,IAAKvY,EAAGgzL,UAAW,CACjBhzL,EAAGmzL,oBAAoB,OAG3BvzL,YAAYJ,EAAO+Y,GACjB,MAAMu/E,OACJA,GACE73F,KAAK8tL,SAET,GAAIj2F,GAAUt4F,EAAO,CACnBs4F,EAAOphD,QAAQkd,kBAAkBtyD,MAAMoxM,kBAAoBlzM,EAAM6N,WAAa,GAAK7N,EAAM8N,cAAgB,IAAM,IAEjH6M,MAAMk1L,YAAY7vM,EAAO+Y,GAE3B3Y,WAAWJ,EAAO+Y,GAChB,IAAIq3C,EAAQ+iJ,EACZ,MAAM7lM,SAActN,EACpB,IAAKA,EAAO,CACV,OAAO,KAET,GAAIsN,IAAS,SAAU,CACrBtN,EAAQ,CACNwqC,UAAW31B,KAAK41B,IAAIzqC,GACpB0oC,KAAM3vB,EAAMA,EAAI2vB,KAAO,aAEpB,GAAIp7B,IAAS,SAAU,CAC5BtN,EAAQsgC,GAAWiK,cAAcvqC,GAEnC,IAAKowD,EAASpwD,KAAW,MAAQowD,SAAgB,GAAKA,EAAO1nB,OAASyqK,EAAUnzM,KAAW,MAAQmzM,SAAiB,GAAKA,EAAQ3oK,UAAW,CAC1I,GAAIxqC,EAAMwqC,UAAY,EAAG,CACvBxqC,EAAQ,CACNwqC,WAAYxqC,EAAMwqC,UAElB9B,KAAM1oC,EAAM0oC,MAGhB,OAAO1oC,GAGXI,WAAWJ,GAETS,KAAKy2C,QAAQmI,UAAUr/C,EAAQ,SAAW,OAAO,iBACjDS,KAAKgxL,cAEPrxL,eACEK,KAAKkzL,oBAAoB,MAE3BI,iBACE,OAAOzzJ,GAAW/C,OAAO98B,KAAKT,MAAOS,KAAK88B,QAI5Cn9B,qBACEua,MAAMsf,qBACNx5B,KAAKkzL,oBAAoB,OAK7BlpE,GAAUpzC,YACVozC,GAAU9hH,OAAS,YAanB,MAAMyqM,WAAsBvlB,GAG1BztL,YACEK,KAAK4yM,UAAU72L,UACf/b,KAAK6yM,UAAU92L,UACf7B,MAAM8B,YAER+iD,mBACE,OAAO/+D,KAAK4yM,UAAUzsE,MAGxB8pD,oBACE,MAAO,CAACjwL,KAAK4yM,UAAUn8J,QAASz2C,KAAK6yM,UAAUp8J,SAGjD92C,sBAEAA,qBAAqB6tL,GACnBxtL,KAAK6yM,UAAUrlB,eAAiBA,EAChCxtL,KAAK4yM,UAAUplB,eAAiBA,EAGlC7tL,gBAAgBwY,GACd,MAAMpY,EAAKC,KACTmM,EAAS69G,GAAU6G,IAAI,CACrB28D,eAAgBztL,EAAGytL,eACnB7tL,eAAe4b,GACb,MAAM82K,EAAkBtyL,EAAGsyL,gBAC3BroE,GAAUn8G,UAAUmjL,YAAYvyL,MAAMuB,KAAMub,GAC5Cxb,EAAG8yM,YAAcxgB,GAAmBtyL,EAAGixL,gBAExC74K,GACL2oC,GAAY3xB,GAAG,CACbsnB,QAAStqC,EAAOsqC,QAChBkQ,QAAS,qBACTrqC,QAASvc,IAIX,GAAIA,EAAG84E,SAAU,CACf1sE,EAAO0sE,SAAW,KAEpB,OAAO1sE,EAITxM,gBAAgBkzM,GACd,MAAM9yM,EAAKC,KACX6yM,EAAU1jL,GAAG,CACXxvB,QAAO41I,WACLA,EAAUh2I,MACVA,IAEA,GAAIg2I,IAAex1I,EAAG+yM,cAAe,CACnC,MAAMC,EAAchzM,EAAG6yM,UAAUrzM,MACjCQ,EAAG84H,cAAgB,KACnB94H,EAAGR,MAAQwzM,EAAclzK,GAAWovK,eAAe8D,EAAaxzM,GAAS,KACzEQ,EAAG84H,cAAgB,QAGvBv8G,QAASvc,IAIbJ,gBAAgBwY,GACd,MAAMpY,EAAKC,KACT6M,GAAQsL,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOtL,OAAS,YACxEiJ,EAAMw2C,GAAO0rB,YAAY7/D,EAAOtL,MAAQ,aACxCV,EAASmgD,GAAOj1C,OAAO25B,GAAa55B,OAAO,CACzCvK,KAAAA,EACA2gL,eAAgBztL,EAAGytL,eACnB7tL,eAAe4b,GACb,MAAM82K,EAAkBtyL,EAAGsyL,gBAC3Bv8K,EAAIjI,UAAUmjL,YAAYvyL,MAAMuB,KAAMub,GACtCxb,EAAG6yM,YAAcvgB,GAAmBtyL,EAAGixL,gBAExC74K,IACL2oC,GAAY3xB,GAAG,CACbsnB,QAAStqC,EAAOsqC,QAChBkQ,QAAS,qBACTrqC,QAASvc,IAIX,GAAIA,EAAG84E,SAAU,CACf1sE,EAAO0sE,SAAW,KAEpB1sE,EAAOgjB,GAAG,CACRw3B,QAAS,EACPx2B,MAAAA,MAEA,IAAI6iL,EACJ,GAAI7iL,EAAMlxB,MAAQ,QAAUkxB,EAAMipF,WAAa45F,EAAkBhzM,KAAK6yM,aAAe,MAAQG,SAAyB,GAAKA,EAAgBpoJ,UAAW,CACpJz6B,EAAM+sH,kBACN/sH,EAAM8sH,aAAe,SAI3B,OAAO9wI,EAETu+H,iBACE,MAAO,CAAC1qI,KAAK4yM,UAAW5yM,KAAK6yM,WAI/BlzM,gBAAgBizM,GACd,MAAM7yM,EAAKC,KACX4yM,EAAUzjL,GAAG,CACXxvB,QAAO41I,WACLA,EAAUh2I,MACVA,IAEA,GAAIg2I,IAAex1I,EAAGkzM,kBAAmB,CACvClzM,EAAG84H,cAAgB,KACnB,IAAK94H,EAAG8yM,UAAUtzM,MAAO,CACvBQ,EAAG8yM,UAAUtzM,MAAQA,OAChB,GAAIA,EAAO,CAEhBsgC,GAAWovK,eAAe1vM,EAAOQ,EAAG8yM,UAAUtzM,OAEhDQ,EAAGR,MAAQA,EACXQ,EAAG84H,cAAgB,QAGvBv8G,QAASvc,IAGbJ,mBAAmBirC,GACjB,GAAI5qC,KAAK4yM,UAAW,CAClB5yM,KAAK4yM,UAAUhoK,aAAeA,GAGlCjrC,mBAAmBJ,GACjB,IAAI2zM,EAAuBC,EAC3B,cAAc5zM,IAAU,SAAWA,GAAS2zM,GAAyBC,EAAkBnzM,KAAK4yM,aAAe,MAAQO,SAAyB,OAAS,EAAIA,EAAgBvoK,gBAAkB,MAAQsoK,SAA+B,EAAIA,EAAwBrzK,GAAW+K,aAG3QjrC,oBAAoByzL,EAAgBpzL,KAAKwd,eACvCtD,MAAMg5K,oBAAoB,MAC1B,MAAMnzL,EAAKC,MACT4yM,UACEA,EAASC,UACTA,GACE9yM,EACJqzM,EAAgBR,EAAU7+E,wBAC1Bs/E,EAAgBR,EAAU9+E,wBAC5B,IAAKq/D,IAAkBrzL,EAAGg0H,wBAAyB,CACjDq/D,EAAgB,KAElBrzL,EAAGkzM,kBAAoB,KACvBL,EAAU7+E,wBAA0B,MAGpC6+E,EAAUrzM,MAAQ,KAClBqzM,EAAU7+E,wBAA0Bq/E,EACpC,GAAIhgB,EAAe,CACjByf,EAAU9+E,wBAA0B6+E,EAAU7+E,wBAA0B,MAE1E8+E,EAAUtzM,MAAQqzM,EAAUrzM,MAAQQ,EAAGuzL,WACvCsf,EAAU7+E,wBAA0Bq/E,EACpCP,EAAU9+E,wBAA0Bs/E,EACpCtzM,EAAGkzM,kBAAoB,MAEvBlzM,EAAGixL,cAELrxL,mBAAmBqE,GACjB,MAAMjE,EAAKC,KAEX,GAAIgE,EAAE/E,MAAQ,SAAW+E,EAAE/E,MAAQ,MAAO,CACxC,MAAM8zM,EAAchzM,EAAG6yM,UAAUrzM,MACjCQ,EAAG84H,cAAgB,KACnB94H,EAAGR,MAAQwzM,EAAclzK,GAAWovK,eAAe8D,EAAahzM,EAAG8yM,UAAUtzM,OAAS,KACtFQ,EAAG84H,cAAgB,OAGvBl5H,mBAAmBqE,GACjB,MAAMjE,EAAKC,KACX,GAAIgE,EAAE/E,MAAQ,QAAU+E,EAAEo1G,SAAU,CAClCp1G,EAAEk5I,kBACFl5I,EAAE8hD,iBACF/lD,EAAG8yM,UAAU/9I,aAGV,GAAI9wD,EAAE/E,MAAQ,QAAS,CAC1Bc,EAAGR,MAAQQ,EAAG6yM,UAAUrzM,OAI5BI,eAAe2tL,EAAUh1K,GACvBtY,KAAK6yM,UAAUvlB,SAAWttL,KAAK4yM,UAAUtlB,SAAWA,EAEtD3tL,eAAek5E,EAAUvgE,GACvB4B,MAAM6tI,eAAelvE,EAAUvgE,GAC/B,IAAKtY,KAAKwd,cAAe,CACvBxd,KAAK6yM,UAAUh6H,SAAW74E,KAAK4yM,UAAU/5H,SAAWA,GAIxDl5E,WAAWJ,GACTS,KAAK6yM,UAAUjzI,SAAW5/D,KAAK4yM,UAAUhzI,SAAWrgE,EAEtDI,QACEK,KAAK4yM,UAAU99I,QAEjBn1D,WAAWka,EAAUrB,GACnB,OAAQqnB,GAAW2L,QAAQ3xB,EAAUrB,GAEvCiuE,cACE,OAAOzmF,KAAK6yM,UAAUpsH,SAAWzmF,KAAK4yM,UAAUnsH,QAElD9mF,SAASq1B,EAAOkB,GACd,CAACl2B,KAAK4yM,UAAW5yM,KAAK6yM,WAAW7zM,SAAQmpB,GAAKA,EAAE8rK,SAASj/J,EAAOkB,KAElEv2B,YACE,MAAM2vL,EAAS,IAAKtvL,KAAK4yM,UAAUrjB,aAAe,MAASvvL,KAAK6yM,UAAUtjB,aAAe,IACzF,OAAOD,EAAOxwL,OAASwwL,EAAS,KAElC3vL,WAAWq1B,EAAOkB,GAChB,CAACl2B,KAAK4yM,UAAW5yM,KAAK6yM,WAAW7zM,SAAQmpB,GAAKA,EAAE4rK,WAAW/+J,EAAOkB,KAEpEv2B,gBAEEK,KAAKqyL,gBAAkB,KACvB,CAACryL,KAAK4yM,UAAW5yM,KAAK6yM,WAAW7zM,SAAQmpB,GAAKA,EAAEmrL,kBAChDtzM,KAAKqyL,gBAAkB,OAG3BnzL,EAAgByzM,GAAe,eAAgB,CAU7CE,UAAW,GAUXD,UAAW,CAETzE,SAAU,KACV9oK,KAAM,OAQRuF,aAAc,KACd2oK,cAAe,IAAM,GACrBz7E,YAAa,YAEf54H,EAAgByzM,GAAe,QAAS,iBACxCzzM,EAAgByzM,GAAe,OAAQ,iBACvCzzM,EAAgByzM,GAAe,QAAS,YACxCA,GAAc/7H,YACd+7H,GAAczqM,OAAS,gBAevB,MAAM4hH,WAAsB8rE,GAC1B7nL,mBACE,MAAO,gBAGTlB,kBACE,MAAO,gBAGTuqE,mBACE,MAAO,WAETv1D,2BACE,MAAO,CAWLtiB,MAAO,KAOP8lC,KAAM,EAMN4C,KAAM,KACN+G,YAAa,MAObjF,UAAW,KAQX69C,gBAAiB,MAMjB4rH,cAAe,MAOfjE,iBAAkB,KAClBzhB,SAAU,CACR2hB,KAAM,CACJ5iM,KAAM,gBAGV8rE,UAAW,MAuBfn5E,0BACE,MAAO,CAWLmpB,IAAK,KAWLtU,IAAK,KAYLo/L,aAAc,MAGlB9zM,UAAUJ,GACR,cAAcA,IAAU,SAAW,IAAIkoF,GAASloF,GAASA,EAE3DI,UAAUJ,GACR,cAAcA,IAAU,SAAW,IAAIkoF,GAASloF,GAASA,EAE3DI,mBAAmBgqC,GACjB,UAAWA,IAAU,SAAU,CAC7BA,EAAQA,EAAMtkC,MAAM,KAEtB,OAAOskC,EAEThqC,mBAAmBgqC,GACjB3pC,KAAK0zM,eAAiB,IAAI1uM,OAAO,IAAI2kC,EAAM1/B,KAAK,QAAS,KAE3DqpL,iBAGE,OAAOtzL,KAAKT,OAAS,KAAO,GAAKS,KAAK2zM,UAAU,MAAM3pM,SAAShK,KAAK4nF,iBAkBtE3/C,SAASA,GACPjoC,KAAK2nF,MAAQ1/C,EACbjoC,KAAKT,MAAQS,KAAK2zM,YAEpB1rK,WACE,OAAOjoC,KAAK2nF,MAEdisH,sBACE,OAAO5zM,KAAK2nF,OAASmiC,GAAcjoG,cAAcmtB,YAOnDjF,cAAcA,GACZ/pC,KAAK+zL,WAAW,kBAChB/zL,KAAK0nF,WAAa39C,EAClB7vB,MAAM3a,MAAQS,KAAK2zM,YAErB5pK,gBACE,OAAO/pC,KAAK0nF,WAEd/nF,eAAeJ,GACb,OAAOA,GAASS,KAAKuvM,kBAAoB,KAAOv+J,GAAa1L,MAAM/lC,EAAOS,KAAKuvM,kBAAoBhwM,EAErGwvC,oBACE,OAAO/uC,KAAKuvM,mBAAqB,EAEnC9oH,cACE,MAAM1mF,EAAKC,KACTg+C,EAAUj+C,EAAGR,OAAS,MAAQQ,EAAGR,OAASQ,EAAGR,MAAMwqC,WAAa,KAClE,OAAO7vB,MAAMusE,UAAYzoC,IAAYj+C,EAAGutL,WAAatvI,IAAYj+C,EAAGyzM,eAAiBzzM,EAAGR,MAAMwqC,WAAa,IAE7GpqC,iBAAiBwwB,GACf,MAAMpwB,EAAKC,KACTT,EAAQQ,EAAGR,MACXs0M,EAAS9zM,EAAGkzL,WACd,GAAIlzL,EAAG+yL,WAAW+gB,EAAQt0M,GAAQ,CAChCQ,EAAGkzL,WAAa1zL,EAChBQ,EAAGwzL,mBAAmB,CACpBh0L,MAAAA,EACA4wB,MAAAA,EACAolH,WAAY,KACZkB,MAAO12I,EAAG0mF,WAIhB9mF,WAAWqE,GACT,IAAIguL,EAAgB8hB,EAAqBC,EACzC/zM,KAAKkzL,oBAAoB,OACxBlB,EAAiBhyL,KAAK8tL,YAAc,MAAQkE,SAAwB,OAAS,GAAK8hB,EAAsB9hB,EAAeyd,QAAU,MAAQqE,SAA6B,OAAS,GAAKC,EAAwBD,EAAoBre,iBAAmB,MAAQse,SAA+B,OAAS,EAAIA,EAAsBpsL,SAC9T,OAAOzN,MAAM4kD,WAAW96D,GAiB1BzE,UAAUA,GACR,MAAMQ,EAAKC,KACX,IAAIg0M,EAAcC,EAClBj0M,KAAK+zL,WAAW,kBAChB,UAAWx0L,IAAU,SAAU,CAE7By0M,EAAez0M,EACf00M,EAAUl0M,EAAG4nF,WACR,UAAWpoF,IAAU,SAAU,CAEpC,MAAM20M,EAAiBr0K,GAAWiK,cAAcvqC,EAAOQ,EAAGgvC,cAAehvC,EAAG6zM,iBAC5E,GAAIM,EAAgB,CAClB,IAAKn0M,EAAG2zM,gBAAkB3zM,EAAG2zM,eAAejsM,KAAKysM,EAAejsK,MAAO,CACrEgsK,EAAUC,EAAejsK,KACzB+rK,EAAeE,EAAenqK,cACzB,CACLhqC,EAAGk0L,SAAS,wBAGX,CAEL,GAAI10L,GAAS,SAAUA,GAAS,cAAeA,EAAO,CACpD00M,EAAU10M,EAAM0oC,KAChB+rK,EAAez0M,EAAMwqC,cAChB,CACLkqK,EAAU,KACVD,EAAe,MAGnB,GAAIj0M,EAAG2nF,aAAessH,GAAgBj0M,EAAG4nF,QAAUssH,EAAS,CAC1Dl0M,EAAG2nF,WAAassH,EAEhB,GAAIC,EAAS,CACXl0M,EAAG4nF,MAAQssH,EAEb/5L,MAAM3a,MAAQQ,EAAG4zM,aAGrBh0M,MAAMJ,GACJ,UAAWA,IAAU,SAAU,CAC7BA,EAAQ,IAAIkoF,GAAS,CACnBx/C,KAAMjoC,KAAK4zM,gBACX7pK,UAAWxqC,IAGf,OAAOS,KAAKqU,KAAO,MAAQ9U,GAASS,KAAKqU,IAE3C1U,MAAMJ,GACJ,UAAWA,IAAU,SAAU,CAC7BA,EAAQ,IAAIkoF,GAAS,CACnBx/C,KAAMjoC,KAAK4zM,gBACX7pK,UAAWxqC,IAGf,OAAOS,KAAK2oB,KAAO,MAAQppB,GAASS,KAAK2oB,IAE3CkqK,eACE,MAAMtzL,EAAQS,KAAKT,MACjBszL,EAAW,GAEb,GAAItzL,GAAS,KAAM,CACjBszL,EAASnqE,gBAAkB1oH,KAAKowM,MAAM7wM,GACtCszL,EAASpqE,eAAiBzoH,KAAKqwM,MAAM9wM,GAEvCszL,EAASp8C,OAASo8C,EAASnqE,iBAAmBmqE,EAASpqE,cACvD,OAAOoqE,EAETtzL,YACE,OAAO2a,MAAM3a,MAEfI,UAAU2lC,EAAQ,OAChB,MAAMvlC,EAAKC,KACX,KAAMD,EAAG4nF,OAAS5nF,EAAG2nF,YAAc,OAAS3nF,EAAGwtL,UAAW,CACxD,OAAO,SACF,CACL,OAAO,IAAI9lG,GAASniD,EAAQtlC,KAAKm0M,eAAep0M,EAAG2nF,YAAc1nF,KAAK0nF,WAAY3nF,EAAG6zM,kBAGzFj0M,WAAWka,EAAUrB,GACnB,OAAOA,IAAaqB,IAAarB,GAAYqB,GAAYrB,GAAYqB,IAAaA,EAAS2xB,QAAQhzB,GAQrGqqB,mBAEE,OAAO7iC,KAAKT,MAAQS,KAAKT,MAAMsjC,aAAe,EAEhDljC,kBAAkBqyH,GAChB,GAAIA,EAAS/yH,MAAQ,UAAW,CAC9Be,KAAK01L,gBACA,GAAI1jE,EAAS/yH,MAAQ,YAAa,CACvCe,KAAK21L,cAGTh2L,WACE,MAAMI,EAAKC,KACX,GAAID,EAAG84E,SAAU,CACf,OAEF,IAAIrgE,GAAYzY,EAAGgqC,WAAa,GAAKhqC,EAAGslC,KACxCtlC,EAAG84H,cAAgB,KACnB,IAAK94H,EAAGqwM,MAAM53L,GAAW,CACvBA,EAAWzY,EAAG4oB,IAEhB,GAAI5oB,EAAGswM,MAAM73L,GAAW,CACtBzY,EAAGR,MAAQiZ,EAEbzY,EAAG84H,cAAgB,MAErBl5H,aACE,MAAMI,EAAKC,KACX,GAAID,EAAG84E,SAAU,CACf,OAEF,IAAIrgE,GAAYzY,EAAGgqC,WAAa,GAAKhqC,EAAGslC,KACxC,IAAKtlC,EAAGswM,MAAM73L,GAAW,CACvBA,EAAWzY,EAAGsU,IAEhB,GAAItU,EAAGqwM,MAAM53L,KAAczY,EAAGyzM,gBAAkBzzM,EAAGgqC,WAAa,GAAK,GAAI,CACvEhqC,EAAG84H,cAAgB,KACnB94H,EAAGR,MAAQiZ,EACXzY,EAAG84H,cAAgB,QAKzB/O,GAAclzC,YACdkzC,GAAc5hH,OAAS,gBASvB,MAAMksM,WAAY3kE,GAChB1hI,mBACE,MAAO,MAETlB,kBACE,MAAO,MAETrN,0BACE,MAAO,CACLkwI,aAAc,kBACdC,QAAS,eAMfykE,GAAIx9H,YACJw9H,GAAIlsM,OAAS,MAcb,MAAMmsM,WAAejiE,GAEnBrkI,mBACE,MAAO,SAGTlB,kBACE,MAAO,SAETrN,0BACE,MAAO,CACLqtD,WAAY,KACZ21C,OAAQ,KACR+vC,OAAQ,MAMRl8F,MAAO,CACLA,MAAO,QACPvH,OAAQ,CAAC,EAAG,IAOdwlK,WAAY,MAqBZ55J,UAAW,KAMX65J,UAAW,KAMXC,iBAAkB,MAOlBC,WAAY,YAQZC,WAAY,WAQZC,YAAa,QAQbC,UAAW,SASXC,cAAe,QAMfC,iBAAkB,KAClB3lE,cAAe,MAqEnBxvI,iBACE,MAAMI,EAAKC,KACXka,MAAM2B,iBACN9b,EAAGg1M,mBAAqBh1M,EAAGg1M,mBAAmB//L,KAAKjV,GACnD+gD,GAAY3xB,GAAG,CACbsnB,QAAS12C,EAAG02C,QACZkQ,QAAS,YACTJ,YAAa,kBACbH,UAAW,kBACXI,UAAW,kBACXC,SAAU,kBACVJ,QAAS,kBACTngD,MAAO,kBACPogD,SAAU,kBACVhqC,QAASvc,IAEXA,EAAGovB,GAAG,CACJ6lL,WAAY,mBACZrjF,KAAM,kBACNr1G,QAASvc,IAEXs4B,GAAuBlJ,GAAG,CACxB6G,OAAQ,iBACR1Z,QAASvc,IAGbJ,iBACE,MAAM80M,WACJA,GACEz0M,KACJ,GAAIy0M,IAAeA,EAAWv4L,YAAa,CAGzC,GAAIu4L,EAAWvhB,oBAAqB,CAClCuhB,EAAWvhB,oBAAoB,QAIrCvzL,OAAO89H,GACL,MAAMzqD,EAAYhzE,KAAKy2C,QAAQgU,YAC5BjT,GAAiBx3C,KAAK2zH,iBAAiB8J,GAE1CjmF,EAAcoH,UAAU7/B,IAAI,aAC5B7E,MAAMH,UAAUlb,WAChB,GAAIm0E,IAAc,MAAQA,SAAmB,GAAKA,EAAUp0B,WAAapH,IAAkBw7B,EAAW,CACpGA,EAAUp0B,UAAU98C,OAAO,cAuB/BnC,gBAAgBs1M,GACd,MAAMl1M,EAAKC,KACXi1M,EAAajkK,GAAasiF,SAAS2hF,EAAY,CAC7C5+J,MAAOt2C,EAAGs2C,MACVi+J,WAAYv0M,EAAGu0M,WACf55J,UAAW36C,EAAG26C,UACd65J,UAAWx0M,EAAGw0M,UACdC,iBAAkBz0M,EAAGy0M,iBACrB1/I,MAAO,OAET,GAAI/0D,EAAGwtB,QAAQ,cAAe0nL,KAAgB,MAAO,CACnD,IAAIC,EAAuBC,EAAmBC,EAC9C,MAAMz2M,OACFA,EAAM21M,WACNA,EAAU55J,UACVA,EAAS65J,UACTA,EAASC,iBACTA,EAAgBhiI,OAChBA,EAAMj8D,MACNA,EAAQxW,EAAG00M,WAAWhwM,KAAIqwD,MAC1BA,GACEmgJ,GACJR,WACEA,GACE10M,GACJomI,MACEA,GACEsuE,EACJY,EAAiBp9J,GAAUC,cAAcv5C,EAAQ,aACjD22M,EAAmBr9J,GAAUC,cAAcv5C,EAAQ,eACrD,IAAIY,MACFA,EAAK82C,MACLA,GACE4+J,EACJ,GAAIziI,GAAUj8D,EAAO,CACnBxW,EAAGyyE,OAASA,EACZzyE,EAAGi8E,UAAYzlE,EACf,GAAIhX,IAAUqD,UAAW,CACvBrD,EAAQizE,EAAOj8D,IAGnB,GAAImkC,EAAW,CACb,GAAI/7C,aAAkB+f,YAAa,CACjC3e,EAAGw1M,WAAW52M,EAAQ+7C,GAKxB,GAAI/7C,aAAkB+f,YAAa,CACjCw/F,GAAcmI,kBAAkB1nH,EAAQoB,EAAGg1M,qBAG/C,GAAI5uE,EAAO,CACT,GAAIouE,EAAW,CACbpuE,EAAM9kI,MAAMm0M,SAAWH,EACvBlvE,EAAM9kI,MAAMo0M,WAAaH,MACpB,CACLnvE,EAAM9kI,MAAMm0M,SAAWrvE,EAAM9kI,MAAMo0M,WAAa,IAGpD11M,EAAG62I,gBAAkB,MAEpBs+D,EAAwBT,EAAW1gB,cAAgB,MAAQmhB,SAA+B,OAAS,EAAIA,EAAsBruM,KAAK4tM,GACnIA,EAAWl1M,MAAQA,EACnBQ,EAAG62I,gBAAkB,MAGrB,UAAWvgG,IAAU,SAAU,CAC7BA,EAAQ,CACNA,MAAAA,SAIEt2C,EAAGwoI,OAAO7pI,EAAe,CAC7BC,OAAAA,EACAohI,eAAgB,MACf1pF,IACH,GAAIm+J,EAAkB,CAEpB,MAAMlzM,EAAW6kI,EAAM3tF,YAAc2tF,EAAM1tF,YAC3C,GAAIn3C,EAAW,EAAG,CAChBvB,EAAGmH,OAAS5F,EAAW22C,GAAUK,gBAGrCwc,KAAWqgJ,EAAoBV,EAAW3/I,SAAW,MAAQqgJ,SAA2B,OAAS,EAAIA,EAAkBtuM,KAAK4tM,IAC5H,GAAI91M,EAAOk4C,WAAauH,QAAQC,aAAc,CAC5C,GAAIi2J,EAAY,CACd31M,EAAOigD,UAAU7/B,IAAI,sBAGzBhf,EAAG21M,QAAU,KAEb31M,EAAGwtB,QAAQ,QAAS,CAClBhuB,MAAOk1M,EAAWl1M,QAEpB,GAAIgI,MAAMC,QAAQitM,EAAWl1M,QAAUk1M,EAAWkB,iBAAmBP,EAAqBX,EAAWl1M,MAAM,MAAQ,MAAQ61M,SAA4B,GAAKA,EAAmB3mI,QAAS,CAGtL1uE,EAAG8Z,SAAW46L,EAAWl1M,MAAMsK,KAAI2oE,GAAUA,EAAOyT,KAAKzT,EAAO7nE,UAC3D,CACL5K,EAAG8Z,SAAW46L,EAAWl1M,MAIzB,GAAIgI,MAAMC,QAAQzH,EAAG8Z,UAAW,CAC9B9Z,EAAG8Z,SAAW9Z,EAAG8Z,SAAS5H,SAK9BwiM,EAAW5oG,aAAe9rG,EAAG8Z,SAC7B,OAAO,KAET,OAAO,MAETla,cACE,GAAIK,KAAK4qD,UAAW,CAClB,MAAM4nB,OACJA,EAAMwJ,UACNA,EAASy4H,WACTA,GACEz0M,KACJ,GAAIwyE,GAAUwJ,EAAW,CACvB,MAAMz8E,EAAQizE,EAAOwJ,GAErB,IAAKhrC,GAAaxF,QAAQipK,EAAWl1M,MAAOA,GAAQ,CAClDk1M,EAAWl1M,MAAQA,KAK3BI,aACE,MAAMhB,OACJA,EAAMkhI,kBACNA,GACE7/H,KAAKk/H,cACT,GAAIW,EAAmB,CACrBlhI,EAAOigD,UAAU98C,OAAO,aACxBnD,EAAOigD,UAAU98C,OAAO,qBAE1B9B,KAAK01M,QAAU,MAEf11M,KAAKutB,QAAQ,cAEf5tB,UAAUwwB,GACR,IAAIohI,EACJ,MAAMxxJ,EAAKC,KACX,OAAQmwB,EAAMlxB,KACZ,KAAKc,EAAG40M,YACN50M,EAAG61M,aAAa,KAAMzlL,GACtBA,EAAMutC,2BACN,MACF,KAAK39D,EAAG60M,UACN70M,EAAG81M,WAAW1lL,GACdA,EAAMutC,2BACN,OAGH6zF,EAAcxxJ,EAAGwtB,WAAa,MAAQgkI,SAAqB,OAAS,EAAIA,EAAY1qJ,KAAK9G,EAAI,UAAW,CACvGowB,MAAAA,IAGJxwB,gBAAgBqE,GAEd,IAAKhE,KAAK81M,iBAAkB,CAC1B9xM,EAAEk5I,mBAGNv9I,WAAWwwB,GACTjW,MAAM4kD,WAAW3uC,GACjB,MAAMpwB,EAAKC,KACX,IAAKD,EAAGg2M,aAAeh2M,EAAG21M,QAAS,CAEjC,OAAQ31M,EAAG20M,YACT,IAAK,SACH30M,EAAG81M,WAAW1lL,GACd,MACF,IAAK,WACHpwB,EAAG61M,aAAa,KAAMzlL,KAiB9BxwB,mBAAmBy5I,EAAUyuC,GAC3B,MAAM9nL,EAAKC,MACTy0M,WACEA,EAAU56L,SACVA,EAAQ24D,OACRA,GACEzyE,EACJ80M,EAAgBJ,EAAWI,gBAAkBJ,EAAWuB,eAAiB,MAAQ,QAAUj2M,EAAG80M,gBAC9Ft1M,MACEA,GACEk1M,EAEN,IAAK10M,EAAG6qD,UAAW,CACjB,OAGF,IAAK6pJ,EAAWhuH,SAAWouH,IAAkB,QAAS,CACpD,GAAIA,IAAkB,QAAS,CAC7B,IAAIoB,GACHA,EAAqBxB,EAAW3/I,SAAW,MAAQmhJ,SAA4B,OAAS,EAAIA,EAAmBpvM,KAAK4tM,GACrH,OAAO,WACF,GAAII,IAAkB,SAAU,CACrC90M,EAAG81M,WAAWhuB,GACd,OAAO,WAIN,GAAI72I,GAAaxF,QAAQjsC,EAAOsa,GAAW,CAC9C9Z,EAAG81M,WAAWhuB,GACd,OAAO,SAGJ,CACH,MAAMp6G,EAAU,CACdgnI,WAAAA,EACAjiI,OAAAA,EACAjzE,MAAAA,EACAsa,SAAAA,GAEF,GAAI9Z,EAAGwtB,QAAQ,iBAAkBkgD,KAAa,MAAO,CACnD,IAAIyoI,GACHA,EAAqBzB,EAAW3/I,SAAW,MAAQohJ,SAA4B,OAAS,EAAIA,EAAmBrvM,KAAK4tM,OAChH,CAEL,IAAKr7D,EAAU,CACb,IAAI+8D,EACJ/8D,EAAW3rE,EAAQ2rE,YAAc+8D,EAAwB1oI,EAAQ2oI,iBAAmB,MAAQD,SAA+B,OAAS,EAAIA,EAAsB/8D,UAGhK,GAAIA,EAAU,CACZ,IAAIjtI,QAAeitI,EAAS3rE,GAC5B,GAAIthE,IAAW,KAAM,CACnBpM,EAAGiwL,qBACE,CACL,GAAIykB,EAAWxgB,SAAU,CACvB,MAAMj/J,EAAQ7oB,GAAUsoM,EAAWvlB,kBACjC6E,EAAa,KACX1mK,IACAonL,EAAW1gB,WAAW/+J,IAExB3H,EAAYonL,EAAWtlL,GAAG,CACxBi2D,OAAQ2uG,EACR5tD,MAAO4tD,IAKX0gB,EAAWxgB,SAASj/J,GAEtB,GAAI6/K,IAAkB,QAAS,CAC7B,IAAIwB,GACHA,EAAqB5B,EAAW3/I,SAAW,MAAQuhJ,SAA4B,OAAS,EAAIA,EAAmBxvM,KAAK4tM,QAChH,GAAII,IAAkB,SAAU,CACrCJ,EAAWl1M,MAAQsa,EACnB1N,EAAS,KAEXA,EAAS,MAEX,OAAOA,MAGJ,CACHpM,EAAGiwL,iBACH,OAAO,OAIb,OAAO,MAKTrwL,WAAWkoL,GACT,MAAM9nL,EAAKC,MACTy0M,WACEA,EAAU56L,SACVA,GACE9Z,GACJR,MACEA,GACEk1M,EACN,GAAI10M,EAAG21M,UAAY31M,EAAGg2M,aAAeh2M,EAAGwtB,QAAQ,eAAgB,CAC9DhuB,MAAAA,EACAsa,SAAAA,EACAsW,MAAO03J,MACF,MAAO,CAEZ9nL,EAAGg2M,YAAc,KACjBh2M,EAAG4xH,OACH5xH,EAAGwtB,QAAQ,SAAU,CACnBhuB,MAAAA,EACAsa,SAAAA,EACAsW,MAAO03J,IAET9nL,EAAGu2M,aACHv2M,EAAGg2M,YAAc,OAIrBp2M,iBACE,MAAMI,EAAKC,MACTwyE,OACEA,EAAMwJ,UACNA,EAASy4H,WACTA,EAAU56L,SACVA,GACE9Z,GACJR,MACEA,GACEk1M,EACN,IAAK10M,EAAGg2M,YAAa,CAEnBh2M,EAAGg2M,YAAc,KACjBh2M,EAAG4xH,OACH,GAAIn/C,EAAQ,CACV,MAAM+jI,EAAa,MAAMnsM,EAAaK,WAAWuxE,KACjD,GAAIxJ,EAAO+jI,GAAa,CACtB/jI,EAAO+jI,GAAYh3M,QACd,GAAIy8E,EAAUpwE,SAAS,KAAM,CAClC4mE,EAAOlhE,IAAI0qE,EAAWz8E,OACjB,CACLizE,EAAOwJ,GAAaz8E,GAGxBQ,EAAGwtB,QAAQ,WAAY,CACrBhuB,MAAAA,EACAsa,SAAAA,IAEF9Z,EAAGu2M,aACHv2M,EAAGg2M,YAAc,OAGrBp2M,YACE,GAAIK,KAAKw2M,kBAAmB,CAC1Bx2M,KAAKy0M,WAAW14L,UAElB7B,MAAM8B,YAERrD,UAAUA,GACR3Y,KAAKsqI,OAAS3xH,EAIhBA,YACE,OAAO3Y,KAAKsqI,QAAUh+E,GAAOC,YAAYvsD,KAAKy2C,QAAQgU,YAExD9qD,iBAAiB80M,EAAYgC,GAC3B,MAAM12M,EAAKC,KACX,GAAIy2M,EAAe,CACjBA,EAAc16L,UAEhB,UAAW04L,IAAe,SAAU,CAClCA,EAAa,CACX5nM,KAAM4nM,GAGV,KAAMA,aAAsBnoJ,IAAS,CACnCmoJ,EAAanoJ,GAAOj1C,OAAOo9L,GAC3B10M,EAAGy2M,kBAAoB,KAGzB,GAAIz2M,EAAG+0M,iBAAkB,CACvBL,EAAWtlL,GAAG,CACZi2D,OAAQ,qBACR9oE,QAASvc,IAGb00M,EAAWniM,OAASvS,EACpB,OAAO00M,EAET90M,iBAAiB80M,GACfz0M,KAAK6/F,YACL7/F,KAAK+e,IAAI01L,GAEXA,iBACE,OAAOz0M,KAAKijB,MAAM,GAEpBtjB,qBACE,GAAIK,KAAKwrI,cAAe,CACtBxrI,KAAK41M,gBAGTj2M,mBAAmBigH,EAAgBI,EAASH,GAC1C,GAAIG,GAAWH,EAAS,CACtB7/G,KAAKu1M,WAAW31F,IAGpBjgH,WAAW+2M,EAAUh8J,EAAY16C,KAAK22M,eACpC,MAAM52M,EAAKC,KACT2+H,EAAOpoF,GAAUmX,MAAMgpJ,GAEzB32M,EAAGmH,MAAQwzC,EAAUxzC,QAAU,MAAQ,OAASy3H,EAAKz3H,MAAQnH,EAAGs2C,MAAMvH,OAAO,GAC7E/uC,EAAGkH,OAASyzC,EAAUzzC,SAAW,MAAQ,OAAS03H,EAAK13H,OACvDlH,EAAG42M,cAAgBj8J,EAErB/6C,mBAIE,GAAIK,KAAK01M,UAAY11M,KAAK+1M,YAAa,CACrC/1M,KAAK61M,cAGTl2M,kBAIE,GAAIK,KAAK6sD,WAAY,CACnB7sD,KAAKy2C,QAAQ30C,SAEfo8G,GAAcgI,qBAAqBlmH,KAAKk/H,cAAcvgI,OAAQqB,KAAK+0M,qBAIvEV,GAAOz9H,YACPy9H,GAAOnsM,OAAS,SAKhB,MAAM0uM,GAA6B,CAAC,SAAU,UAAW,SAAU,OAAQ,YAC3E,MAAMC,GAA2BtgM,IAC/B,IAAIugM,EACJ,QAASA,EAAgBvgM,EAAMwgM,UAAY,MAAQD,SAAuB,OAAS,EAAIA,EAAcjqM,QAAU,YAEjH,MAAMmqM,GAAe,GAkDrB,MAAMvrF,WAA0B2mB,GAE9BrkI,mBACE,MAAO,oBAGTlB,kBACE,MAAO,oBAEToqM,2CACE,MAAO,CACL5sM,OAAQ,iBACR0xB,OAAQ,kBACRS,KAAM,iBACN45E,KAAM,2BACN9tF,SAAU,kBAGd3oB,iBACE,MAAMI,EAAKC,KACX,IAAKD,EAAGm3M,QAAS,CACf,MAAM,IAAIxmM,MAAM,GAAG+6G,GAAkBhnH,4CAEvC,IAAK1E,EAAGo3M,QAAS,CACf,MAAM,IAAIzmM,MAAM,GAAG+6G,GAAkBhnH,4CAEvCyV,MAAMuB,iBACN,MACE6vH,WAAW8rE,eACTA,EAAcC,eACdA,EAAcjvH,cACdA,IAEAroF,EACJq3M,EAAejoL,GAAG,SAAUpvB,EAAGu3M,iBAAkBv3M,GACjDs3M,EAAeloL,GAAG,SAAUpvB,EAAGw3M,iBAAkBx3M,GACjDqoF,EAAcj5D,GAAG,SAAUpvB,EAAGy3M,sBAAuBz3M,GACrDA,EAAG03M,qBAAuBL,EAAe59L,UAAUzZ,EAAG03M,qBACtD13M,EAAG23M,qBAAuBL,EAAe79L,UAAUzZ,EAAG23M,qBACtDN,EAAethM,IAAM/V,EAAG43M,yBACxBN,EAAevhM,IAAM/V,EAAG63M,yBACxB73M,EAAG83M,uBAELl4M,iBAAiB4tH,GACf,OAAOvtH,KAAKm7B,EAAEoyF,GAEhBuqF,qBACE,MAAMV,eACJA,EAAcC,eACdA,EAAcjvH,cACdA,GACEpoF,KAAKsrI,UACT,MAAO,CAAC8rE,EAAgBC,KAAmBr3M,KAAK+3M,YAAa3vH,GAE/DzoF,eAAeq4M,GACbh4M,KAAK83M,eAAe94M,SAAQuX,GAASA,EAAMqpD,SAAWo4I,IAExDr4M,eAAes4M,GACb,MAAMb,eACJA,EAAcC,eACdA,GACEr3M,KAAKsrI,UACTtrI,KAAK83M,eAAe94M,SAAQuX,GAASA,EAAMsiE,SAAWo/H,IAEtDb,EAAev+H,SAAWu+H,EAAev+H,UAAYo/H,EACrDZ,EAAex+H,SAAWw+H,EAAex+H,UAAYo/H,EAEvDt4M,qBAAqBu4M,GACnBl4M,KAAKsrI,UAAU8rE,eAAev+H,SAAWq/H,GAAqBl4M,KAAK64E,SACnE74E,KAAKsrI,UAAU8rE,eAAethM,IAAM9V,KAAK23M,yBAE3Ch4M,qBAAqBw4M,GACnBn4M,KAAKsrI,UAAU+rE,eAAex+H,SAAWs/H,GAAqBn4M,KAAK64E,SACnE74E,KAAKsrI,UAAU+rE,eAAevhM,IAAM9V,KAAK43M,yBAE3Cj4M,gBAAgBy4M,GACd,MAAMC,EAAYD,IAAiB,MAAQA,SAAsB,EAAIA,EAAe3sF,GAAkB6sF,iBACtG,OAAOr6M,OAAOD,KAAKq6M,GAAW5sM,QAAO,CAAC8sM,EAAcC,IAAa95M,EAAeA,EAAe,GAAI65M,GAAe,GAAI,CACpH54M,CAAC64M,GAAWH,EAAUG,GAAU3uM,KAAI4uM,GAAM/5M,EAAeA,EAAe,GAAI+5M,GAAK,GAAI,CACnFxtM,KAAMjL,KAAKm7B,EAAEs9K,EAAGxtM,aAEhB,IAENytM,8BACE,IAAIC,EACJ,MAAO,CAAC,eAAgB,mBAAmB/sM,UAAU+sM,EAAgB34M,KAAKm3M,WAAa,MAAQwB,SAAuB,OAAS,EAAIA,EAAczwH,UAEnJyvH,+BACE,IAAIiB,EACJ,OAAO,IAAIp7J,GAAa,KAAKiuE,GAAkB5+G,iBAAkB+rM,EAAwB54M,KAAKy3M,uBAAyB,MAAQmB,SAA+B,OAAS,EAAIA,EAAsB9iM,IAAK,CACpMnW,CAAC,KAAK8rH,GAAkB5+G,qBAAsB7M,KAAK64M,iBAGvDjB,+BACE,IAAIkB,EACJ,OAAO,IAAIt7J,GAAa,KAAKiuE,GAAkB5+G,iBAAkBisM,EAAwB94M,KAAK03M,uBAAyB,MAAQoB,SAA+B,OAAS,EAAIA,EAAsBhjM,IAAK,CACpMnW,CAAC,KAAK8rH,GAAkB5+G,qBAAsB7M,KAAK+4M,iBAGvDp5M,uBACE,MAAMI,EAAKC,MACTg5M,cACEA,EAAa/iH,UACbA,EACAkhH,SAASjvH,SACPA,GACD+wH,cACDA,EAAaC,aACbA,EAAYR,wBACZA,EAAuBS,iBACvBA,GACEp5M,EACJq5M,EAAyBpoK,GAAaxhC,MAAM,GAAIi8G,GAAkBwrF,8BAA+Bl3M,EAAGq5M,wBACtG,IAAKnjH,IAAc/N,GAAYixH,IAAqB,EAAG,CACrD,MAAO,GAET,MAAME,EAAgB,CACpBxsM,KAAM,YAENwgB,UAAW,CACT+3D,OAAQ6zH,EACR9yE,MAAO8yE,EACP38L,QAASvc,GAEX+V,IAAKkjM,EACLtiL,QAAS,CACP7pB,KAAMopF,GAERiwC,YAAanmI,EAAGo7B,EAAEi+K,EAAuBV,EAA0B,OAASziH,KAE9E,GAAIyiH,EAAyB,CAE3B,MAAO,CAACh6M,EAAeA,EAAe,GAAI26M,GAAgB,GAAI,CAC5DxsM,KAAM,QACNqrL,YAAa,KACb6F,kBAAmB,KACnB96K,MAAOjjB,KAAKs5M,oBAAoBJ,GAChC35M,MAAO25M,IAAiB,MAAQA,SAAsB,EAAIA,EAAe,WAEtE,GAAI,CAAC,SAAU,OAAQ,WAAWttM,SAASqqF,GAAY,CAC5DojH,EAAcxsM,KAAO,GAAGopF,cACnB,GAAIA,IAAc,WAAY,CACnCojH,EAAcxsM,KAAO,gBAEvB,OAAOiW,GAAYy2L,SAASJ,GAAkBjpM,GAAS,CAAC,CACtDrD,KAAM,SACN4T,IAAK,MACL3K,IAAK,KAAK21G,GAAkB5+G,uBAC5BurC,QAASr4C,EAAGo7B,EAAE,6BACbz8B,EAAeA,EAAe,GAAI26M,GAAgB,GAAI,CACvD95M,MAAO25M,EAAahpM,QACjBspM,OAAOvnM,MAAM,GAMpBtS,oBAAoB85M,EAAuB,IACzC,IAAIC,EACJ,MAAM35M,EAAKC,MACTi2F,UACEA,GACEl2F,EACN,IAAKA,EAAG6rE,UAAY8tI,EAAc35M,EAAGo3M,WAAa,MAAQuC,SAAqB,GAAKA,EAAYvnM,UAAW,CACzG,MAAO,GAET,IAAItG,EAAS9L,EAAG6rE,MAAMmP,WAAWlxE,KAAI2oE,GAAUA,EAAOzyE,EAAGo3M,QAAQhlM,YAAWwU,OAAO8yL,GAAsBr7M,QAAOmB,GAASA,GAAS,OAElI,GAAI02F,IAAc,OAAQ,CACxBpqF,EAASA,EAAOhC,KAAI2yB,GAAQA,EAAK+L,iBAC5B,GAAI0tD,IAAc,WAAY,CACnCpqF,EAASA,EAAOhC,KAAIye,GAAYA,EAASte,aAE3C,MAAM2vM,EAAe72L,GAAYyoE,OAAO1/E,GAAQzN,QAAOmB,GAASA,GAAS,MAAQ2J,OAAO3J,GAAOiN,SAAW,KAE1G,IAAIotM,EACJ,GAAI3jH,IAAc,SAAU,CAC1B2jH,EAAeD,EAAa1hM,KAAKlY,EAAG85M,kBAC/B,GAAI5jH,IAAc,WAAY,CACnC2jH,EAAeD,EAAa9vM,KAAIiwM,GAAe,IAAIryH,GAASqyH,KAAc17M,QAAOkqB,GAAYA,EAASm+D,UAASxuE,KAAKlY,EAAGg6M,mBAClH,CACLH,EAAeD,EAAa1hM,KAAKlY,EAAGi6M,cAGtC,GAAI/jH,IAAc,OAAQ,CACxB2jH,EAAeA,EAAa/vM,KAAIowM,IAC9B,MAAMz9K,EAAO,IAAIhuB,KAAKyrM,GACtB,MAAO,CACLhvM,KAAM40B,GAAW/C,OAAON,EAAMz8B,EAAGwtH,YACjChuH,MAAO06M,WAGN,GAAIhkH,IAAc,WAAY,CACnC2jH,EAAeA,EAAa/vM,KAAIye,GAAYA,EAASte,aAEvD,OAAO4vM,EAETj6M,YAAYkG,EAAGye,GACb,OAAQze,IAAM,MAAQA,SAAW,EAAIA,EAAImxM,IAActsH,cAAcpmE,IAAM,MAAQA,SAAW,EAAIA,EAAI0yL,IAExGr3M,aAAakG,EAAGye,GACd,OAAOze,EAAIye,EAEb3kB,cAAckG,EAAGye,GACf,OAAOze,EAAE0iC,UAAYjkB,EAAEikB,UAEzB0tD,gBACE,IAAIikH,EAAgBC,EAAcC,EAClC,MAAMjnK,GAAa+mK,EAAiBl6M,KAAKm3M,WAAa,MAAQ+C,SAAwB,OAAS,EAAIA,EAAe/nM,SAClH,OAAQgoM,EAAen6M,KAAKq5E,UAAY,MAAQ8gI,SAAsB,OAAS,GAAKC,EAAoBD,EAAappL,MAAK,EACxHtsB,KAAAA,KACIA,IAAS0uC,OAAgB,MAAQinK,SAA2B,OAAS,EAAIA,EAAkBvtM,KAEnGwtM,sBACE,OAAOr6M,KAAKq5E,OAAOj7E,QAAOmY,GAASqgM,GAA2BhrM,SAAS2K,EAAM1J,OAASgqM,GAAyBtgM,KAAQ1M,KAAI,EACzHpF,KAAAA,EACA0tG,MAAAA,MACD,CACC5yG,MAAOkF,EACPwG,KAAMknG,IAAU,MAAQA,SAAe,EAAIA,EAAQ1tG,MACjDwT,MAAK,CAACpS,EAAGye,IAAMze,EAAEoF,KAAKy/E,cAAcpmE,EAAErZ,QAE5CqvM,sBACE,OAAOt6M,KAAKq4M,UAAUr4M,KAAKi2F,WAE7Bt2F,yBACSK,KAAKu6M,wBAKdC,6BACE,OAAOx6M,KAAKu6M,0BAA4Bv6M,KAAKu6M,wBAA0B9uF,GAAkBgvF,4BAA4Bz6M,KAAKq4M,YAE5H14M,eACE,GAAIK,KAAKm3M,QAAS,CAChBn3M,KAAK06M,kBAGT/6M,YAAYg7M,GACV,IAAIC,EACJ,MAAM76M,EAAKC,MACV46M,EAAa76M,EAAGk7L,UAAY,MAAQ2f,SAAoB,OAAS,EAAIA,EAAWtsL,GAAGvuB,GACpF46M,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASxrL,GAAG,UAAWpvB,EAAG86M,eAAgB96M,GAEhGJ,gBAAeyyD,OACbA,IAEA,GAAIpyD,KAAK04M,yBAA2B,CAAC,UAAW,SAAU,SAAU,UAAU9sM,SAASwmD,GAAS,CAC9FpyD,KAAK+3M,YAAY,GAAG90L,MAAQjjB,KAAKs5M,oBAAoBt5M,KAAKk5M,eAG9Dv5M,qBACE,MAAMI,EAAKC,MACT86M,cACEA,GACE/6M,EAAGurI,UACTwvE,EAAcj7G,YACdi7G,EAAc/7L,IAAIhf,EAAGg7M,+BACdh7M,EAAGi7M,aACVj7M,EAAGk7M,uBAELt7M,uBACE,IAAIu7M,EAAcC,EAClB,MAAMp7M,EAAKC,MACTi2F,UACEA,EAASkjH,iBACTA,EAAgBT,wBAChBA,GACE34M,EACJmoF,GAAYgzH,EAAen7M,EAAGo3M,WAAa,MAAQ+D,SAAsB,OAAS,EAAIA,EAAahzH,UACnGE,cACEA,GACEroF,EAAGurI,UACTljD,EAAcoa,OAASvM,IAAc,WAAa/N,GAAYwwH,GAA2BS,IAAqB,EAC9G/wH,EAAc4tE,UAAYmlD,EAAep7M,EAAGo3M,WAAa,MAAQgE,SAAsB,OAAS,EAAIA,EAAa/yH,iBAAmB,MAEtIzoF,iBAAiBwwB,GACf,IAAIirL,EACJ,MAAMr7M,EAAKC,MACTm3M,QACEA,GACEp3M,EACNo3M,EAAQhlM,WAAaipM,EAAgBjrL,EAAMqiD,UAAY,MAAQ4oI,SAAuB,OAAS,EAAIA,EAAclhL,KAAK36B,QAAU,KAChI,GAAIQ,EAAGk2F,YAAcl2F,EAAGs7M,WAAY,CAClClE,EAAQjvH,SAAW,KACnBivH,EAAQ53M,MAAQ,KAElBQ,EAAGs7M,WAAalE,EAAQtqM,KAAO9M,EAAGk2F,UAClCl2F,EAAGu7M,wBACHv7M,EAAGw7M,qBACHx7M,EAAGizL,gBAELrzL,uBAAsBq2J,QACpBA,IAEAh2J,KAAKm3M,QAAQ/uH,cAAgB4tE,EAC7Bh2J,KAAKgzL,gBAEPrzL,iBAAiBwwB,GACf,IAAIqrL,EACJ,MAAMz7M,EAAKC,KACTy7M,EAA2B17M,EAAG24M,wBAChC,MAAMgD,EAAe17M,KAAKm5M,iBAC1Bp5M,EAAGo3M,QAAQjvH,WAAaszH,EAAiBrrL,EAAMqiD,UAAY,MAAQgpI,SAAwB,OAAS,EAAIA,EAAethL,KAAK36B,QAAU,KACtI,GAAIQ,EAAGo5M,mBAAqBuC,EAAc,CACxC37M,EAAGo3M,QAAQ53M,MAAQ,KAErB,GAAIQ,EAAG24M,0BAA4B+C,EAA0B,CAC3D17M,EAAGo3M,QAAQ53M,MAAQ,GAErBQ,EAAGw7M,qBACHx7M,EAAGizL,gBAELrzL,gBACE,MAAMvB,OACJA,EAAMqoF,QACNA,GACEzmF,KASJA,KAAKutB,QAAQ,SAAU,CACrBnvB,OAAAA,EACAqoF,QAAAA,IAGJ9mF,gBACE,MAAMI,EAAKC,MACT04M,wBACEA,EAAuBziH,UACvBA,GACEl2F,EACJ8L,EAAS7L,KAAK+3M,YAAYluM,KAAI0M,GAASA,EAAMhX,QAC/C,GAAIm5M,GAA2BziH,IAAc,OAAQ,CACnDl2F,EAAGo3M,QAAQ53M,MAAQsM,EAAO,GAAGhC,KAAIowM,GAAa,IAAIzrM,KAAKyrM,UAClD,GAAIvB,GAA2BziH,IAAc,WAAY,CAC9Dl2F,EAAGo3M,QAAQ53M,MAAQsM,EAAO,GAAGhC,KAAIiwM,GAAe,IAAIryH,GAASqyH,SACxD,CACL/5M,EAAGo3M,QAAQ53M,MAAQsM,EAAO/M,SAAW,EAAI+M,EAAO,GAAKA,EAEvD9L,EAAGizL,gBAELrzL,wBACE,MAAM03M,eACFA,GACEr3M,KAAKsrI,WAEP6rE,SAASjvH,SACPA,EAAQ/1E,SACRA,GACDmoM,gBACDA,GACEt6M,KACNq3M,EAAep0L,MAAQq3L,EACvBjD,EAAe93M,MAAQ2oF,EACvBmvH,EAAe70G,OAASrwF,IAAa,KAEvCxS,qBAAqBg8M,EAA0B,OAC7C,MAAM57M,EAAKC,MACTk5M,aACEA,EACA5tE,WAAW8rE,eACTA,EAAcC,eACdA,GAEFF,SAAShlM,SACPA,EAAQ+1E,SACRA,EAAQtoB,SACRA,GACDy6I,gBACDA,EAAeC,gBACfA,EAAe5B,wBACfA,GACE34M,EACNq3M,EAAen0L,MAAQo3L,EACvBhD,EAAep0L,MAAQq3L,EACvBjD,EAAe70G,OAASrwF,IAAa,KACrC,IAAIopM,EAAqBI,EACzB,GAAIvE,EAAe73M,QAAU4S,EAAU,CACrCilM,EAAe73M,MAAQ4S,EACvBpS,EAAGu7M,wBACHC,EAAqB,KAEvB,GAAIlE,EAAe93M,QAAU2oF,EAAU,CACrC,GAAIA,IAAa,KAAM,CACrBmvH,EAAe54J,YACV,CACL44J,EAAe93M,MAAQ2oF,EAEzBqzH,EAAqB,KAEvB,GAAIA,EAAoB,CACtBx7M,EAAGw7M,qBAELx7M,EAAGk7M,uBACHl7M,EAAGg4M,YAAY/4M,SAAQ,CAAC29L,EAAYif,KAClC,GAAIlD,IAA4B/b,EAAWp9L,MAAMT,OAAS,GAAKo6M,EAAap6M,OAAS,GAAI,CACvF,GAAIiB,EAAGk2F,YAAc,OAAQ,CAC3B0mG,EAAWp9L,MAAQ25M,EAAarvM,KAAI2yB,GAAQA,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAK+L,iBACxF,GAAIxoC,EAAGk2F,YAAc,WAAY,CACtC0mG,EAAWp9L,MAAQ25M,EAAarvM,KAAIye,GAAYA,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASte,iBACxG,CACL2yL,EAAWp9L,MAAQ25M,QAEhB,GAAI0C,GAAc1C,EAAap6M,OAAQ,CAC5C69L,EAAWl+I,YACN,CACLk+I,EAAWp9L,MAAQ25M,EAAa0C,OAIpC77M,EAAG+3M,eAAe94M,SAAQ0iH,GAAUA,EAAO9hD,SAAW7/D,EAAG6/D,UAAYA,IAEvEm4I,kBACE,OAAO/3M,KAAKg7M,eAAiBh7M,KAAKg7M,aAAeh7M,KAAKsrI,UAAUwvE,cAActrE,UAASvrG,GAAK,CAAC,YAAa,YAAa,cAAe,gBAAiB,SAASr4B,SAASq4B,EAAEp3B,SAE7KqsM,mBACE,IAAI2C,EACJ,KAAMA,EAAiB77M,KAAKm3M,WAAa,MAAQ0E,SAAwB,OAAS,EAAIA,EAAet8M,QAAU,KAAM,CACnH,MAAO,GAET,OAAOujB,GAAYm7B,QAAQj+C,KAAKm3M,QAAQ53M,OAG1CI,iBACE,MAAMI,EAAKC,KACT87M,EAAe/7M,EAAGk2F,UAClB0lH,EAA0BG,IAAiB/7M,EAAGs7M,WAChDt7M,EAAGs7M,WAAat7M,EAAGo3M,QAAQtqM,KAAOivM,EAClC/7M,EAAG83M,qBAAqB8D,GAE1BxC,uBACE,MAAMljH,UACJA,EACA73F,QAAQ8pF,SACNA,GACDsyH,uBACDA,GACEx6M,KACJ,OAAOi2F,GAAa/N,EAAWsyH,EAAuBvkH,GAAW/N,GAAY,EAE/EzB,cACE,MAAM1mF,EAAKC,MACT5B,OACEA,EAAM63F,UACNA,EAASijH,aACTA,EAAYR,wBACZA,EAAuBS,iBACvBA,GACEp5M,GACJmoF,SACEA,GACE9pF,EACJ29M,EAAe5C,EAAmB,IAAM/6M,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOmB,QAAU,KAC3G,OAEE02F,GAAa/N,IAAa6zH,IAAiBrD,GAA2BQ,EAAap6M,OAAS,GAAKo6M,EAAap6M,SAAWq6M,IAAqBD,EAAa/oM,OAAM5Q,GAASA,GAAS,OAAS02F,IAAc,YAAc12F,EAAMknF,YAIpOvnF,EAAgBusH,GAAmB,YAAa,CAC9C3kD,MAAO,CACLvnE,MAAO,QACP0L,KAAM,aACN+wM,SAAU,GAEZC,SAAU,CACR18M,MAAO,WACP0L,KAAM,gBACN+wM,SAAU,GAEZE,IAAK,CACH38M,MAAO,IACP0L,KAAM,aAERkxM,KAAM,CACJ58M,MAAO,KACP0L,KAAM,mBAERG,IAAK,CACH7L,MAAO,IACP0L,KAAM,oBAERI,IAAK,CACH9L,MAAO,IACP0L,KAAM,iBAERmxM,KAAM,CACJ78M,MAAO,KACP0L,KAAM,6BAERoxM,KAAM,CACJ98M,MAAO,KACP0L,KAAM,0BAERs+E,QAAS,CACPhqF,MAAO,UACP0L,KAAM,eACN+wM,SAAU,GAEZM,WAAY,CACV/8M,MAAO,aACP0L,KAAM,kBACN+wM,SAAU,GAEZ9yH,aAAc,CACZ3pF,MAAO,eACP0L,KAAM,cAERsxM,gBAAiB,CACfh9M,MAAO,kBACP0L,KAAM,mBAGV/L,EAAgBusH,GAAmB,mBAAoB,CACrDphH,OAAQ,CAERohH,GAAkB4sF,UAAUvxI,MAAO2kD,GAAkB4sF,UAAU4D,SAAUxwF,GAAkB4sF,UAAU,KAAM5sF,GAAkB4sF,UAAU,MAAO,CAC5I94M,MAAO,WACP0L,KAAM,eACL,CACD1L,MAAO,iBACP0L,KAAM,qBACL,CACD1L,MAAO,aACP0L,KAAM,iBACL,CACD1L,MAAO,WACP0L,KAAM,eACLwgH,GAAkB4sF,UAAUnvH,aAAcuiC,GAAkB4sF,UAAUkE,iBACzExgL,OAAQ,CAAC0vF,GAAkB4sF,UAAUvxI,MAAO2kD,GAAkB4sF,UAAU4D,SAAUxwF,GAAkB4sF,UAAU,KAAM5sF,GAAkB4sF,UAAU,MAAO5sF,GAAkB4sF,UAAU,KAAM5sF,GAAkB4sF,UAAU,KAAM5sF,GAAkB4sF,UAAU,MAAO5sF,GAAkB4sF,UAAU,MAAO5sF,GAAkB4sF,UAAU9uH,QAASkiC,GAAkB4sF,UAAUiE,WAAY7wF,GAAkB4sF,UAAUnvH,aAAcuiC,GAAkB4sF,UAAUkE,iBACpb//K,KAAM,CAAC,CACLj9B,MAAO,IACP0L,KAAM,eACL,CACD1L,MAAO,IACP0L,KAAM,cACLwgH,GAAkB4sF,UAAU9uH,QAAS,CACtChqF,MAAO,UACP0L,KAAM,aACN+wM,SAAU,GACT,CACDz8M,MAAO,aACP0L,KAAM,gBACN+wM,SAAU,GACT,CACDz8M,MAAO,cACP0L,KAAM,iBACN+wM,SAAU,GACT,CACDz8M,MAAO,aACP0L,KAAM,gBACN+wM,SAAU,GACT,CACDz8M,MAAO,aACP0L,KAAM,gBACN+wM,SAAU,GACT,CACDz8M,MAAO,aACP0L,KAAM,gBACN+wM,SAAU,GACT,CACDz8M,MAAO,cACP0L,KAAM,iBACN+wM,SAAU,GACT,CACDz8M,MAAO,cACP0L,KAAM,iBACN+wM,SAAU,GACT,CACDz8M,MAAO,cACP0L,KAAM,iBACN+wM,SAAU,GACT,CACDz8M,MAAO,aACP0L,KAAM,gBACN+wM,SAAU,GACT,CACDz8M,MAAO,aACP0L,KAAM,gBACN+wM,SAAU,GACT,CACDz8M,MAAO,aACP0L,KAAM,gBACN+wM,SAAU,GACT,CACDz8M,MAAO,eACP0L,KAAM,kBACN+wM,SAAU,GACTvwF,GAAkB4sF,UAAUnvH,aAAcuiC,GAAkB4sF,UAAUkE,iBACzE7gI,QAAS,CAAC,CACRn8E,MAAO,SACP0L,KAAM,YACN+wM,SAAU,GACT,CACDz8M,MAAO,UACP0L,KAAM,aACN+wM,SAAU,IAEZ1zL,SAAU,CAACmjG,GAAkB4sF,UAAUvxI,MAAO2kD,GAAkB4sF,UAAU4D,SAAUxwF,GAAkB4sF,UAAU,KAAM5sF,GAAkB4sF,UAAU,MAAO5sF,GAAkB4sF,UAAU,KAAM5sF,GAAkB4sF,UAAU,KAAM5sF,GAAkB4sF,UAAU,MAAO5sF,GAAkB4sF,UAAU,MAAO5sF,GAAkB4sF,UAAU9uH,QAASkiC,GAAkB4sF,UAAUiE,WAAY7wF,GAAkB4sF,UAAUnvH,aAAcuiC,GAAkB4sF,UAAUkE,mBAExbr9M,EAAgBusH,GAAmB,eAAgB,CAuBjDpyC,OAAQ,KAORzZ,SAAU,MAOViZ,SAAU,MACV05D,OAAQ,OAQRsmE,eAAgB,MAQhBE,eAAgB,MAiBhB36M,OAAQ,KAMRq5M,oBAAqB,KAOrBC,oBAAqB,KAOrBsB,cAAe,KAIf/1L,MAAO,CACLu5L,oBAAqB,CACnB3vM,KAAM,YACN0lI,OAAQ,MACRtvH,MAAO,CACLm0L,eAAgB,CACdvqM,KAAM,QACNoW,MAAO,GACPnN,IAAK,KAAK21G,GAAkB5+G,gBAC5Bq5H,YAAa,wCAEfmxE,eAAgB,CACdxqM,KAAM,QACNoW,MAAO,GACPnN,IAAK,KAAK21G,GAAkB5+G,gBAC5Bq5H,YAAa,2CAInB40E,cAAe,CACbjuM,KAAM,YACNiJ,IAAK,KAAK21G,GAAkB5+G,cAC5BoW,MAAO,IAETmlE,cAAe,CACbv7E,KAAM,WACN5B,KAAM,qCACN6K,IAAK,KAAK21G,GAAkB5+G,wBA6BhCwrM,UAAW5sF,GAAkB6sF,iBAQ7B/qF,WAAY,kCAOZ3hD,MAAO,KAMPwtI,uBAAwB,OAE1Bl6M,EAAgBusH,GAAmB,+BAA+B4sF,GAAav1L,GAAY25L,MAAMx+M,OAAO6I,QAAQuxM,IAAY,EAAEpiH,KAAeA,IAAW,EAAC,CAAGoiH,KAAev1L,GAAY25L,MAAMpE,GAAW,EACtM94M,MAAAA,KACIA,IAAO,EACXy8M,SAAAA,KACIA,IAAap5M,UAAY,EAAIo5M,QACnCvwF,GAAkB70C,YAClB60C,GAAkBvjH,OAAS,oBAE3B,MAAMw0M,WAAcpwJ,GAClB3sD,UACE,MAAMsL,KACJA,EAAI09C,KACJA,GACE3oD,KACJ,MAAO,CACLygB,IAAK,QACLxV,KAAAA,EACA09C,KAAAA,IAINzpD,EAAgBw9M,GAAO,QAAS,SAChCx9M,EAAgBw9M,GAAO,OAAQ,SAC/Bx9M,EAAgBw9M,GAAO,eAAgB,CACrCzxM,KAAM,KACNguB,sBAAuB,CAAC,UAE1ByjL,GAAM9lI,YACN8lI,GAAMx0M,OAAS,QAsBf,MAAM0lH,WAA+BwkB,GAEnCrkI,mBACE,MAAO,yBAGTlB,kBACE,MAAO,yBAMTlN,iBACE,MAAMI,EAAKC,KACXD,EAAG48M,iBACH,MAAMC,gBACJA,GACE78M,EAAGurI,UACPsxE,EAAgBztL,GAAG,QAASpvB,EAAGq2F,UAAWr2F,GAG1C68M,EAAgB3xM,KAAOlL,EAAGo7B,EAAEyhL,EAAgB3xM,MAC5ClL,EAAG6rE,OAAS7rE,EAAG88M,YAAY98M,EAAG6rE,OAC9B1xD,MAAMuB,iBAER9b,iBAAiB4tH,GACf,OAAOvtH,KAAKm7B,EAAEoyF,GAEhB5tH,iBACE,IAAKK,KAAKq5E,SAAWr5E,KAAK4rE,MAAO,CAC/B,MAAM,IAAIl7D,MAAM,kFAMpBosM,0BACE,OAAO98M,KAAK4rE,OAAS5rE,KAAK4rE,MAAMoe,QAAQhmE,MAAQhkB,KAAKgqF,QAAQlrF,OAE/Da,aAAao9M,GACX/8M,KAAKsrI,UAAU0xE,QAAQtyE,WAAW1rI,SAAQg3L,GAAUA,EAAO38G,OAAS0jI,IAEtEp9M,cAAcq2F,EAAYinH,GACxB,MAAMl9M,EAAKC,KACX,GAAIi9M,EAAY,CACdA,EAAW7+M,QAAOA,IAAW43F,EAAWjlE,MAAKmsL,GAAaA,EAAUvyM,KAAOvM,EAAOuM,OAAK3L,SAAQZ,IAC7F,IAAIy6L,EACJ,OAAQA,EAAY94L,EAAG6rE,SAAW,MAAQitH,SAAmB,OAAS,EAAIA,EAAUskB,aAAa/+M,EAAOuM,OAG5GqrF,EAAWh3F,SAAQZ,GAAUA,EAAOuM,GAAKvM,EAAOuM,IAAM5K,EAAGq9M,eACzDr9M,EAAGurI,UAAU0xE,QAAQ/5L,OAAS+yE,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWnsF,KAAIzL,GAAU2B,EAAGs9M,mBAAmBj/M,OAAa,GAEpJuB,cAAcq2F,GACZ,MAAMsnH,gBACJA,GACEt9M,KACJ,OAAOg2F,GAAcsnH,EAAkBtnH,EAAW53F,QAAOA,GAAU4B,KAAKwuB,SAAS8uL,EAAiBt9M,KAAM,CAAC5B,MAAY43F,EAEvHr2F,YAAYg7M,GACV,MAAM56M,EAAKC,KACXD,EAAGwpE,gBAAgB,SACnB,GAAIoxI,EAAU,CAEZ56M,EAAGurI,UAAU0xE,QAAQtyE,WAAW1rI,SAAQ,EACtCssI,WACEiyE,cACEn/M,OAAAA,EACAqoF,QAAAA,QAIJk0H,EAASwC,aAAa/+M,EAAOuM,GAAI,MACjC,GAAI87E,EAAS,CACXk0H,EAASvkH,UAAUh4F,EAAQ,UAG/Bu8M,EAASv8M,SACT2B,EAAGy9M,yBACH7C,EAASxrL,GAAG,CACV1qB,KAAM,QACNrG,OAAQ,gBACRke,QAASvc,IAGbA,EAAGurI,UAAU0xE,QAAQtyE,WAAW1rI,SAAQg3L,GAAUA,EAAOpqH,MAAQ+uI,IAEnEh7M,0BAA0B89M,GACxBz9M,KAAKsrI,UAAUsxE,gBAAgBp6G,QAAUi7G,EAE3C99M,0BAA0B+9M,GACxB19M,KAAKsrI,UAAUsxE,gBAAgB3xM,KAAOyyM,IAAY,MAAQA,SAAiB,EAAIA,EAAU9vF,GAAuB+vF,2BAMlHh+M,yBACE,MAAMI,EAAKC,KACXD,EAAG6rE,MAAMoe,QAAQhrF,SAAQZ,IACvB,IAAIw/M,EACJ,MAAMC,EAAY99M,EAAG89M,UAAUz/M,IAC7B+T,SACEA,EAAQ+1E,SACRA,EAAQ3oF,MACRA,EAAKoL,GACLA,EAAEi1D,SACFA,EAAW,MAAKwoB,cAChBA,GACEhqF,EACN,GAAIy/M,GAAa1rM,GAAY+1E,MAAe01H,EAAc79M,EAAGiqF,WAAa,MAAQ4zH,SAAqB,GAAKA,EAAY7sL,MAAK3yB,GAAUA,EAAOuM,KAAOA,KAAM,CACzJ5K,EAAG+9M,aAAa,CACdnzM,GAAAA,EACAwH,SAAAA,EACA+1E,SAAAA,EACA3oF,MAAAA,EACAqgE,SAAAA,EACAwoB,cAAAA,QAQRzoF,UAAUvB,GACR,MAAM2B,EAAKC,KACX,OAAQD,EAAGu9M,iBAAmBv9M,EAAGyuB,SAASzuB,EAAGu9M,gBAAiBv9M,EAAI,CAAC3B,MAAa,KAOlFuB,sBAAsBvB,GACpB,MAAM2B,EAAKC,MACTq5E,OACEA,EAAMzN,MACNA,EAAKhM,SACLA,EAAQiZ,SACRA,EAAQmgI,cACRA,EAAaX,UACbA,EAAS0F,gBACTA,EAAexwF,WACfA,EAAUywF,2BACVA,GACEj+M,EACN,OAAOrB,EAAe,CACpBmO,KAAM9M,EAAGsQ,YAAY4tM,gBACrB5kI,OAAQA,IAAW,MAAQA,SAAgB,EAAIA,EAASzN,EAAMyN,OAC9Dj7E,OAAAA,EACAwtE,MAAAA,EACAhM,SAAAA,EACAiZ,SAAAA,EACAggI,eAAgB34M,QAAQ69M,GACxB/E,cAAAA,EACAX,UAAAA,EACA9qF,WAAAA,EACAlgG,UAAW,CACT+3D,OAAQ,uBACR9oE,QAASvc,GAEXq3H,KAAM,GACL4mF,EAA6Bj+M,EAAGyuB,SAASwvL,EAA4Bj+M,EAAI,CAAC3B,IAAWwE,WAE1FjD,mBAAmBvB,GACjB,MAAM2B,EAAKC,MACT4/D,SACEA,EAAQiZ,SACRA,EAAQqlI,gBACRA,GACEn+M,EACN,MAAO,CACL8M,KAAM,YACN0lI,OAAQ,MACRD,YAAa,CACXiwD,WAAY,SAEdzsL,IAAK,KAAK83G,GAAuB/gH,WACjC6pB,QAAS,CACPynL,cAAep+M,EAAGo7B,EAAE,6BAEtBlY,MAAO,CACLm7L,eAAgB,CACdvxM,KAAM,WACN+yD,SAAAA,EACAiZ,SAAAA,EACAm9E,SAAU91J,QAAQ9B,EAAOwhE,UACzBvyC,UAAW,CACT+3D,OAAQ,uBACR9oE,QAASvc,GAEX+V,IAAK,KAAK83G,GAAuB/gH,sBAEnC0wM,aAAcx9M,EAAGs+M,sBAAsBjgN,GACvCkgN,aAAc,CACZzxM,KAAM,SACNohD,IAAK,eACL2R,SAAAA,EACAiZ,SAAAA,EACA2pB,OAAQ07G,GAAmBn+M,EAAGyuB,SAAS0vL,EAAiBn+M,EAAI,CAAC3B,MAAa,MAC1E0X,IAAK,mBAAmB83G,GAAuB/gH,cAC/C+iH,KAAM,aACNviG,UAAW,CACTnnB,MAAO,eACPoW,QAASvc,MAMnBw+M,gBACE,MAAMC,EAAkB,CAACx+M,KAAKqQ,YAAY4tM,gBAAiB,SAAU,YACrE,OAAOj+M,KAAKwvI,UAASvrG,GAAKu6K,EAAgB5yM,SAASq4B,EAAEp3B,QAEvDlN,eAAeq4M,GACbh4M,KAAKu+M,UAAUv/M,SAAQmnI,GAASA,EAAMvmE,SAAWo4I,IAEnDr4M,eAAes4M,GACbj4M,KAAKu+M,UAAUv/M,SAAQmnI,GAASA,EAAMttD,SAAWo/H,IAEnDt4M,sBAAqBZ,OACnBA,EAAMi3J,QACNA,IAEA,MAAMj2J,EAAKC,KACTy+M,EAAc1+M,EAAG2+M,eAAe3/M,GAChCX,EAAS2B,EAAGiqF,QAAQy0H,GACpBlB,EAAex9M,EAAG4+M,gBAAgBF,GACpCrgN,EAAOwhE,UAAYo2F,EACnBunD,EAAa7C,iBACb,GAAI36M,EAAG6rE,OAAS2xI,EAAa92H,QAAS,CACpC1mF,EAAG6rE,MAAMwqB,UAAUh4F,EAAQ,MAE7B2B,EAAG6+M,oBACH7+M,EAAGizL,gBAELrzL,sBAAqBZ,OACnBA,EAAMX,OACNA,EAAMqoF,QACNA,IAEA,MAAM1mF,EAAKC,MACT4rE,MACEA,GACE7rE,EACJ0+M,EAAc1+M,EAAG2+M,eAAe3/M,GAClC,GAAI6sE,EAAO,CACTA,EAAMuxI,aAAa/+M,EAAOuM,GAAI,MAC9B,GAAI87E,EAAS,CACX7a,EAAMwqB,UAAUh4F,EAAQ,MAE1B2B,EAAG6+M,oBAEL3gN,OAAOmZ,OAAOrX,EAAGiqF,QAAQy0H,GAAcrgN,GACvC2B,EAAGizL,gBAELrzL,eAAek/M,GACb,OAAO7+M,KAAKsrI,UAAU0xE,QAAQtyE,WAAWjlI,QAAQo5M,EAAYr3E,kBAE/D7nI,aAAauQ,GACX,OAAOlQ,KAAKsrI,UAAU0xE,QAAQtyE,WAAWx6H,GAO3CvQ,gBAAgB8+M,GACd,OAAOz+M,KAAK8+M,aAAaL,GAAanzE,UAAUiyE,aAElDH,mBACEp9M,KAAK++M,SAAW/+M,KAAK++M,SAAW,GAAK,EACrC,MAAO,GAAG/+M,KAAK2K,aAAa3K,KAAK++M,UAEnCp/M,cAAaZ,OACXA,IAEA,MAAMgB,EAAKC,KACTy+M,EAAc1+M,EAAG2+M,eAAe3/M,GAChCX,EAAS2B,EAAGiqF,QAAQy0H,GACpBO,EAAYj/M,EAAG++M,aAAaL,GAG5BQ,EAAiBl/M,EAAGu+D,OAAMr6B,GAAKA,EAAEiuB,aAAejuB,EAAEp3B,OAAS,cAAgBmyM,EAAUjnK,SAAS9T,KAChG,GAAIg7K,EAAgB,CAClBA,EAAenqJ,QAEjB/0D,EAAGm/M,eAAeT,GAClB,GAAI1+M,EAAG6rE,MAAO,CACZ7rE,EAAG6rE,MAAMuxI,aAAa/+M,EAAOuM,GAAI,MACjC5K,EAAG6+M,oBAEL7+M,EAAGwtB,QAAQ,SAAU,CACnBnvB,OAAAA,IAEF2B,EAAGizL,gBAOLrzL,WAAUwS,SACRA,EAAW,KAAI+1E,SACfA,EAAW,KAAI3oF,MACfA,EAAQ,MACN,IACF,MAAMQ,EAAKC,MACTgqF,QACEA,GACEjqF,EACJm9M,EAAY,CACV/qM,SAAUpS,EAAGg+M,iBAAmB5rM,EAChC+1E,SAAAA,EACA3oF,MAAAA,EACAqgE,SAAU,MACVj1D,GAAI5K,EAAGq9M,aACPh1H,cAAe,OAEnBroF,EAAG+9M,aAAaZ,GAChB,GAAIn9M,EAAG4+M,gBAAgB30H,EAAQlrF,OAAS,GAAG2nF,QAAS,CAClD,IAAI04H,GACHA,EAAap/M,EAAG6rE,SAAW,MAAQuzI,SAAoB,OAAS,EAAIA,EAAW/oH,UAAU8mH,EAAW,MACrGn9M,EAAG6rE,OAAS7rE,EAAG6+M,oBAEjB7+M,EAAGwtB,QAAQ,MAAO,CAChBnvB,OAAQ8+M,IAEVn9M,EAAGizL,gBAKLrzL,aAAavB,GACX,MAAM2B,EAAKC,KACX,IAAKD,EAAGg+M,iBAAmB3/M,EAAO+T,WAAapS,EAAGg+M,gBAAiB,CACjEh+M,EAAGiqF,QAAQxrF,KAAKJ,GAChB2B,EAAGurI,UAAU0xE,QAAQj+L,IAAIhf,EAAGs9M,mBAAmBj/M,EAAQ2B,EAAGiqF,QAAQlrF,OAAS,KAG/Ea,cAAcwwB,GACZ,MAAMpwB,EAAKC,KACX,GAAID,EAAGq/M,iBAAkB,CACvB,OAEF,MAAMp1H,QACFA,GACE75D,EACJkvL,EAAmBr1H,EAAQn+E,OAAOJ,QAAO,CAAC6zM,EAAMlhN,IAAWM,EAAeA,EAAe,GAAI4gN,GAAO,GAAI,CACtG3/M,CAACvB,EAAOuM,IAAKvM,KACX,IACN,IAAK,IAAIqgN,EAAc1+M,EAAGiqF,QAAQlrF,OAAS,EAAG2/M,GAAe,EAAGA,IAAe,CAC7E,MAAMrgN,EAAS2B,EAAGiqF,QAAQy0H,GACxBc,EAAcF,EAAiBjhN,EAAOuM,IACtC60M,EAAYz/M,EAAG++M,aAAaL,GAC9B,GAAIe,EAAW,CACb,MAAMjC,aACJA,EAAYa,eACZA,GACEoB,EAAUl0E,UACd,IAAKi0E,GAAehC,EAAa92H,QAAS,CACxC1mF,EAAGm/M,eAAeT,QACb,GAAIc,IAAgB38M,UAAW,CACpC,MAAMslF,SACJA,EAAQ3oF,MACRA,EAAK4S,SACLA,EAAQytD,SACRA,EAAQwoB,cACRA,GACEm3H,EACJ,GAAInhN,IAAWmhN,EAAa,CAC1BthN,OAAOmZ,OAAOhZ,EAAQ,CACpB8pF,SAAAA,EACA3oF,MAAAA,EACA4S,SAAAA,EACAytD,SAAAA,EACAwoB,cAAAA,IAGJm1H,EAAan/M,OAASA,EACtBm/M,EAAa7C,iBACb0D,EAAepoD,SAAWp2F,IAIhC7/D,EAAGy9M,yBACHz9M,EAAGizL,gBAMLrzL,eAAe8+M,GACb,MACEnzE,WAAW0xE,QACTA,GACDhzH,QACDA,GACEhqF,KACJg9M,EAAQl7M,OAAOk7M,EAAQtyE,WAAW+zE,IAClCz0H,EAAQ9xE,OAAOumM,EAAa,GAC5Bz+M,KAAKgzL,gBAMPrzL,oBACEK,KAAKo/M,iBAAmB,KACxBp/M,KAAK4rE,MAAMxtE,SACX4B,KAAKo/M,iBAAmB,MAM1B7/M,YACE,OAAOS,KAAKgqF,QAEdrqF,gBAOEK,KAAKutB,QAAQ,SAAU,CACrBy8D,QAAShqF,KAAKT,QAMlBI,cACEK,KAAKy/M,mBAAmB,MAK1B9/M,gBACEK,KAAKy/M,mBAAmB,OAK1B9/M,mBAAmB+/M,GACjB,MAAM3/M,EAAKC,MACTqvF,SACEA,EAAQzjB,MACRA,GACE7rE,EACNsvF,EAASrwF,SAAQ,CAACZ,EAAQqgN,KAExB,GAAIiB,IAActhN,EAAOwhE,SAAU,CACjC,MAAM29I,aACJA,EAAYa,eACZA,GACEr+M,EAAG++M,aAAaL,GAAanzE,UACjCltI,EAAOwhE,UAAY8/I,EACnBnC,EAAa7C,iBACb0D,EAAepoD,QAAU0pD,EACzB,GAAIA,GAAa9zI,GAAS2xI,EAAa92H,QAAS,CAC9C7a,EAAMwqB,UAAUh4F,EAAQ,WAI9B2B,EAAG6+M,qBAGP1/M,EAAgB0uH,GAAwB,6BAA8B,uCACtE1uH,EAAgB0uH,GAAwB,eAAgB,CA2BtD5jC,QAAS,GAuBT3Q,OAAQ,KAORzZ,SAAU,MAaViZ,SAAU,MACV05D,OAAQ,OAcR3mE,MAAO,KAaPmyI,gBAAiB,KAOjB/E,cAAe,KAOf2G,oBAAqB,KAQrBzB,gBAAiB,KAYjBF,2BAA4B,KAQ5BV,gBAAiB,KAMjBsC,oBAAqB,KAIrB38L,MAAO,CACL+5L,QAAS,CACPnwM,KAAM,YACN0lI,OAAQ,OACRjvB,WAAY,KACZrgG,MAAO,IAET25L,gBAAiB,CACf/vM,KAAM,SACN5B,KAAM2iH,GAAuB+vF,2BAC7B7nM,IAAK,KAAK83G,GAAuB/gH,kBACjC21F,OAAQ,OASZ61G,UAAW,KAQX9qF,WAAY,oCAEdruH,EAAgB0uH,GAAwB,kBAAmB,qBAC3DA,GAAuBh3C,YACvBg3C,GAAuB1lH,OAAS,yBAahC,MAAM23M,WAAiB3wD,GAAM1uI,MAAM+qK,KAEjCx9K,mBACE,MAAO,WAGTlB,kBACE,MAAO,WAETrN,0BACE,MAAO,CACL4vJ,QAAS,WACTO,UAAW,MASX35F,OAAQ,KACR8pJ,eAAgB,KAChBvtE,OAAQ,CACN1lI,KAAM,MACNmtC,WAAY,QAIlBj4B,iCACE,MAAO,CACL8wH,WAAY,SACZC,WAAY,UAKhB0d,iBACE,MAAMrkJ,EAAS+N,MAAMs2I,YACnB9xG,UACEA,GACEvyC,GAEF2zM,eAAgB9pJ,EAAM21H,SACtBA,EAAQx5E,MACRA,GACEnyG,YACCmM,EAAOw8C,KACdjK,EAAU,YAAcsX,EACxBtX,EAAU,wBAA0BitI,EACpC,GAAIx5E,EAAO,CACThmG,EAAOk7C,SAAW,CAEhB04J,cAAe,CACbt/L,IAAK,SACLxV,KAAMknG,EACNjyF,MAAO,CACL8/L,oBAAqB,KAK7B,OAAO7zM,EAETxM,UACE,MACEmgN,eAAgB9pJ,EAAM8yF,MACtBA,EAAK2iC,SACLA,EAAQC,WACRA,GACE1rL,KACJ,MAAO,CACLkgB,MAAO,CACL+/L,UAAWn3D,EACXo3D,UAAWlqJ,GAGb3O,SAAU,CACR84J,gCAAiCr3D,GAAS,OAAS,CACjDroI,IAAK,QACLkoC,KAAMmgG,EACN5oI,MAAO,CACLkgM,UAAW,EACXC,gBAAiB,EACjB1gN,CAAC8rL,GAAWA,GAEdpqL,MAAO,CACL6F,MAAO+wC,GAAUse,QAAQ,QAASm1H,GAAY,OAOxD/rL,qBACE,IAAI2gN,EACJtgN,KAAK8/M,gBAAkBQ,EAAetgN,KAAKg2D,UAAY,MAAQsqJ,SAAsB,EAAIA,EAAetgN,KAAK8oJ,OAAS,MAAQ9oJ,KAAKwrL,gBAAkB,SAEvJ7rL,eAAeJ,EAAO+Y,GACpB4B,MAAMkjI,eAAe79I,EAAO+Y,GAE5BtY,KAAK06H,YAAW/oH,IACdA,EAAKiuD,SAAWrgE,IACH,OAEjBI,eACEK,KAAKugN,qBAEP5gN,qBAAqBq2D,GACnBh2D,KAAKuyI,OAAOv4F,WAAagc,EAE3Br2D,cACEK,KAAKugN,qBAEP5gN,sBACEK,KAAKugN,sBAITV,GAASjpI,YACTipI,GAAS33M,OAAS,WAelB,MAAMs4M,WAAkBpzB,GACtBr/K,mBACE,MAAO,YAGTlB,kBACE,MAAO,YAETrN,0BACE,MAAO,CAQLihN,SAAU,KAMV5Q,OAAQ,KACRzhB,UAAW,OACX9+H,WAAY,CAAC,WAAY,WAQ7BoxJ,YACE,OAAO1gN,KAAKmmI,MAAMu6E,MAMpB/gN,WACEK,KAAKmmI,MAAMjgI,QAEbu6M,eACE,OAAOzgN,KAAK2gN,UAAY,GAAK,KAK/BhhN,QACEK,KAAKmmI,MAAM5mI,MAAQ,KAErBI,cAAcwwB,GACZnwB,KAAKuzL,mBAAmB,CACtBpjK,MAAAA,EACA5wB,MAAOS,KAAKmmI,MAAM5mI,MAClBsa,SAAU7Z,KAAKizL,WACf19C,WAAY,KACZkB,MAAO,QAKb+pE,GAAU5pI,YACV4pI,GAAUt4M,OAAS,YA2BnB,MAAMkgH,WAAmBgqB,GACvBrkI,mBACE,MAAO,aAGTlB,kBACE,MAAO,aAETgV,2BACE,MAAO,CAQLg1G,oBAAqB,QAcrB+pF,aAAc,KAKdC,gBAAiB,MAGrBlhN,UAAUwY,EAAS,IACjB,MAAMpY,EAAKC,KACXmY,EAAO8K,MAAQ,CAAChlB,OAAOmZ,OAAO,CAC5BvK,KAAM,SACNohD,IAAK,aACLhjD,KAAM,qBACN8tB,YAAa/4B,MACZmY,EAAOyoM,cAAe3iN,OAAOmZ,OAAO,CACrCvK,KAAM,YACNohD,IAAK,YACL5sD,MAAO,iBACN8W,EAAO0oM,kBAAkBl6L,OAAOxO,EAAO8K,OAAS,IACnD/I,MAAMsB,UAAUrD,GAChBpY,EAAGmjJ,OAAO/zH,GAAG,CACXjpB,MAAOnG,EAAG+gN,cACVxkM,QAASvc,IAEXA,EAAGghN,UAAU5xL,GAAG,CACdi2D,OAAQrlF,EAAGihN,kBACX1kM,QAASvc,IAEXA,EAAGkhN,uBAAuBlhN,EAAGmhN,SAE/Bh+D,aACE,OAAOljJ,KAAKsrI,UAAU61E,WAExBJ,gBACE,OAAO/gN,KAAKsrI,UAAUy1E,UAOxBL,YACE,OAAO1gN,KAAK+gN,UAAUL,MAExBQ,cACE,MAAMnhN,EAAKC,KACX,OAAOD,EAAGqhN,WAAarhN,EAAGqhN,SAAW,IAAI7nF,GAAQ,CAC/CzjH,IAAK,aACLmxH,WAAYlnI,EAAGmjJ,OAAOzsG,QACtB0wF,YAAa,KACb9wF,MAAO,MACPogF,aAAc,UACdppG,UAAW,CACT1tB,aACE,MAAM6pL,EAAMxpL,KACV0gN,EAAQ3gN,EAAG2gN,MACb,GAAIA,GAASA,EAAM5hN,OAAQ,CACzB0qL,EAAI7gI,KAAO,GAAGphD,MAAMyd,KAAK07L,GAAO72M,KAAIw+G,GAAQA,EAAK5jH,OAAMwF,KAAK,UAC5D,OAAO,KAGT,OAAO,WAQftK,QACE,MAAMI,EAAKC,KACXD,EAAGghN,UAAUtiK,QACb1+C,EAAGmjJ,OAAO6D,MAAQ,GAClBhnJ,EAAGwtB,QAAQ,SAEb5tB,eAAcwwB,MACZA,IAEA,MAAMpwB,EAAKC,KAGXD,EAAGghN,UAAUM,WACblxL,EAAM21B,iBAERnmD,mBAAkB82I,MAChBA,IAEA,MAAM12I,EAAKC,KACXD,EAAGmjJ,OAAO6D,MAAQhnJ,EAAG2gN,MAAM5hN,QAAU,GACrCiB,EAAGwzL,mBAAmB,CACpBmtB,MAAO3gN,EAAG2gN,MACVjqE,MAAAA,KAKNruB,GAAWxxC,YACXwxC,GAAWlgH,OAAS,aA6BpB,MAAMo5M,WAAoB1rB,GACxB7nL,mBACE,MAAO,cAGTlB,kBACE,MAAO,cAETrN,0BACE,MAAO,CAML+W,MAAO,KAMPq1D,MAAO,KAkBPmhB,eAAgB,KAChBwgG,UAAW,KACXK,qBAAsB,IACtBjuL,UAASJ,MACPA,IAEA,MAAMqsE,MACJA,EAAKr1D,MACLA,EAAKw2E,eACLA,GACE/sF,KACJ,GAAI4rE,EAAO,CACT,MAAM63D,EAAW,GAAGltH,GAASvW,KAAK2K,YAClC,GAAIpL,EAAMT,SAAW,EAAG,CACtB8sE,EAAMuxI,aAAa15E,OACd,CACL,IAAIt7C,EACJ,GAAI4E,EAAgB,CAClB5E,EAAW3V,GAAUua,EAAeva,EAAQjzE,OACvC,CAELA,EAAQA,EAAMiL,QAAQ,sBAAuB,QAC7C29E,EAAW3V,GAAUA,EAAO9gE,IAAI6E,GAAOpW,MAAM,IAAI6E,OAAOzF,EAAO,MAIjEqsE,EAAMxtE,OAAO,CACXuM,GAAI84H,EACJt7C,SAAAA,QAOZxoF,YAAYJ,EAAO+8F,GACjBpiF,MAAMk1L,YAAY7vM,EAAO+8F,GAEzB,GAAI/8F,GAASS,KAAKwd,cAAe,CAC/Bxd,KAAK6oF,SAAS,CACZtpF,MAAAA,MAKR+hN,GAAY1qI,YACZ0qI,GAAYp5M,OAAS,cAKrB,MAAM+a,GAAQ,CAAC,CACbgrC,IAAK,eACLn4C,IAAK,sCACL7K,KAAM,mBACNqxL,QAAS,oBACR,CACDruI,IAAK,WACLn4C,IAAK,2CACL7K,KAAM,eACNqxL,QAAS,iBAGX,GAAI58L,EAAcsD,UAAW,CAC3BigB,GAAMkhF,UAER,MAAMo9G,WAAiCt2F,GACrCl9G,mBACE,MAAO,gBAGTlB,kBACE,MAAO,gBAETrN,0BACE,MAAO,CACLg3H,SAAU,KACV29B,MAAO,KACP3xD,OAAQ,KACRslD,SAAU,MACVkM,YAAa,OACb7hD,MAAO,IACPkgC,UAAW,CACT7wH,QAAS,CAAC,QACVjiB,MAAO,CAAC,CACNuW,IAAK,0BACLm4C,IAAK,WACJ,CACDphD,KAAM,YACNiJ,IAAK,wBACLm4C,IAAK,WAGTuzJ,UAAW,KAIXjyD,KAAM,CACJjuJ,SAAU,KACV2hB,MAAAA,KAINtjB,YAMEK,KAAKyhN,SAAWzhN,KAAK0hN,UAAY,EAMjC1hN,KAAK2hN,aAAe,EACpBznM,MAAMsB,aAAa3c,WAGrBc,WAcAA,gBACE,OAAOK,KAAK4hN,WAAW,aAAc/iN,WAavCc,cACE,OAAOK,KAAK4hN,WAAW,WAAY/iN,WAmBrCc,cAAakiN,UACXA,IAEA,MAAMtrM,EAAQvW,KAAKsrI,UAAUnF,MAC7B75E,GAAOmrB,YAAYlhE,EAAOsrM,GAC1BtrM,EAAMhX,MAAQ,GACd,OAAOS,KAAK4hN,WAAW,YAAa/iN,WAEtCc,WAAWwkD,GAAM1vC,QACfA,EAAU,GAAE09F,MACZA,EAAQ,IAAMwvG,aACdA,EAAYF,SACZA,EAAQr6J,YACRA,EAAcjmD,SAAS8E,OAEvB,MAAMlG,EAAKC,KACXD,EAAGqnD,YAAcA,EAEjBrnD,EAAGoe,UAAU,aACbpe,EAAGoyG,MAAQpyG,EAAGq6B,UAAU+3E,GACxBpyG,EAAGurI,UAAU72H,QAAQk0C,KAAO5oD,EAAGq6B,UAAU3lB,GACzC1U,EAAGyhN,UAAY,mBAAmBr9J,IAElC,GAAIs9J,EAAU,CACZA,SAAkBA,IAAa,SAAW,CACxCx2M,KAAMw2M,GACJA,EAEN,GAAIE,EAAc,CAChBA,SAAsBA,IAAiB,SAAW,CAChD12M,KAAM02M,GACJA,EAGNF,EAAWxjN,OAAOmZ,OAAO,GAAIrX,EAAGurI,UAAUm2E,SAASlkM,cAAekkM,GAClEE,EAAe1jN,OAAOmZ,OAAO,GAAIrX,EAAGurI,UAAUq2E,aAAapkM,cAAeokM,GAE1EF,EAASx2M,KAAOlL,EAAGq6B,UAAUqnL,EAASx2M,MACtC02M,EAAa12M,KAAOlL,EAAGq6B,UAAUunL,EAAa12M,MAC9CqhD,GAAOmrB,YAAY13E,EAAGurI,UAAUm2E,SAAUA,GAC1Cn1J,GAAOmrB,YAAY13E,EAAGurI,UAAUq2E,aAAcA,GAC9C5hN,EAAGqwH,OACH,OAAOrwH,EAAG00B,QAAU,IAAIlkB,SAAQC,IAC9BzQ,EAAGyQ,QAAUA,KAGjB7Q,OACE,MAAMivD,EAAgB3W,GAAUwmB,iBAAiBz+D,KAAKy2C,SAGtDz2C,KAAK2Y,MAAQ3Y,KAAKy2C,QAAQsB,SAAS6W,GAAiB,KAAO2yJ,GAAyBh1J,YAAYprD,SAASytD,eACzG,OAAO10C,MAAMk2G,QAAQvxH,WAEvBc,gBAAgB6hN,EAAWM,GACzB,MAAMljK,UACJA,GACE5+C,KAAKy2C,QACT,GAAIqrK,EAAc,CAChBljK,EAAU98C,OAAOggN,GAEnB,GAAIN,EAAW,CACb5iK,EAAU7/B,IAAIyiM,IAGlB7hN,UAAUJ,GACR,MAAMQ,EAAKC,MACTwQ,QACEA,GACEzQ,EACN,GAAIyQ,EAAS,CACX,MAAMuxM,EAAWhiN,EAAGyhN,YAAc,yBAClC,GAAIO,GAAYxiN,IAAUQ,EAAG0hN,WAAa1hN,EAAGurI,UAAUnF,MAAM1/C,QAAS,CACpE,OAEF1mF,EAAGyQ,QAAUzQ,EAAG20B,OAAS30B,EAAG00B,QAAU,KACtCjkB,EAAQuxM,EAAW,CACjB7+D,OAAQ3jJ,EACR0L,KAAMlL,EAAGurI,UAAUnF,MAAM5mI,OACvBA,GACJQ,EAAG4xH,QAGPhyH,kBAAkBwwB,GAEhB,GAAIA,EAAMlxB,MAAQ,SAAU,CAC1BkxB,EAAMutC,2BACN19D,KAAKgiN,gBAEP,GAAI7xL,EAAMlxB,MAAQ,QAAS,CACzBkxB,EAAMutC,2BACNvtC,EAAM21B,iBACN9lD,KAAKiiN,YAEP/nM,MAAM0xH,kBAAkBz7G,GAE1BxwB,YACEK,KAAKkiN,UAAUC,GAAcV,UAE/B9hN,gBACEK,KAAKkiN,UAAUC,GAAcR,eAIjCJ,GAAyB3qI,YACzB,MAAMurI,GAAgB,IAAIZ,GA0D1B,MAAMh3F,WAAsBkgC,GAC1B18I,mBACE,MAAO,gBAGTlB,kBACE,MAAO,gBAETgV,2BACE,MAAO,CAKL+pD,MAAO,KACP3pB,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACLm/L,gBAAiB,CACf9lB,QAAS,sBACT1sE,KAAM,eACN6D,OAAQ,IACR7qE,QAAS,8BAEXy5J,mBAAoB,CAClB/lB,QAAS,yBACT1sE,KAAM,kBACN6D,OAAQ,IACR7qE,QAAS,6BAEX05J,WAAY,CACVz1M,KAAM,cACNi8I,MAAO,UACPngI,IAAK,EACLtU,IAAK,EACLy5K,SAAU,KACVjlG,SAAU,wBACVkrC,wBAAyB,MACzBN,OAAQ,KAEV8uF,UAAW,CACT11M,KAAM,SACNiJ,IAAK,6BACL29G,OAAQ,KAEV+uF,eAAgB,CACdlmB,QAAS,qBACT1sE,KAAM,cACN6D,OAAQ,IACR7qE,QAAS,6BAEX65J,eAAgB,CACdnmB,QAAS,qBACT1sE,KAAM,cACN6D,OAAQ,IACR7qE,QAAS,6BAEX3f,UAAW,CACTp8B,KAAM,SACNiJ,IAAK,sBACL29G,OAAQ,KAEVivF,aAAc,CACZpmB,QAAS,mBACT1sE,KAAM,gBACN6D,OAAQ,IACR7qE,QAAS,2BAEX+5J,OAAQ,CACN91M,KAAM,SACNiJ,IAAK,iBACL29G,OAAQ,KAEVmvF,YAAa,CACX/1M,KAAM,SACNiJ,IAAK,iBACL29G,OAAQ,OAMhBnhH,WAAWA,GACT4H,MAAM5H,OAASA,EACf,IAAKtS,KAAK4rE,MAAO,CACf5rE,KAAK4rE,MAAQt5D,EAAOs5D,OAGxBt5D,aACE,OAAO4H,MAAM5H,OAEfs5D,UAAUA,GACR,MAAM7rE,EAAKC,KACXD,EAAGwpE,gBAAgB,SACnBxpE,EAAGk7L,OAASrvH,EACZ,GAAIA,EAAO,CACTA,EAAMz8C,GAAG,CACP1qB,KAAM,QACNo+M,cAAe,uBACfC,aAAc,gBACd19H,OAAQ,gBACR9oE,QAASvc,IAEX,GAAI6rE,EAAMyG,UAAW,CACnBtyE,EAAGgjN,yBAITn3I,YACE,OAAO5rE,KAAKi7L,OAEdt7L,uBACEK,KAAK06H,YAAWz2F,GAAKA,EAAE09B,YAEzBhiE,qBACEK,KAAKgjN,gBACL9oM,MAAMsf,qBAER75B,gBACE,MAAMI,EAAKC,MACTuiN,UACEA,EAASK,YACTA,GACE7iN,EAAGurI,UACT,IAAItnH,EAAQ,EACVoqF,EAAW,EACX5lF,EAAQ,EACR9E,EAAM,EACN0hF,EAAW,EACb,GAAIrlG,EAAG6rE,MAAO,CACZ,MAAMA,MACFA,GACE7rE,GACJwtG,SACEA,EAAQiB,YACRA,GACE5iC,EACN5nD,EAAQ4nD,EAAM5nD,MACdoqF,EAAWxiC,EAAMwiC,SACjBhJ,EAAWx5B,EAAMw5B,SACjB58E,EAAQpU,KAAKC,IAAI,GAAIm6F,EAAc,GAAKjB,EAAW,GACnD7pF,EAAMtP,KAAKuU,IAAIy8E,EAAU58E,EAAQ+kF,EAAW,GAE9Cg1G,EAAU55J,KAAO5oD,EAAGo7B,EAAE,uBAALp7B,CAA6B,CAC5CquG,SAAAA,IAEFw0G,EAAYj6J,KAAO3kC,EAAQjkB,EAAGo7B,EAAE,qBAALp7B,CAA2B,CACpDyoB,MAAAA,EACA9E,IAAAA,EACA0hF,SAAAA,IACGrlG,EAAGo7B,EAAE,gBAEZx7B,gBACE,MAAMI,EAAKC,MACTsrI,UACEA,EAAS1/D,MACTA,GACE7rE,GACJikB,MACEA,EAAKoqF,SACLA,EAAQI,YACRA,GACE5iC,GACJ02I,WACEA,EAAUC,UACVA,EAASH,gBACTA,EAAeC,mBACfA,EAAkBG,eAClBA,EAAcC,eACdA,EAAcG,YACdA,GACEt3E,EACNvrI,EAAG26H,YAAWz2F,GAAKA,EAAEoxD,WACrBitH,EAAW/iN,MAAQivG,EACnB8zG,EAAWjuM,IAAM+5F,EACjBw0G,EAAYhjJ,SAAW0iJ,EAAW1iJ,SAAW2iJ,EAAU3iJ,UAAY57C,EACnEo+L,EAAgBxiJ,SAAWyiJ,EAAmBziJ,SAAW4uC,GAAe,IAAMxqF,EAC9Ew+L,EAAe5iJ,SAAW6iJ,EAAe7iJ,SAAW4uC,GAAeJ,IAAapqF,EAChFjkB,EAAGijN,gBAELrjN,oBAAmBJ,MACjBA,IAEA,GAAIS,KAAK4rE,MAAM4iC,cAAgBjvG,EAAO,CACpCS,KAAK4rE,MAAM0jC,SAAS/vG,IAGxBI,mBACEK,KAAK4rE,MAAM0jC,SAAS,GAEtB3vG,sBACEK,KAAK4rE,MAAMq3I,eAEbtjN,kBACEK,KAAK4rE,MAAM8+C,WAEb/qH,kBACEK,KAAK4rE,MAAM0jC,SAAStvG,KAAK4rE,MAAMwiC,UAEjCzuG,gBACEK,KAAK4rE,MAAM0jC,SAAStvG,KAAK4rE,MAAM4iC,cAInC+b,GAAc3zC,YACd2zC,GAAcriH,OAAS,gBAKvB,MAAMu7I,WACFA,IACE34B,GAAe04B,KACnB0/D,GAAY,CACVtkJ,GAAI,CAAC,MAAO,UACZxpB,MAAO,CAAC,QAAS,QACjBg2F,KAAM,CAAC,SAAU,OACjB91F,KAAM,CAAC,OAAQ,UAEjB6tK,GAAqB,CACnBhuK,IAAK,EACLi2F,KAAM,EACN91F,KAAM,EACND,OAAQ,EACRupB,GAAI,EACJxpB,MAAO,GAETguK,GAAgB,GAChBC,GAAiB,CACfzkJ,GAAI,CACF55C,KAAM,iBACNutB,GAAI,sBAEN64F,KAAM,CACJpmH,KAAM,iBACNutB,GAAI,qBAEN+C,KAAM,CACJtwB,KAAM,iBACNutB,GAAI,sBAEN6C,MAAO,CACLpwB,KAAM,iBACNutB,GAAI,sBAQV,MAAM+wK,WAA8Bx4F,GAAetqG,MAAMwjD,KACvDj2D,mBACE,MAAO,wBAETlB,kBACE,MAAO,UAETrN,0BACE,MAAO,CAgBL+jN,eAAgB,IAYhB7zF,UAAW,KACX8zF,UAAW,CACTjkN,MAAO,KACPiiB,QAAS,KACTE,QAAS,OAaX+hM,eAAgB,CACd52M,KAAM,eACNiJ,IAAK,eACLw/G,WAAY,UACZ31H,UACE,IAAIu/I,GAEHA,EAAoBl/I,KAAKy9I,eAAiB,MAAQyB,SAA2B,OAAS,EAAIA,EAAkBwkE,kBAKrH96L,uBACE,MAAO,CACL+6L,YAAa,GAGjBhkN,cACEK,KAAK0jN,aAAa,OAEpB/jN,qBAAqBmd,GACnB,MAAM6mM,YACJA,GACE3jN,KACJ,KAAM2jN,EAAY5wL,UAAYjW,GAAS,MAAQA,EAAQ,GAAI,CACzD6mM,EAAY7mM,MAAQA,EACpB6mM,EAAY5/I,WAAajnD,GAG7Bnd,qBAAqBo9I,GACnB,MAAMh9I,EAAKC,MACT08I,MACEA,GACE38I,EACN,GAAIA,EAAGyd,eAAiBzd,EAAGoZ,eAAiBujI,GAASA,EAAMvjI,aAAc,CACvE,OAAO4jI,EAETL,EAAMuD,MAAQ,CACZ8S,WAAYhW,GAGhBp9I,eAAe4uC,GACb,GAAIr0B,MAAMinI,eAAe5yG,KAAe,MAAO,CAC7C,OAAO,MAET,GAAIvuC,KAAK08I,MAAM+S,SAAU,CACvBlhH,EAAUuwG,UAAY,MAG1Bn/I,gBAAgB6vE,EAAW5L,EAAQ,MACjC,IAAI67E,GACHA,EAAcz/I,KAAK08I,SAAW,MAAQ+C,SAAqB,OAAS,EAAIA,EAAYtuB,YACrFj3G,MAAMwnI,gBAAgBlyE,EAAW5L,GAEnCjkE,cAAc4uC,GACZ,MAAMxuC,EAAKC,MACTmgJ,YACEA,EAAWqC,aACXA,GACEziJ,GACJ++I,UACEA,GACEvwG,GACJuxG,aACEA,EAAYpD,MACZA,GACE38I,EACNA,EAAGugI,gBAAkBoc,EAAM7W,WAC3B9lI,EAAGsgI,iBAAmBqc,EAAMtW,YAC5BrmI,EAAG2hJ,gBAAgB,MACnB,MAAMkiE,EAAmB7jN,EAAG8hJ,gBAC5B/B,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAarpG,QAAQmI,UAAU7/B,IAAI,eAC/F,GAAI+/H,EAAW,CACbpC,EAAMjmG,QAAQmI,UAAU7/B,IAAI,gBAC5B6kM,EAAiBhoK,OAAO,EAAG,GAC3B,MAAMioK,EAAuBD,EAAiBr0M,QAC5CwyI,EAAUmhE,GAAU/iE,GACtB0jE,EAAqB9hE,EAAQ,IAAM8hE,EAAqB9hE,EAAQ,IAChEjD,EAAUroG,QAAU12C,EAAGyiJ,aACvB1D,EAAU3qF,UAAYkvJ,GAAeljE,GACrCrB,EAAU77H,MAAQ,CAAC,CACjBwzB,QAAS+rG,EACT9hC,KAAM,CACJ17F,KAAM,QAAQ4+L,KACdrxK,GAAI,QAAQsxK,QAGhBt1K,EAAUuwG,UAAY7G,GAASsB,IAAIuF,IAGvCn/I,WAAWyyD,GACT,IAAI0xJ,EAAuBC,EAC3B7pM,MAAMonI,WAAWlvF,GACjB,MAAMryD,EAAKC,MACT08I,MACEA,GACE38I,GACJ02C,QACEA,GACEimG,EACN38I,EAAGikN,wBAA0BF,EAAwB/jN,EAAGikN,0BAA4B,MAAQF,SAA+B,OAAS,EAAIA,EAAsBj9M,KAAK9G,GACnKA,EAAGkkN,wBAA0BF,EAAwBhkN,EAAGkkN,0BAA4B,MAAQF,SAA+B,OAAS,EAAIA,EAAsBl9M,KAAK9G,GAInKA,EAAG4jN,YAAYh8L,SACf,GAAIyqC,IAAW,UAAYryD,EAAG2vH,UAAW,CAIvC,GAAIgtB,EAAMlR,cAAe,CACvBzrI,EAAGikN,uBAAyBljK,GAAY3xB,GAAG,CACzCsnB,QAAAA,EACA2kG,WAAY5rB,IACVzvH,EAAG4jN,YAAYh8L,UAEjBwzH,WAAY3rB,IACVzvH,EAAG4jN,iBAIT5jN,EAAGkkN,uBAAyBnjK,GAAY3xB,GAAG,CACzCsnB,QAASt1C,SAAS8E,KAClBmgD,UAAWopE,IACT,GAAIA,EAAG7wH,SAAW83C,IAAYA,EAAQsB,SAASy3E,EAAG7wH,SAAWoB,EAAGwjN,gBAAkB,KAAM,CACtF,IAAIW,EAIJ,MAAMx5J,EAAKgyF,EAAMlR,iBAAmB04E,EAAsBxnE,EAAMjR,gBAAkB,MAAQy4E,SAA6B,OAAS,EAAIA,EAAoB7gK,gBAAkBpL,GAAUwmB,iBAAiBhoB,GACrM,KAAMiU,IAAO,MAAQA,SAAY,GAAKA,EAAG3S,SAASy3E,EAAG7wH,SAAU,CAC7DoB,EAAG4jN,YAAYl1M,YAO3B9O,YAAY4uC,GACV,MAAMxuC,EAAKC,MACT8+I,UACEA,GACEvwG,GACJ4xG,YACEA,EAAWL,aACXA,EAAY0C,aACZA,EAAY9F,MACZA,GACE38I,GACJ02C,QACEA,GACEimG,EACNjmG,EAAQmI,UAAU98C,OAAO,cAAe,gBACxC/B,EAAGoiJ,wBACHpiJ,EAAG8hJ,cAAc,OACjB,MAAMS,EAASviJ,EAAG8hJ,gBAAgBjmG,OAAO,EAAG,GAC1CuoK,EAAW7hE,EAAO/yI,QAClBwyI,EAAUmhE,GAAU/iE,GACtBL,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAarpG,QAAQmI,UAAU98C,OAAO,eAClG,GAAIg9I,EAAW,CACbroG,EAAQmI,UAAU7/B,IAAI,cAAe,eACrColM,EAASpiE,EAAQ,IAAMoiE,EAASpiE,EAAQ,IACxCjD,EAAUroG,QAAU+rG,EACpB1D,EAAU3qF,UAAY,CACpBnvC,KAAMq+L,GAAeljE,GAAa5tG,GAClCA,GAAI8wK,GAAeljE,GAAan7H,MAElC85H,EAAUp+B,KAAO,CACf17F,KAAM,QAAQm/L,KACd5xK,GAAI,QAAQ+vG,MAEd/zG,EAAUuwG,UAAY7G,GAASsB,IAAIuF,IAGvCn/I,UAAU4uC,GACRr0B,MAAMkqM,UAAU71K,GAChB,MAAMmuG,MACJA,GACE18I,KACJ,GAAIuuC,EAAU+oG,UAAW,CACvBoF,EAAM+S,SAAW,MAEnB/S,EAAMjmG,QAAQmI,UAAU98C,OAAO,eAEjCnC,aAAa4uC,GACXr0B,MAAMmqM,aAAa91K,GACnBvuC,KAAK08I,MAAMjmG,QAAQmI,UAAU7/B,IAAI,eAEnCyjI,mBACE,OAAOxiJ,KAAK08I,MAAM4nE,eAEpB7hE,uBACE,OAAOziJ,KAAK08I,MAAMjmG,QAEpBkqG,kBACE,MAAM5gJ,EAAKC,MACTmsD,UACEA,GACEpsD,EACJoY,EAAS+B,MAAMymI,YACf5D,EAAOh9I,EAAG0jN,eACZ,GAAI1mE,EAAM,CACR,OAAOr+I,EAAeA,EAAe,GAAIyZ,GAAS,GAAI,CACpD46I,WAAYhW,GAAQ/rG,GAAa55B,OAAO,CACtC+0C,UAAWA,EAAUljD,eACpB8zI,KAGP,OAAO5kI,EAETxY,cAAcijJ,EAAO,MACnB,MAAM7iJ,EAAKC,MACT08I,MACEA,GACE38I,EACJ4hJ,EAAYiB,GAAQlG,EAAM38B,YAE1BwkG,EAAQ3hE,EAAO,CAAC,EAAG,EAAG,EAAG,GAAK,GAE9BG,EAAY7oI,MAAM2nI,cAAce,GAOlC,GAAIA,EAAM,CAER2hE,EAAMpB,GAAmBpjN,EAAGogJ,cAAgB,IAAIwB,EAAU5hJ,EAAGmgJ,aAAe,OAE9ExD,EAAMjmG,QAAQp1C,MAAMmjN,SAAW5hE,EAAO,SAAS2hE,EAAMt6M,KAAK,OAAS,GACnE,OAAO84I,EAETpjJ,wBAAwB6vH,GACtB,MAAMzvH,EAAKC,MACT08I,MACEA,GACE38I,EACN,GAAIyvH,EAAGi1F,aAAe/nE,EAAM4nE,gBAAkBvkN,EAAGyjN,UAAW,CAC1DzjN,EAAGyjN,UAAY,MACfzjN,EAAGuhJ,WAAW5E,EAAM+S,SAAW,SAAW,aAG9C9vJ,kBACEK,KAAK0jN,eAEP/jN,kBAAiBuoC,GACfA,EAAEutF,KACFA,GACE2tF,IACF,IAAIrjE,EACJ,OAAQA,EAAe//I,KAAK08I,SAAW,MAAQqD,SAAsB,OAAS,EAAIA,EAAagR,iBAAiB,CAC9G7oH,GAAAA,EACAutF,KAAAA,EACA0H,QAAS,OAQbx9H,aAAawpE,GACX,MAAMuzE,MACJA,GACE18I,KACJ,GAAI08I,EAAMltE,UAAW,CACnB,GAAIrG,GAAS,KAAM,CACjBA,GAASuzE,EAAM+S,SAEjB,GAAI/S,EAAM+S,WAAatmF,EAAO,CAC5BnpE,KAAKwjN,UAAY,KACjB9mE,EAAM+S,UAAY/S,EAAM+S,WAI9B9vJ,gBAAgBJ,GACd,MAAMQ,EAAKC,KACT0kN,EAAY,eACZhoE,MACEA,GACE38I,EACJ4kN,EAAMD,EAAUj9M,KAAK1H,EAAGogJ,aAAe,SAAW,QACpD,GAAIzD,EAAO,CACT38I,EAAGyiJ,aAAanhJ,MAAMsjN,GAAOjoE,EAAM38B,YAAY4kG,GAAO,KACtDjoE,EAAMjmG,QAAQmI,UAAUr/C,EAAQ,MAAQ,UAAU,8BAGtDI,cAAcV,EAAKgH,GACjB,IAAI2+M,EACJ,MAAM7kN,EAAKC,MACTmgJ,YACEA,EAAWzD,MACXA,GACE38I,GACJ2gJ,mBACEA,EAAkBd,OAClBA,EAAM5S,YACNA,GACE0P,EACJqW,GAAc6xD,EAAeloE,EAAMuD,SAAW,MAAQ2kE,SAAsB,OAAS,EAAIA,EAAa7xD,YACrG53F,EAAQzd,GAAS39C,EAAGgxJ,iBAAiB,CACpCt7B,KAAM11H,EAAGwgJ,aACTr4G,GAAI,YAEN2nH,EAAOpM,GAAW/C,GAClBvuC,EAAQuqC,EAAM+D,UAAY/D,EAAMvqC,QAAUytC,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOztC,QAAU,IAAS,KACtH,GAAI4gD,EAAY,CACdA,EAAW5mG,UAAYg0F,EAEzB,MAAO,CAAC,iBAAkB,CACxBjgI,MAAOxhB,EAAeA,EAAe,GAAIsuI,GAAc,GAAI,CACzDrtI,CAAC,0BAA0B+gJ,KAAuB,EAClD/gJ,CAAC,mBAAmBwgJ,KAAgB,EACpCxgJ,CAAC,KAAKkwJ,EAAO,IAAM,UAAW,EAC9Bg1D,kBAAmB,EACnBv5D,eAAgB,IAElBj+H,UAAW,CACTy8J,cAAet6D,GAAMzvH,EAAG+kN,wBAAwBt1F,IAElDnoE,SAAU,CACR09J,qBAAsB5yG,GAAS,CAC7B1xF,IAAK,SACLP,MAAO,IAAIs9B,GAAa9+C,EAAeA,EAAe,GAAIsuI,GAAc,GAAI,CAC1ErtI,CAAC,UAAU+gJ,KAAuB,EAClCskE,iBAAkB,EAClBC,yBAA0B,IACxBrlE,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO9pI,KAC3DuxC,SAAU,IAAI8T,EAAQ,CACpBpS,UAAW,sBACXJ,KAAMwpD,EACNjyF,MAAOxhB,EAAeA,EAAe,GAAIsuI,GAAc,GAAI,CACzDrtI,CAAC,YAAYigJ,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOuR,aAAe,WAAY,EAC/FC,iBAAkB,QAEhB1zG,IAER/9C,CAACV,GAAMgH,MAMfq9M,GAAsB1sI,YACtB0sI,GAAsBp7M,OAAS,wBAkB/B,MAAMg9M,WAAsB93B,GAE1BvgL,kBACE,MAAO,gBAGTuqE,mBACE,MAAO,WAETrpE,mBACE,MAAO,gBAETpO,UAAUwY,EAAS,IACjBA,EAAOi2K,UAAY,WACnBl0K,MAAMsB,aAAa3c,WACnBmB,KAAKy2C,QAAQmI,UAAU7/B,IAAI,gBAI/BmmM,GAActuI,YACdsuI,GAAch9M,OAAS,gBA2BvB,MAAMi9M,WAAc5c,GAElBx6L,mBACE,MAAO,QAGTlB,kBACE,MAAO,QAGTuqE,mBACE,MAAO,cAET53E,0BACE,MAAO,CACL4uL,UAAW,QAMXb,UAAW,KACXmb,eAAgB9lM,WAKpBgmM,mBACE,OAAO1uL,MAAM0uL,aAAe,iBAG9BjpM,gBAAgBw7H,GACd,GAAIjhH,MAAMkrM,gBAAgBjqF,KAAU,MAAO,CACzC,GAAIn7H,KAAKg2J,SAAWh2J,KAAKutL,UAAW,CAClCvtL,KAAKg2J,QAAU,QAIrBr2J,WAAW8E,GACTzE,KAAK2nJ,YAAcljJ,EAGrB9E,oBAGFwlN,GAAMvuI,YACNuuI,GAAMj9M,OAAS,QA0Cf,MAAMm9M,WAAmBxF,GAEvB9xM,mBACE,MAAO,aAGTlB,kBACE,MAAO,aAETrN,0BACE,MAAO,CACL83E,YAAa,QAObi2G,UAAW,KASX9oL,KAAM,KAiDNmI,QAAS,CACPrN,MAAO,KACPiiB,QAAS,CACPhS,MAAO,UAGXqnH,oBAAqB,SAGzByuF,sBACE,MAAM7gN,KACJA,GACEzE,KACJ,OAAOA,KAAKkzI,cAAc90I,QAAOkH,GAAKA,EAAEb,OAASA,IAEnD8gN,gBACE,MAAO,GAAGvlN,KAAKyE,MAAQzE,KAAKiuD,KAAOjuD,KAAK2K,MAE1C+tL,eACE,OAAO14L,KAAKslN,gBAAgBlnN,QAAOkH,GAAKA,EAAE6gI,MAAM6vB,UAAS,IAAM,KAOjEz2J,YACE,MAAMm5L,SACJA,GACE14L,KACJ,OAAO04L,EAAWA,EAAS+P,aAAe,KAE5ClpM,UAAUiO,GACRxN,KAAKslN,gBAAgBtmN,SAAQsG,IAC3BA,EAAEkY,cAAgBxd,KAAKwd,cACvBlY,EAAE0wJ,QAAU1wJ,EAAEmjM,eAAiBj7L,EAC/BlI,EAAEkY,cAAgB,SAGtB7d,cACEK,KAAKme,UAAU,WACf,OAAOjE,MAAMg5H,cAEfvzI,cAAciN,EAAS0L,GACrB,KAAM1L,GAAW0L,GAAO04B,GAAaQ,cAAcl5B,EAAK1L,IAAW,CACjE,OAAOA,GAGXjN,cAAcV,EAAKumN,EAAQ7tM,GACzB,MAAM5X,EAAKC,MACTyE,KACEA,GACE1E,EACJ+K,EAAM,CACJrG,KAAAA,EACAoI,KAAM,QACNtN,MAAON,IAAQc,EAAGR,MAClB0uD,IAAK,GAAGluD,EAAGwlN,YAAYtmN,IACvBwpM,aAAcxpM,GAElB,UAAWumN,IAAW,SAAU,CAC9B16M,EAAIG,KAAOu6M,MACN,CACLx0K,GAAa55B,OAAOtM,EAAK06M,GAE3B,OAAO7tM,EAAW20C,GAAOmrB,YAAY9/D,EAAU7M,GAAOA,EAExDnL,WAAWgS,GAET,OAAOA,EAAK8zM,SAAW9zM,EAAKlN,OAASzE,KAAKyE,KAE5C9E,mBAAmB4W,GAEjB,OAAOvW,KAAK0lN,WAAWnvM,GAEzB5W,WAAWgS,GACTuI,MAAMw5H,WAAW/hI,GACjB,GAAI3R,KAAK0lN,WAAW/zM,GAAO,CACzBA,EAAKwd,GAAG,CACN1qB,KAAMkN,EAAKhH,GACXg7M,aAAc,0BACdvgI,OAAQ,oBACRl/E,MAAO,eACPoW,QAAStc,QAIfL,cAAcgS,GACZ,GAAI3R,KAAK0lN,WAAW/zM,GAAO,CACzB3R,KAAKupE,gBAAgB53D,EAAKhH,IAE5BuP,MAAMo5H,cAAc3hI,GAEtBhS,aAAa6vH,GACX,MAAMzwH,OACJA,GACEywH,EACJ,GAAIzwH,EAAOi3J,SAAWh2J,KAAKutL,WAAaxuL,EAAOwuL,WAAa,KAAM,CAChExuL,EAAOi3J,QAAU,OAGrBr2J,wBAAwB6vH,GACtB,GAAIA,EAAGwmC,QAAS,CACd,MAAMj2J,EAAKC,MACT4lN,UACEA,GACE7lN,EACN,IAAKA,EAAG63I,WAAa73I,EAAGwtB,QAAQ,eAAgBxtB,EAAG8lN,eAAer2F,MAAS,MAAO,CAChF,GAAIo2F,GAAa,MAAQA,IAAc7lN,EAAGR,MAAO,CAC/CQ,EAAG63I,UAAY,KACfpoB,EAAGzwH,OAAOu4J,4BACVv3J,EAAGR,MAAQqmN,EACX7lN,EAAG6lN,UAAYA,EACf7lN,EAAG63I,UAAY,MACf,OAAO,SAKfj4I,kBAAkB6vH,GAChB,MAAMzvH,EAAKC,KACX,GAAIwvH,EAAGwmC,UAAYj2J,EAAG63I,UAAW,CAC/B73I,EAAGwzL,mBAAmBxzL,EAAG8lN,eAAer2F,IACxCzvH,EAAG6lN,UAAY7lN,EAAGR,OAGtBI,eAAe6vH,GACb,MAAO,CACLxqG,KAAMwqG,EACN79G,KAAM69G,EAAGzwH,OACTw2I,WAAY/lB,EAAG+lB,WACfqwE,UAAW5lN,KAAK4lN,UAChBrmN,MAAOS,KAAKT,OAGhBI,gBACE,MAAMI,EAAKC,MACT4M,QACEA,EAAO24M,UACPA,GACExlN,EACJulN,EAAkBvlN,EAAGulN,gBAAgB75M,QAAO,CAAC1C,EAAGzD,KAC9CyD,EAAEzD,EAAE2oD,IAAIzoD,UAAU+/M,EAAUzmN,SAAWwG,EACvC,OAAOyD,IACN,IACL,IAAImH,EAAQ,EACVjR,EACAumN,EACF,GAAI54M,EAAS,CACX,IAAK3N,KAAO2N,EAAS,CACnB44M,EAASzlN,EAAG+lN,cAAc7mN,EAAK2N,EAAQ3N,GAAMqmN,EAAgBrmN,WACtDqmN,EAAgBrmN,GACvBc,EAAG6yF,OAAO4yH,EAAQt1M,MAGtB,MAAMyH,EAAW1Z,OAAO4N,OAAOy5M,GAC/B,GAAI3tM,IAAa,MAAQA,SAAkB,GAAKA,EAAS7Y,OAAQ,CAC/DiB,EAAG+B,OAAO6V,GACVA,EAAS3Y,SAAQsG,GAAKA,EAAEyW,cAM9BspM,GAAWzuI,YACXyuI,GAAWn9M,OAAS,aAKpB,MAAM69M,GAAY,CAChBluD,QAAS,EACTC,UAAW,EACXE,UAAW,EACXD,WAAY,GAed,MAAMiuD,WAAe15J,GAEnBv+C,mBACE,MAAO,SAGTlB,kBACE,MAAO,SAETrN,0BACE,MAAO,CASLyL,KAAM,KAMNg7M,UAAW,KAMXC,YAAa,MAUbv9L,IAAK,EAULtU,IAAK,IAULgxB,KAAM,EASN9lC,MAAO,GAMP0oC,KAAM,KAENk+K,UAAW,GACXv9J,QAAS,CACPpnC,QAAS,CAAC,OAAQ,WAClBjiB,MAAO,CACLsN,KAAM,UACNwpC,MAAO,MACPtlC,OAAQ,MAERkqC,SAAU,OAGdhiB,sBAAuB,CAAC,QAQxBmtL,qBAAsB,MAK1BzmN,UACE,MAAMgL,GACFA,EAAEge,IACFA,EAAGtU,IACHA,EAAG4xM,UACHA,EAAS5gL,KACTA,EAAIp6B,KACJA,EAAI1L,MACJA,EAAK0oC,KACLA,EAAO,GAAE23B,SACTA,GACE5/D,KACJqmN,EAAU,GAAG17M,UACb27M,EAAUpmN,QAAQ+K,GAAQg7M,GAC5B,MAAO,CACL/lM,MAAO,CACL0rK,cAAe06B,EACf99D,SAAU89D,EACVC,aAAc3mJ,GAEhBvY,SAAU,CACR8+E,MAAO,CACL1lH,IAAK,QACL5T,KAAM,QACNlC,GAAI07M,EACJt9J,UAAW,QACX6W,SAAUA,EACVj3C,IAAAA,EACAtU,IAAAA,EACAgxB,KAAAA,EACA9lC,MAAAA,EACA8tB,UAAW,CACT84G,MAAO,kBACP/gD,OAAQ,mBACR5+B,UAAW,sBACXC,SAAU,uBAGdqiG,MAAO,CACLroI,IAAK,QACL+nC,IAAK69J,EACL19J,KAAMs9J,EAAYh7M,EAAO,GAAGA,MAAS1L,IAAQ0oC,KAAU1oC,EAAQ0oC,EAAOh9B,KAK9E8zD,mBACE,OAAO/+D,KAAKmmI,MAEdqgF,sBACE,OAAQxmN,KAAKT,MAAQS,KAAK2oB,MAAQ3oB,KAAKqU,IAAMrU,KAAK2oB,KAAO,IAkB3DhpB,kBAAkBqE,GAGhB,IAAKhE,KAAK64E,UAAYktI,GAAU/hN,EAAE/E,KAAM,CACtC+E,EAAE05D,4BAGN/9D,mBACEK,KAAKymN,WACLzmN,KAAKgzL,cAAc,MACnBhzL,KAAKutB,QAAQ,SAAU,CACrBhuB,MAAOS,KAAKT,QAGhBI,kBACE,MAAMI,EAAKC,KACX,GAAID,EAAG84E,SAAU,CAGf94E,EAAGomI,MAAM5mI,MAAQQ,EAAGR,MACpB,OAEFQ,EAAGR,MAAQ6J,SAASrJ,EAAGomI,MAAM5mI,MAAO,IACpCQ,EAAGwtB,QAAQ,QAAS,CAClBhuB,MAAOQ,EAAGR,QAEZ,GAAIQ,EAAGqmN,qBAAsB,CAC3BrmN,EAAGizL,cAAcjzL,IAGrBJ,sBACE,IAAI+mN,EACJ,MAAM3mN,EAAKC,KACT2mN,EAAgB5mN,EAAG01C,IAAM,IAAM11C,EAAGymN,gBAAkBzmN,EAAGymN,iBACxDE,EAAc3mN,EAAG6oD,WAAa,MAAQ89J,SAAqB,OAAS,EAAIA,EAAYn+E,OAAO,CAC1F5pI,OAAQ43C,GAAUvxB,KAAKjlB,EAAGomI,OAAOygF,QAAQ7mN,EAAGomN,UAAY,GAAIpmN,EAAGomN,UAAY,GAC3E9vK,MAAO,MAAMjiC,KAAKkxB,MAAMqhL,OAG5BhnN,qBACE,IAAI2rL,GACHA,EAAgBtrL,KAAK4oD,WAAa,MAAQ0iI,SAAuB,OAAS,EAAIA,EAAc35D,OAE/FhyH,cAAc41I,GACZv1I,KAAKuzL,mBAAmB,CACtBh0L,MAAOS,KAAKT,MACZk3I,MAAO,KACPlB,WAAAA,IAMJ51I,UAAU0U,GACR,MAAMtU,EAAKC,KACX,GAAID,EAAGomI,OAASpmI,EAAG4vD,OAASt7C,EAAK,CAC/BtU,EAAGR,MAAQ8U,EACXtU,EAAGwtB,QAAQ,QAAS,CAClBhuB,MAAOQ,EAAGR,SAKhBI,UAAUgpB,GACR,MAAM5oB,EAAKC,KACX,GAAID,EAAGomI,OAASpmI,EAAG4vD,OAAShnC,EAAK,CAC/B5oB,EAAGR,MAAQopB,EACX5oB,EAAGwtB,QAAQ,QAAS,CAClBhuB,MAAOQ,EAAGR,SAKhBI,cAAcwY,EAAQ0uM,GACpB,IAAIC,EACJ,GAAI3uM,EAAQ,CACVA,EAAOQ,MAAQ3Y,KAEjB,OAAOA,KAAKkmN,YAAc3sF,GAAQ9hD,YAAYovI,EAAiB1uM,EAAQ,CACrEQ,MAAO3Y,KACPiiD,SAAU,CACRglF,WAAYjnI,KAAKmmI,MACjBx9E,KAAMz/C,OAAOlJ,KAAKT,SAAWunN,EAAa9mN,KAAKioC,QAAU,MAAQ6+K,SAAoB,EAAIA,EAAa,OAErG,KAEPnnN,YAAYJ,GACV,MAAMQ,EAAKC,MACT2oB,IACEA,EAAG0c,KACHA,GACEtlC,EACNR,EAAQ6U,KAAKuU,IAAIvU,KAAKC,IAAI9U,EAAOopB,GAAM5oB,EAAGsU,KAK1C,GAAI9U,EAAQopB,EAAK,CACf,OAAOA,EAAMqoB,GAAa+1K,QAAQxnN,EAAQopB,EAAK0c,GAEjD,OAAO2L,GAAa+1K,QAAQxnN,EAAO8lC,GAErC1lC,YAAYJ,GACV,MAAMQ,EAAKC,MACTmmI,MACEA,EAAK9M,SACLA,GACEt5H,EACN,GAAIs5H,EAAU,CACZ,IAAI2tF,EACJ3tF,EAAS1wE,KAAO5oD,EAAGR,QAAUynN,EAAWjnN,EAAGkoC,QAAU,MAAQ++K,SAAkB,EAAIA,EAAW,IAEhG,GAAI7gF,GAASA,EAAM5mI,QAAU2J,OAAO3J,GAAQ,CAC1C4mI,EAAM5mI,MAAQA,EACdQ,EAAGizL,cAAc,OAEnBjzL,EAAG0mN,WAIL9mN,WACE,IAAIsnN,EAAcC,EAClB,MAAMnnN,EAAKC,OAETinN,EAAelnN,EAAGs5H,YAAc,MAAQ4tF,SAAsB,OAAS,EAAIA,EAAar8J,cAAgBs8J,EAAgBnnN,EAAGs5H,YAAc,MAAQ6tF,SAAuB,OAAS,EAAIA,EAAc5qK,QAAQ,CAC3M39C,OAAQ43C,GAAUvxB,KAAKjlB,EAAGomI,OAAOygF,QAAQ7mN,EAAGomN,UAAY,GAAIpmN,EAAGomN,UAAY,GAC3E9vK,MAAO,MAAMjiC,KAAKkxB,MAAMvlC,EAAGymN,uBAMjCR,GAAOpvI,YACPovI,GAAO99M,OAAS,SAkBhB,MAAMi/M,WAAoB5e,GACxBx6L,mBACE,MAAO,cAETlB,kBACE,MAAO,cAET+K,wBACE,MAAO,CACLwvM,WAAY,yBAGhBznN,UAAUwY,GACR,GAAIA,IAAW,MAAQA,SAAgB,GAAKA,EAAO69I,QAAS,CAC1D79I,EAAOrC,KAAOqC,EAAOrC,KAAO,IAAM,IAAM9V,KAAKqQ,YAAYuH,WAAWwvM,WAEtEltM,MAAMsB,UAAUrD,GAElB83K,oBACE,MAAMo3B,EAAWntM,MAAM+1K,cACvBo3B,EAASnvM,OAAO,EAAG,EAAGlY,KAAKsnN,eAC3B,GAAItnN,KAAKiL,KAAM,CACbo8M,EAASA,EAASvoN,OAAS,GAAGohB,MAAQ,0BACjC,CAELmnM,EAASz1M,MAEX,OAAOy1M,EAETC,oBACE,MAAO,CACLpnM,MAAO,uBACP6oC,UAAW,cACX1B,SAAU,CAAC,CACTnnC,MAAO,sBACP6oC,UAAW,gBAIjBppD,mBACEua,MAAMu1K,mBACNzvL,KAAKy2C,QAAQmI,UAAU5+C,KAAKT,MAAQ,MAAQ,UAAUS,KAAKonN,YAE7DznN,aAAa4b,GAEXvb,KAAKunN,WAAWlmN,MAAMi8H,WAAa,OACnCpjH,MAAMo1H,aAAa/zH,GACnBvb,KAAK+c,YAAW,IAAM/c,KAAKunN,WAAWlmN,MAAMi8H,WAAa,IAAI,IAGjE6pF,GAAYvwI,YACZuwI,GAAYj/M,OAAS,cAKrB,MAAMs/M,GAAY,CAAC,eAAgB,cACjCC,GAAU/8J,GAAMzS,GAAUC,cAAcwS,EAAGlT,cAAe,aAAe,SAAWpuC,SAAS6uC,GAAUC,cAAcwS,EAAI,cAAe,KAAOthD,SAAS6uC,GAAUC,cAAcwS,EAAI,aAAc,KAClMg9J,GAAc,CACZ1tK,WAAY,MACZqoE,SAAU,MASd,MAAMslG,WAAiBr7J,GAErBv+C,mBACE,MAAO,WAGTlB,kBACE,MAAO,WAETrN,0BACE,MAAO,CA4CLooN,YAAa,OACbvlG,SAAU,KACV27C,iBAAkB,CAChBx8I,QAAS,UACTjiB,MAAO,MAETsoN,aAAc,CACZrmM,QAAS,UACTjiB,MAAO,MAETuoN,iBAAkB,CAChBtmM,QAAS,UACTjiB,MAAO,OAIbqpB,uBACE,MAAO,CACLm/L,UAAW,OAKfpoN,YACE,IAAIqoN,GACHA,EAAsBhoN,KAAKioN,iBAAmB,MAAQD,SAA6B,OAAS,EAAIA,EAAoBnhN,KAAK7G,MAC1Hka,MAAM8B,YAIRrc,UACE,MAAO,CACLugB,MAAO,CACLgoM,aAAc,GAEhB76L,UAAW3uB,EAAe,CACxB6lK,YAAa,cACbnpB,WAAY,cACV17I,EAAc6C,uBAAyB,CACzC6jD,UAAW,cACXR,WAAY,iBAYlBuiK,yBACE,OAAOnoN,KAAKqiH,SAAW,WAAa,aAEtC+lG,iBACE,OAAO97J,GAAOC,YAAYvsD,KAAKy2C,QAAQmoF,mBAAoB,GAE7DypF,qBACE,OAAO/7J,GAAOC,YAAYvsD,KAAKy2C,QAAQqoF,uBAAwB,GAEjEn/H,uBAAuBq+J,GACrB,IAAIsqD,EACJ,MAAMvoN,EAAKC,KACXD,EAAGwoN,eAAiBD,EAAoBvoN,EAAGwoN,iBAAmB,MAAQD,SAA2B,OAAS,EAAIA,EAAkB5oG,aAChI,GAAIs+C,EAAkB,CACpBj+J,EAAGwoN,cAAgB,IAAIxpG,kBAAiB,IAAMh/G,EAAGgoN,cACjDhoN,EAAGwoN,cAAc7pG,QAAQs/C,EAAkB,CACzC1uG,WAAY,KAEZ8vD,UAAW,QAKjBz/G,mBAAmB4lB,GACjBvlB,KAAKwoN,cAAcjjM,EAAM,QAE3B5lB,uBAAuBk/H,GACrB7+H,KAAKwoN,cAAc3pF,EAAU,YAE/Bl/H,cAAc8oN,EAAUhkN,GACtBzE,KAAKupE,gBAAgB9kE,GACrBgkN,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASt5L,GAAG,CAC9D1qB,KAAAA,EACA6X,QAAStc,KACT83F,SAAU,YACVD,OAAQ,YACR85B,KAAM,YACNvB,KAAM,cAGVzwH,oBACEK,KAAK+nN,UAAUt5M,MAEjB9O,eAAe0iH,GACb,IAAI6E,EACJ,MAAMtoE,GAAasoE,EAAgBlnH,KAAKy2C,WAAa,MAAQywE,SAAuB,OAAS,EAAIA,EAActoE,UAC/GA,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU7/B,IAAIyoM,GAAUnlG,EAAW,EAAI,IAC7FzjE,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU98C,OAAO0lN,GAAUnlG,EAAW,EAAI,IAOlG1iH,YACE,IAAI+oN,EACJ,MAAM3oN,EAAKC,MACTy2C,QACEA,EAAO2xK,WACPA,EAAUC,eACVA,GACEtoN,EACN,IAAIsiH,GAAYqmG,EAAwBhB,GAAY3nN,EAAG6nN,gBAAkB,MAAQc,SAA+B,EAAIA,EAAwB,KAC5I3oN,EAAG8nN,aAAeO,EAClBroN,EAAG+nN,iBAAmBO,EACtBtoN,EAAG6/D,SAAWwoJ,IAAeA,EAAW3qE,aAAe2qE,EAAW54I,WAAa44I,EAAW5lH,SAAW6lH,IAAmBA,EAAe5qE,aAAe4qE,EAAe74I,WAAa64I,EAAe7lH,QACjM,GAAI6f,IAAa,MAAQ+lG,GAAcC,EAAgB,CACrDtoN,EAAGi+J,iBAAmB,SACjB,CAELj+J,EAAGi+J,iBAAmBvnH,EAAQe,cAE9B,GAAIz3C,EAAG89H,UAAYpnF,EAAQsU,aAAc,CACvC,MAAM49J,EAAgB1wK,GAAUC,cAAczB,EAAQe,cAAe,kBAErE,GAAImxK,EAAe,CACjBtmG,GAAYsmG,EAAc/6M,WAAW,cAGlC,CACH,MAAMixH,EAAWpoF,EAAQqoF,uBACvBv5G,EAAOkxB,EAAQmoF,mBACjB,IAAKC,IAAat5G,EAAM,CAEtB,OAEF,MAAMqjM,EAAW/pF,EAASvnF,wBACxBuxK,EAAWtjM,EAAK+xB,wBAChBwxK,EAAUF,EAASzzK,IAAM0zK,EAAS1zK,IAAMyzK,EAAWC,EACnDE,EAAaD,IAAYD,EAAWD,EAAWC,EAEjDxmG,EAAWymG,EAAQ3zK,MAAQ4zK,EAAW5zK,MAI5Cp1C,EAAGsiH,SAAWA,EAIhB1iH,YAAYwwB,GACV,IAAI64L,EACJ74L,EAAM21B,iBACN,GAAI31B,EAAM6wB,QAAS,CACjB7wB,EAAQA,EAAM6wB,QAAQ,GAExB,MAAMjhD,EAAKC,MACTy2C,QACEA,GACE12C,EACJ2L,EAAO+qC,EAAQqoF,uBACfv5G,EAAOkxB,EAAQmoF,mBACfqqF,EAAcxB,GAAQ/7M,GACtBw9M,EAAczB,GAAQliM,GACtB4jM,EAAS,IAEVH,EAAoBjpN,EAAGkoN,iBAAmB,MAAQe,SAA2B,OAAS,EAAIA,EAAkBniN,KAAK9G,GAElH,IAAK,MAAMguD,KAAStX,EAAQe,cAAc6P,SAAU,CAClD,GAAIogK,GAAQ15J,IAAUA,IAAUtX,EAAS,CACvC0yK,EAAO3qN,KAAK,CACVi4C,QAASsX,EACT7mD,MAAO6mD,EAAM/K,YACb/7C,OAAQ8mD,EAAM3W,gBAIpBr3C,EAAG0tE,QAAU,CACX+6F,OAAQr4I,EAAMsxB,MACdgnH,OAAQt4I,EAAMgvB,MACdiqK,UAAW19M,EAAKs3C,YAChBqmK,WAAY39M,EAAK0rC,aACjBkyK,UAAW/jM,EAAKy9B,YAChBumK,WAAYhkM,EAAK6xB,aACjB6xK,YAAAA,EACAC,YAAAA,EACAC,OAAAA,EACAz9M,KAAAA,EACA6Z,KAAAA,GAEF,MAAM0I,EAAS,CACbwoB,QAASt1C,SACTqkD,YAAa,cACbC,UAAW,YACXnpC,QAASvc,GAGX,IAAKL,EAAc6C,sBAAuB,CACxC0rB,EAAOitH,UAAYjtH,EAAOq3B,UAAY,cACtCr3B,EAAOo4B,QAAUp4B,EAAOs3B,SAAW,YAErC9O,EAAQmI,UAAU7/B,IAAI,YACtBhf,EAAGkoN,cAAgBnnK,GAAY3xB,GAAGlB,GAEpCtuB,YAAYwwB,GACV,MAAMpwB,EAAKC,MACTytE,QACEA,EAAO26I,WACPA,EAAUC,eACVA,GACEtoN,EACJypN,EAAY/7I,EAAQ/hE,KAAKrK,MACzBooN,EAAYh8I,EAAQloD,KAAKlkB,MACzB+jD,GAAUj1B,EAAMsxB,MAAQgsB,EAAQ+6F,SAAWzoK,EAAG01C,KAAO,EAAI,GACzD4P,EAASl1B,EAAMgvB,MAAQsuB,EAAQg7F,OACjCt4I,EAAM21B,iBACN7nD,OAAOmZ,OAAOq2D,EAAS,CACrBroB,OAAAA,EACAC,OAAAA,IAEF,IAAKooB,EAAQswF,QAAS,CACpBtwF,EAAQswF,QAAU,KAClBh+J,EAAGwtB,QAAQ,YAAa,CACtBkgD,QAAAA,EACAt9C,MAAAA,IAIFs9C,EAAQ07I,OAAOnqN,SAAQmqN,IACrBA,EAAO1yK,QAAQp1C,MAAMqoN,SAAW3pN,EAAGsiH,SAAW8mG,EAAOjiN,MAAQiiN,EAAOliN,OAEpEkiN,EAAO1yK,QAAQp1C,MAAM2qL,UAAY,OAIrC,GAAIjsL,EAAGsiH,SAAU,CACf,MAAMsnG,EAAel8I,EAAQ27I,UAAYhkK,EACvCwkK,EAAen8I,EAAQ67I,UAAYlkK,EACrC,GAAIqoB,EAAQw7I,YAAa,CACvBO,EAAUE,SAAWC,OAChB,GAAItB,EAAgB,CACzBA,EAAenhN,MAAQyiN,MAClB,CACLH,EAAUtiN,MAAQ,GAAGyiN,MAEvB,GAAIl8I,EAAQy7I,YAAa,CACvBO,EAAUC,SAAWE,OAChB,GAAIxB,EAAY,CACrBA,EAAWlhN,MAAQ0iN,MACd,CACLH,EAAUviN,MAAQ,GAAG0iN,WAElB,CACL,MAAMC,EAAgBp8I,EAAQ47I,WAAahkK,EACzCykK,EAAgBr8I,EAAQ87I,WAAalkK,EACvC,GAAIooB,EAAQw7I,YAAa,CACvBO,EAAUE,SAAWG,OAChB,GAAIxB,EAAgB,CACzBA,EAAephN,OAAS4iN,MACnB,CACLL,EAAUviN,OAAS,GAAG4iN,MAExB,GAAIp8I,EAAQy7I,YAAa,CACvBO,EAAUC,SAAWI,OAChB,GAAI1B,EAAY,CACrBA,EAAWnhN,OAAS6iN,MACf,CACLL,EAAUxiN,OAAS,GAAG6iN,OAG1B/pN,EAAGwtB,QAAQ,OAAQ,CACjBkgD,QAAAA,EACAt9C,MAAAA,IAGJxwB,UAAUwwB,GACR,IAAI45L,EACJ,MAAMhqN,EAAKC,MACV+pN,EAAqBhqN,EAAGkoN,iBAAmB,MAAQ8B,SAA4B,OAAS,EAAIA,EAAmBljN,KAAK9G,GACrHA,EAAGkoN,cAAgB,KACnBloN,EAAG02C,QAAQmI,UAAU98C,OAAO,YAC5B,GAAI/B,EAAG0tE,QAAQswF,QAAS,CACtBh+J,EAAGwtB,QAAQ,OAAQ,CACjBkgD,QAAS1tE,EAAG0tE,QACZt9C,MAAAA,IAGJpwB,EAAG0tE,QAAU,KAGf9tE,SACEua,MAAMH,UAAUlb,WAChBmB,KAAK+nN,UAAUt5M,MACf,GAAIzO,KAAKqiH,WAAa,KAAM,CAC1BriH,KAAK+nN,cAKXJ,GAAS/wI,YACT+wI,GAASz/M,OAAS,WA6BlB,MAAM8hN,WAAY3iE,GAEhBt5I,mBACE,MAAO,MAGTlB,kBACE,MAAO,MAETrN,0BACE,MAAO,CAOLi6J,OAAQ,KAMRvpJ,MAAO,KAMPsnB,QAAS,KAMT1lB,OAAQ,KAMRH,KAAM,CACJpS,MAAO,KACPiiB,QAAS,WAEXmuH,QAAS,KAKTs6E,SAAU,KAUVC,cAAe,OAUfC,YAAa,QACbl4J,KAAM,OAGVtyD,UACE,MAAM85J,OACFA,EAAM3jJ,IACNA,EAAG5F,MACHA,EAAKsnB,QACLA,EAAO1lB,OACPA,GACE9R,KACJoqN,EAAUpqN,KAAK2Y,MAAMg8H,kBACvB,MAAO,CACL01E,SAAU,EACVC,gBAAiB7wD,EACjB8wD,eAAgBH,EAChBI,gBAAiBt6M,EAAQ,EACzBgQ,MAAOxhB,EAAe,CACpB+rN,iBAAkB,EAClBC,WAAYjxD,EACZkxD,cAAenzL,EACfozL,aAAc94M,GACbgE,GACH4gB,QAAS,CACPxmB,MAAAA,IAKNvQ,YAAYuQ,GACVlQ,KAAKw3B,SAAWtnB,EAElBvQ,WAAWgS,EAAM2G,GACf,IAAIuyM,EAAuBC,EAC3B,MAAM/qN,EAAKC,KACX,IAAKsY,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAIq9G,OAAS51H,EAAI,CAC9DuY,EAAIq9G,IAAM,KAEZ,GAAIhkH,EAAM,CACRA,EAAKgkH,IAAM51H,EACXA,EAAGA,EAAGmqN,eAAiBv4M,EAAK5R,EAAGoqN,aAC/BpqN,EAAG4vI,QAAUh+H,EAAKmE,IAClB/V,EAAG+3H,YAAYroE,aAAa,gBAAiB99C,EAAKhH,IAClDgH,EAAKsgD,KAAO,YAEb44J,EAAwB9qN,EAAGgrN,sBAAwB,MAAQF,SAA+B,OAAS,EAAIA,EAAsBhkN,KAAK9G,GACnIA,EAAGgrN,mBAAqBp5M,GAAQmU,GAAe43B,MAAM/rC,EAAM,iBAAkB,qBAAsB5R,EAAI,CACrGmmB,OAAQ,SAET4kM,EAAuB/qN,EAAGirN,oBAAsB,MAAQF,SAA8B,OAAS,EAAIA,EAAqBjkN,KAAK9G,GAC9HA,EAAGirN,iBAAmBr5M,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKwd,GAAG,CACxE87L,mBAAoB,2BACpBjW,WAAY,mBACZkW,qBAAsB,6BACtB5uM,QAASvc,EACT8sB,KAAM,MAGR9sB,EAAGorN,aAELxrN,cAAcmW,EAAKwC,GACjB,MAAMm+B,QACFA,GACEz2C,KACJ4+C,EAAYnI,GAAW+G,GAAax4B,KAAKyxB,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQmI,UAA6B,MAClI,GAAInI,EAAS,CACXmI,EAAU98C,OAAOwW,GAAKyG,IAAIjJ,GAC1B2gC,EAAQiI,UAAYE,EAAUr/C,OAGlCI,aAAa08I,EAAQ/jI,GACnB,IAAK+jI,KAAY/jI,EAAK,CACpBtY,KAAKmrN,cAGTxrN,aACE,MAAMI,EAAKC,MACTq8I,OACEA,EAAM4tE,SACNA,GACElqN,EAEN,IACEm6C,UAAWZ,EACXa,WAAYd,EACZ+xK,UAAWn0F,EACXo0F,WAAYr0F,GACVj3H,EAEJ,GAAIkqN,EAAU,CACZ,MAAMqB,YACJA,EAAWC,YACXA,GACEtB,EACJ,GAAIqB,GAAe,KAAM,CACvB,GAAIjvE,EAAQ,CAEV,GAAI/iG,IAAagyK,EAAa,CAC5BhyK,EAAW,KAGbD,EAAYiyK,MACP,CAEL,GAAIjyK,IAAciyK,EAAa,CAC7BjyK,EAAY,KAEdC,EAAWgyK,GAGf,GAAIC,GAAe,KAAM,CACvB,GAAIlvE,EAAQ,CACV,GAAIplB,IAAas0F,EAAa,CAC5Bt0F,EAAW,KAGbD,EAAYu0F,MACP,CACL,GAAIv0F,IAAcu0F,EAAa,CAC7Bv0F,EAAY,KAEdC,EAAWs0F,GAGfxrN,EAAGu5C,SAAWA,EACdv5C,EAAGs5C,UAAYA,EACft5C,EAAGk3H,SAAWA,EACdl3H,EAAGi3H,UAAYA,GAGnBr3H,0BACEZ,OAAQysN,EAAWhpH,OACnBA,IAGA,IAAKgpH,EAAYC,kBAAoBD,EAAYE,cAAe,CAC9D,MAAMzB,SACJA,GACEjqN,KACJA,KAAKwiG,OAASA,EAEd,GAAIA,GAAUgpH,IAAgBvB,EAASl5C,WAAY,CACjDk5C,EAAS0B,qBAAqBH,KAIpC7rN,mBAEE,IAAKK,KAAK2R,KAAK85M,gBAAiB,CAC9BzrN,KAAK2xH,QAGThyH,4BACEZ,OAAQ6sN,EAAchsJ,SACtBA,IAEA,MAAMqqJ,SACJA,GACEjqN,KACJA,KAAK4/D,SAAWA,EAEhB,GAAIgsJ,IAAmB3B,EAASl5C,WAAY,CAC1Ck5C,EAAS0B,qBAAqBC,IAGlCjsN,oBAAmB8E,KACjBA,EAAIlF,MACJA,IAEA,GAAIkF,IAASzE,KAAKmqN,YAAa,CAC7BnqN,KAAKA,KAAKkqN,eAAiB3qN,IAKjCyqN,GAAIpzI,YACJozI,GAAI9hN,OAAS,MAKb,MAAM2jN,GAAQ5jM,GAAKA,EAAE4jM,MAYrB,MAAMC,WAAerhE,GACnB18I,mBACE,MAAO,SAGTlB,kBACE,MAAO,SAETrN,0BACE,MAAO,CACL83E,YAAa,MACbh2E,SAAU,SACV2wD,KAAM,UACN8jE,qBAAsB,MAG1Bg2F,eACE,OAAO/rN,KAAKgsN,MAAM,GAEpBC,cACE,OAAOjsN,KAAKgsN,OAAO,GAErBE,eACE,OAAOlsN,KAAKozI,OAAOpiD,QAAQ66H,IAE7BM,WACE,OAAOrpM,GAAYkC,KAAKhlB,KAAKozI,OAAQy4E,IAEvClsN,UACE,MAAO,CACL0nD,SAAU,CACRgkG,eAAgB,CACdnrI,MAAO,CACLksM,kBAAmB,MAM7BzsN,WAAWg2H,GACT,OAAO31H,KAAKozI,OAAO3tI,QAAQkwH,EAAKk2F,IAElClsN,WAAWouD,GACT7zC,MAAMw5H,WAAW3lF,GACjB,GAAIA,EAAM79C,OAAS,KAAM,CACvBlQ,KAAKqsN,YAGT1sN,cAAcouD,GACZ7zC,MAAMo5H,cAAcvlF,GACpB/tD,KAAKqsN,WAEP1sN,YACE,MAAM2sN,YACJA,GACEtsN,KAAK2Y,MAET,IAAKzE,MAAMo4M,GAAc,CACvBtsN,KAAKmsN,KAAKG,GAAax3J,SAG3Bn1D,WACE,MAAMwsN,KACJA,GACEnsN,KACJ,IAAK,IAAIpB,EAAI,EAAGq9B,EAAIkwL,EAAKrtN,OAAQF,EAAIq9B,IAAKr9B,EAAG,CAC3CutN,EAAKvtN,GAAGsR,MAAQtR,EAChButN,EAAKvtN,GAAG44B,SAAW54B,EACnButN,EAAKvtN,GAAGkT,OAASlT,IAAMq9B,EAAI,GAG/Bt8B,MAAMuQ,GACJ,OAAOlQ,KAAKozI,OAAOriH,KAAK86L,GAAO37M,IAAU,MAI7C47M,GAAOl1I,YACPk1I,GAAO5jN,OAAS,SAKhB,MAAMqkN,GAAmB,CAAC,mBAAoB,oBAAqB,kBAAmB,oBAOtF,MAAMC,WAAa/8E,GACjB1hI,mBACE,MAAO,OAETlB,kBACE,MAAO,OAETrN,0BACE,MAAO,CACLkwI,aAAc,mBACdC,QAAS,cACT88E,mBAAoB,uBAMpBC,kBAAmB,KAKnB37C,WAAY,KAKZu7C,YAAa,MAGjB3sN,WAAWgS,GACTuI,MAAMw5H,WAAW/hI,GACjB,MAAM5R,EAAKC,MACT+wK,WACEA,EAAUp4J,MACVA,GACE5Y,EACJusN,EAAc3zM,EAAM2zM,aAAe,KAAO3zM,EAAM2zM,YAAcvsN,EAAGusN,aAAe,EAChFj/H,EAAY10E,EAAMsK,MAAMxd,QAAQkM,GAChC2hK,EAAWvC,GAAc,KAAOp/J,IAASo/J,EAAa1jF,IAAci/H,EACtE36M,EAAKwd,GAAG,CACN6lL,WAAY,oBACZ3rD,WAAY,oBACZ/sI,QAASvc,IAIX,GAAIuzK,EAAU,CACZ3hK,EAAKy+G,OACLrwH,EAAG4sN,aAAet/H,EAClBttF,EAAGsxK,YAAc1/J,MACZ,CACLA,EAAK85M,gBAAkB,KACvB95M,EAAKggH,OACLhgH,EAAK85M,gBAAkB,OAG3B9rN,cAAcgS,GACZuI,MAAMo5H,cAAc3hI,GAGpB,GAAI3R,KAAKqxK,cAAgB1/J,EAAM,CAC7B3R,KAAK4sN,kBAAkBj7M,GAEzB3R,KAAK2sN,aAAe3sN,KAAK2Y,MAAMsK,MAAMxd,QAAQzF,KAAKqxK,aAClD1/J,EAAK2c,GAAG,CACN0mL,WAAY,oBACZ3rD,WAAY,oBACZ/sI,QAAStc,OAObL,mBACEZ,OAAQ8tN,IAIR,IAAK7sN,KAAK2Y,MAAM6E,gBAAkBqvM,EAAanB,cAAe,CAC5D1rN,KAAK+wK,WAAa87C,EAClB,OAAO,OAOXltN,mBACEZ,OAAQysN,IAIR,IAAKxrN,KAAK2Y,MAAM6E,gBAAkBguM,EAAYC,gBAAiB,CAC7DzrN,KAAK4sN,kBAAkBpB,GACvB,OAAO,OAGX7rN,kBAAkBgS,GAChB,MAAMgH,MACFA,GACE3Y,KACJijB,EAAQtK,EAAMsK,MAAMhR,QACpB66M,EAAW7pM,EAAMxd,QAAQkM,GAC3BsR,EAAM/K,OAAO40M,EAAU,GACvB9sN,KAAKssN,YAAcl4M,KAAKuU,IAAImkM,EAAU7pM,EAAMnkB,OAAS,GAkBvDa,cAAc2sN,EAAaS,EAAkB/sN,KAAKssN,YAAa1/M,GAC7D,MAAM7M,EAAKC,MACT2Y,MACEA,GACE5Y,GACJkjB,MACEA,GACEtK,EACJq0M,EAAeV,aAAuBhgK,GACtC2gK,EAAiBhqM,EAAM8pM,GACvBG,EAAgBv0M,EAAMsK,MAAMqpM,EAAcU,EAAe/pM,EAAMxd,QAAQ6mN,GAAeljN,SAASkjN,EAAa,KAC5GxtE,GAAalyI,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQkyI,aAAe,MACtFquE,IAAWvgN,IAAY,MAAQA,SAAiB,GAAKA,EAAQspB,QAC7D/F,EAAQ,CACN48L,gBAAAA,EACAE,eAAAA,GAGJ,GAAIC,IAAkBA,EAAcxB,eAAiBwB,IAAkBD,EAAgB,CACrF,IAAIG,EACJ,MAAMC,EAAkBJ,GAAkBA,EAAex2K,QACvD62K,EAAmBJ,GAAiBA,EAAcz2K,QAEpD,GAAI12C,EAAGwtN,gBAAiB,CACtB,MAAMC,EAAmBztN,EAAGwtN,gBAAgBp9L,MAG5C,GAAIq9L,EAAiBz8C,aAAem8C,EAAe,CACjD,OAAOM,EAAiB/4L,QAE1B10B,EAAGwtN,kBACHC,EAAiBP,eAAex2K,QAAQmI,UAAU98C,UAAUyqN,IAC5DiB,EAAiBz8C,WAAWt6H,QAAQmI,UAAU98C,UAAUyqN,IACxDxsN,EAAGwtN,gBAAkB,KAEvBp9L,EAAMm8L,YAAcA,EACpBn8L,EAAM4gJ,WAAam8C,EAWnB,GAAIC,GAAUx0M,EAAM4U,QAAQ,yBAA0B4C,KAAW,MAAO,CACtE,OAAO,KAMT,MAAM+qE,EAAQn7F,EAAG4sN,eAAiBx8L,EAAMm8L,YACxC,GAAIpxH,EAAO,CACTn7F,EAAG4sN,aAAex8L,EAAMm8L,YAE1Ba,KAAYC,EAAwBz0M,EAAM80M,2BAA6B,MAAQL,SAA+B,OAAS,EAAIA,EAAsBvmN,KAAK8R,EAAOwX,IAC7J,GAAI+qE,EAAO,CACTn7F,EAAG4sN,aAAex8L,EAAM48L,gBAI1B,GAAIjuE,GAAauuE,GAAmB10M,EAAMiyC,WAAa7qD,EAAG2sN,kBAAmB,CAC3Ev8L,EAAMsE,QAAU10B,EAAG2tN,oBAAsB,IAAIn9M,SAAQ,CAACC,EAASkkB,KAG7D,MAAMi5L,EAAoBV,EAAe72F,cACzC62F,EAAe72F,cAAgB,MAC/Br2H,EAAG4hH,eAAetgH,MAAMgsD,UAAY,SAGpC4/J,EAAeziK,QAAU,KAKzB0iK,EAAcxB,cAAgB,KAC9BwB,EAAc98F,OACd88F,EAAcxB,cAAgB,MAC9B2B,EAAgBzuK,UAAU7/B,IAAIutM,EAAcS,EAAkB,mBAAqB,qBACnFO,EAAiB1uK,UAAU7/B,IAAIutM,EAAcS,EAAkB,kBAAoB,oBACnFp0M,EAAMosG,YAAc,KAEpBhlH,EAAGwtN,gBAAkBzsK,GAAY2D,gBAAgB,CAC/CN,KAAM,YACN1N,QAAS62K,EAGThxM,QAAS2wM,EACTttN,UAGEgZ,EAAMosG,YAAchlH,EAAG2tN,oBAAsB,MAI7C,IAAK3tN,EAAGwtN,gBAAiB,CACvBxtN,EAAG6tN,cAActB,EAAaS,EAAiBngN,GAC/C,OAEF7M,EAAGwtN,gBAAkB,KAErBD,EAAiB1uK,UAAU98C,UAAUyqN,IAErC,GAAIc,EAAiB,CACnBA,EAAgBzuK,UAAU98C,UAAUyqN,IAGpCU,EAAexB,gBAAkB,KACjCwB,EAAeziK,QAAU,MACzByiK,EAAet7F,OACfs7F,EAAe72F,cAAgBu3F,EAC/BV,EAAexB,gBAAkB,MAEnC1rN,EAAG4hH,eAAetgH,MAAMgsD,UAAY,GACpCttD,EAAG8tN,mBAAmB19L,EAAO3f,GAAU28M,MAG3CptN,EAAGwtN,gBAAgB74L,OAASA,EAC5B30B,EAAGwtN,gBAAgBp9L,MAAQA,SAI1B,CAKH+8L,EAAcxB,cAAgB,KAC9BwB,EAAc98F,OAGd88F,EAAcp4J,QACdo4J,EAAcxB,cAAgB,MAC9B,GAAIuB,EAAgB,CAGlBA,EAAexB,gBAAkB,KACjCwB,EAAet7F,OACfs7F,EAAexB,gBAAkB,MAEnC1rN,EAAG8tN,mBAAmB19L,EAAO,MAAOg9L,IAGxC,OAAOh9L,EAETxwB,mBAAmBwwB,EAAO3f,EAAS0lB,GACjC,MAAMn2B,EAAKC,KACXD,EAAGsxK,YAAclhJ,EAAM4gJ,WACvBhxK,EAAG4sN,aAAex8L,EAAMm8L,aAUvBp2L,GAAUn2B,EAAG4Y,MAAM4U,QAAQ,mBAAoB4C,GAIhDA,EAAM4gJ,WAAWj8G,QACjBtkD,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ2f,GAE5DxwB,iBACE,MAAMgZ,MACJA,GACE3Y,KACJ2Y,EAAMgpG,eAAe/iE,UAAU8X,OAAO12D,KAAKysN,mBAAoB9zM,EAAMk4I,sBACrE32I,MAAM05H,iBAERj0I,kBAAkB2sN,GAChB,MAAM3zM,MACJA,GACE3Y,KAEJ,OAAO2Y,EAAM6E,gBAAkB7E,EAAMy6H,OAASk5E,EAAcl4M,KAAKuU,IAAI2jM,EAAa3zM,EAAMsK,MAAMnkB,OAAS,GAEzGa,kBAAkB2sN,EAAawB,GAC7B,IAAK9tN,KAAK2Y,MAAM6E,cAAe,CAC7Bxd,KAAK4tN,cAActB,EAAawB,IAGpCnuN,iBAAiBoxK,GACf,IAAK/wK,KAAK2Y,MAAM6E,cAAe,CAC7Bxd,KAAK4tN,cAAc78C,EAAY/wK,KAAKssN,eAM1CE,GAAK51I,YACL41I,GAAKtkN,OAAS,OAuCd,MAAM6lN,WAAiB7+D,GAErBnhJ,mBACE,MAAO,WAGTlB,kBACE,MAAO,WAGTuqE,mBACE,MAAO,OAET53E,0BACE,MAAO,CAULwuN,UAAW,EAMXC,iBAAkB,KAMlBC,WAAY,MACZ52I,YAAa,YACbq4E,UAAW,MACXhgB,QAAS,kBACT4C,OAAQ,CACN1lI,KAAM,QAGRgkJ,qBAAsB,KACtBs9D,OAAQ,CACNthN,KAAM,SACN4mH,QAAS,KAOX63F,YAAa,KAMbC,YAAa,MAUjBe,kBACE,OAAOtsN,KAAKuyI,OAAO+5E,YAOrBv7C,iBACE,OAAO/wK,KAAKuyI,OAAOw+B,WAErBq9C,yBACE,IAAIC,EACJ,MAAML,UACJA,EAAS/qM,MACTA,EAAKkrM,OACLA,GACEnuN,KACJ,OAAOijB,EAAMxd,SAAS4oN,EAAwBF,EAAOhC,KAAK6B,MAAgB,MAAQK,SAA+B,OAAS,EAAIA,EAAsB18M,MAEtJ6+I,iBACE,OAAOx/G,GAAaxhC,MAAM,CACxBkvC,UAAW,CACT4vK,kBAAmB,IAEpBp0M,MAAMs2I,YAEXzxF,mBACE,IAAIwvJ,EACJ,MAAMP,EAAYhuN,KAAKijB,MAAMjjB,KAAKguN,WAAa,GAC/C,OAAQA,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAUjvJ,gBAAkBivJ,IAAc,MAAQA,SAAmB,OAAS,GAAKO,EAAiBP,EAAUr4F,OAAS,MAAQ44F,SAAwB,OAAS,EAAIA,EAAexvJ,cAEnPyvJ,mBACE,OAAOxuN,KAAK8zJ,YAEdn0J,eACEua,MAAM2uD,eACN,MAAM9oE,EAAKC,MACTguN,UACEA,EAASz7E,OACTA,GACExyI,GACJusN,YACEA,GACE/5E,GACJ45E,KACEA,GACEpsN,EAAGouN,OACPC,EAAqBJ,GAAa,GAAKA,EAAY7B,EAAKrtN,QAAUiB,EAAGkjB,MAAMxd,QAAQ0mN,EAAK6B,GAAWr8M,MACrG,GAAIw6M,EAAKrtN,OAAS,IAAMsvN,IAAuB,OAASA,EAAqB,GAAI,CAC/E,MAAM,IAAI19M,MAAM,qBAAqBs9M,MAAc7B,EAAKrtN,gBAE1D,GAAIsvN,IAAuB9B,EAAa,CAMtC/5E,EAAOq7E,cAAcQ,EAAoB9B,EAAa,CACpDxtE,UAAW,MACX5oH,OAAQ,OAGZq8G,EAAOm6E,kBAAoB3sN,EAAGkuN,iBAEhCtuN,WAAWouD,GAGT7zC,MAAMw5H,WAAW3lF,GACjB,IAAK/tD,KAAK+yI,aAAc,CACtB,MAAMhzI,EAAKC,MACTmuN,OACEA,GACEpuN,EACJoY,EAASpY,EAAG0uN,cAAc1gK,GAE1Bg+J,EAAW5zM,IAAWg2M,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOpC,UAE7E2C,EAAc3C,GAAYoC,EAAO/6E,OAEjCu7E,EAAW5C,GAAYjpM,GAAYkC,KAAKjlB,EAAGqzI,QAAQpwH,GAAMA,EAAG2yG,KAAO3yG,IAAO+qC,IAE1E79C,EAAQ67M,EAAW4C,EAASlpN,QAAQsoD,GAAS2gK,EAAYjpN,QAAQsmN,GAAY,EAC/E,GAAI5zM,GAAUg2M,EAAQ,CACpB,GAAIpC,GAAYh+J,EAAM0lE,QAAU,MAAQvjH,EAAQw+M,EAAY1qM,MAAQ,EAAG,CACrEmqM,EAAOv7H,OAAOz6E,EAAQjI,OACjB,CACLi+M,EAAOpvM,IAAI5G,MAKnBxY,cAAcouD,GACZ,MAAM4nE,IACFA,GACE5nE,GACJ9qC,MACEA,GACEjjB,KACN,GAAI21H,EAAK,CACP31H,KAAKmuN,OAAOrsN,OAAO6zH,GACnBA,EAAI55G,UAGN,GAAIgyC,IAAU/tD,KAAK+wK,WAAY,CAC7B/wK,KAAK4uN,WAAa,KAClB,GAAI3rM,EAAMnkB,OAAQ,CAChBkB,KAAKguN,UAAY/qM,EAAM7O,KAAKuU,IAAI3oB,KAAKssN,YAAarpM,EAAMnkB,OAAS,KAGrEob,MAAMo5H,cAAcvlF,GAItBpuD,sBAAsBqwJ,GACpB,MAAMm8D,KACFA,GACEnsN,KAAKmuN,OACTx4F,EAAMw2F,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKn8D,GACzD,OAAOr6B,IAAQA,EAAI/1D,UAAY+1D,EAAInzB,QAErC7iG,iBAAiBgS,EAAMX,EAAQ,GAC7B,MAAMm7M,KACFA,GACEnsN,KAAKmuN,OACTjC,EAAWC,EAAKrtN,OAChBuuF,EAAYj5E,KAAKC,IAAI,EAAG83M,EAAK1mN,QAAQkM,EAAKgkH,MAC5C,GAAItoC,EAAW,CACbr8E,GAASA,EAEX,IAAIg9M,EACJ,IAAK,IAAI/xL,EAAI,EAAGA,GAAKiwL,IAAYjwL,EAAG,CAKlC+xL,GAAa3gI,GAAar8E,EAAQ,EAAIk7M,EAAW,GAAKjwL,EAAIjrB,GAASk7M,EACnE,IAAKlsN,KAAK6uN,sBAAsBb,GAAY,CAC1C,OAGJ,OAAOA,EAETruN,qBAAqBgS,EAAMX,EAAQ,GACjChR,KAAKguN,UAAYhuN,KAAK8uN,iBAAiBn9M,EAAMX,GAE/CrR,gBAAgBquN,EAAWe,GACzB,MAAMhvN,EAAKC,MACTmuN,OACEA,EAAM57E,OACNA,GACExyI,GACJmsN,SACEA,GACEiC,EACN,GAAIH,EAAU5/J,UAAYpd,GAAaphC,SAASo+M,GAAY,CAE1D,GAAIjuN,EAAGkjB,MAAMxd,QAAQuoN,MAAgB,EAAG,CACtCA,EAAYjuN,EAAGgf,IAAIivM,GAErBA,EAAYG,EAAOa,WAAWhB,EAAUr4F,SACnC,CACLq4F,EAAY5kN,SAAS4kN,EAAW,IAElC,IAAKjuN,EAAGgzI,cAAgBm5E,EAAW,IAAM8B,GAAa,GAAKA,GAAa9B,GAAW,CACjF,MAAM,IAAIx7M,MAAM,qBAAqBs9M,MAAc9B,WAErD,GAAInsN,EAAG8uN,sBAAsBb,GAAY,CACvCA,EAAYjuN,EAAG+uN,iBAAiBd,GAIlC,GAAIz7E,EAAOm6E,mBAAqBn6E,EAAOm7E,oBAAqB,CAC1Dn7E,EAAOm7E,oBAAoBj9M,MAAKw+M,IAE9B,IAAKA,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAW3C,eAAiB0B,EAAW,CAClGjuN,EAAG6uN,WAAaZ,EAChBjuN,EAAGmvN,gBAAgBlB,EAAWe,WAG7B,CACL,OAAOf,GAGXruN,wBACE,IAAKK,KAAK+yI,aAAc,CACtB,MAAMq7E,mBACJA,EAAkB77E,OAClBA,GACEvyI,KACJ,GAAIouN,GAAsB,EAAG,CAC3B,IAAIe,EACJ,GAAI58E,EAAOm6E,kBAAmB,OACtB1sN,KAAKovN,oBAGbpvN,KAAKovN,qBAAuBD,EAAwB58E,EAAOq7E,cAAc5tN,KAAKijB,MAAMmrM,OAA0B,MAAQe,SAA+B,OAAS,EAAIA,EAAsB16L,UAI9L90B,aAAa+wJ,GACX1wJ,KAAKme,UAAU,UACfne,KAAKkkI,OAAS,CACZiqF,OAAQz9D,GAEV,OAAO1wJ,KAAKkkI,OAAOiqF,OAErBxuN,cAAcgS,GACZ,MAAMgkH,IACFA,GACEhkH,EACJwG,EAAS,CACPxG,KAAAA,EACA9E,KAAM,MACNo9M,SAAUjqN,KACV4/D,SAAU1/D,QAAQyR,EAAKiuD,UACvB4iC,OAAQ7wF,EAAK4L,cAAcilF,OAC3BixB,OAAQ9hH,EAAK8hH,QAAU,EACvBpmG,UAAW,CACTnnB,MAAO,aACPoW,QAAStc,MAEXi5B,sBAAuB,CAErBhuB,KAAM,QAGZ,GAAI0qH,IAAQ,MAAO,CACjB,OAAO,KAET,OAAO3kF,GAAaphC,SAAS+lH,GAAOq0F,GAAI9xI,aAAa//D,EAAQw9G,GAAOx9G,EAEtExY,YAAYsjB,EAAO3K,GACjB,MAAMvY,EAAKC,MACTguN,UACEA,EAASj7E,aACTA,GACEhzI,EACN,IAAImQ,EAAQ,EACVi8M,EACFjyM,MAAMm1M,YAAYpsM,EAAO3K,GACzB,GAAIy6H,EAAc,CAChBo5E,EAAO5kN,MAAMyd,KAAK/B,GAAOD,GAAMjjB,EAAG0uN,cAAczrM,KAAK5kB,QAAO4kB,IAC1D,GAAIA,EAAI,CACNA,EAAG9S,MAAQA,IACX,OAAO,SAGX,GAAIA,EAAO,CACTi8M,EAAK,GAAG30L,QAAU,KAClB20L,EAAKj8M,EAAQ,GAAG4B,OAAS,KACzBq6M,EAAK6B,GAAWv0D,OAAS,KACzB15J,EAAGouN,OAAOpvM,IAAIotM,GACdpsN,EAAGiuN,UAAYA,IAKrBruN,kBAAkB2rN,GAChB,IAAIgE,GACHA,EAAetvN,KAAKmuN,UAAY,MAAQmB,SAAsB,OAAS,EAAIA,EAAarsM,MAAMjkB,SAAQ22H,IACrG,GAAIA,EAAIk2F,MAAO,CACbl2F,EAAIr8E,SAAWgyK,MAIrB3rN,kBAAkB4rN,GAChB,IAAIgE,GACHA,EAAgBvvN,KAAKmuN,UAAY,MAAQoB,SAAuB,OAAS,EAAIA,EAActsM,MAAMjkB,SAAQ22H,IACxG,GAAIA,EAAIk2F,MAAO,CACbl2F,EAAIsB,SAAWs0F,MAMrB5rN,iBAAiBuuN,GACfluN,KAAKupE,gBAAgB,mBACrB2kJ,GAAc/zJ,GAAehrC,GAAG,CAC9B1qB,KAAM,kBACNk1D,MAAO,wBACPr9C,QAAStc,OAEXA,KAAKwvN,eAAiBtB,EAExBvuN,kBACE,MAAMI,EAAKC,MACTuyI,OACEA,EAAMy7E,UACNA,EAASv3K,QACTA,GACE12C,GACJ2sN,kBACEA,GACEn6E,EAENA,EAAOm6E,kBAAoB,MAE3B3sN,EAAGkH,OAAS,KAEZlH,EAAGkH,OAASmN,KAAKC,OAAOtU,EAAGkjB,MAAMpZ,KAAI8rH,IACnC51H,EAAGiuN,UAAYr4F,EACf,OAAOl/E,EAAQ8B,iBACX,EAENx4C,EAAGiuN,UAAYA,EACfz7E,EAAOm6E,kBAAoBA,EAC3B3sN,EAAGyvN,eAAiB,MAEtB7vN,wBACE,GAAIK,KAAK4qD,UAAW,CAClB5qD,KAAKyvN,sBACA,CACLzvN,KAAKwvN,eAAiB,MAM1B7vN,wBAAwB+vN,GACtB,MAAMvD,EAAOnsN,KAAKmuN,OAAOhC,MACvBp7C,WACEA,EAAUk8C,eACVA,GACEyC,EAEN1vN,KAAKguN,UAAY7B,EAAK1mN,QAAQsrK,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWp7C,KAEjG,GAAIs3F,IAAmB,MAAQA,SAAwB,GAAKA,EAAet3F,IAAK,CAC9Es3F,EAAet3F,IAAI8jC,OAAS,MAE9B,GAAIsX,IAAe,MAAQA,SAAoB,GAAKA,EAAWp7C,IAAK,CAClEo7C,EAAWp7C,IAAI8jC,OAAS,KACxBsX,EAAWp7C,IAAIvF,QAInBzwH,yBAAyB+vN,GAUvB,OAAO1vN,KAAKutB,QAAQ,kBAAmBmiM,GAGzC/vN,mBAAmB+vN,GASjB1vN,KAAKutB,QAAQ,YAAamiM,GAE5B/vN,WAAWwwB,GACTnwB,KAAKguN,UAAY79L,EAAMpxB,OAAO4S,KAEhChS,UACEua,MAAM27H,WAAWh3I,WAEjB,GAAImB,KAAKwvN,eAAgB,CACvBxvN,KAAKyvN,oBAMX1B,GAASn3I,YACTm3I,GAAS7lN,OAAS,WAkBlB,MAAMynN,WAAsBviC,GAC1Br/K,mBACE,MAAO,gBAGTlB,kBACE,MAAO,gBAGTuqE,mBACE,MAAO,WAET53E,0BACE,MAAO,CAML4xH,OAAQ,OACR+8D,gBAAiB,CACf1tK,IAAK,aAIX9gB,aAAayxH,GACXpxH,KAAKmmI,MAAM9kI,MAAM+vH,OAASA,GAI9Bu+F,GAAc/4I,YACd+4I,GAAcznN,OAAS,gBAsBvB,MAAM0nN,WAA4B/5B,GAChC9nL,mBACE,MAAO,sBAGTlB,kBACE,MAAO,sBAETrN,0BACE,MAAO,CACLw2L,OAAQ,CACNnpL,KAAM,SACN4T,IAAK,WACL3K,IAAK,+BACL2gH,aAAc,UACdpgF,MAAO,CACLA,MAAO,MACP4E,SAAU,MAEZ6sG,SAAU,OAEZgmC,SAAU,CACRj2F,OAAQ,CACN/hF,IAAK,gBACLjG,QAAS,mBAQbuhH,OAAQ,OACRg9D,UAAW,MAGfzuL,eAAewY,GACb,UAAWA,EAAO69C,SAAW,UAAW,CACtCtjD,EAAcuC,UAAU,OAAQ,QAAS,4DAE3CiF,MAAM0D,eAAezF,GAEvB+4K,mBACE,MAAM/kL,EAAS+N,MAAMg3K,aACrB/kL,EAAO0sE,SAAW,WAClB1sE,EAAO48C,UAAY,iBACnB/oD,KAAK83H,YAAc,iBACnB,OAAO3rH,EAET4yD,mBACE,IAAI8wJ,EACJ,OAAQA,EAAgB7vN,KAAKy2L,WAAa,MAAQo5B,SAAuB,GAAKA,EAAcjlK,UAAY5qD,KAAKmmI,MAAQnmI,KAAK8vN,eAE5Hp8B,qBACE,IAAIC,EACJ,OAAO3zL,KAAK8vN,eAAe9vN,KAAKqzL,kBAAoBnqL,QAAQyqL,EAAmB3zL,KAAKszL,cAAgB,MAAQK,SAA0B,EAAIA,EAAmB,IAE/Jh0L,aACE,MAAMI,EAAKC,MACTg2L,OACEA,GACEj2L,EAEN,IAAKA,EAAGi2D,OAAQ,CACdggI,EAAO9uL,MAAQnH,EAAG68L,aAAe78L,EAAGA,EAAG+1L,oBAAoB9yI,YAE3D9oC,MAAMg9K,WAAW,OAGrBv3L,cACEK,KAAKmmI,MAAMrxE,QAEbn1D,gBAAgBqyH,GACd,MAAMjyH,EAAKC,KACT+vN,EAAYhwN,EAAGomI,MACjB,OAAQnU,EAAS/yH,IAAIuN,QAAUwlH,EAASxtH,MACtC,IAAK,SAEHzE,EAAGi2L,OAAOrkE,OACV,OACF,IAAK,QACH,GAAIK,EAASlvE,QAAS,CACpB/iD,EAAGmzL,sBACHnzL,EAAGi2L,OAAOrkE,OAEZ,MAIJ5xH,EAAGomI,MAAQpmI,EAAG+vN,eACd,MAAM3jN,EAAS+N,MAAM81M,gBAAgBh+F,GACrCjyH,EAAGomI,MAAQ4pF,EACX,OAAO5jN,EAETxM,oBAAoByzL,GAClB,GAAIpzL,KAAK8vN,eAAgB,CACvB9vN,KAAK8vN,eAAevwN,MAAQS,KAAKszL,WAEnCp5K,MAAMg5K,oBAAoBE,GAE5BzzL,YAAYJ,GACV,OAAOA,GAAS,KAAO,GAAKA,EAE9BI,aAAaq2L,EAAQQ,GACnB,IAAIC,EAASw5B,EACb,MAAMlwN,EAAKC,KACT48L,EAAc78L,EAAG68L,eAAiBnG,EAAUT,KAAY,MAAQS,SAAiB,OAAS,EAAIA,EAAQvvL,OACxG8uL,EAAS45B,GAAoBn4I,YAAY++G,EAAWR,EAASlpL,EAAQ0C,MAAM,CACzEmJ,MAAO5Y,EACPknI,WAAYlnI,EAAGA,EAAG+1L,oBAClBz/I,MAAO,CACLqE,UAAWkiJ,GAAe,KAC1B7rL,OAAQhR,EAAGm9L,cACXv+L,OAAQoB,EAAGA,EAAG+1L,qBAEhBnrL,GAAI5K,EAAG4K,GAAK,SACZtJ,MAAO,CACL+vH,OAAQrxH,EAAGqxH,QAEbzoE,MAAOsnK,EAAYlwN,EAAGR,SAAW,MAAQ0wN,SAAmB,EAAIA,EAAY,IAC3Ej6B,GAAU,KAAMj2L,GAEnB,GAAIi2L,EAAQ,CACV,MAAM7vD,EAAQpmI,EAAGomI,MAAQ6vD,EAAOv/I,QAChC12C,EAAGivL,qBAAuBluI,GAAY3xB,GAAG,CACvCsnB,QAAS0vF,EACT7pH,QAASvc,EACT+0D,MAAO,uBACPswB,OAAQ,mBACR+gD,MAAO,kBACPx/E,QAAS,qBACTC,SAAU,qBACVF,MAAO,uBAGX,OAAOsvI,GAIX45B,GAAoBh5I,YACpBg5I,GAAoB1nN,OAAS,sBAi5B7B,MAAMgoN,GAAO,6BAEXC,GAAW,CACTz/D,IAAK,EACL0/D,QAAS,EACTnlN,KAAM,GAERolN,GAAiB,CAACjhM,EAAGc,IAAM9mB,SAASgmB,EAAEsH,QAAQ45L,MAAO,IAAMlnN,SAAS8mB,EAAEwG,QAAQ45L,MAAO,IACrFC,GAAW7gN,GAAKA,EAAE6G,MAClBi6M,GAAc,IAAM,MAMtB,MAAMC,WAAkBnkK,GAEtBz/C,kBACE,MAAO,YAETkB,mBACE,MAAO,YAET8T,2BACE,MAAO,CAOLqY,KAAM,KAKNruB,OAAQ,KAOR6kN,OAAQ,KAMR58K,SAAU,KACV2C,QAAS,CACP4Q,SAAU,CAAC,CACTyB,GAAIonK,GACJzvM,IAAK,MACLsoC,UAAW,aACX7hD,MAAO,OACPD,OAAQ,OACR0pN,oBAAqB,OACrBtpK,SAAU,CAAC,CACTyB,GAAIonK,GACJzvM,IAAK,IACLsoC,UAAW,kBACV,CACDD,GAAIonK,GACJzvM,IAAK,IACLsoC,UAAW,wBASjB6nK,mBAAoB,KACpBx6F,cAAe,KAUfy6F,aAAc,KAUdC,UAAW,KAQXC,WAAY,KACZC,qBAAsB,KACtBC,cAAe,MAKnBtxN,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChBnY,KAAKkxN,gBAAkBlxN,KAAKmxN,cAAcnxN,KAAK84L,QAAS,GAAI94L,KAAM,MAClEA,KAAK84L,UAEPtP,QAAQA,GACN,IAAI4nC,EACJ,MAAMrxN,EAAKC,MACVoxN,EAAUrxN,EAAGypL,OAAS,MAAQ4nC,SAAiB,OAAS,EAAIA,EAAQr1M,UACrE,GAAIytK,EAAK,CACPzpL,EAAGsxN,KAAO93F,GAAQ1I,IAAI,CACpBl4G,MAAO5Y,EACPknI,WAAYlnI,EAAGuxN,WACfpqF,YAAa,OACb75G,UAAW,CACTg8H,WAAY,uBAEbmgC,OACE,CACLzpL,EAAGsxN,KAAO,MAGd1xN,kBACEua,MAAMukG,mBAAmB5/G,WACzB,MAAM0yN,EAAUvxN,KAAKsxN,WAAWh6K,wBAChCt3C,KAAKwxN,eAAe/hK,aAAa,YAAa,SAAS8hK,EAAQrqN,SAASqqN,EAAQtqN,WAElFtH,iBACEZ,OAAQyqL,IAER,MAAMt5K,EAAQ9G,SAASogL,EAAI5iD,aAAalwG,QAAQxmB,OAChDs5K,EAAI7gI,KAAO6gI,EAAIioC,gBAAgB,CAC7BC,UAAW1xN,KACXkQ,MAAAA,IAGJwgN,WAAWnxN,GACT,MAAMQ,EAAKC,KACT0wN,EAAS3wN,EAAG4xN,QAAU,GACxB,IAAK,MAAMhnN,KAAMpL,EAAO,CAQtB,GAAIA,EAAMoL,KAAQ,MAAO,CACvB,MAAMuvB,EAAOw2L,EAAO/lN,GAAM1M,OAAOmZ,OAAO,GAAI7X,EAAMoL,IAElD,IAAKuvB,EAAKrtB,MAAQtN,EAAMoL,GAAIkC,KAAM,CAChCqtB,EAAKrtB,KAAOtN,EAAMoL,GAAIkC,KAExB,IAAKqtB,EAAK3jB,OAAShX,EAAMoL,GAAI4L,MAAO,CAClC2jB,EAAK3jB,MAAQhX,EAAMoL,GAAI4L,MAEzB,KAAM,UAAWm6M,GAAS,CACxBx2L,EAAKo2L,MAAQH,GAASj2L,EAAKrtB,MAE7BqtB,EAAKvvB,GAAKA,GAGd5K,EAAGmxN,kBAELR,aACE,OAAO1wN,KAAK2xN,QAEdz3L,SAASA,GACP,MAAMn6B,EAAKC,KAGXD,EAAGsnE,MAAQntC,EAEX,IAAKn6B,EAAG+zC,SAAU,CAChB,MAAMulC,EAASp7E,OAAO4N,OAAO9L,EAAG2wN,QAAQ7mN,IAAI0mN,IAC5C,IAAK,IAAI3xN,EAAI,GAAGE,OACZA,GACEo7B,EAAMt7B,EAAIE,EAAQF,IAAK,CAC3B,IAAK,IAAI0xC,EAAI,GAAGxxC,OACZA,GACEu6E,EAAQ/oC,EAAIxxC,EAAQwxC,IAAK,CAC7BvwC,EAAG+zC,SAAW1/B,KAAKC,IAAItU,EAAG+zC,UAAY,EAAG5Z,EAAKt7B,GAAGy6E,EAAO/oC,OAI9DvwC,EAAGmxN,kBAELh3L,WACE,OAAOl6B,KAAKqnE,MAEdvzB,aAAav0C,GACXS,KAAK4xN,UAAYryN,EACjBS,KAAKkxN,kBAEPp9K,eACE,OAAO9zC,KAAK4xN,UAIdjyN,mBACAA,UACE,MAAMI,EAAKC,MACT0wN,OACEA,EAAMW,KACNA,GACEtxN,EACJ8xN,EAAoB,GACtB,IAAK,MAAMlnN,KAAM+lN,EAAQ,CACvB,MAAMx2L,EAAOw2L,EAAO/lN,GAClBmnN,EAAW/xN,EAAG,OAAOqK,EAAaK,WAAWyvB,EAAKrtB,SAASqtB,GAC7D,GAAI3yB,MAAMC,QAAQsqN,GAAW,CAC3BD,EAAkBrzN,KAAKC,MAAMozN,EAAmBC,OAC3C,CACLD,EAAkBrzN,KAAKszN,IAG3BD,EAAkB55M,KAAKo4M,IACvB91G,GAAQ5iD,aAAa,CACnBva,UAAW,CACTiK,SAAUwqK,GAEZx2G,eAAgBm1G,IACfzwN,EAAGyxN,gBACNj3G,GAAQ5iD,aAAa,CACnBva,UAAW,CACTiK,SAAUtnD,EAAGgyN,aAEdhyN,EAAGiyN,kBACN,GAAIX,GAAQA,EAAKzmK,UAAW,CAC1B7qD,EAAGkyN,gBAAgB,CACjBlzN,OAAQsyN,KAId1xN,QAAQ+wN,GACN,MAAM3wN,EAAKC,MACT8zC,SACEA,EAAQ5Z,KACRA,EAAI02L,mBACJA,EAAkBsB,SAClBA,GACEnyN,GACJwW,MACEA,EAAK+5M,MACLA,GACEI,EACJyB,EAAe,EAAIj4L,EAAKp7B,OACxBuoD,EAAW,GACb,IAAIngD,EACJ,IAAK,IAAIgJ,EAAQ,EAAG/L,EAAI,GAAGrF,OACvBA,GACEo7B,EAAMhqB,EAAQpR,EAAQoR,IAAS/L,GAAK+C,EAAO,CAC/C,MAAMkrN,EAAQl4L,EAAKhqB,GACjB3Q,EAAQ6yN,EAAM77M,GAGdtP,EAASmrN,EAAMnrN,SAAW1H,EAAQu0C,EAAWA,EAAWv0C,GAASu0C,EACjEtP,EAAI,EAAIv9B,EACRorN,EAAaD,EAAMC,WAAa,CAC9BvpK,GAAIonK,GACJzvM,IAAK,OACLiW,QAAS,IAEX47L,EAASvyN,EAAGyuB,SAAS,YAAazuB,EAAI,CAAC2wN,EAAQ2B,EAAYD,EAAOliN,IAEpEhJ,EAAQkrN,EAAMlrN,OAASirN,EACvB,GAAID,EAAU,CACZG,EAAWhxN,MAAQ6wN,MACd,QACEG,EAAWhxN,MAEpBpD,OAAOmZ,OAAOi7M,EAAW37L,QAAS,CAChCxmB,MAAAA,EACAogN,MAAAA,IAEFryN,OAAOmZ,OAAOi7M,EAAY,CACxBluN,EAAAA,EACAqgC,EAAAA,EACAt9B,MAAAA,EACAD,OAAAA,EACAiZ,MAAOngB,EAAGyuB,SAAS,eAAgBzuB,EAAI,CAAC2wN,EAAQ2B,EAAYD,EAAOliN,MAErE,GAAIoiN,EAAQ,CACVD,EAAW37L,QAAQ2wG,KAAOirF,MACrB,QACED,EAAW37L,QAAQ2wG,KAE5B,GAAIpgI,IAAW2pN,EAAoB,CACjCvpK,EAAS7oD,KAAK6zN,IAGlB,OAAOhrK,EAET1nD,YAAY+wN,GACV,MAAM3wN,EAAKC,MACT8zC,SACEA,EAAQ5Z,KACRA,GACEn6B,GACJwW,MACEA,EAAK+5M,MACLA,GACEI,EACJyB,EAAe,EAAIj4L,EAAKp7B,OACxByzN,EAAS,CAAC,SACVpmN,EAASukN,EAAO8B,iBAAmB9B,EAAO8B,eAAiB,CACzD1pK,GAAIonK,GACJzvM,IAAK,OACLiW,QAAS,CACP45L,MAAAA,KAGN,IAAImC,EACFC,EAAW,IACXC,EAAW,IACb,IAAK,IAAI/zN,EAAI,EAAGuF,EAAI,GAAGrF,OACnBA,GACEo7B,EAAMt7B,EAAIE,EAAQF,IAAK,CAC3B,MAAMg0N,EAAY,EAAI14L,EAAKt7B,GAAG2X,GAASu9B,EAEvC2+K,EAAWv4L,EAAKt7B,GAAGsI,OAASirN,EAC5BI,EAAO/zN,KAAK,GAAGk0N,KAAYvuN,KAAKyuN,KAAaD,KAAYxuN,GAAKsuN,KAAYG,KAC1EF,EAAWC,EAAW,GAGxBxmN,EAAOgzB,EAAIozL,EAAOtoN,KAAK,KACvB,OAAOkC,EAETxM,WACE,MAAMI,EAAKC,MACTk6B,KACEA,GACEn6B,EACJoyN,EAAe,EAAIj4L,EAAKp7B,OACxB+zN,EAAW,OACXC,EAAoB,GACtB,IAAK,IAAI5iN,EAAQ,EAAGhJ,EAAO/C,EAAI,GAAGrF,OAC9BA,GACEo7B,EAAMhqB,EAAQpR,EAAQoR,IAAS/L,GAAK+C,EAAO,CAC/CA,EAAQgzB,EAAKhqB,GAAOhJ,OAASirN,EAC7B,MAAMY,EAAUhzN,EAAGyuB,SAAS,aAAczuB,EAAI,CAACm6B,EAAKhqB,GAAQA,IAC5D,GAAI6iN,EAAS,CACX,MAAMC,EAAajzN,EAAGyuB,SAAS,uBAAwBzuB,EAAI,CAAC,CAC1D+oD,GAAIonK,GACJzvM,IAAK,OACLi+B,UAAW,eACXiK,KAAMoqK,EACN5uN,EAAG,IAAIA,EAAI+C,EAAQ,GAAK,OACxBs9B,EAAGtK,EAAKhqB,GAAOs0B,IAAM5hC,UAAYs3B,EAAKhqB,GAAOs0B,EAAIquL,EACjDn8L,QAAS,CACPxmB,MAAAA,IAEDgqB,EAAKhqB,GAAQA,IAChB,MAAMoiN,EAASvyN,EAAGyuB,SAAS,gBAAiBzuB,EAAI,CAACizN,EAAY94L,EAAKhqB,GAAQA,IAC1E,GAAIoiN,EAAQ,CACVU,EAAWt8L,QAAQ2wG,KAAOirF,MACrB,QACEU,EAAWt8L,QAAQ2wG,KAE5ByrF,EAAkBt0N,KAAKw0N,IAG3B,OAAOF,EAITnzN,WAAWyyN,EAAOliN,GAChB,MAAO,GAGTvQ,qBAAqBqzN,EAAYZ,EAAOliN,GACtC,OAAO8iN,EAGTrzN,UAAU+wN,EAAQ2B,EAAYD,EAAOliN,IAErCvQ,cAAcqzN,EAAYZ,EAAOliN,IAEjCvQ,aAAa+wN,EAAQ2B,EAAYD,EAAOliN,GACtC,MAAO,IAGXugN,GAAU75I,YACV65I,GAAUvoN,OAAS,YAKnB,MAAM4gD,GAAK,6BAMX,MAAMmqK,WAAc3mK,GAElBz/C,kBACE,MAAO,QAETkB,mBACE,MAAO,QAETvO,0BACE,MAAO,CACL0zN,YAAa,KAGbC,gBAAiB,GAKjBn5K,WAAY,MAMZ3D,MAAO,CACL92C,MAAO,MACPiiB,QAAS,CACPhS,MAAO,YAGXinC,QAAS,CACP4Q,SAAU,CAAC,CACTyB,GAAAA,GACAroC,IAAK,MACLsoC,UAAW,aACX7hD,MAAO,OACPD,OAAQ,OACR0pN,oBAAqB,OACrBtpK,SAAU,CAAC,CACTyB,GAAAA,GACAroC,IAAK,IACLsoC,UAAW,iBACX1B,SAAU,CAAC,CACTyB,GAAAA,GACAroC,IAAK,OACLsoC,UAAW,iBAEZ,CACDD,GAAAA,GACAroC,IAAK,IACLsoC,UAAW,wBAIjBqtE,cAAe,MAKnBz2H,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChBnY,KAAKkxN,gBAAkBlxN,KAAKmxN,cAAcnxN,KAAK84L,QAAS,GAAI94L,KAAM,MAClEA,KAAK84L,UAEPn5L,YAAY02C,GACV,IAAKA,EAAO,CACVA,EAAQr2C,KAAKg6C,WAAa,SAAW,QAEvC,OAAO3D,EAET12C,YAAY02C,EAAO4vF,GACjBjmI,KAAKy2C,QAAQmI,UAAU98C,OAAO,WAAWmkI,KACzCjmI,KAAKy2C,QAAQmI,UAAU7/B,IAAI,WAAWs3B,KAExC12C,iBAAiBq6C,EAAYo5K,GAC3BpzN,KAAKy2C,QAAQmI,UAAU98C,OAAO,WAAWsxN,EAAgB,aAAe,cACxEpzN,KAAKy2C,QAAQmI,UAAU7/B,IAAI,WAAWi7B,EAAa,aAAe,cAEpEr6C,kBACEua,MAAMukG,mBAAmB5/G,WACzBmB,KAAKkxN,kBAIPvxN,mBACAA,UACE,MAAMI,EAAKC,MACTg6C,WACEA,EAAU9yC,MACVA,EAAKD,OACLA,EAAMovC,MACNA,EAAK68K,YACLA,EAAWC,gBACXA,GACEpzN,EACJszN,EAAWH,EAAYA,EAAYp0N,OAAS,GAAGS,MAC/C0Q,EAAO,GACPo9K,EAAS,GACX,MAAMimC,EAAY,GAAKD,EAAWF,EAAkBE,GACpDtzN,EAAGyxN,eAAe/hK,aAAa,YAAa,SAASzV,EAAa9yC,EAAQ,KAAK8yC,EAAa,EAAI/yC,MAChG,IAAK,MAAMqqI,KAAS4hF,EAAa,CAC/B,MAAMK,EAAcrzN,QAAQoxI,EAAMrmI,MAChCywC,EAAM43K,EAAYhiF,EAAM/xI,MAC1B,GAAIg0N,EAAa,CACf,MAAMzqE,EAAQ,CACZhgG,GAAAA,GACAroC,IAAK,OACLi+B,UAAW,qBACXiK,KAAM2oF,EAAMrmI,KACZyrB,QAAS,CACP88L,KAAMliF,EAAM/xI,QAGhB,GAAIy6C,EAAY,CACd8uG,EAAM3kJ,EAAI,GAAGu3C,EAAM,OACnBotG,EAAMtkH,EAAI6R,IAAU,MAAQ,QAAUpvC,EAAS,OAC1C,CACL6hJ,EAAM3kJ,EAAIkyC,IAAU,OAAS,KAAO,GAAGnvC,EAAQ,KAC/C4hJ,EAAMtkH,EAAI,IAAI,EAAIkX,GAAO,OAE3B2xI,EAAO7uL,KAAKsqJ,GAEd,GAAI9uG,EAAY,CACd,GAAI3D,IAAU,MAAO,CACnBpmC,EAAKzR,KAAK,IAAIk9C,QAAUA,KAAO63K,EAAc,GAAK,SAC7C,CACLtjN,EAAKzR,KAAK,IAAIk9C,KAAOz0C,MAAWy0C,KAAOz0C,GAAUssN,EAAc,GAAK,WAEjE,CACL,GAAIl9K,IAAU,OAAQ,CACpBpmC,EAAKzR,KAAK,MAAM,EAAIk9C,MAAQ63K,EAAc,GAAK,KAAK,EAAI73K,SACnD,CACLzrC,EAAKzR,KAAK,IAAI0I,KAAS,EAAIw0C,MAAQx0C,GAASqsN,EAAc,GAAK,MAAM,EAAI73K,OAI/E37C,EAAGsjI,YAAY5zE,aAAa,IAAKx/C,EAAKhG,KAAK,KAC3CswG,GAAQ5iD,aAAa,CACnBva,UAAW,CACTiK,SAAUgmI,IAEXttL,EAAGiyN,mBAKViB,GAAMr8I,YACNq8I,GAAM/qN,OAAS,QAWf,MAAMurN,WAAwBp4M,GAC5BtN,mBACE,MAAO,kBAETvO,0BACE,MAAO,CAKLi3C,QAAS,KAMTi9K,YAAa,SAMb9qK,QAAS,KACTr3C,KAAM,MAGV5R,YACE,IAAI2rL,GACHA,EAAgBtrL,KAAK4oD,WAAa,MAAQ0iI,SAAuB,OAAS,EAAIA,EAAcvvK,UAC7F7B,MAAM8B,YAERrc,cAAc82C,GAEZqK,GAAY3xB,GAAG,CACbsnB,QAAAA,EACA8I,SAAU,oBACVvqB,MAAO,oBACP1Y,QAAStc,KACTw/C,QAAS,OAGb7/C,cAAcwY,GACZ,OAAOohH,GAAQ1I,IAAI,CACjBoW,WAAYjnI,KAAKy2C,QACjBywF,YAAa,qBACbpxH,IAAK,6BACJqC,GAELw7M,wBACE,IAAK3zN,KAAK4zN,YAAa,CACrB5zN,KAAK4zN,YAAc,IAAI/0M,IAEzB,OAAO7e,KAAK4zN,YAgBdj0N,mBAAkBk0N,SAChBA,EAAQ33J,MACRA,EAAKosF,QACLA,EAAOwrE,SACPA,EAAQC,gBACRA,EAAer9L,QACfA,EAAU,GAAEs9L,eACZA,EAAc9sM,IACdA,EAAM9c,EAAaY,WAAWgpN,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAevvN,QAE7G,OAAOzE,KAAKi0N,eAAeJ,EAAU33J,EAAO43J,EAAUC,EAAiBr9L,EAASxP,IAAQlnB,KAAKk0N,cAAc5rE,EAAS5xH,IAAY12B,KAAKm0N,0BAA0BN,EAAU33J,EAAOxlC,GAElL/2B,eAAek0N,EAAU33J,EAAO43J,EAAUC,EAAiBr9L,EAASxP,GAClE,MAAM3V,KACJA,GACEvR,KAEJ8zN,EAAWL,GAAgBE,WAAW11M,IAAI61M,GAAYC,EAAkBD,GAAYC,EACpF,GAAID,EAAU,CACZ,OAAOp1N,EAAeA,EAAe,CACnC+hB,IAAK,MACL81G,UAAW,QACXv8D,QAAS,OACT95C,MAAO,CACLk0M,oBAAqB,EACrBC,mBAAoB,IAErB9iN,EAAO,CACRlQ,MAAO,CACL4F,OAAQsK,EAAO,KACfrK,MAAOqK,EAAO,OAEd3O,WAAY,GAAI,CAClBskB,IAAAA,EACAqhC,YAAa,CACXwrK,gBAAAA,EACAD,SAAAA,EACAD,SAAAA,EACA33J,MAAAA,EACAxlC,QAAAA,GAEF5lB,IAAKgjN,EACLp9L,QAAAA,KAIN/2B,cAAc2oJ,EAAS5xH,GACrB,GAAI4xH,EAAS,CACX,OAAOA,GAAW,CAChB7nI,IAAK,IACLP,MAAO,CACLk0M,oBAAqB,EACrBE,kBAAmB,EACnB30N,CAAC2oJ,GAAU,GAEb5xH,QAAAA,IAIN/2B,0BAA0Bk0N,EAAU33J,EAAOxlC,GACzC,MAAMnlB,KACFA,GACEvR,KAEJu0N,EAAat8K,GAAUu8K,aAAat4J,IAAUA,EAE9Cu4J,GAAYF,GAAcr4J,EAC5B,MAAO,CACLz7C,IAAK,MACLP,MAAO,CACLk0M,oBAAqB,EACrBM,sBAAuB,EACvB/0N,CAAC,GAAGK,KAAK0zN,cAAca,KAAeA,GAExClzN,MAAO3C,EAAe,CACpBi2N,gBAAiBF,GAAY,MAC5BljN,EAAO,CACRtK,OAAQsK,EAAO,KACfrK,MAAOqK,EAAO,MACZ3O,WACJykD,SAAU,CAACwsK,GACXn9L,QAAAA,GAGJ/2B,mBAAkBhB,OAChBA,IAEA,IAAKA,EAAO2D,QAAQ,sBAAuB,CACzC,OAEF,MAAMyxN,gBACJA,EAAeF,SACfA,EAAQ33J,MACRA,EAAK43J,SACLA,EAAQp9L,QACRA,GACE/3B,EAAO4pD,YACX,GAAIwrK,IAAoBp1N,EAAOmS,IAAI0G,SAASu8M,EAAgBvpN,QAAQ,WAAY,KAAM,CACpF7L,EAAOmS,IAAMijN,MACR,CACL,MAAMa,EAAa38K,GAAU72C,cAAcpB,KAAKm0N,0BAA0BN,EAAU33J,EAAOxlC,IAC3Fk+L,EAAWrsK,YAAc5pD,EAAO4pD,YAChC5pD,EAAO64C,cAAcq9K,aAAaD,EAAYj2N,GAGhD80N,GAAgBE,WAAW50M,IAAI+0M,IAGnCL,GAAgBvrN,OAAS,kBAEzB,MAAM+lH,WAAmBhD,GACvBzrH,0BACE,MAAO,CACLs1N,UAAW,KACXC,WAAY,MACZ7tN,MAAO,IACP6J,OAAQ,KACRohG,MAAO,WACP97D,MAAO,CACLA,MAAO,MACPoE,iBAAkB,IAEpBwH,SAAU,CACRypI,WAAY,KAEdzoK,MAAO,CAAC,CACNpW,KAAM,YACNksB,YAAa/4B,KACb8oJ,MAAO,uBACPrkJ,KAAM,OACNwpD,IAAK,YACLq/H,SAAU,MACT,CACDzgL,KAAM,YACNuhL,UAAW,QACXr1J,YAAa/4B,KACb8oJ,MAAO,wBACPrkJ,KAAM,QACNwpD,IAAK,aACLq/H,SAAU,MACT,CACDzgL,KAAM,YACNksB,YAAa/4B,KACb8oJ,MAAO,0BACPrkJ,KAAM,UACNwpD,IAAK,eACLq/H,SAAU,MACT,CACDzgL,KAAM,QACNksB,YAAa/4B,KACb8oJ,MAAO,aACP+kC,SAAU,MACV5/H,IAAK,eACLxpD,KAAM,YACNpD,MAAO,oBACP4hB,MAAO,CAAC,CACNtY,GAAI,WAEJqqN,WAAY,mBACZ/pN,KAAM,oBACL,CACDN,GAAI,QAEJqqN,WAAY,gBACZ/pN,KAAM,iBACL,CACDN,GAAI,OAEJqqN,WAAY,OACZ/pN,KAAM,gBACL,CACDN,GAAI,YAEJqqN,WAAY,oBACZ/pN,KAAM,qBACL,CACDN,GAAI,eAEJqqN,WAAY,eACZ/pN,KAAM,yBACL,CACDN,GAAI,YAEJqqN,WAAY,oBACZ/pN,KAAM,sBAERqiL,SAAU,MACT,CACDzgL,KAAM,YACNuhL,UAAW,SACXngI,IAAK,gBACLxpD,KAAM,YACL,CACDoI,KAAM,YACNuhL,UAAW,SACXngI,IAAK,gBACLxpD,KAAM,0BACL,CACDoI,KAAM,YACNuhL,UAAW,SACXngI,IAAK,gBACLxpD,KAAM,YACL,CACDoI,KAAM,YACNuhL,UAAW,SACX3pL,KAAM,eACNlF,MAAO,KACN,CACDsN,KAAM,YACNuhL,UAAW,SACX3pL,KAAM,gBACNlF,MAAO,6BACN,CACDsN,KAAM,YACNuhL,UAAW,SACX3pL,KAAM,oBACNlF,MAAO,MAETgwJ,KAAM,CAAC,CACLx2H,YAAa/4B,KACbiL,KAAM,YACN/D,MAAO,OACPo1L,QAAS,oBACR,CACDvjK,YAAa/4B,KACbiL,KAAM,YACN/D,MAAO,OACP4O,IAAK,kBACLwmL,QAAS,sBAIf9rC,iBACE,OAAOxwJ,KAAK+0N,WAAa92N,OAAOmZ,OAAO8C,MAAMs2I,WAAY,CACvD/vI,IAAK,OACLsF,OAAQ,OACRpnB,OAAQ,cACRyzD,OAAQ,8CACLl4C,MAAMs2I,WAEb7wJ,gBAAgBJ,GACdS,KAAKsrI,UAAU2pF,aAAa11N,MAAQA,EAEtCI,sBACE,MAAMI,EAAKC,KACX,IAAKD,EAAG0mF,QAAS,CACf,OAEF,GAAI1mF,EAAGg1N,WAAY,CACjBh1N,EAAGm1N,sBAECn1N,EAAGo1N,kBAEXx1N,gBACE,MAAMy1N,cACFA,EAAaC,cACbA,EAAaC,cACbA,EAAaC,aACbA,GACEv1N,KAAKsrI,WACTwpF,UACEA,GACE90N,KAAK6L,OACXupN,EAAc71N,MAAQG,EAAc81N,UAAU,MAC9CH,EAAc91N,MAAQ6C,WAAW0C,SAASiB,KAC1CwvN,EAAapvF,MAAM1hI,KAAO,iBAC1B,OAAQqwN,GACN,IAAK,QACHQ,EAAc/1N,MAAQ,gBACtB,MACF,IAAK,YACL,IAAK,eACH+1N,EAAc/1N,MAAQ,gBACtB,MACF,IAAK,OACH+1N,EAAc/1N,MAAQ,gBACtB,MACF,IAAK,WACH+1N,EAAc/1N,MAAQ,gBACtB,MAEJS,KAAK8zJ,YAAY1lC,SAEnBzuH,4BACQK,KAAK2xH,OAEbhyH,wBACE,MAAMI,EAAKC,MACTyE,KACEA,EAAIypH,MACJA,EAAKC,QACLA,GACEpuH,EAAG8L,OACT,IAAIipN,EAAY/0N,EAAG8L,OAAOipN,UAC1B,OAAQA,GACN,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,WACHA,EAAY,GAAGA,YACf,MAEJ,MAAMjvN,EAAIoyC,GAAU72C,cAAc,CAChCkR,OAAQnR,SAAS8E,KACjBwa,IAAK,IACL3a,SAAU,WAAWgvN,cACrB/uN,KAAM,+BAA+B+uN,aAAqBrwN,WAAcypH,aAAiBC,MAE3FtoH,EAAEK,QACFL,EAAE2xC,cAAcrxC,YAAYN,SACtB9F,EAAG4xH,OACT45C,GAAMn7C,KAAK,CACTznE,KAAM5oD,EAAGo7B,EAAE,uBACXswI,QAAS,OAEX,IAAK1rK,EAAG01N,WAAa/iN,EAAcoC,UAAW,CAC5C/U,EAAG01N,SAAWx9K,GAAU72C,cAAc,CACpCkR,OAAQnR,SAASi4D,KACjB34C,IAAK,SACL3P,IAAK,8DAEP/Q,EAAG01N,SAAStzK,iBAAiB,OAAQpiD,EAAG21N,cAAc1gN,KAAKjV,KAI/DJ,gBACEyC,WAAWuzN,UAAYvzN,WAAWuzN,WAAa,GAC/C,SAASC,IACPxzN,WAAWuzN,UAAUn3N,KAAKK,WAM5B+2N,EAAK,QAAS,aAAc,CAC1BC,QAAS,oCACTt2N,MAAO,EACPsqH,SAAU,QAEZ+rG,EAAK,QAAS,yBAA0B,CACtCr2N,MAAO,EACPsqH,SAAU,SAKhB3qH,EAAgB+uH,GAAY,QAAS,cACrC/uH,EAAgB+uH,GAAY,OAAQ,cACpCA,GAAWr3C,YACXq3C,GAAW/lH,OAAS,aAYpB,MAAM6lH,WAAoBs5B,GACxB7nJ,0BACE,MAAO,CAKLs1N,UAAW,KAKXC,WAAY,MACZvyH,QAAS9iG,EAAco2N,gBAAgB,CAAC,SAAU,SAClDhgN,IAAK,mBACLm4C,IAAK,gBACL2hE,KAAM,gBACN3kH,KAAM,mBACNq8I,SAAU,MAGd3nJ,aAAa4b,GACXrB,MAAMsB,aAAaD,GACnBvb,KAAK4nJ,KAAO,IAAI35B,GAAW,CACzB65B,SAAU,MACVgtE,UAAW90N,KAAK80N,UAChBC,WAAY/0N,KAAK+0N,cAIvB71N,EAAgB6uH,GAAa,QAAS,eACtC7uH,EAAgB6uH,GAAa,OAAQ,eACrCA,GAAYn3C,YACZm3C,GAAY7lH,OAAS,cAErB,GAAIpF,SAAWA,OAAOgF,QAAS,CAC7BhF,OAAOgF,QAAU,GA+BnB,MAAMiuN,GA4CJp2N,YAAYmF,GAGV,GAAIA,EAAU,CAEZ,GAAIA,EAASkxN,WAAY,CACvB,OAAOlxN,EAGT,GAAIA,EAAS+xC,WAAaC,KAAKuH,aAAc,CAC3C,MAAM43K,EAAO3pK,GAAOC,YAAYznD,EAAU,YACxCqiM,EAAO8uB,GAAQnxN,EAASm/C,QAAQgyK,EAAKC,mBAEvC,GAAI/uB,EAAM,CACR,MAAMzwK,QACJA,GACEywK,EAAK18I,WACTzqD,KAAKk/E,KAAK,CACR+2I,KAAAA,EAGA3uB,SAAU2uB,EAAKrqJ,MAAMhgE,SAAS8qB,EAAQ/rB,IAAMsrN,EAAKrqJ,MAAMnmE,QAAQixB,EAAQ/rB,IAAM+rB,EAAQxmB,QAAU,EAC/FimN,SAAUhvB,EAAKzwK,QAAQy/L,gBAGtB,CACLn2N,KAAKk/E,KAAKp6E,KAIhBnF,KAAKwY,GACH,IAAIi+M,EACJ,MAAMr2N,EAAKC,KACX,MAAMi2N,EAAOl2N,EAAGk2N,KAAO99M,EAAO89M,MAC5BrqJ,MACEA,EAAKm4H,QACLA,GACEkyB,GACJI,eACEA,GACEtyB,EAEN,GAAI5rL,EAAOxZ,OAAQ,CACjBoB,EAAGu2N,cAAgB,CAACv2N,EAAGo/D,QAAUhnD,EAAOxZ,QAG1C,GAAIwZ,EAAOq6D,OAAQ,CACjBzyE,EAAGsoF,IAAMlwE,EAAOq6D,OAAO7nE,QAClB,GAAI,OAAQwN,EAAQ,CACzBpY,EAAGsoF,IAAMlwE,EAAOxN,GAEhB,GAAIwN,EAAOxN,IAAM,KAAM,CACrB5K,EAAGw2N,WAAa,OAEb,CACL,IAAIC,EACJ,MAAMlvB,GAAYpzL,MAAMiE,EAAOw2J,KAAOx2J,EAAOw2J,KAAOz6J,MAAMiE,EAAOmvL,UAAYnvL,EAAOmvL,SAAWpyI,IAC/Fn1D,EAAGw2N,UAAYniN,KAAKC,IAAID,KAAKuU,IAAI1U,OAAOqzL,GAAW17H,EAAM5nD,MAAQ,GAAIiyM,EAAKQ,YAAc,GAAK,GAC7F12N,EAAGsoF,KAAOmuI,EAAe5qJ,EAAMonB,MAAMjzF,EAAGw2N,cAAgB,MAAQC,SAAsB,OAAS,EAAIA,EAAa7rN,GAElH,KAAM,cAAe5K,GAAK,CACxBA,EAAGw2N,UAAY3qJ,EAAMnmE,QAAQ1F,EAAG4K,IAGlC5K,EAAGsmF,cAAgB+vI,EAAar2N,EAAGyyE,UAAY,MAAQ4jJ,SAAoB,OAAS,EAAIA,EAAW/vI,aAEnG,GAAI,aAAcluE,EAAQ,CACxBpY,EAAG22N,QAAU3yB,EAAQl3H,QAAQ10D,EAAOg+M,eAC/B,GAAI,UAAWh+M,EAAQ,CAC5BpY,EAAG22N,QAAU3yB,EAAQryL,IAAIyG,EAAO5B,WAC3B,CACL,MAAMitK,GAAetvK,MAAMiE,EAAO4+L,QAAU5+L,EAAO4+L,QAAU7iM,MAAMiE,EAAOqrK,aAAerrK,EAAOqrK,YAActuH,IAC9G,IAAKhhD,MAAMsvK,GAAc,CACvBzjL,EAAG42N,aAAeviN,KAAKuU,IAAI1U,OAAOuvK,GAAc6yC,EAAev3N,OAAS,GACxEiB,EAAG22N,QAAUL,EAAet2N,EAAG42N,kBAI5B,CACH52N,EAAG22N,QAAU,WAAYv+M,EAASjE,MAAMiE,EAAO4+L,QAAU5+L,EAAO4+L,OAASsf,EAAel+M,EAAO4+L,QAAUsf,EAAe,IAG5H,KAAM,iBAAkBt2N,GAAK,CAC3BA,EAAG42N,aAAeN,EAAe5wN,QAAQ1F,EAAG22N,UAIhDV,iBACE,OAAO,KAETr2N,OAAO45C,GACL,OAAQA,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMy8K,aAAez8K,EAAM08K,OAASj2N,KAAKi2N,MAAQ18K,EAAMi5B,SAAWxyE,KAAKwyE,QAAUj5B,EAAMw9J,SAAW/2M,KAAK+2M,QAAUx9J,EAAM56C,SAAWqB,KAAKrB,OAO/L2oM,eACE,MAAMj/G,IACFA,GACEroF,MACJ4rE,MACEA,GACE5rE,KAAKi2N,KAEX,OAAOrqJ,EAAMhgE,SAASy8E,GAAOzc,EAAMnmE,QAAQ4iF,GAAOj0E,KAAKuU,IAAI3oB,KAAKu2N,UAAW3qJ,EAAM5nD,MAAQ,GAM3F4yM,sBACE,MAAMC,WACFA,GACE72N,KAAKi2N,MACT3uB,SACEA,GACEtnM,KACN,OAAOsnM,KAAc,EAAIA,EAAWlzL,KAAKC,IAAID,KAAKuU,IAAI2+K,EAAUuvB,EAAWC,oBAAoBC,WAAYF,EAAWG,qBAAqBD,WAS7IE,mBACE,OAAOj3N,KAAKi2N,KAAKrqJ,MAAMhgE,SAAS5L,KAAKqoF,OAASroF,KAAKqmF,aAErD7T,aAEE,GAAIxyE,KAAKu2N,WAAa,EAAG,CACvB,MAAM3qJ,MACJA,GACE5rE,KAAKi2N,KAET,IAAKrqJ,EAAMhgE,SAAS5L,KAAKqoF,KAAM,CAC7B,OAAOzc,EAAMonB,MAAMhzF,KAAKu2N,WAE1B,OAAO3qJ,EAAMiB,QAAQ7sE,KAAKqoF,MAG9B19E,SACE,OAAO3K,KAAKqoF,IAEd0uH,aACE,MAAMsf,eACJA,GACEr2N,KAAKi2N,KAAKlyB,QAEd,KAAMsyB,IAAmB,MAAQA,SAAwB,GAAKA,EAAezqN,SAAS5L,KAAK02N,UAAW,CACpG,OAAOL,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAer2N,KAAKwjL,aAE7F,OAAOxjL,KAAK02N,QAEdP,eACE,IAAIe,EACJ,OAAQA,EAAel3N,KAAK+2M,UAAY,MAAQmgB,SAAsB,OAAS,EAAIA,EAAavsN,GAElG64K,kBACE,IAAI2zC,EACJ,OAAO/iN,KAAKuU,IAAI3oB,KAAK22N,eAAgBQ,EAAwBn3N,KAAKi2N,KAAKlyB,QAAQsyB,kBAAoB,MAAQc,SAA+B,OAAS,EAAIA,EAAsBr4N,QAAU,GAmBzLa,KAAKy3N,GACH,MAAMr3N,EAAKC,MACTwyE,OACEA,EAAMukI,OACNA,EAAMkf,KACNA,GACEl2N,GACJ6rE,MACEA,GACEqqJ,EACJlyB,EAAUkyB,EAAKlyB,QAAQsyB,eACvBlqN,EAAS,IAAI4pN,GACf,IAAIzuB,EAAW17H,EAAMhgE,SAAS4mE,GAAU5G,EAAMnmE,QAAQ+sE,GAAUzyE,EAAGunM,SACjE9jB,EAAcugB,EAAQn4L,SAASmrM,GAAUhT,EAAQt+L,QAAQsxM,GAAUh3M,EAAGyjL,YACxE,MAAM6zC,EAASpB,EAAKQ,YAAc,GAAK,EACrCa,EAAS1rJ,EAAM5nD,MAAQ,EACvBuzM,EAASxzB,EAAQjlM,OAAS,EAC1B04N,EAAalwB,IAAa+vB,EAC1BI,EAAYnwB,IAAagwB,EACzBI,EAAgBl0C,IAAgB,EAChCm0C,EAAen0C,IAAgB+zC,EACjC,OAAQH,GACN,KAAKrB,GAAS6B,UACZ,GAAIF,EAAe,CACjB,IAAKF,EAAY,CACfh0C,EAAc+zC,EACdjwB,SAEG,CACL9jB,IAEF,MACF,KAAKuyC,GAAS8B,UACZ,GAAIF,EAAc,CAChB,IAAKF,EAAW,CACdj0C,EAAc,EACd8jB,SAEG,CACL9jB,IAEF,MACF,KAAKuyC,GAAS+B,GACZ,IAAKN,EAAY,CACflwB,IAEF,MACF,KAAKyuB,GAASgC,KACZ,IAAKN,EAAW,CAEd,GAAInwB,KAAc,EAAG,CACnBA,EAAW2uB,EAAKY,WAAWmB,qBAAqBjB,cAC3C,CACLzvB,KAGJ,MACF,KAAKyuB,GAASkC,aACZz0C,EAAc,EACd,MACF,KAAKuyC,GAASmC,YACZ10C,EAAc+zC,EACd,MACF,KAAKxB,GAASoC,WACZ7wB,EAAW+vB,EACX7zC,EAAc,EACd,MACF,KAAKuyC,GAASqC,UACZ9wB,EAAWgwB,EACX9zC,EAAc+zC,EACd,MACF,KAAKxB,GAASsC,UACZ/wB,EAAWlzL,KAAKC,IAAIgjN,EAAQ/vB,EAAWlzL,KAAK+oB,MAAM84L,EAAK3yG,WAAW/qE,aAAe09K,EAAKzmD,YACtF,MACF,KAAKumD,GAASuC,UACZhxB,EAAWlzL,KAAKuU,IAAI2uM,EAAQhwB,EAAWlzL,KAAK+oB,MAAM84L,EAAK3yG,WAAW/qE,aAAe09K,EAAKzmD,YACtF,MAGJrjK,EAAO+yE,KAAK,CACV+2I,KAAAA,EACA3uB,SAAAA,EACA9jB,YAAAA,IAEF,OAAOr3K,EAOTg7L,WACE,MAAMpnM,EAAKC,MACTi2N,KACEA,EAAItrN,GACJA,EAAE4tN,MACFA,GACEx4N,EAEN,GAAIw4N,EAAO,CACT,OAAOA,EAGT,GAAI5tN,GAAM,KAAM,CACd,IAAI6tN,EACJ,OAAQA,EAAwBvC,EAAKlyB,QAAQl3H,QAAQ9sE,EAAGo2N,aAAe,MAAQqC,SAA+B,OAAS,EAAIA,EAAsB/hL,YAC5I,CACL,MAAMk4H,IACJA,GACE5uK,EACJ,GAAI4uK,EAAK,CACP,IAAI8pD,EACJ,OAAO9pD,EAAIo4B,QAAQhnM,EAAGo2N,WAAaxnD,EAAIo4B,SAAS0xB,EAAsBxC,EAAKlyB,QAAQ/wG,MAAMjzF,EAAGyjL,gBAAkB,MAAQi1C,SAA6B,OAAS,EAAIA,EAAoB9tN,MAI1LgkK,UAEE,OAAO3uK,KAAKi2N,KAAKyC,WAAW14N,KAAK2K,KAAO3K,KAAKi2N,KAAK0C,OAAO34N,KAAKsnM,UAUhE3oM,aACE,MAAMwoM,KACFA,EAAIhoI,QACJA,GACEn/D,MACJ44N,gBACEA,GACE54N,KAAKi2N,KAEX,GAAI9uB,EAAM,CAGR,GAAIhoI,EAAS,CACX,OAAOA,EAETy5J,EAAgBhlE,YAAc5zJ,KAAKi2N,KAAK4C,oBAAsB1xB,EAC9D,OAAOyxB,EAAgBv8G,YAAc8qF,GAQzC2xB,mBACE,MAAM3xB,KACFA,EAAIhoI,QACJA,GACEn/D,KACJwrI,EAAgB27D,EAAK/oI,wBAAwBnmB,GAAUwmB,iBAAiB0oI,IAASrwJ,KAAK8pF,+BAGxF,OAAO1gI,QAAQsrI,GAAiBrsE,GAAWA,IAAYn/D,KAAKmnM,MAO9D4xB,qBACE,OAAO/4N,KAAKmnM,MAAQnnM,KAAKsnM,YAAc,EAOzC0xB,aACE,OAAOh5N,KAAKmnM,MAAQnnM,KAAKwyE,QAG7BujJ,GAAS+B,GAAK,EACd/B,GAAS8B,UAAY,EACrB9B,GAASgC,KAAO,EAChBhC,GAAS6B,UAAY,EACrB7B,GAASkC,aAAe,EACxBlC,GAASmC,YAAc,EACvBnC,GAASoC,WAAa,EACtBpC,GAASqC,UAAY,EACrBrC,GAASsC,UAAY,EACrBtC,GAASuC,UAAY,GACrBvC,GAAS7tN,OAAS,WAKlB,MAAM+wN,GAAa15N,UAAgBA,IAAU,WAAaA,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMiY,SAAS,OAgIvH,MAAM0hN,WAAev9I,GAAMn7D,MAAMyM,GAAQ6L,KACvC/qB,mBACE,MAAO,SAwBTlB,kBACE,MAAO,SASTwsE,oBACE,MAAO,CAOP,OAMA,OAOA,QAqFA,WAOA,QAQA,OAaA,YAyBA,aAcA,CACE50E,KAAM,UACNG,aAAc,SAyBhB,CACEH,KAAM,SACNG,aAAc,IAQhB,aAuBA,mBAUA,CACEH,KAAM,iBACNG,aAAc,MAYhB,CACEH,KAAM,gBACNG,aAAc,SA6DhB,CACEH,KAAM,WACNG,aAAc,KAEdjF,QAAQJ,EAAOw3M,GACb,IAAKx3M,EAAO,CACV,OAAO,MAET,GAAIA,IAAU,KAAM,CAClB,OAAO,KAET,MAAMqvE,EAAS,GACf,UAAWrvE,IAAU,WAAY,CAC/BqvE,EAAOuqJ,eAAiB55N,EAExBqvE,EAAO0b,OAAS/qF,EAAMyV,KAAK+hM,QACtB,UAAWx3M,IAAU,SAAU,CACpCtB,OAAOmZ,OAAOw3D,EAAQrvE,GACtB,GAAIqvE,EAAO52D,GAAI,CACb42D,EAAO0b,OAAS1b,EAAO52D,UAChB42D,EAAO52D,IAGlB,OAAO42D,IASX,CACEnqE,KAAM,aACNG,aAAc,MAQhB,CACEH,KAAM,cACNG,aAAc,OAQhB,CACEH,KAAM,YACNG,aAAc,OAWhB,CACEH,KAAM,gBAkJR,CACEA,KAAM,aACNG,aAAc,KAEdjF,QAAQJ,GACN,IAAKA,EAAO,CACV,OAAO,MAET,GAAIA,IAAU,KAAM,CAClB,OAAO,KAET,MAAMnB,EAAS,CACbg7N,YAAa,MAEf,UAAW75N,IAAU,WAAY,CAC/BnB,EAAOm1F,SAAWh0F,OACb,UAAWA,IAAU,SAAU,CACpCtB,OAAOmZ,OAAOhZ,EAAQmB,GAExB,OAAOnB,IASX,CACEqG,KAAM,UAQR,CACEA,KAAM,WACNG,aAAc,MAOhB,CACEH,KAAM,YACNG,aAAc,MAOhB,CACEH,KAAM,YACNG,aAAc,MAQhB,CACEH,KAAM,YACNG,aAAc,MAmBhB,gBASA,iBAOA,UAYA,kBAMA,UAMA,MAOA,OAQA,QAOA,CACEH,KAAM,WACNG,aAAc,IAOhB,WAMA,CACEH,KAAM,SACNG,aAAc,OAUhB,CACEH,KAAM,UAWR,CACEA,KAAM,UAaR,CACEA,KAAM,aACNoI,KAAM,WAWR,CACEpI,KAAM,YACNoI,KAAM,UACNjI,aAAc,MAkChB,iBASA,CACEH,KAAM,mBACNG,aAAc,MAQhB,CACEH,KAAM,0BACNG,aAAc,MAQhB,CACEH,KAAM,wBACNG,aAAc,MAchB,kBAaA,gBAgBA,MAUA,YAQA,kBAQA,mBAMA,OAMA,cAMA,OAOA,aAQA,CACEH,KAAM,aACNG,aAAc,MAShB,CACEH,KAAM,uBACNG,aAAc,MAWhB,CACEH,KAAM,eACNG,aAAc,OAmChB,CACEH,KAAM,iBAQR,CACEA,KAAM,gBACNG,aAAc,OACb,CACDH,KAAM,kBACNG,aAAc,OAQhB,qBASA,CACEH,KAAM,aACNG,aAAc,MAShB,CACEH,KAAM,gBACL,CACDA,KAAM,YACNG,aAAc,yBACb,CACDH,KAAM,gBACNG,aAAc,iBAMlB26E,8BACE,OAAO,MAIT5/E,UAAUu6B,EAAM0xC,GACd,IAAIytJ,EACJ,MAAMt5N,EAAKC,KACXD,EAAGq/F,YAAcxzB,EAEjB,GAAIA,EAAO,CACT7rE,EAAGu5N,MAAQ/xN,MAAMC,QAAQokE,GAASA,EAAM,GAAGqqJ,KAAOrqJ,EAAMqqJ,KAE1Dl2N,EAAGk5B,sBAAwBljB,EAAO2B,aAAakmF,SAAS1jE,EAAKjB,sBAAuB,CAAC,OAAQ,YAAa,kBAC1G,GAAIiB,EAAKnB,YAAa,CACpBh5B,EAAGg5B,YAAcmB,EAAKnB,YAExB7e,MAAMsB,aAAa3c,WAInB,GAAIkB,EAAGmvE,UAAY,UAAWnvE,EAAGm6B,MAAO,CACtCn6B,EAAGwW,MAAQ,KAAOxW,EAAG8M,MAAQ,OAAQqsN,GAAOK,WAC5Cx5N,EAAGy5N,iBAAmB,KAGxBz5N,EAAG05N,mBAAqBJ,EAAYt5N,EAAGwW,SAAW,MAAQ8iN,SAAmB,OAAS,EAAIA,EAAUztN,SAAS,KAC7G,IAAK7L,EAAGmH,QAAUnH,EAAGq3H,OAASr3H,EAAGsnD,SAAU,CAEzCtnD,EAAGuR,IAAI,CACLpK,MAAOgyN,GAAO/G,aACd/6F,KAAM,MACL,KAAM,MAEXr3H,EAAG25N,eAAiB35N,EAAG45N,kBAAkB55N,EAAG25N,eAC5C,GAAI35N,EAAG4vE,SAAU,CACf5vE,EAAGogB,KAAKy5M,gBAAkB,IAAI/6M,IAE9B,GAAI9e,EAAG09I,YAAa,CAClB19I,EAAG09I,YAAc,OAIvBo8E,oBACE,IAAIC,EACJ,QAASA,EAAiB95N,KAAKqnD,YAAc,MAAQyyK,SAAwB,OAAS,EAAIA,EAAeh7N,QAAU,GAAKkB,KAAKy9I,YAE/HjuE,gBACE,OAAOxvE,KAAK0R,IAAI,aAElB89D,cAAcA,GAEZxvE,KAAKsR,IAAI,YAAak+D,EAAW,MAEjCxvE,KAAK+5N,kBAAkBvqJ,GACvBxvE,KAAKutB,QAAQ,iBAAkB,CAC7BiiD,UAAAA,IAGJ7vE,YAAYmF,GACV9E,KAAK8E,SAAWA,EAChB9E,KAAKg6N,sBAAsBh6N,KAAKu6B,iBAAiB,cAEjD,GAAIz1B,EAASwiM,YAAc,EAAG,CAC5BtnM,KAAKi6N,oBAAoBj6N,KAAKu6B,iBAAiB,mBAGnD56B,sBAAsBu6N,GACpBjiL,GAAUkkF,cAAcn8H,KAAKy2C,QAAS,CACpCqmF,aAAco9F,IAGlBv6N,oBAAoBw6N,GAClB,IAAIC,EAAgBC,EACpB,MAAOD,EAAiBp6N,KAAK8E,YAAc,MAAQs1N,SAAwB,GAAKA,EAAe/zI,gBAAkBg0I,EAAkBr6N,KAAK8E,YAAc,MAAQu1N,SAAyB,GAAKA,EAAgBlzB,KAAM,CAChN,IAAImzB,EACJ,MAAOA,EAAiBH,KAAmB,MAAQG,SAAwB,GAAKA,EAAex7N,QAAS,CACtGq7N,EAAgBn6N,KAAK8E,SAASiyM,OAAO9rM,KAEvCgtC,GAAUkkF,cAAcn8H,KAAK8E,SAASqiM,KAAM,CAC1CrqE,aAAcq9F,KAIpBx6N,YACE,IAAI46N,EAAYC,EAAmBC,GAClCF,EAAav6N,KAAKk6B,QAAU,MAAQqgM,SAAoB,OAAS,GAAKC,EAAoBD,EAAWG,UAAY,MAAQF,SAA2B,OAAS,GAAKC,EAAwBD,EAAkBz+M,WAAa,MAAQ0+M,SAA+B,OAAS,EAAIA,EAAsB5zN,KAAK2zN,GACzSx6N,KAAK26N,uBACLzgN,MAAM8B,YAIR09M,kBAAkBxuF,GAChBlrI,KAAK25N,kBAAkBzuF,GACvBlrI,KAAKsR,IAAI,gBAAiB45H,GAE5BwuF,oBACE,OAAO15N,KAAK0R,IAAI,iBAElB/R,kBAAkBurI,GAChBlrI,KAAK26N,uBACL,MAAMC,EAAkB56N,KAAK46N,gBAAkB,GAC/C,IAAK,MAAMziN,KAAU+yH,EAAS,CAC5B,MAAMxpB,EAASp1D,GAAOj1C,OAAO3Y,EAAe,CAC1Cia,MAAO3Y,MACNmY,IACHyiN,EAAgBl5G,EAAOzzD,KAAOyzD,EAAO/2G,IAAM+2G,GAG/C/hH,uBAEE,IAAK,MAAM+hH,KAAUzjH,OAAO4N,OAAO7L,KAAK46N,iBAAmB,IAAK,CAC9D,IAAIpkF,GACHA,EAAkB90B,EAAO3lG,WAAa,MAAQy6H,SAAyB,OAAS,EAAIA,EAAgB3vI,KAAK66G,IAM9G/hH,yBACE,IAAIk7N,EAAgB,GAIpB,IAAK,IAAIv1N,EAAItF,KAAMsF,IAAM4zN,GAAQ5zN,EAAIA,EAAE6c,WAAY,CACjD7c,EAAEuH,OAASguN,GAAiB,KAAKv1N,EAAEuH,KAAK5D,wBAEzCiwN,GAAO4B,aAAe5B,GAAO4B,WAAa,IAAItpN,MAAQF,IAAItR,KAAM66N,GACjE,OAAOA,EAWTl7N,aAAao7N,GACX,IAAIC,EACJ,MAAMxoJ,OACFA,EAAMukI,OACNA,GACEgkB,GACJE,QACEA,EAAOC,gBACPA,EAAejF,KACfA,EAAI5lN,YACJA,EAAWgmC,MACXA,GACE0gK,EACJokB,IAAYH,EAAqB9B,GAAO4B,cAAgB,MAAQE,SAA4B,OAAS,EAAIA,EAAmBtpN,IAAIrB,KAAiBA,EAAY+qN,kBAC7JC,EAAYN,EAAY5zB,KAAKvoJ,UAAU7G,SAAS,aAChD5rC,EAAS,CACPxM,CAACs2N,EAAKgF,SAAUhF,EAAKgF,QACrBt7N,CAACw7N,GAAUA,EACXx7N,CAACs7N,GAAUA,EACXt7N,CAACu7N,GAAkBA,EACnBI,eAAgB9oJ,EAAO+oJ,gBAAgBxkB,EAAOxgM,OAC9C5W,CAAC,qBAAqB02C,KAAUA,EAChCyzJ,aAAcmsB,EAAKp8B,WAAWkhC,GAC9BS,YAAavF,EAAKwF,UAAUV,GAC5BW,gBAAiB3kB,EAAOmX,WACxByN,YAAaN,GAGjB,GAAI7oJ,EAAO6T,cAAgBl6E,EAAO,wBAAyB,CACzDA,EAAO,wBAA0B,MAEnC,OAAOA,EAETyvN,aACE,OAAO57N,KAAKk6B,KAAK2hM,SAAW,SAE9BD,WAAWA,GACT57N,KAAK67N,OAASD,EAAS,SAAW,SAGpCC,aACE,IAAK77N,KAAKsS,OAAO68D,OAAQ,CACvB,OAAOnvE,KAAKsS,OAAOupN,OAErB,OAAO77N,KAAK0R,IAAI,UAElBmqN,WAAWA,GACT77N,KAAKsR,IAAI,SAAUuqN,GAGrBC,eACE,OAAO97N,KAAKkvE,QAAUlvE,KAAKk6B,KAAK4hM,SAElCA,aAAaA,GACX97N,KAAKsR,IAAI,WAAYwqN,GAGvBC,gBACE,OAAO/7N,KAAKkvE,QAAUlvE,KAAKk6B,KAAK6hM,UAElCA,cAAcA,GACZ/7N,KAAKsR,IAAI,YAAayqN,GAOxBrB,aACE,MAAM36N,EAAKC,KACX,IAAI06N,OACFA,GACE36N,EAAGm6B,KACP,GAAIwgM,IAAWA,EAAOtsK,SAAU,CAE9B,MAAMjiD,EAASpM,EAAGk2N,KAAK+F,kBAAkB,CACvCtB,OAAAA,EACAnkN,MAAOxW,EAAGwW,QAEZ,GAAIpK,EAAQ,CAEVuuN,EAAS36N,EAAGm6B,KAAKwgM,OAASvuN,EAAOuuN,WAC5B,CACL,UAAWA,IAAW,SAAU,CAC9BA,EAAS,CACP7tN,KAAM6tN,GAIVA,EAAS36N,EAAGm6B,KAAKwgM,OAASpuK,GAAOj1C,OAAO25B,GAAaxhC,MAAMzP,EAAGk8N,cAAe,CAC3EtjN,MAAO5Y,EAAGk2N,KAGVntE,MAAO1+I,EAAaY,WAAWjL,EAAGkL,OACjCyvN,KAGP,OAAOA,EAETA,WAAWA,GACT16N,KAAKk6B,KAAKwgM,OAASA,EAOrBuB,oBACE,MAAO,CACLpvN,KAAM,YACNpI,KAAMzE,KAAKuW,OAcf5W,mBAAmB6yE,GACjB,OAAOxyE,KAAKk8N,YAAY1pJ,GAG1B75D,YACE,OAAO3Y,KAAKsqI,QAAUtqI,KAAKm8N,QAE7BxjN,UAAUA,GACR3Y,KAAKsqI,OAAS3xH,EAEhBs9M,WACE,IAAI3lJ,EACJ,OAAOtwE,KAAKs5N,SAAWhpJ,EAAetwE,KAAKsS,UAAY,MAAQg+D,SAAsB,OAAS,EAAIA,EAAa2lJ,MAIjHkG,YAAYA,GACVn8N,KAAKo8N,SAAWD,EAOlBA,cACE,IAAIE,EACJ,OAAOr8N,KAAKo8N,YAAcC,EAAar8N,KAAKi2N,QAAU,MAAQoG,SAAoB,OAAS,EAAIA,EAAWC,qBAAqBt8N,OAQjIu8N,qBACE,OAAOv8N,KAAKm8N,QAAQ1lL,QAUtBA,cACE,OAAOz2C,KAAKi2N,KAAKuG,iBAAiBx8N,MAEpCy8N,yBAGE,MAAMZ,EAAS77N,KAAK67N,OACpB,IAAIt2M,EAAOvlB,KAAK6oD,YAChB,MAAOtjC,IAASA,EAAKi9E,QAAUj9E,EAAKs2M,SAAWA,GAAS,CACtDt2M,EAAOA,EAAKsjC,YAEd,OAAOtjC,EAETm3M,sBACE,OAAQ18N,KAAKy8N,qBAAuBz8N,KAAKsS,OAAO68D,QAAUnvE,KAAKsS,OAAOoqN,iBAYxEC,kBACE,OAAO1kL,GAAU6X,SAAS9vD,KAAKy2C,QAAS,uBAU1CigH,kBACE,OAAOz+G,GAAUmzF,KAAKprI,KAAKy2C,QAAS,+BAYtCkrE,qBACE,OAAO1pE,GAAUmzF,KAAKprI,KAAKy2C,QAAS,2BAItC83C,eACE,OAAOvuF,KAAKi2N,KAAKrqJ,MAAMkD,QAAQnnE,MAAK+H,GAAKA,EAAE6G,QAAUvW,KAAKuW,QAE5D27C,kBACE,OAAOlyD,KAAKkvE,OAEdjkE,kBACE,OAAOjL,KAAKid,MAAMo8D,OAAOp3B,SAASh3C,KAOpC2xN,iBACE,OAAO58N,KAAK68N,qBAAuBzyN,EAAaY,WAAWhL,KAAKiL,MAAQjL,KAAKiL,KAU/E2/C,gBACE,OAAQ5qD,KAAKwiG,UAAYxiG,KAAKsS,QAAUtS,KAAKsS,OAAOs4C,WAKtDjrD,KAAKu2B,EAAS,MAAO4mM,EAAe,OAClC,MAAM/8N,EAAKC,MACTsS,OACEA,GACEvS,EAEN,IAAKA,EAAGyiG,OAAQ,CACdziG,EAAGyiG,OAAS,KACZ,GAAIlwF,IAAWA,EAAO68D,SAAW78D,EAAOyqN,cAAe,CAErD,MAAMC,EAAa1qN,EAAO+0C,SAAS1/C,MAAKomD,GAASA,EAAMy0C,SAAW,OAClE,IAAKw6H,IAAe1qN,EAAOkwF,OAAQ,CACjCtsE,EAAS,KACT5jB,EAAOq/G,QAGX,GAAI5xH,EAAG4vE,SAAU,CACf5vE,EAAGsnD,SAASroD,SAAQ+uD,GAASA,EAAM4jE,KAAK,KAAM,aAG3C,IAAKr/G,EAAO68D,OAAQ,CACvB78D,EAAO6N,KAAKy5M,gBAAgBkD,EAAe,MAAQ,UAAU/8N,GAE/D,IAAKm2B,EAAQ,CACXn2B,EAAGuuE,OAAOtvE,SAAQ4sE,GAASA,EAAMr+C,QAAQ,aAAc,CACrDwpL,OAAQh3M,QAQhBJ,KAAKu2B,EAAS,OACZ,MAAMn2B,EAAKC,MACTsS,OACEA,GACEvS,EAEN,GAAIA,EAAGyiG,OAAQ,CACbziG,EAAGyiG,OAAS,MACZ,GAAIlwF,IAAW,MAAQA,SAAgB,GAAKA,EAAOkwF,OAAQ,CACzDlwF,EAAO89G,OAET,GAAIrwH,EAAG4vE,SAAU,CACf,IAAIstJ,GAEHA,EAAwBl9N,EAAGogB,KAAKy5M,mBAAqB,MAAQqD,SAA+B,OAAS,EAAIA,EAAsBj+N,SAAQ+uD,GAASA,EAAMqiE,KAAK,QAG9J,IAAKl6F,EAAQ,CACXn2B,EAAGuuE,OAAOtvE,SAAQ4sE,GAASA,EAAMr+C,QAAQ,aAAc,CACrDwpL,OAAQh3M,QAShBJ,OAAOu9N,GACL,GAAIl9N,KAAKwiG,QAAU06H,IAAiBt6N,WAAas6N,IAAiB,KAAM,CACtE,OAAOl9N,KAAKowH,OAEd,IAAKpwH,KAAKwiG,QAAU06H,IAAiBt6N,WAAas6N,IAAiB,MAAO,CACxE,OAAOl9N,KAAK2xH,QAQhBhyH,eAAeokM,EAAU/jM,KAAKqnD,SAAUoP,EAAQ7zD,WAC9C,IAAIu6N,EAAkBC,EACtB,MAAMr9N,EAAKC,MACVm9N,EAAmBp9N,EAAGk2N,KAAKlyB,WAAa,MAAQo5B,SAA0B,OAAS,EAAIA,EAAiB9kI,aACzGt4F,EAAGg9N,cAAgB,KACnBh5B,EAAQ/kM,SAAQq+N,GAAeA,EAAY3mK,OAAOD,KAClD12D,EAAGg9N,cAAgB,OAClBK,EAAoBr9N,EAAGk2N,KAAKlyB,WAAa,MAAQq5B,SAA2B,OAAS,EAAIA,EAAkB9kI,WAW9G34F,iBAAiB82D,EAAQ7zD,WACvB,MAAM7C,EAAKC,KACX,GAAID,EAAGu9N,eAAiB,YAAa,CACnCv9N,EAAGw9N,qBACE,CACL,IAAIC,EAAmBC,EACvB,MAAMnlK,WACJA,GACEv4D,EAEJ,GAAIu4D,EAAW8+D,MAAQ,MAAQr3H,EAAGyvE,UAAW,CAC3ClX,EAAWolK,QAAUplK,EAAW8+D,KAChC9+D,EAAWpxD,MAAQoxD,EAAW7hB,QAAQuM,iBACjC,IAAKjjD,EAAGyvE,WAAalX,EAAWolK,QAAS,CAE9CplK,EAAW8+D,KAAO9+D,EAAWolK,QAC7BplK,EAAWolK,QAAU,MAEtBF,EAAoBz9N,EAAGk2N,KAAKlyB,WAAa,MAAQy5B,SAA2B,OAAS,EAAIA,EAAkBnlI,aAC5Gt4F,EAAGg9N,cAAgB,KACnBh9N,EAAGsnD,SAASp1C,MAAM,GAAGjT,SAAQq+N,GAAeA,EAAY3mK,OAAOD,KAC/D12D,EAAGg9N,cAAgB,OAClBU,EAAoB19N,EAAGk2N,KAAKlyB,WAAa,MAAQ05B,SAA2B,OAAS,EAAIA,EAAkBnlI,YAGhHmlD,gBAAgBA,GACd,MAAM19I,EAAKC,KACXD,EAAGuR,IAAI,cAAemsI,GACtB,GAAI19I,EAAG4vE,SAAU,CACf,MAAM+pJ,cACJA,EAAgB,IACd35N,EACJ,GAAI09I,EAAa,CACfi8E,EAAcl7N,KAAK,CACjBqO,KAAM,SACNohD,IAAK,iBACLw5F,WAAY,KACZC,QAAS3nJ,EAAGyvE,UACZogD,KAAM,mBAAmB7vH,EAAGk2N,KAAKxgL,IAAM,QAAU,SACjD8xG,YAAa,mBAAmBxnJ,EAAGk2N,KAAKxgL,IAAM,OAAS,UACvD3/B,IAAK,8CACL6nN,SAAU,EACRj2E,QAAAA,KACI3nJ,EAAGyvE,UAAYk4E,QAElB,CACL,MAAMx3I,EAAQwpN,EAAc3pI,WAAU9rD,GAAKA,EAAEgqB,MAAQ,mBACrD/9C,GAAS,GAAKwpN,EAAcxhN,OAAOhI,EAAO,GAE5CnQ,EAAG25N,cAAgBA,EACnB,GAAI35N,EAAGyvE,UAAW,CAChBzvE,EAAGg6N,iBAAiB,SAI1Bt8E,kBACE,OAAOz9I,KAAK0R,IAAI,eAUlB/R,aACE,IAAKu5N,GAAO0E,iBAAkB,CAC5B1E,GAAO0E,iBAAmB,EAE5B,OAAQ59N,KAAKuW,MAAQvW,KAAKuW,MAAM/L,QAAQ,MAAO,KAAO,UAAW0uN,GAAO0E,iBAQ1EC,eACE,OAAO79N,KAAKo/F,YAAY35F,QAAQzF,MAKlCL,YAAYJ,GACV,IAAIu+N,EACJ,OAAO7lL,GAAU8tF,YAAYxmI,GAAQu+N,EAAgB99N,KAAKm8N,WAAa,MAAQ2B,SAAuB,OAAS,EAAIA,EAAcrnL,SAMnIsnL,mBACE,MAAM72N,MACJA,EAAKoyC,SACLA,GACEt5C,KAAKk6B,KACT,GAAI++L,GAAW/xN,IAAU+xN,GAAW3/K,GAAW,CAC7C,OAAOllC,KAAKC,IAAIjL,SAASlC,IAAU,EAAGkC,SAASkwC,IAAa,OACvD,CACL,OAAOpyC,GA4BXA,YACE,OAAOlH,KAAKk6B,KAAKhzB,MAEnBA,UAAUA,GACR,MAAMgzB,EAAO,CACXhzB,MAAAA,GAEF,GAAIA,GAAS,SAAUlH,KAAKk6B,KAAM,CAChCA,EAAKk9F,KAAO,KAGdp3H,KAAKsR,IAAI4oB,GAEXk9F,SAASA,GACP,MAAMl9F,EAAO,CACXk9F,KAAAA,GAEF,GAAIA,GAAQ,UAAWp3H,KAAKk6B,KAAM,CAChCA,EAAKhzB,MAAQ,KAGflH,KAAKsR,IAAI4oB,GAEXk9F,WACE,OAAOp3H,KAAKk6B,KAAKk9F,KAInBz3H,oBACE,MAAMI,EAAKC,KACTkH,EAAQnH,EAAGgmI,YAAYhmI,EAAGmH,OAC1BoyC,EAAWv5C,EAAGgmI,YAAYhmI,EAAGu5C,UAC/B,IAAI0kL,EAAgB,EACpB,GAAIj+N,EAAGsnD,SAAU,CACf22K,EAAgBj+N,EAAGsnD,SAAS57C,QAAO,CAACU,EAAQ4qM,IACnC5qM,EAAS4qM,EAAOknB,qBACtB,GAEL,OAAO7pN,KAAKC,IAAInN,EAAOoyC,EAAU0kL,GAenCr+N,mBAAmBu+N,EAAUC,EAAU71H,EAAQ,OAC7C,MAAMvoG,EAAKC,MACTi2N,KACEA,EAAIx/K,QACJA,EAAO2nL,QACPA,GACEr+N,GACJ82N,WACEA,EAAUjrJ,MACVA,GACEqqJ,GACJjyM,MACEA,GACE4nD,EACN,GAAI5nD,GAAS,GAAKjkB,EAAGq+N,UAAY,SAAWr+N,EAAGq+N,QAAS,CACtD,OAEF,MAAOzvD,GAAOkoD,EAAWnnD,MACvB2uD,WACEA,EAAUC,YACVA,GACErI,EAAKsI,qBACTxD,EAAc,IAAIhF,GAAS,CACzBE,KAAAA,EACAlf,OAAQh3M,EACR4K,GAAI,OAER,IAAIssH,EAAW,EACbzuG,EACA9E,EACA9kB,EACA4zE,EACAjzE,EACAT,EACA0/N,EAAU,CACR1/N,OAAQ,EACR0zE,OAAQ,MAGZ8rJ,EAAY7tH,SAAW,CACrB0lH,SAAUp2N,EAAG4K,GACbgkK,IAAAA,EACA0vD,WAAAA,GAEFtD,EAAYxC,MAAQ+F,EACpBvD,EAAY0D,kBAAoB,KAChC1D,EAAY2D,YAAc,KAE1BJ,EAAY5sK,UAAY,GAExB,GAAIukK,EAAK0I,0BAA2B,CAElC,IAAK1I,EAAK2I,eAAgB,CACxB,MAAMv9N,EAAQe,WAAWR,iBAAiB60C,GAC1Cw/K,EAAK2I,eAAiBx1N,SAAS/H,EAAMw9N,aAGvC,MAAMjC,EAAanmL,EAAQzuC,cAAc,+BAEzC40N,EAAWv7N,MAAM2E,QAAU,0BAC3BixH,EAAW2lG,EAAW55K,YAAcizK,EAAK2I,eAAiB,EAAI,EAC9DhC,EAAWv7N,MAAM2E,QAAU,GAI7B,GAAIge,EAAQ,IAAM,CAChBwE,EAAQpU,KAAKC,IAAID,KAAKuU,IAAIkuM,EAAWiI,SAAW1qN,KAAKkxB,MAAMuxL,EAAWkI,SAAW,GAAK,IAAK/6M,EAAQ,KAAO,GAC1GN,EAAM8E,EAAQ,QACT,CACLA,EAAQ,EACR9E,EAAMM,EAER,IAAKplB,EAAI4pB,EAAO5pB,EAAI8kB,EAAK9kB,IAAK,CAC5B4zE,EAAS5G,EAAMonB,MAAMp0F,GACrBW,EAAQQ,EAAGm8N,YAAY1pJ,GAEvB,GAAI4rJ,IAAY,QAAS,CACvBt/N,EAASoK,OAAO3J,GAAOT,WAGpB,CACHi8N,EAAY3gJ,QAAUokJ,EAAQhsJ,OAC9BuoJ,EAAY1yI,IAAM7V,EAAO7nE,GACzBowN,EAAYxE,UAAY33N,EACxB+vK,EAAIqwD,WAAWjE,GAEf,GAAIqD,IAAY,cAAe,CAC7Bt/N,EAASw/N,EAAYhnK,YAAYx4D,WAG9B,CACH,MAAMoI,EAAQo3N,EAAYt7K,YAC1B,GAAI97C,EAAQ+vH,EAAU,CACpBA,EAAW/vH,IAIjB,GAAIpI,EAAS0/N,EAAQ1/N,OAAQ,CAC3B0/N,EAAU,CACRhsJ,OAAAA,EACA1zE,OAAAA,EACAwoM,SAAU1oM,IAMhB,GAAIw/N,IAAY,SAAWA,IAAY,cAAe,CACpDrD,EAAY3gJ,QAAUokJ,EAAQhsJ,OAC9BuoJ,EAAY1yI,IAAMm2I,EAAQhsJ,OAAO7nE,GACjCowN,EAAYxE,UAAYiI,EAAQl3B,SAChC34B,EAAIqwD,WAAWjE,GACf9jG,EAAW7iH,KAAKC,IAAI4iH,EAAUqnG,EAAYt7K,aAE5C,GAAIz7C,MAAMC,QAAQ02N,GAAW,EAC1BA,EAAUC,GAAYD,EAEzBjnG,EAAW7iH,KAAKC,IAAI4iH,EAAUinG,GAAY,GAC1CjnG,EAAW7iH,KAAKuU,IAAIsuG,EAAUknG,GAAY,KAE1C,IAAK71H,EAAO,CACV2tH,EAAKgJ,mBAEPl/N,EAAGmH,MAAQnH,EAAGk3H,SAAWA,EAAW7iH,KAAKuU,IAAIsuG,EAAUl3H,EAAGk3H,UAAYA,EACtE,OAAOA,EAQTt3H,WACE,MAAMI,EAAKC,KACTmpE,EAAQ,CACNx+D,GAAI5K,EAAG4K,GAGP63F,OAAQziG,EAAGyiG,OACXq5H,OAAQ97N,EAAG87N,OACXD,OAAQ77N,EAAG67N,QAEf,IAAK77N,EAAGsnD,SAAU,CAChB8hB,EAAMppE,EAAGq3H,KAAO,OAAS,SAAWr3H,EAAGq3H,MAAQr3H,EAAGmH,MAEpD,GAAInH,EAAG85N,cAAe,CACpB1wJ,EAAMqG,UAAYzvE,EAAGyvE,UAEvB,OAAOrG,EAMTxpE,WAAWwpE,GACT,MAAMppE,EAAKC,KACXD,EAAGs4F,aACH,GAAI,WAAYlvB,EAAO,CACrBppE,EAAG67N,OAASzyJ,EAAMyyJ,OAEpB,GAAI,UAAWzyJ,EAAO,CACpBppE,EAAGmH,MAAQiiE,EAAMjiE,MAEnB,GAAI,SAAUiiE,EAAO,CACnBppE,EAAGq3H,KAAOjuD,EAAMiuD,KAElB,GAAI,UAAWjuD,GAASppE,EAAGq3H,KAAM,CAC/Br3H,EAAGq3H,KAAOx0H,eACL,GAAI,SAAUumE,GAASppE,EAAGmH,MAAO,CACtCnH,EAAGmH,MAAQtE,UAEb,GAAI,WAAYumE,EAAO,CACrBppE,EAAG87N,OAAS1yJ,EAAM0yJ,OAEpB97N,EAAGu4F,WACH,GAAI,WAAYnvB,EAAO,CACrBppE,EAAG22D,OAAOyS,EAAMq5B,SAAW,MAE7B,GAAI,cAAer5B,EAAO,CACxBppE,EAAGyvE,UAAYrG,EAAMqG,WAKzB7vE,SACE,MAAMw8N,QACFA,EAAOlG,KACPA,GACEj2N,KACJk/N,EAAc/C,IAAYlG,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKiJ,aAE7E,IAAKA,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY/I,YAAcn2N,KAAK2K,GAAI,CAEhG,GAAIsrN,EAAKt3J,KAAK1mB,GAAUwmB,iBAAiBw3J,IAAQ,CAC/CA,EAAKkJ,oBAIF,CACHlJ,EAAKmJ,aAAe,IAAIrJ,GAAS,CAC/BE,KAAAA,EACA3uB,SAAU43B,EAAY53B,SACtByP,OAAQolB,EAAQp4B,QAAQs7B,6BAA6Br/N,KAAK2K,GAAI,KAAM,SAI1EuP,MAAMpY,SAeRnC,YAAY6yE,GACV,GAAIxyE,KAAKy5N,kBAAmB,CAC1B,OAAOzoL,GAAat0B,QAAQ81D,EAAQxyE,KAAKuW,OAI3C,OAAOi8D,EAAOxyE,KAAKuW,OAMrB5W,YAAY6yE,GACVxyE,KAAKi2N,KAAKY,WAAWyI,YAAY9sJ,EAAQxyE,KAAK2K,IAQhDhL,UAAU2+N,GACRA,EAAY5sK,UAAY,UACjB4sK,EAAYiB,SAOrB5/N,QAAQ6yE,GAEN,GAAIA,EAAO4oF,WAAY,CACrB,MAAMA,EAAa5oF,EAAO4oF,WAAWp7J,KAAKuW,OAE1C,GAAI6kJ,IAAex4J,UAAW,CAC5B,OAAOw4J,GAGX,OAAO,KAWTz7J,YAAY09N,EAAaliK,EAAS,KAAMjlC,EAAS,OAC/C,OAAOl2B,KAAKw/N,SAAWx/N,KAAKuuE,kBAAoB,KAAOr0D,MAAMq3D,eAAe1yE,WAM9Ec,iBAAiBiN,GACf,IAAI6yN,EACJ,MAAMtzN,EAAS+N,MAAMuE,iBAAiB7R,GAEtC,IAAK6yN,EAAiBz/N,KAAK87N,YAAc,MAAQ2D,SAAwB,GAAKA,EAAetG,eAAgB,CAC3GhtN,EAAO2vN,SAAW97N,KAAK87N,SAAS3C,eAGlC,GAAIhtN,EAAOuzN,WAAa1/N,KAAK2/N,iBAAkB,QACtCxzN,EAAOuzN,SAGhB,GAAIvzN,EAAOo4L,iBAAmBvkM,KAAK4/N,uBAAwB,QAClDzzN,EAAOo4L,sBAETp4L,EAAOyrH,iBACPzrH,EAAOguN,cACd,OAAOhuN,GAIX+sN,GAAOK,WAAa,EACpBL,GAAO/G,aAAe,IACtB+G,GAAOv8I,mBACPu8I,GAAOhxN,OAAS,SAKhB,MAAM23N,GAAoB,CACtBnkJ,QAAS,CACP7uE,KAAM,SAER2vB,KAAM,CACJ3vB,KAAM,QAER4oK,QAAS,CACP5oK,KAAM,SACNiwB,OAAQ,CACN03I,sBAAuB,IAG3Bz4I,OAAQ,CACNlvB,KAAM,WAGVizN,GAAsB,CAAC,CACrBvpN,MAAO,WAyBX,MAAMwpN,WAAoBjnM,GAAY8tE,KAepC/kF,2BACE,MAAO,CACL04D,WAAY2+I,GACZxyI,KAAM,KAoBNs5I,aAAc,MAEdlxJ,QAASgxJ,IAGbngO,UAAUwY,GACR,MAAMpY,EAAKC,KAGX,GAAImY,EAAO89M,KAAM,CACf99M,EAAO89M,KAAKgK,aAAelgO,EAC3BA,EAAG4K,GAAK,GAAGwN,EAAO89M,KAAKtrN,aAEvBwN,EAAO89M,KAAK9mM,GAAG,CACb+wM,gBAAiB,qBACjBC,cAAe,qBACf7jN,QAASvc,IAGbma,MAAMsB,UAAUrD,GAIhBpY,EAAGovB,GAAG,CACJi2D,OAAQrlF,EAAGqgO,cACXnoN,KAAM,IAAMlY,EAAGsgO,sBACf/jN,QAASvc,EACT8sB,KAAM,IAGV0tD,iBACE,OAAOv6E,KAAKsgO,YAEd/lJ,eAAe0uB,GACbjpG,KAAKsgO,YAAcr3H,EAErBtpG,YACE,MAAM4gO,EAAa,GACnB,IAAKvgO,KAAKmzE,UAAW,CACnBnzE,KAAKkxE,UAAS6lI,GAAUwpB,EAAW/hO,KAAKu4M,KAE1C78L,MAAM8B,YAEN,IAAKhc,KAAKmzE,UAAW,CACnBotJ,EAAWvhO,SAAQ+3M,GAAUA,EAAOh7L,aAUxCpc,QAAQgL,GACN,OAAOuP,MAAM2yD,QAAQliE,IAAO3K,KAAKugG,WAAW51F,GAE9ChL,QAAQqY,EAAIsE,EAAUtc,MAEpBA,KAAKoxE,eAAc,CAACn1C,EAAGr9B,IAAMoZ,EAAGnR,KAAKyV,EAAS2f,EAAGr9B,IAAI,MAEvD4hO,sBACE,IAAIr0N,EAAS,EACb,IAAK,MAAMs0N,KAAOzgO,KAAM,CACtB,IAAKygO,EAAIj+H,OAAQ,CAEf,GAAIi+H,EAAIp5K,SAAU,CAChBo5K,EAAIp5K,SAASroD,SAAQ0hO,GAAYv0N,GAAUnM,KAAK2gO,oBAAoBD,SAC/D,CACLv0N,GAAUnM,KAAK2gO,oBAAoBF,KAIzC,OAAOt0N,EAETs7M,cACE,OAAOznN,KAAKq2N,eAAe1uN,MAAKovM,GAAUA,EAAO3/E,OAEnDz3H,oBAAoBo3M,GAClB,GAAIA,EAAO3/E,KAAM,CACf,OAAO2/E,EAAOhxE,YAAYmzF,GAAO/G,kBAC5B,CACL,OAAO/9M,KAAKC,IAAI0iM,EAAOhxE,YAAYgxE,EAAO7vM,OAAQ6vM,EAAOhxE,YAAYgxE,EAAOz9J,YAShFsnL,iBACE,OAAO5gO,KAAKmzE,UAAYnzE,KAAKo/F,YAAY1uB,SAASrpB,SAASjpD,OAAO4B,KAAKk/F,iBAAmBl/F,KAAK0wE,SAASrpB,SAO1GgvK,qBACE,MAAMt2N,EAAKC,KACX,IAAKD,EAAG8gO,gBAAiB,CACvB9gO,EAAG8gO,gBAAkB9gO,EAAGwhG,OAAOnjG,QAAO24M,GAAUA,EAAOnsJ,aAAemsJ,EAAOolB,UAAYplB,EAAOolB,QAAQ3sJ,aAE1G,OAAOzvE,EAAG8gO,gBAEZlhO,eAAcyyD,OACZA,EAAMmgB,QACNA,IAGA,GAAIngB,IAAW,YAAc,WAAYmgB,GAAU,CACjD,OAEFvyE,KAAK8gO,cAEPnhO,oBAAmBw8N,QACjBA,IAEAA,EAAQp4B,QAAQ+8B,cAChB9gO,KAAK8gO,cAEPnhO,cACE,IAAIohO,EACJ/gO,KAAK6gO,gBAAkB,MACtBE,EAAoB/gO,KAAKo/F,eAAiB,MAAQ2hI,SAA2B,OAAS,EAAIA,EAAkBD,cAE/GnhO,oBAAoBwwB,GAClBjW,MAAM+lF,oBAAoB9vE,GAG1B,GAAIA,EAAMiiC,SAAW,UAAY,WAAYjiC,EAAMoiD,QAAS,CAC1DvyE,KAAK8gO,eAGTnhO,6BAA6BqhO,EAAYz7M,EAAO,KAAM0mF,EAAO,OAC3D,MAAM83F,EAAU/jM,KAAKq2N,eACnBtf,EAASiqB,aAAsB9H,GAAS8H,EAAahhO,KAAK6sE,QAAQm0J,GACpE,IAAI1vL,EAAMyyJ,EAAQt+L,QAAQsxM,IAAWxxL,EAAO,GAAK,GAGjD,IAAKw+K,EAAQzyJ,GAAM,CACjB,GAAI26D,EAAM,CACR36D,EAAM/rB,EAAO,EAAIw+K,EAAQjlM,OAAS,MAC7B,CACL,OAAO,MAGX,OAAOilM,EAAQzyJ,GAQjB2vL,oBACE,OAAOjhO,KAAKuhG,OAQd5hG,IAAI4W,GACF,OAAOvW,KAAKkhO,WAAW,QAAS3qN,EAAO,MAOzC5W,aAAau6B,GACX,IAAIinM,EAAmBC,EACvB,MAAMnL,KACFA,EAAO,IACLj2N,MAEJ4rE,MACEA,GACEqqJ,EACJj6I,EAAYpQ,IAAU,MAAQA,SAAe,OAAS,GAAKu1J,EAAoBv1J,EAAM2O,cAAgB,MAAQ4mJ,SAA2B,OAAS,GAAKC,EAAwBD,EAAkBtnM,YAAc,MAAQunM,SAA+B,OAAS,EAAIA,EAAsBlnM,EAAK3jB,OAC/R,IAAI8qN,EAAcrhO,KAAKu6E,WAEvB,GAAIyB,IAAc,MAAQA,SAAmB,GAAKA,EAAU+6H,OAAQ,CAClE78K,EAAOptB,EAAQ0C,MAAM,GAAIwsE,EAAU+6H,OAAQ78K,GAE7C,GAAIA,EAAKrtB,KAAM,CACbw0N,EAActB,GAAYuB,eAAepnM,EAAKrtB,MAC9C,IAAKw0N,EAAa,CAChB,MAAM,IAAI3wN,MAAM,gBAAgBwpB,EAAKrtB,yBAGzC,GAAIqtB,EAAK0hM,OAAQ,CACf1hM,EAAK2hM,OAAS,gBACP3hM,EAAK0hM,OAEd,MAAM7kB,EAAS,IAAIsqB,EAAYnnM,EAAMl6B,MAGrC,IAAK+2M,EAAO78K,KAAK2hM,OAAQ,CACvB9kB,EAAO78K,KAAK2hM,OAAS5F,EAAKsL,eAAiB,SAG7C,GAAIvhO,KAAKggO,eAAiBjpB,EAAOyiB,kBAAoB5tJ,IAAUoQ,EAAW,CACxE,IAAIwlJ,EAAkBzqB,EAAOxgM,MAE7B,GAAIwgM,EAAO1mM,YAAY4lF,UAAW,CAChCurI,EAAkB,CAChB/8N,KAAMsyM,EAAOxgM,MACb1J,KAAMkqM,EAAO1mM,YAAY4lF,WAG7BrqB,EAAM2O,WAAWsC,SAAS2kJ,GAE5B,OAAOzqB,EAUTp3M,QAAQ08F,GACN,GAAIA,GAAc,KAAM,CACtB,OAAQ,EAGV,MAAMnsF,EAAQgK,MAAMzU,QAAQ42F,GAC5B,GAAInsF,GAAS,EAAG,OAAOA,EAGvB,OAAOlQ,KAAKiyE,QAAQ8d,WAAU7/D,GAAKA,EAAE3Z,QAAU8lF,IAQjDolI,qBACE,OAAOzhO,KAAK+wB,MAAKgmL,GAAUA,EAAOmX,aAQpCwT,yBACE,OAAO1hO,KAAK+wB,MAAKgmL,GAAUA,EAAOmX,YAAcnX,EAAO3/E,MAAQ,OAwBjEz3H,0BAA0B0hO,EAAaM,EAAiB,OACtDN,EAAYM,eAAiBA,GAC5B5B,GAAY6B,cAAgB7B,GAAY6B,YAAc,KAAKP,EAAYx0N,MAAQw0N,EAQlF1hO,sBAAsBkN,GACpB,OAAOkzN,GAAY6B,aAAe7B,GAAY6B,YAAY/0N,GAgB5DlN,uBAAuBq8E,EAAW/5B,GAChC,UAAW+5B,IAAc,UAAYh8E,KAAKi2N,KAAM,CAC9C,IAAI4L,EACJ7lJ,GAAa6lJ,EAAmB7hO,KAAKi2N,KAAKrqJ,SAAW,MAAQi2J,SAA0B,OAAS,EAAIA,EAAiBtnJ,WAAW1gD,SAASmiD,GAE3I,IAAI+6H,EAAS/6H,EAAU+6H,QAAU8oB,GAAkB7jJ,EAAUnvE,OAAS,GAEtE,UAAWkqM,IAAW,SAAU,CAC9BA,EAAS,CACPlqM,KAAMkqM,GAIVA,EAAS94M,OAAOmZ,OAAO,CACrBnM,KAAM+wE,EAAU/wE,MAAQb,EAAa03N,SAAS9lJ,EAAUv3E,MACxD8R,MAAOylE,EAAUv3E,MAChBw9C,EAAU80J,GAEb,GAAI/6H,EAAU5yC,WAAa,KAAM,CAC/B2tK,EAAOj6K,OAAO03I,sBAAwBx4F,EAAU5yC,UAElD,GAAI4yC,EAAU+lJ,WAAY,CACxBhrB,EAAOlqM,KAAOmvE,EAAU+lJ,WAG1B,OAAO/hO,KAAK0uE,aAAaqoI,IAU7B,MAAMirB,GAAoB,CAACnyN,EAASyM,KAAO,CACzCqxF,OAAQ,EACN/hC,MAAAA,EACA4G,OAAAA,EACAD,QAAAA,MAEA,IAAIpmE,EAAS,KACb,GAAI,UAAWomE,GAAW,aAAcA,GAAW,aAAcA,GAAW,SAAUA,EAAS,CAC7FpmE,EAAS0D,EAAQhJ,KAAKyV,EAAS,CAC7BsvD,MAAAA,EACA4G,OAAAA,EACAD,QAAAA,IAGJ,OAAOpmE,KAIX4zN,GAAYkC,mBAAmB/I,GAAQ,MACvC6G,GAAY73N,OAAS,cAoCrB,MAAMg6N,WAAqBhJ,GACzBrsN,kBACE,MAAO,SAETwsE,oBACE,MAAO,CA6CP,UAOA,CACE50E,KAAM,wBACNG,aAAc,QAGlBq9C,sBACE,MAAO,CAQLkgL,WAAY,MAQZpG,UAAW,MAQXD,SAAU,MAQVpB,OAAQ,MAQR0H,WAAY,MAQZC,WAAY,MAOZC,UAAW,MAOXhpL,SAAU,IAGdipL,0BACE,OAAO,KAET5iO,UAAUwY,EAAQyzD,GAChB,MAAM7rE,EAAKC,KACXka,MAAMsB,aAAa3c,WAEnB,IAAKsZ,EAAOjR,QAAUiR,EAAOi/G,KAAM,CACjCr3H,EAAGk2N,KAAK9mM,GAAG,QAASpvB,EAAGyiO,gBAAiBziO,GAE1C,GAAIA,EAAG0iO,sBAAuB,CAC5B1iO,EAAGk2N,KAAKx/K,QAAQmI,UAAU7/B,IAAI,2BAEhChf,EAAG2iO,iBAAmB3iO,EAAG2/N,SACzB3/N,EAAG2/N,SAAW3/N,EAAG4/N,iBAMnBhgO,kBAAiBs2N,KACfA,EAAIlf,OACJA,EAAMvkI,OACNA,EAAMmwJ,qBACNA,EAAuB,OAEvB,IAAIC,EACJ,MAAMC,EAAerwJ,GAAU,gBAAiBA,EAAOryD,MACrDg8M,QACEA,GACEplB,EACN,GAAI4rB,EAAsB,CACxB,IAAIG,GACHA,EAAwB9iO,KAAK0iO,oBAAsB,MAAQI,SAA+B,OAAS,EAAIA,EAAsBj8N,KAAK7G,QAASnB,WAE9I,MAAO,CACL6/C,UAAW,CACTqkL,cAAe,GAEjB17K,UAAWu7K,EAAkB7rB,EAAOrkF,WAAa,MAAQkwG,SAAyB,OAAS,EAAIA,EAAgB/4N,KAAI,CAACm5N,EAAc9yN,KAChI,IAAI+yN,EACJ,GAAI,YAAaD,EAAc,CAC7B,UAAWA,EAAazsI,UAAY,YAAcysI,EAAazsI,QAAQ,CACrE/jB,OAAAA,MACK,MAAO,CACZ,MAAO,GAET,GAAIwwJ,EAAazsI,UAAY,MAAO,CAClC,MAAO,IAIX,GAAIssI,IAAiBG,EAAaE,eAAiBL,GAAgBG,EAAaE,aAAc,CAC5F,MAAO,GAET,MAAMt6K,QACFA,EAAO82K,SACPA,GACEsD,EACJ37F,SAAcz+E,IAAY,YAAcA,IAAY,MAAQA,SAAiB,IAAMq6K,EAAsBr6K,EAAQh7C,cAAgB,MAAQq1N,SAA6B,GAAKA,EAAoBp8N,KAAK+hD,EAAS,OAASuzK,EAAQ3tM,SAASo6B,EAASuzK,EAAS,CAAC,CACxP3pJ,OAAAA,KACI5pB,GAAW,GAEnB,GAAI82K,EAAU,CACZ,MAAMyD,EAAqBhH,EAAQ3tM,SAASkxM,EAAUvD,EAAS,CAAC,CAC9DjsN,MAAAA,EACAsiE,OAAAA,EACAukI,OAAAA,EACAnuJ,QAASy+E,EACTj1E,OAAQ4wK,KAGV,UAAWG,IAAuB,SAAU,CAC1C,MAAO,CACL1iN,IAAK,OACLiW,QAASh4B,EAAeA,EAAe,GAAI66H,GAAQ6pG,aAAa/7F,IAAQ,GAAI,CAC1En3H,MAAAA,IAEFy4C,KAAMw6K,OAEH,CACLA,EAAmBzsM,QAAUysM,EAAmBzsM,SAAW,GAC3DysM,EAAmBzsM,QAAQxmB,MAAQA,EACnC,OAAOizN,OAEJ,CACL,MAAO,CACL1iN,IAAK,SACLiW,QAASh4B,EAAeA,EAAe,GAAI66H,GAAQ6pG,aAAa/7F,IAAQ,GAAI,CAC1En3H,MAAAA,IAEF4sH,aAAcuK,EACd3oF,UAAW,CACT2kL,SAAU,EACVC,gBAAiB,EACjB3jO,CAACqjO,EAAaltN,KAAMktN,EAAaltN,WAW7CnW,aAAYs2N,KACVA,EAAIlf,OACJA,EAAMvkI,OACNA,EAAM7zE,OACNA,IAEA,IAAI4kO,EACJ,GAAIxsB,IAAW/2M,OAASrB,EAAOigD,UAAU7G,SAAS,iBAAkB,CAClE,OAEF,IAAIyrL,EAAc7kO,EAAO+3B,QAAQxmB,MAGjC,IAAKszN,EAAa,CAChBA,EAAc7kO,EAAO64C,cAAc9gB,SAAW/3B,EAAO64C,cAAc9gB,QAAQxmB,MAE7E,MAAMkiD,GAAUmxK,EAAmBxsB,EAAOrkF,WAAa,MAAQ6wG,SAA0B,OAAS,EAAIA,EAAiBC,GACrHC,EAAgBrxK,GAAUA,EAAOkqI,QACnC,GAAImnC,EAAe,CACjBzjO,KAAKwuB,SAASi1M,EAAe1sB,EAAQ,CAAC,CACpCvkI,OAAAA,EACApgB,OAAAA,EACAzzD,OAAAA,MAQNgB,kBACE,IAAI+jO,EACJ,MAAM3jO,EAAKC,KACT+2M,EAASh3M,EACT4jO,EAAe,IAEbjxG,QAASkxG,GACP7sB,EAEN,IAAKh3M,EAAG02C,QAAS,CACf,OAEF,IAAIi8E,EAAUqkF,EAAOrkF,QAAU,IAE9BgxG,EAAc3jO,EAAG2yH,WAAa,MAAQgxG,SAAqB,OAAS,EAAIA,EAAY1kO,SAAQ6kO,IAC3F,MAAMzxK,EAAS1zD,EAAe,GAAImlO,UAE3BzxK,EAAOmkC,QAEd,GAAInkC,EAAO8wK,aAAc,QAChB9wK,EAAO8wK,aACdS,EAAanlO,KAAK4zD,OACb,CACLsgE,EAAQl0H,KAAK4zD,OAIjB,GAAIuxK,EAAa7kO,OAAS4zH,EAAQ5zH,OAAQ,CACxC4zH,EAAUqkF,EAAOrkF,QAAUixG,EAE7B,MAAMG,EAAc7rL,GAAU72C,cAAcrB,EAAG4/N,iBAAiB,CAC9D5oB,OAAAA,EACA4rB,qBAAsB,SACpBnrK,UACJz3D,EAAGmH,MAAQ+wC,GAAU4oJ,YAAYijC,EAAa/jO,EAAG02C,QAAS,KAAM12C,EAAG02C,QAAQe,eAC3Eu/J,EAAOrkF,QAAUkxG,GAGrB7D,GAAYkC,mBAAmBC,IAC/BA,GAAavlJ,mBACbulJ,GAAah6N,OAAS,eAwCtB,MAAM67N,WAAqB7K,GAEzBrsN,kBACE,MAAO,SAGTopF,uBACE,MAAO,SAET5c,oBACE,MAAO,CAAC,SAMR,MAMA,MAMA,OAMA,YAMA,QAEFp3B,sBACE,MAAO,CACL+hL,WAAY,SAUZlnM,OAAQ,IAKZm/L,oBACE,MAAMn/L,OACJA,EAAMr4B,KACNA,EAAI4P,IACJA,EAAGsU,IACHA,EAAG0c,KACHA,EAAIiqK,UACJA,EAASj5J,MACTA,GACEr2C,KAEJ,OAAOgxC,GAAamwD,kBAAkB,CACpCt0F,KAAM,cACNiwB,OAAAA,EACAr4B,KAAAA,EACA4P,IAAAA,EACAsU,IAAAA,EACA0c,KAAAA,EACAiqK,UAAAA,EACA93E,UAAWnhF,IAGf5Z,gBACE,MAAM18B,EAAKC,MACT88B,OACEA,GACE/8B,EACN,IAAI08B,EAAY18B,EAAGkxM,WACnB,IAAKx0K,GAAa18B,EAAGmxM,cAAgBp0K,EAAQ,CAC3C/8B,EAAGkxM,WAAax0K,EAAYmtF,GAAal4G,IAAI3R,EAAGmxM,YAAcp0K,GAEhE,OAAOL,EAET98B,YAAYJ,GACV,IAAIowD,EACJ,GAAIpwD,GAAS,KAAM,CACjBA,EAAQS,KAAKy8B,UAAUK,OAAOv9B,GAC9B,GAAIS,KAAKioC,KAAM,CACb1oC,EAAQ,GAAGA,IAAQS,KAAKioC,QAG5B,OAAQ0nB,EAASpwD,KAAW,MAAQowD,SAAgB,EAAIA,EAAS,GAMnEhwD,iBAAgBJ,MACdA,IAEA,OAAOS,KAAK6wM,YAAYtxM,IAG5BwgO,GAAYkC,mBAAmB8B,GAAc,MAC7CA,GAAapnJ,mBACbonJ,GAAa77N,OAAS,eA2CtB,MAAM+7N,WAAwBF,GAE5Bl3N,kBACE,MAAO,YAETwsE,oBACE,MAAO,CAAC,WAAY,4BAEtBp3B,sBACE,MAAO,CAcL83D,SAAU,MAMVmqH,yBAA0B,OAG9BvkO,UAAUu6B,EAAMiqM,GACdnkO,KAAKokO,gBAAkB,UAAWlqM,EAClCl6B,KAAKqkO,iBAAmB,WAAYnqM,EACpChgB,MAAMsB,aAAa3c,WACnB,MAAMo3N,KACJA,GACEkO,EAEJ,GAAInkO,KAAK+5G,WAAa,MAAO,CAC3B/5G,KAAK+5G,SAAW,cAElB,GAAIk8G,EAAM,CACRj2N,KAAK4rE,MAAQqqJ,EAAKrqJ,OAGtBA,UAAUA,GACR,MAAM7rE,EAAKC,KACTk7L,EAAiB,CACfvtF,OAAQ,iBACRrxF,QAASvc,EACT8sB,KAAM,KAERozK,EAAWlgM,EAAGk7L,OAChB,GAAIrvH,IAAUq0H,EAAU,CACtB,GAAIA,EAAU,CACZA,EAAS3xK,GAAG4sK,GAEdn7L,EAAGk7L,OAASrvH,EACZ,MAAM2O,WACFA,GACE3O,EACJr1D,EAAQgkE,EAAW1gD,SAAS95B,EAAGwW,OAGjC,GAAIA,GAASA,EAAM1J,OAAS,SAAU,CACpC,IAAK9M,EAAGqkO,gBAAiB,CACvBrkO,EAAGs2C,MAAQ,MAEb,IAAKt2C,EAAGskO,iBAAkB,CACxBtkO,EAAG26N,OAAS,UAGhB9uJ,EAAMz8C,GAAG+rK,IAGbv7L,QAAQ6yE,GACN,OAAOA,EAAOtD,OAEhBtD,YACE,OAAO5rE,KAAKi7L,OAEdt7L,eAAe4b,GACb,IAAIpP,EAAS,EACb,IAAK,IAAIvN,EAAI,GAAGE,OACZA,GACEyc,EAAM3c,EAAIE,EAAQF,IAAK,CAC3BuN,GAAU/C,SAASmS,EAAK3c,IAAM,EAAG,IAEnC,OAAOuN,EAETxM,OAAO4b,GACL,IAAIpP,EAAS,EACb,MAAMrN,OACJA,GACEyc,EACJ,IAAK,IAAI3c,EAAI,EAAGA,EAAIE,EAAQF,IAAK,CAC/BuN,GAAU/C,SAASmS,EAAK3c,IAAM,EAAG,IAEnC,OAAOuN,EAASrN,EAElBa,gBAAe6yE,OACbA,EAAMD,QACNA,IAEA,MAAMxyE,EAAKC,MACT62N,WACEA,GACE92N,EAAGk2N,KACT,GAAIl2N,EAAGwW,SAASg8D,EAAS,CACvB,GAAIC,EAAOtD,OAAQ,CACjBsD,EAAO44B,QAAO1Z,IACZ,MAAMi9E,EAAMkoD,EAAWyN,UAAU5yI,GACjC,GAAIi9E,EAAK,CACP,MAAM2vD,EAAc3vD,EAAIo4B,QAAQhnM,EAAGwW,OACnC,GAAI+nN,EAAa,CACf3vD,EAAIqwD,WAAWV,OAGlB,QAIT3+N,YAAY6yE,GACV,IAAIjzE,EAAQ,EACZ,GAAIizE,EAAOnrB,SAAU,CACnB,MAAMtnD,EAAKC,KACTgY,EAAKjY,EAAGg6G,SACRwqH,SAAkBvsN,IAAO,iBAAmB5D,KAAK4D,KAAQ,YACzDnI,QACEA,EAAOyM,QACPA,GACEioN,EAAW,CACb10N,QAASuE,KAAK4D,GACdsE,QAASlI,MACPrU,EAAGwc,gBAAgBvE,GAEzBzY,EAAQsQ,EAAQpR,MAAM6d,EAASk2D,EAAOnrB,SAASx9C,KAAIqmB,GAAKnwB,EAAGm8N,YAAYhsM,MACvE,GAAInwB,EAAGmkO,yBAA0B,CAC/B1xJ,EAAOlhE,IAAIvR,EAAGwW,MAAOhX,EAAO,UACvB,CACLizE,EAAOuC,QAAQh1E,EAAGwW,MAAOhX,QAEtB,CACLA,EAAQizE,EAAOxyE,KAAKuW,OAEtB,OAAOhX,GAGXwgO,GAAYkC,mBAAmBgC,GAAiB,MAChDA,GAAgBtnJ,mBAChBsnJ,GAAgB/7N,OAAS,kBAqDzB,MAAMs8N,WAAqBtL,GAEzBrsN,kBACE,MAAO,SAETwsE,oBACE,MAAO,CAMP,WA4CFp3B,sBACE,MAAO,CACLkgL,WAAY,MACZrG,SAAU,MACVpB,OAAQ,MACR0H,WAAY,MACZhE,QAAS,OAKbz+N,UAAUwY,EAAQyzD,GAChB,MAAM7rE,EAAKC,KACXD,EAAGurI,UAAY,GACfpxH,MAAMsB,aAAa3c,WACnBkB,EAAG2iO,iBAAmB3iO,EAAG2/N,SACzB3/N,EAAG2/N,SAAW3/N,EAAG4/N,iBAEnBhgO,YAEE,IAAK,MAAM+hH,KAAUzjH,OAAO4N,OAAO7L,KAAKsrI,WAAY,CAClD5pB,EAAO3lG,SAAW2lG,EAAO3lG,UAE3B7B,MAAM8B,YAGRrc,eAAek5E,GACb,IAAK,MAAM6oC,KAAUzjH,OAAO4N,OAAO7L,KAAKsrI,WAAY,CAClD,IAAK5pB,EAAO+iH,SAASjyJ,OAAOqG,SAAU,CACpC6oC,EAAO7oC,SAAWA,IAaxBl5E,iBAAiBqzN,GACf,IAAI8P,EACJ,MAAM/iO,EAAKC,MACTs+N,YACEA,EAAWvnB,OACXA,EAAMvkI,OACNA,EAAMkyJ,SACNA,GACE1R,GACJ9nF,QACEA,GACE6rE,EAGN,IAAK2tB,GAAYx5F,EAAS,CAIxB,IAAKozF,EAAYpzF,QAAS,CAExBnrI,EAAG4kO,UAAUrG,GAEfA,EAAYpzF,QAAU8nF,EAAW9nF,QAAUA,EAAQrhI,KAAI,CAAC+6N,EAAWhmO,KACjE,IAAIimO,EAAuBC,EAC3B,IAAIpjH,EAAQqjH,EAEZ,GAAIzG,EAAYpzF,QAAS,CAEvBxpB,EAAS48G,EAAYpzF,QAAQtsI,GAE7BmmO,EAAoBrjH,EAAOjrE,QAAQmoF,mBAEnC,GAAIgmG,EAAUI,UAAYtjH,EAAQ,QAEzB3hH,EAAGurI,UAAU5pB,EAAO/2G,IAC3B+2G,EAAO3lG,UACPuiN,EAAYpzF,QAAQtsI,GAAK,MAI7B,IAAK8iH,EAAQ,CACX3hH,EAAGklO,qBAAqBL,EAAW5R,GACnC4R,EAAUltG,eAAiB,MAC3BhW,EAAS8qD,GAAax4G,OAAO4wK,EAAWG,EAAoB,CAC1DrxK,aAAcqxK,GACZzG,GAAa,GACjBv+N,EAAGurI,UAAU5pB,EAAO/2G,IAAM+2G,EAC1B3hH,EAAGmlO,oBAAoBxjH,EAAQsxG,GAC/B,GAAItxG,EAAOj9G,KAAM,CACfi9G,EAAOvyF,GAAG,CACRi2D,OAAQ,EACN7lF,MAAAA,MAEAmiH,EAAO+iH,SAASjyJ,OAAOkvC,EAAOj9G,MAAQlF,MAK9CmiH,EAAO+iH,SAAW,CAChBjyJ,OAAAA,EACAukI,OAAAA,GAEF,GAAIh3M,EAAGk2N,OAASl2N,EAAGogB,KAAKglN,kBAAmB,CACzCzjH,EAAO7oC,SAAW94E,EAAGk2N,KAAKp9I,UAAYrG,EAAOqG,SAE/C,KAAMgsJ,EAAwB9kO,EAAGqlO,0BAA4B,MAAQP,SAA+B,OAAS,EAAIA,EAAsBh+N,KAAK9G,EAAI2hH,EAAQsxG,MAAiB,MAAO,CAC9K,MAAMqS,EAAgBT,EAAUS,eAAiB,UAAW3jH,GAAU,SAAWA,EAAOmV,oBACxF,GAAIwuG,EAAe,CACjB,MAAM9lO,EAAQmiH,EAAOj9G,KAAO+tE,EAAOkvC,EAAOj9G,MAAQuuN,EAAWzzN,MAC7DmiH,EAAO2jH,GAAiB9lO,IAG3BulO,EAAwB/kO,EAAGulO,yBAA2B,MAAQR,SAA+B,OAAS,EAAIA,EAAsBj+N,KAAK9G,EAAI2hH,EAAQsxG,GAClJ,OAAOtxG,KAGX,GAAIgjH,EAAU,CACZ,OAAO,KAET,OAAQ5B,EAAwB9iO,KAAK0iO,oBAAsB,MAAQI,SAA+B,OAAS,EAAIA,EAAsBj8N,KAAK7G,KAAMgzN,GAUlJrzN,qBAAqBilO,EAAW5R,IAOhCrzN,oBAAoB+hH,EAAQsxG,IAmB5BrzN,UAAU2+N,GACR,GAAIA,EAAYpzF,QAAS,CACvBozF,EAAYpzF,QAAQlsI,SAAQ0iH,WAEnB1hH,KAAKsrI,UAAU5pB,EAAO/2G,IAC7B+2G,EAAO3lG,aAETuiN,EAAYpzF,QAAU,KAGxBhxH,MAAMyqN,UAAUrG,GAOlB3+N,uBAIFogO,GAAYkC,mBAAmBuC,IAC/BA,GAAa7nJ,mBACb6nJ,GAAat8N,OAAS,eA0CtB,MAAMq9N,WAAoBf,GACxBz2N,mBACE,MAAO,cAGTlB,kBACE,MAAO,QAETwsE,oBACE,MAAO,CAAC,WAAY,eAAgB,wBAAyB,yBAA0B,kBAAmB,iBAAkB,WAAY,eAE1Ip3B,sBACE,MAAO,CACL5L,MAAO,SAMP+/G,SAAU,KAKVovE,aAAc,MACdt6F,QAAS,CAAC,CACRr+H,KAAM,WACNw4N,cAAe,aAIrB1lO,UAAUwY,EAAQyzD,GAChB1xD,MAAMsB,aAAa3c,WACnB,MAAMkB,EAAKC,KACX/B,OAAOmZ,OAAOrX,EAAI,CAChB0lO,uBAAwB1lO,EAAGwkM,eAC3BmhC,+BAAgC3lO,EAAGqlO,uBACnCO,8BAA+B5lO,EAAGulO,sBAClCF,uBAAwBrlO,EAAG6lO,+BAC3BN,sBAAuBvlO,EAAG8lO,8BAC1BthC,eAAgBxkM,EAAG6/N,yBAErB,IAAK7/N,EAAGwW,QAAUxW,EAAGogB,KAAKglN,kBAAmB,CAC3CvwN,QAAQC,KAAK,qIAGjBlV,YACE,IAAImmO,GACHA,EAAuB9lO,KAAK+lO,kBAAoB,MAAQD,SAA8B,OAAS,EAAIA,EAAqB/pN,UACzH7B,MAAM8B,YAERrc,wBAAuBi9I,cACrBA,EAAam6D,OACbA,IAEA,IAAIr1I,EACJk7E,EAAch+F,UAAU7/B,IAAI,kBAC5B,GAAIg4L,EAAOyuB,aAAc,CACvB5oF,EAAch+F,UAAU7/B,IAAI,gCAC5B,GAAIg4L,EAAOgvB,eAAgB,CACzBnpF,EAAcn7I,YAAYs1M,EAAOgvB,eAAetvL,aAC3C,CACLsgK,EAAOgvB,eAAiB,IAAIx9B,GAAS,CACnCtyE,SAAU2mB,EACVjkI,MAAO3Y,KAAKi2N,KACZr+F,UAAW,8BACXvqG,UAAW,CACT+3D,OAAQ,mBACR9oE,QAASy6L,UAIV,CACLr1I,EAAcq1I,EAAO6lB,WAEvBl7J,EAAcq1I,EAAO0uB,uBAAyB1uB,EAAO0uB,uBAAuB5+N,KAAK7G,QAASnB,WAAa6iE,EACvG,OAAOq1I,EAAOyuB,aAAe5iO,UAAY8+D,EAE3C/hE,oBAAoBJ,GAClB,GAAIS,KAAK+lO,eAAgB,CACvB/lO,KAAK20E,gBACL30E,KAAK+lO,eAAe/vE,QAAUz2J,EAC9BS,KAAK40E,gBAGTj1E,kBAAiBq2J,QACfA,IAEA,MAAMj2J,EAAKC,KAEX,GAAID,EAAGwW,MAAO,CACZ,MAAMq1D,MACJA,GACE7rE,EAAGk2N,KACPrqJ,EAAMysB,aACNzsB,EAAM5sE,SAAQwzE,GAAUzyE,EAAGimO,aAAaxzJ,EAAQzyE,EAAGwW,MAAOy/I,KAC1DpqF,EAAM0sB,WAQRv4F,EAAGwtB,QAAQ,YAAa,CACtByoI,QAAAA,IAIJr2J,kBAAiBJ,MACfA,EAAKmlO,SACLA,EAAQlyJ,OACRA,EAAM8rJ,YACNA,IAEA,GAAIoG,EAAU,CACZ,OAAOnlO,GAAS,KAAO,GAAKA,EAE9B,MAAM4M,EAAS+N,MAAMylN,oBAAoB9gO,WACzC,GAAI2zE,EAAOqG,WAAa74E,KAAKmgB,KAAKglN,kBAAmB,CACnD7G,EAAYpzF,QAAQ,GAAGryD,SAAW,KAEpC,OAAO1sE,EAGTxM,qBAAqBilO,EAAWz0M,GAC9By0M,EAAU9uN,IAAM9V,KAAKo2J,SAEvBz2J,oBAAoB+hH,EAAQvxF,GAC1BA,EAAMmuM,YAAY58G,OAASA,EAC3BA,EAAOvyF,GAAG,CACRw2L,aAAc,yBACdvgI,OAAQ,mBACR9oE,QAAStc,OAGbL,+BAA+B+hH,GAC7B,IAAIukH,EACJvkH,EAAOlvC,OAASkvC,EAAO+iH,SAASjyJ,OAChCxyE,KAAKkmO,aAAe,MACnBD,EAAwBjmO,KAAK0lO,kCAAoC,MAAQO,SAA+B,OAAS,EAAIA,EAAsBp/N,KAAK7G,QAASnB,WAE5Jc,8BAA8B+hH,GAC5B,IAAIykH,EACJnmO,KAAKkmO,aAAe,OACnBC,EAAwBnmO,KAAK2lO,iCAAmC,MAAQQ,SAA+B,OAAS,EAAIA,EAAsBt/N,KAAK7G,QAASnB,WAI3Jc,wBAAuBZ,OACrBA,EAAMi3J,QACNA,EAAOzgB,WACPA,IAEA,MAAMx1I,EAAKC,MACTi2N,KACEA,GACEl2N,GACJyyE,OACEA,GACEzzE,EAAO0lO,SAEb,GAAIlvF,GAAcx1I,EAAGwW,SAAW0/M,EAAKlkG,SAASq0G,UAAYnQ,EAAKlkG,SAASq0G,SAASxmK,WAAa7/D,EAAGogB,KAAKglN,oBAAsBlP,EAAKgB,aAAazkJ,IAAWwjF,EAAS,CAChK,OAAO,MAET,IAAKj2J,EAAGmmO,aAAc,CAQpB,OAAOnmO,EAAGwtB,QAAQ,eAAgB,CAChCilD,OAAAA,EACAwjF,QAAAA,KAINr2J,kBAAiBZ,OACfA,EAAMi3J,QACNA,IAEA,IAAKh2J,KAAKkmO,aAAc,CACtB,MAAMnmO,EAAKC,MACTwyE,OACEA,GACEzzE,EAAO0lO,UACXluN,MACEA,GACExW,EACN,GAAIwW,EAAO,CACTxW,EAAGimO,aAAaxzJ,EAAQj8D,EAAOy/I,GAE/B,GAAIA,EAAS,CAEXj2J,EAAGsmO,oBAAoBtmO,EAAGk2N,KAAKrqJ,MAAMz7D,OAAM+f,GAAKA,EAAE3Z,IAAQ,KAAM,WAC3D,CACLxW,EAAGsmO,oBAAoB,QAU3BtmO,EAAGwtB,QAAQ,SAAU,CACnBilD,OAAAA,EACAwjF,QAAAA,KAINr2J,aAAa6yE,EAAQj8D,EAAOy/I,GAC1B,MAAMugD,EAAa,MAAMnsM,EAAaK,WAAW8L,KACjD,GAAIi8D,EAAO+jI,GAAa,CACtB/jI,EAAO+jI,GAAYvgD,OACd,CACLxjF,EAAOlhE,IAAIiF,EAAOy/I,IAItBr2J,eAAcwwB,MACZA,EAAKmuM,YACLA,IAGA,GAAInuM,EAAMlxB,MAAQ,IAAK,CACrB,MAAMqnO,EAAWhI,EAAY58G,OAC7B4kH,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAAS5vK,SAE7DvmC,EAAM21B,iBAEN31B,EAAM+hG,QAAU,MAKpBvyH,iBAAiBiN,GACf,MAAMT,EAAS+N,MAAMuE,iBAAiB7R,UAC/BT,EAAOi5N,8BACPj5N,EAAOm5N,sBACd,GAAItlO,KAAK0lO,+BAAgC,CACvCv5N,EAAOi5N,uBAAyBplO,KAAK0lO,+BAEvC,GAAI1lO,KAAK2lO,8BAA+B,CACtCx5N,EAAOm5N,sBAAwBtlO,KAAK2lO,8BAEtC,OAAOx5N,GAGX4zN,GAAYkC,mBAAmBsD,GAAa,MAC5CA,GAAYr9N,OAAS,cA2CrB,MAAMq+N,WAAmBrN,GACvBnrN,mBACE,MAAO,aAGTlB,kBACE,MAAO,OAGTopF,uBACE,MAAO,OAET5c,oBACE,MAAO,CAAC,SAAU,eAAgB,OAAQ,MAAO,OAEnDp3B,sBACE,MAAO,CAyCLnlB,OAAQ,IAQRuI,KAAM,EACNiU,SAAU,GACV0qL,WAAY,QAShBrkO,iBAAgBJ,MACdA,IAEA,OAAOA,EAAQS,KAAK6wM,YAAYtxM,GAAS,GAM3CI,eAAc2+N,YACZA,EAAWrlI,YACXA,IAEAqlI,EAAY5sK,UAAY1xD,KAAK6wM,YAAY53G,GAU3Ct5F,YAAYJ,GAEV,UAAWA,IAAU,SAAU,CAC7BA,EAAQsgC,GAAW7zB,MAAMzM,EAAOS,KAAK88B,QAAUl6B,WAGjD,OAAOi9B,GAAW/C,OAAOv9B,EAAOS,KAAK88B,QAAUl6B,WAQjDk6B,WAAWv9B,GACT,MAAMm7N,OACJA,GACE16N,KAAKk6B,KACTl6B,KAAKsR,IAAI,SAAU/R,GACnB,GAAIm7N,EAAQ,CACVA,EAAO59L,OAASv9B,GAGpBu9B,aACE,OAAO98B,KAAK0R,IAAI,UAElBuqN,oBACE,MAAMl8N,EAAKC,MACT2oB,IACEA,EAAGtU,IACHA,EAAGgxB,KACHA,EAAIvI,OACJA,GACE/8B,EACN,MAAO,CACL0E,KAAM1E,EAAGwW,MACT1J,KAAM,OACNyhM,qBAAsB,6BACtB1jK,aAAc7qC,EAAGk2N,KAAKrrL,aACtB9N,OAAAA,EACAzoB,IAAAA,EACAsU,IAAAA,EACA0c,KAAAA,IAMN06L,GAAYkC,mBAAmBsE,GAAY,MAC3CA,GAAW5pJ,mBACX4pJ,GAAWr+N,OAAS,aAyBpB,MAAMs+N,WAAsBzC,GAC1Bl3N,kBACE,MAAO,UAGTopF,uBACE,MAAO,SAET5c,oBACE,MAAO,CAAC,YAAa,gBAEvBp3B,sBACE,MAAO,CACLt5B,IAAK,EACLtU,IAAK,IAOL4xM,UAAW,MAOXwgB,aAAc,GACdpE,WAAY,MACZD,WAAY,MACZsE,gBAAiBzpI,GAAO,GAAGA,KAC3BmhI,QAAS,OAGbz+N,YAAYwY,EAAQyzD,GAClB1xD,SAASrb,WACTmB,KAAKk7N,gBAAkB,qBA+BzBv7N,iBAAgBJ,MACdA,IAEAA,EAAQA,GAAS,EACjB,MAAO,CACLm/C,UAAW,sBACXuT,KAAM,cACN00K,gBAAiB,EACjBC,gBAAiB,IACjBC,gBAAiBtnO,EACjBywJ,SAAU,EACV3oG,SAAU,CAAC,CACT5mC,IAAK,MACLi+B,UAAW,CACTooL,gBAAiB,EACjBC,SAAUxnO,IAAU,EACpBynO,QAASznO,EAAQS,KAAKymO,cAExBplO,MAAO,CACL6F,MAAO3H,EAAQ,KAEjB8nD,SAAU,CAACrnD,KAAKimN,UAAY,CAC1BxlM,IAAK,OACLxV,KAAM1L,EAAQ,KACZqD,cAMVjD,uBAEF6mO,GAAcvpI,IAAM,UACpB8iI,GAAYkC,mBAAmBuE,GAAe,MAC9CA,GAAct+N,OAAS,gBAyBvB,MAAM++N,WAAqBlD,GAGzBh2N,mBACE,MAAO,eAETlB,kBACE,MAAO,SAGTopF,uBACE,MAAO,SAET5c,oBACE,MAAO,CAAC,YAAa,aAAc,YAErCp3B,sBACE,MAAO,CACLt5B,IAAK,EACLtU,IAAK,EAML6yN,UAAW,qBAMXC,WAAY,qBAMZt5C,SAAU,KACVm2C,WAAY,SACZ5B,WAAY,MACZl7N,MAAO,SACPm7N,WAAY,MACZ/oL,SAAU,SACVohL,OAAQ,MACR0D,QAAS,SAObz+N,UAASJ,MACPA,IAEA,MAAO,CACLm/C,UAAW,CACT0oL,sBAAuB,EACvBC,kBAAmBrnO,KAAK6tL,UAE1BxmI,SAAUvkC,GAAYy2L,SAASv5M,KAAKqU,KAAKzV,IACvC,MAAM0oO,EAAS1oO,EAAIW,EACnB,MAAO,CACLkhB,IAAK,IACLi+B,UAAW,CACT6oL,gBAAiB,KACjBC,WAAYF,EACZG,WAAYH,EACZ3nO,CAAC2nO,EAAStnO,KAAKmnO,WAAannO,KAAKknO,WAAY,WAMvDvnO,aAAYs2N,KACVA,EAAIlf,OACJA,EAAMvkI,OACNA,EAAM7zE,OACNA,EAAMwxB,MACNA,IAEA,GAAIxxB,EAAOigD,UAAU7G,SAAS,mBAAqBk+K,EAAKp9I,UAAYk+H,EAAOlpB,SAAU,CACnF,IAAI65C,EAAY,GAAGjiO,QAAQoB,KAAKlI,EAAO8rD,WAAW6I,WAAY30D,GAC9D,GAAIA,EAAOigD,UAAU7G,SAAS,cAAgB5nB,EAAM0yB,SAAW1yB,EAAMipF,UAAW,CAC9EsuH,EAAYA,EAAY,EAG1B,GAAIl1J,EAAO9gE,IAAIqlM,EAAOxgM,SAAW,GAAKmxN,IAAc,EAAG,CACrDA,GAAa,EAEfl1J,EAAOlhE,IAAIylM,EAAOxgM,MAAOmxN,EAAY,KAI3C3H,GAAYkC,mBAAmBgF,GAAc,MAC7CA,GAAatqJ,mBACbsqJ,GAAa/+N,OAAS,eAwBtB,MAAMy/N,WAAwBzO,GAC5Bj3K,sBACE,MAAO,CAKL85K,UAAW,MAKXD,SAAU,MAKVqG,WAAY,MAKZC,WAAY,MAKZE,UAAW,MACXhpL,SAAU,GACVpyC,MAAO,GACPmvC,MAAO,MACPprC,KAAM,IACNyvN,OAAQ,OAGZ/6N,UAAUwY,GACR+B,MAAMsB,aAAa3c,WACnB,MAAMkB,EAAKC,MACTi2N,KACEA,GACEl2N,EACNA,EAAGm7N,gBAAkB,oBACrB,GAAIjF,EAAM,CAERA,EAAK9mM,GAAG,CACNy4M,UAAW,YACXtrN,QAASvc,IAEXA,EAAG6nO,UAAU,CACXh8J,MAAOqqJ,EAAKrqJ,MACZi8J,QAAS,OAEX,GAAI5R,EAAKrqJ,MAAM5nD,QAAUiyM,EAAKp4F,SAAU,CACtCo4F,EAAK9mM,GAAG,CACNwrK,MAAO,qBACPr+K,QAASvc,EACT6sB,KAAM,SAKd/f,kBACE,MAAO,YAET01N,0BACE,OAAO,KAET5iO,WAAUisE,MACRA,EAAKi8J,QACLA,IAEA,MAAM9nO,EAAKC,KACXD,EAAGwpE,gBAAgB,QACnBqC,EAAMz8C,GAAG,CACP1qB,KAAM,OACN9E,CAAC,SAASI,EAAGk2N,KAAK6R,oBAAqB,gBACvCxrN,QAASvc,IAEX,IAAK8nO,EAAS,CACZ9nO,EAAGgoO,sBAGPpoO,eAAcyyD,OACZA,IAEA,GAAIA,IAAW,WAAaA,IAAW,OAASA,IAAW,UAAYA,IAAW,YAAa,CAC7FpyD,KAAK+nO,sBAOTpoO,UAAS6yE,OACPA,EAAMyjJ,KACNA,IAEA,OAAOzjJ,EAAO6T,aAAe,GAAK4vI,EAAKrqJ,MAAMnmE,QAAQ+sE,EAAQ,MAAQ,EAMvE7yE,qBACE,MAAMs2N,KACFA,GACEj2N,MACJ4rE,MACEA,GACEqqJ,GACJjyM,MACEA,GACE4nD,EACN,GAAI5nD,IAAUhkB,KAAKwiG,OAAQ,CACzB,MAAM87H,EAAcrI,EAAKx/K,QAAQzuC,cAAc,gCAAgChI,KAAK2K,QAEpF,GAAI2zN,EAAa,CACf,MAAM0J,EAAc5+N,SAAS6uC,GAAUC,cAAcomL,EAAa,iBAChErnG,EAAWh/E,GAAU4oJ,YAAY78K,EAAOs6M,GAC1Ct+N,KAAKkH,MAAQkN,KAAKC,IAAIrU,KAAKs5C,SAAU29E,EAAW,EAAI+wG,KAI1D5wG,SAASjvG,KAEX43M,GAAYkC,mBAAmB0F,GAAiB,MAChDA,GAAgBz/N,OAAS,kBAyBzB,MAAM+/N,WAAuB/O,GAC3B7/I,oBACE,MAAO,CAUP,YAEFp3B,sBACE,MAAO,CACLogL,WAAY,OAGhB1iO,YAAYwY,EAAQyzD,GAClB1xD,SAASrb,WACT,MAAMkB,EAAKC,KACX,IAAKD,EAAG+yD,SAAU,CAChB,MAAM,IAAIpiD,MAAM,mCAElB,UAAW3Q,EAAG+yD,WAAa,WAAY,CACrC,MAAM,IAAIpiD,MAAM,+CAGpB7D,kBACE,MAAO,WAMTlN,SAASqzN,GAEP,IAAKA,EAAWxgJ,OAAO6T,aAAc,CACnC,OAAOrmF,KAAK8yD,SAAS,CACnBvzD,MAAOyzN,EAAWzzN,MAClBizE,OAAQwgJ,EAAWxgJ,OACnBj8D,MAAOy8M,EAAWjc,OAAOxgM,UAKjCwpN,GAAYkC,mBAAmBgG,GAAgB,MAC/CA,GAAetrJ,mBACfsrJ,GAAe//N,OAAS,iBAwBxB,MAAMggO,WAAmBhP,GAEvBrsN,kBACE,MAAO,OAGTopF,uBACE,MAAO,OAET5c,oBACE,MAAO,CAAC,UAEVp3B,sBACE,MAAO,CAMLnlB,OAAQ,KACRwc,SAAU,IACV0qL,WAAY,QAShBrkO,iBAAgBJ,MACdA,IAEA,OAAOA,EAAQS,KAAK6wM,YAAYtxM,GAAS,GAM3CI,eAAc2+N,YACZA,EAAWrlI,YACXA,IAEAqlI,EAAY5sK,UAAY1xD,KAAK6wM,YAAY53G,GAU3Ct5F,YAAYJ,GAEV,UAAWA,IAAU,SAAU,CAC7BA,EAAQsgC,GAAW7zB,MAAMzM,EAAOS,KAAK88B,QAEvC,OAAO+C,GAAW/C,OAAOv9B,EAAOS,KAAK88B,QAQvCA,WAAWv9B,GACT,MAAMm7N,OACJA,GACE16N,KACJA,KAAKsR,IAAI,SAAU/R,GACnB,GAAIm7N,EAAQ,CACVA,EAAO59L,OAASv9B,GAGpBu9B,aACE,OAAO98B,KAAK0R,IAAI,UAElBuqN,oBACE,MAAO,CACLx3N,KAAMzE,KAAKuW,MACX1J,KAAM,OACNiwB,OAAQ98B,KAAK88B,SAMnBijM,GAAYkC,mBAAmBiG,GAAY,MAC3CA,GAAWvrJ,mBACXurJ,GAAWhgO,OAAS,aAKpB,IAAIigO,GAAuB,MAoC3B,MAAMC,WAAmBlP,GACvBj3K,sBACE,MAAO,CACLykC,KAAM,KACN2hJ,SAAU,MACV/uL,SAAU,KAGd+/B,oBACE,MAAO,CAKP,CACE50E,KAAM,gBACNG,aAAc,6BAMhB,CACEH,KAAM,kBACNG,aAAc,+BAMhB,CACEH,KAAM,0BAMR,CACEA,KAAM,yBAOR,CACEA,KAAM,aACNG,aAAc,KAMhB,CACEH,KAAM,cACNG,aAAc,2BACb,CACDH,KAAM,qBACNG,aAAc,uBAGlBiI,kBACE,MAAO,OAETlN,YAAYwY,EAAQyzD,GAClB1xD,SAASrb,WACT,MAAMkB,EAAKC,KAGXD,EAAGuoO,iBAAmBvoO,EAAGsiO,WACzBtiO,EAAGg1E,QAAQ,aAAc,OAEzB,GAAIh1E,EAAG2/N,SAAU,CACf3/N,EAAGwoO,iBAAmBxoO,EAAG2/N,SAE3B3/N,EAAG2/N,SAAW3/N,EAAGyoO,aAAaxzN,KAAKjV,GAOrCJ,aAAaqzN,GACX,MAAMjzN,EAAKC,MACTi2N,KACEA,EAAIlf,OACJA,EAAMunB,YACNA,EAAW3vD,IACXA,EAAGn8F,OACHA,EAAMkyJ,SACNA,GACE1R,EACJyV,EAAWj2J,EAAOjD,aAAa0mJ,EAAKrqJ,OACpC88J,GAAel2J,EAAOtD,QAAUu5J,EAASj5J,UACzCm5J,EAAc,CACZjqL,UAAW,qBAEb2I,EAAW,CAACshL,GACZx8N,EAAS,CACPuyC,UAAW,oBACXj+B,IAAK+xD,EAAOzsE,KAAO,IAAM,MACzBA,KAAMysE,EAAOzsE,KACbpH,OAAQ6zE,EAAO7zE,OACf0oD,SAAAA,GAEFuhL,EAAa,CACXC,oBAAqB,EACrBC,mBAAoB,EACpBC,kBAAmB,EACnBC,qBAAsB,GAE1B,IAAIC,EACF3gF,GACA/oJ,MACEA,GACEyzN,EACN,GAAIjzN,EAAGwoO,iBAAkB,CACvB,IAAIW,EACJ,MAAMC,EAAeppO,EAAGwoO,iBAAiBvV,GAEvCoW,GAAwBF,EAAwBjT,EAAKmT,wBAA0B,MAAQF,SAA+B,OAAS,EAAIA,EAAsBriO,KAAKovN,EAAM,CAClKoT,YAAaF,EACbpyB,OAAAA,IAEJkyB,SAAwBE,IAAiB,WAAaC,EAEtD7pO,EAAQ6pO,EAAuB,GAAKD,IAAiB,MAAQ7K,EAAY5sK,UAAYy3K,EAErFnW,EAAWmW,aAAeA,EAE5B,IAAKF,EAAgB,CACnB,IAAIt5K,EACJpwD,EAAQ2J,QAAQymD,EAASpwD,KAAW,MAAQowD,SAAgB,EAAIA,EAAS,IAE3E,GAAI+0K,EAAU,CACZ,OAAOnlO,EAET,IAAKizE,EAAOtD,OAAQ,CAClB,IAAIo6J,EACJ,MAAMZ,GAAel2J,EAAOpD,WAAW6mJ,EAAKrqJ,OAC1C29J,EAAkBb,EAAc3oO,EAAGypO,cAAgBzpO,EAAG0pO,gBACtDC,EAAgBhB,EAAc3oO,EAAG4pO,uBAAyB5pO,EAAG6pO,sBAC/DhB,EAAW,qBAAuB,EAClCA,EAAW,oBAAsBF,EACjCE,EAAW,oBAAsBF,EACjCE,EAAW,sBAAwBH,EAAS/lI,kBAC5C47H,EAAY1/K,UAAU7/B,IAAI,sBAC1BsoC,EAAS8mC,QAAQ,CACf1tE,IAAK,IACLi+B,UAAW,CACTmrL,kBAAmB,EACnBlqO,CAAC4pO,GAAkB,EACnBO,kBAAmBrB,EAAS/lI,mBAAqBlwB,EAAOnrB,WAAa,SAAWiiL,EAAmB92J,EAAOnrB,YAAc,MAAQiiL,SAA0B,GAAKA,EAAiBxqO,WAIpLqpO,GAAuB7/E,EAAU0qE,EAAW1qE,SAAW91E,EAAO81E,SAAWohF,MACpE,CAELpL,EAAY1/K,UAAU7/B,IAAI,oBAE1BupI,EAAU0qE,EAAW1qE,SAAW91E,EAAO81E,SAAWvoJ,EAAGgqO,YAEvD,GAAIzhF,EAAS,CACXjhG,EAASnvC,OAAOmvC,EAASvoD,OAAS,EAAG,EAAG,CACtC2hB,IAAK,IACLi+B,UAAW,CACTsrL,cAAe,EACfrqO,CAAC2oJ,GAAU,KAOjB,GAAIqmB,EAAIs7D,MAAO,CACbt7D,EAAIu7D,UAAUtB,GACd,IAAKp2J,EAAOtD,OAAQ,CAClBy/F,EAAIl/G,aAAa,iBAAkBi5K,GACnC,GAAIA,EAAa,CACf/5D,EAAIn/G,gBAAgB,iBACf,CACL,IAAK,MAAMqsK,KAAU5F,EAAKkU,SAAU,CAClC,IAAIC,EAAmBC,EACvB,MAAM3/K,EAAKikH,EAAI27D,SAASzO,GAGxB5jL,GAAUkkF,cAAczxE,EAAI,CAC1B6/K,aAAcH,EAAoB53J,EAAOnrB,YAAc,MAAQ+iL,SAA2B,GAAKA,EAAkBtrO,QAAUurO,EAAoB73J,EAAOnrB,YAAc,MAAQgjL,SAA2B,OAAS,EAAIA,EAAkBxgO,KAAIqmB,GAAK,GAAG+lM,EAAKtrN,MAAMkxN,KAAU3rM,EAAEvlB,OAAMV,KAAK,KAAO,UAQrS,GAAIg/N,GAAkBlpO,EAAGuoO,mBAAqB/oO,EAAMqM,SAAS,KAAM,CACjE,GAAIq9N,EAAgB,CAClBhrO,OAAOmZ,OAAOuxN,EAAappO,GAE7BopO,EAAYthL,SAAWshL,EAAYthL,UAAY,GAC/CshL,EAAYthL,SAAS8mC,QAAQ86I,EAAiB,KAAO1pO,OAGlD,CACHopO,EAAYhgL,KAAOppD,EAErB,MAAM44C,EAAUq6B,EAAO9C,WAAa3vE,EAAGyqO,YAAch4J,EAAOtD,OAASi5J,GAAuB,EAAM7/E,EAAU,GAAM,GAAM,GACxHn8I,EAAO9K,MAAQ,wBAAwB82C,MACvC,OAAOhsC,EAITxM,iBAAiBiN,GACf,MAAMT,EAAS+N,MAAMuE,iBAAiB7R,GAEtCT,EAAOuzN,SAAW1/N,KAAKuoO,iBACvB,OAAOp8N,GAGXjN,EAAgBkpO,GAAY,QAAS,cACrCrI,GAAYkC,mBAAmBmG,GAAY,MAC3CA,GAAWzrJ,mBACXyrJ,GAAWlgO,OAAS,aAcpB,MAAMuiO,WAAqB9uJ,GACzBtC,oBACE,MAAO,CAMP,CACE50E,KAAM,UACNq0E,SAAU,MAQZ,CACEr0E,KAAM,WACNq0E,SAAU,MAOZ,CACEr0E,KAAM,MACNq0E,SAAU,MAQZ,CACEr0E,KAAM,YACNq0E,SAAU,MAOZ,CACEr0E,KAAM,OACNq0E,SAAU,MAOZ,CACEr0E,KAAM,SACNq0E,SAAU,QAIhB2xJ,GAAa9tJ,mBACb8tJ,GAAaviO,OAAS,eAKtB,MAAMwiO,GAAuB,IAAIl5N,IAC/Bm5N,GAA8B,IAAIn5N,IAClCo5N,GAAmB,OACnBC,GAAc,CACZC,KAAM,WACNC,UAAW,gBACXC,aAAc,mBACdC,MAAO,aAETC,GAAe,SA0CjB,MAAMC,GAQJxrO,uBAAuBiiE,EAAcwpK,EAAc,MAAOC,EAAU,KAAMnjM,EAAK,MAE7EA,EAAK99B,EAAa41D,aAAa93B,GAAMjqC,OAAO4P,UAAUC,eAAejH,KAAK+6D,EAAc,UAAYA,EAAaxlD,QAAUwlD,EAAan9D,MAIxIyjC,EAAKA,EAAG19B,QAAQ0gO,GAAc,IAC9B,IAAK3jO,MAAMC,QAAQ6jO,GAAU,CAC3BA,EAAU,CAACA,GAAWT,IAExBS,EAAQrsO,SAAQqsO,IACd,MAAMx+N,EAAOg+N,GAAYQ,IAAYA,EACnCC,EAAsBZ,GAAqBh5N,IAAI7E,IAAS,IAAI2E,IAC5D+5N,EAA6BZ,GAA4Bj5N,IAAI7E,IAAS,IAAI2E,IAC5E85N,EAAoBh6N,IAAI42B,EAAI05B,GAC5B2pK,EAA2Bj6N,IAAIswD,EAAcwpK,GAC7CV,GAAqBp5N,IAAIzE,EAAMy+N,GAC/BX,GAA4Br5N,IAAIzE,EAAM0+N,MAU1C5rO,2BAA2B0rO,EAAUT,IACnC,MAAM/9N,EAAOg+N,GAAYQ,IAAYA,EACnCC,EAAsBZ,GAAqBh5N,IAAI7E,GAC/CklH,EAAW,GACb,GAAIu5G,EAAqB,CACvBA,EAAoBtsO,SAAQ,CAAC4iE,EAAc15B,IAAO6pF,EAAS7pF,GAAM05B,IAEnE,OAAOmwD,EASTpyH,kCAAkC0rO,EAAUT,IAC1C,MAAM/9N,EAAOg+N,GAAYQ,IAAYA,EACnCC,EAAsBZ,GAAqBh5N,IAAI7E,GAC/C0+N,EAA6BZ,GAA4Bj5N,IAAI7E,GAC/D,MAAMklH,EAAW,GACjB,GAAIu5G,GAAuBC,EAA4B,CACrDD,EAAoBtsO,SAAQ,CAAC4iE,EAAc15B,KACzC,GAAIqjM,EAA2B75N,IAAIkwD,GAAe,CAChDmwD,EAAS7pF,GAAM05B,MAIrB,OAAOmwD,EAYTpyH,2BAA2ByZ,GACzB,OAAOA,EAAS6D,MAAM2D,MAAMnV,QAAO,CAACsmH,EAAUy5G,IAAavtO,OAAOmZ,OAAO26G,EAAU/xH,KAAKyrO,oBAAoBD,KAAY,IAY1H7rO,kCAAkCyZ,GAChC,OAAOA,EAAS6D,MAAM2D,MAAMnV,QAAO,CAACsmH,EAAUy5G,IAAavtO,OAAO6I,QAAQ9G,KAAKyrO,oBAAoBD,IAAW//N,QAAO,CAACsmH,GAAW7pF,EAAI05B,MACnI,GAAI5hE,KAAK0rO,4BAA4B9pK,EAAc4pK,GAAW,CAC5Dz5G,EAAS7pF,GAAM05B,MACV,QACEmwD,EAAS7pF,GAElB,OAAO6pF,IACNA,IAAW,IAShBpyH,mCAAmCiiE,EAAcypK,EAAUT,IACzD,MAAM/9N,EAAOg+N,GAAYQ,IAAYA,EACnCE,EAA6BZ,GAA4Bj5N,IAAI7E,GAC/D,OAAO0+N,GAA8BA,EAA2B75N,IAAIkwD,IAAiB,MAWvFjiE,mCAAmCiiE,EAAcxoD,GAE/C,MAAMuyN,EAAYvyN,EAAS6D,MAAM2D,MAAM3O,QAAQkyF,UAC/C,IAAIh4F,EAAS,KACb,IAAK,IAAIvN,EAAI,EAAGykB,EAAMsoN,EAAU7sO,OAAQF,EAAIykB,GAAOlX,IAAW,OAAQvN,EAAG,CACvE,MAAM2sO,EAA6BZ,GAA4Bj5N,IAAIi6N,EAAU/sO,IAC7E,GAAI2sO,GAA8BA,EAA2BttN,IAAI2jD,GAAe,CAC9Ez1D,EAASo/N,EAA2B75N,IAAIkwD,IAG5C,OAAOz1D,GAAU,MAOnBxM,eACE+qO,GAAqBjsL,QACrBksL,GAA4BlsL,SAKhC,MAAMmtL,GAAsB,CACxB3zE,MAAO,EACP4zE,GAAI,GAENC,GAAmB,CACjBj0E,QAAS,EACTC,UAAW,EACXE,UAAW,EACXD,WAAY,EACZG,OAAQ,EACRD,MAAO,EACP+xD,IAAK,EACL6hB,GAAI,GAkJR,MAAME,WAAiB/nK,GAAUtE,KAE/B3xD,mBACE,MAAO,WAGT8T,2BACE,MAAO,CAMLksK,WAAY,KAOZ2mB,WAAY,WAMZs3B,2BAA4B,KAQ5BC,YAAa,KAMbC,SAAU,KAOVC,qBAAsB,KAOtBC,YAAa/3B,GAiBbp5D,aAAc,eAEdoxF,eAAgB,IAChBC,2BAA4B,OAIhC9rK,0BACE,MAAO,CACLppD,OAAQ,CAAC,eAAgB,gBAAiB,iBAC1C+jD,OAAQ,CAAC,mBAAoB,qBAAsB,sBACnDsF,MAAO,CAAC,iBAAkB,cAK9B9gE,UAAUs2N,EAAM99M,GACd+B,MAAMsB,UAAUy6M,EAAM99M,GACtB,MAAMpY,EAAKC,KACTusO,EAAgB,CACdC,WAAY,kBACZC,UAAW,cACXnwN,QAASvc,GAEbA,EAAGk2N,KAAOA,EACV,GAAIl2N,EAAGk7I,eAAiB,YAAa,CACnCsxF,EAAcxsO,EAAGk7I,cAAgB,qBAEnC,GAAIl7I,EAAGmsO,YAAc,yBAA0B/zN,GAAS,CACtDpY,EAAGosO,qBAAuB,MAE5BlW,EAAK9mM,GAAGo9M,GACRtW,EAAKY,WAAW1nM,GAAG,CACjBu9M,kBAAmB,kBACnBpwN,QAASvc,IAEXA,EAAG6nO,UAAU3R,EAAKrqJ,OAEpBjsE,UAAUisE,GACR5rE,KAAKupE,gBAAgB,SACrBqC,EAAMz8C,GAAG,CACP1qB,KAAM,QACNkpG,OAAQ,gBACRrxF,QAAStc,OAabL,cAAciN,GACZ,IAAIT,EAAS,KACb,GAAInM,KAAKo2M,cAAe,CAGtB+L,GAAcxpM,MAAQ3Y,KAAKo2M,cAAcskB,OAAOjmB,WAChD7nM,EAAQw6C,YAAcpnD,KAAKi2N,KAAK7uK,YAChCj7C,QAAeg2M,GAAcwqB,QAAQ//N,GACrCu1M,GAAcxpM,MAAQ,KAExB,OAAOxM,IAAWg2M,GAAcT,UAElC/hN,YAEEK,KAAKi2N,KAAKlyB,QAAQhpH,WAAW/7E,SAAQ+3M,IACnC,IAAI61B,GACHA,EAAsB71B,EAAO81B,eAAiB,MAAQD,SAA6B,OAAS,EAAIA,EAAoB7wN,aAEvH7B,MAAM8B,YAERrc,UAAUgiE,GACR,GAAIA,EAAS,CACX3hE,KAAK8sO,cAAc,MAErB5yN,MAAM6nD,UAAUJ,GAElB/B,aAAaA,GACX1lD,MAAM0lD,SAAWA,EAEnBA,eACE,MAAMq2J,KACJA,GACEj2N,KACJ,OAAOE,QAAQga,MAAM0lD,UAAYq2J,EAAKr2J,UAAYq2J,EAAKp9I,UASzDwiJ,gBACE,OAAOn7N,QAAQF,KAAKo2M,eAOtB22B,mBACE,IAAIC,EACJ,QAASA,EAAsBhtO,KAAKo2M,iBAAmB,MAAQ42B,SAA6B,OAAS,EAAIA,EAAoBx6J,SAAW,KAS1I7yE,kBAAiBgL,GACfA,EAAEw8L,KACFA,EAAI4P,OACJA,EAAMof,SACNA,EAAQuE,OACRA,IAEA,IAAImS,EACJ,MAAM9sO,EAAKC,MACTi2N,KACEA,EAAImW,YACJA,GACErsO,EAEN,IAAIktO,EAAal2B,EAAOk2B,WACtBC,EAAa,EAEf,GAAIn2B,EAAOo2B,mBAAoB,CAC7B,MAAMC,EAAejmC,EAAKn/L,cAAc+uM,EAAOo2B,oBAC/CD,EAAaE,EAAa74K,WAE5BmmK,EAAO3sC,WAAahuL,EAAGguL,WAEvB,MAAO8+C,EAAcI,KAAgB,MAAQJ,SAAqB,GAAKA,EAAYQ,UAAW,CAC5FJ,EAAal2B,EAAO78K,KAAK+yM,WAAab,EAAY/0N,OAAO+0N,EAAYl0J,aAAa,CAChFrrE,KAAMu/N,EAAYv/N,KAClBwtC,YAAa,KACbvkC,IAAK,gBACL2+L,WAAYimB,EACZhmB,WAAY,OACZG,cAAekC,EAAOlC,cACtBF,YAAa,MACbC,UAAW,MACXj8L,MAAOs9M,EACP5/K,MAAO,CACLA,MAAO,QACPvH,OAAQ,CAACo+L,EAAY,IAEvB7/M,UAAWttB,EAAGutO,qBAEd1hG,kBAAmB7rI,EAAGwtO,gBAAgBv4N,KAAKjV,GAE3C+1M,iBAAkB4kB,EAAO5kB,kBACxBm3B,IAGLA,EAAW5zL,UAAY48K,EAAKzmD,UAE5B,GAAIy9D,EAAWx4B,aAAeimB,EAAQ,CACpCuS,EAAWnrO,OAAOmrO,EAAWhqN,MAAM,IACnCgqN,EAAWluN,IAAI27M,GAGjBuS,EAAW52L,MAAMvH,OAAO,GAAKo+L,EAE7B,GAAIn2B,EAAOy2B,gBAAkB9S,EAAO+S,oBAAqB,CACvDz8L,GAAa08L,aAAahT,EAAQ,QAAS,MAAMn7N,IAC/C,MAAM62M,cACFA,GACEr2M,EACJ00M,EAAa2B,IAAkB,MAAQA,SAAuB,OAAS,EAAIA,EAAcskB,OAAOjmB,WAElG,GAAI2B,IAAkB,MAAQA,SAAuB,GAAKA,EAAcskB,OAAOj0I,UAAYz1C,GAAaxF,QAAQ4qK,EAAc5jI,OAAO4jI,EAAcW,OAAOxgM,OAAQhX,OAEhKk1M,IAAe,MAAQA,SAAoB,GAAKA,EAAWk5B,cAAgBl5B,EAAWjG,gBAAiB,CACvG4H,EAAc5jI,OAAO4jI,EAAcW,OAAOxgM,OAAShX,MAGvDm7N,EAAO+S,oBAAsB,KAE/BxvO,OAAOmZ,OAAO61N,EAAWx2L,QAAQ/f,QAAS,CACxCk3M,MAAOjjO,EACPwrN,SAAUA,EACV5/M,MAAOwgM,EAAOxgM,QAGhB02N,EAAWx4B,WAAWjnB,eAAiBupB,EAAOvpB,eAC9C,OAAOztL,EAAG26N,OAASuS,EAGrBttO,qBACE,MAAO,CACLw0L,SAAU,mBACV05C,QAAS,kBACTrlN,MAAO,gBACPslN,eAAgB,yBAChB50F,SAAU,mBACV60F,aAAc,uBACdpmN,OAAQ,iBACRqtL,WAAY,qBACZsB,WAAY,qBACZh6L,QAAStc,MAGbL,eACEZ,OAAQ27N,IAER,MAAM36N,EAAKC,KACTo2M,EAAgBr2M,EAAGq2M,cAAgBskB,EAAOsT,kBAC5C,GAAI53B,EAAe,CACjB,MAAM6f,KACJA,GACEl2N,EAGJ,GAAIA,EAAGk7I,eAAiB,YAAa,CACnCg7E,EAAK9mM,GAAG,CACN8+M,UAAW,2BACVluO,GAMLA,EAAGmuO,uBAAyB/zK,GAAepsC,YAAY,CACrDsnI,UAAW,WACX/4I,QAASvc,IAeXk2N,EAAK1oM,QAAQ,gBAAiB,CAC5B0oM,KAAAA,EACA7f,cAAAA,KAINz2M,uBAAuB8tE,GACrB,MAAMwoJ,KACFA,GACEj2N,KACJ06N,EAASjtJ,EAAQ1uE,OACjBq3M,EAAgBskB,EAAOsT,kBACzBvgK,EAAQwoJ,KAAOA,EACfxoJ,EAAQ2oI,cAAgBA,EAcxB,OAAO6f,EAAK1oM,QAAQ,uBAAwBkgD,GAE9C9tE,kBACEZ,OAAQ27N,IAER,MAAMzE,KACFA,GACEj2N,KACJo2M,EAAgBskB,EAAOsT,kBAEzB53B,EAAc72M,MAAQm7N,EAAOjmB,WAAWl1M,MAcxC02N,EAAK1oM,QAAQ,iBAAkB,CAC7B0oM,KAAAA,EACA7f,cAAAA,IAGJz2M,uBACE,MAAMy2M,cACJA,GACEp2M,KASJ,OAAOA,KAAKi2N,KAAK1oM,QAAQ,uBAAwB,CAC/C6oL,cAAAA,IAGJz2M,gBAAewwB,MACbA,IAEA,MAAMimL,cACJA,EAAa+3B,WACbA,EAAUlY,KACVA,GACEj2N,KACJ,IAAKmuO,EAAY,CASflY,EAAK1oM,QAAQ,iBAAkB,CAC7B0oM,KAAAA,EACA7f,cAAAA,EACAjmL,MAAAA,KAINxwB,oBAAmBZ,OACjBA,IAEA,MAAMgB,EAAKC,MACT2uK,IACEA,EAAGw4B,KACHA,GACEpoM,EAAOivO,kBAGb7mC,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKvoJ,UAAU98C,OAAO,aAClE6sK,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAI+P,UAAU,aACxD3+K,EAAGk2N,KAAK3nM,GAAG,CACT2/M,UAAW,0BACXG,eAAgB,gCACfruO,GACHA,EAAGmuO,yBAELvuO,oBAAmBZ,OACjBA,IAGAA,EAAOivO,kBAAoBhuO,KAAKo2M,cAAgB,KAUlDz2M,wBAAwB8kO,EAAU4J,GAChC,MAAMpY,KACFA,GACEj2N,MACJ4rE,MACEA,EAAKm4H,QACLA,GACEkyB,GACJI,eACEA,GACEtyB,EACN,IAAI6pC,EAAQnJ,EAAS95N,GACnBosM,EAAShT,EAAQs7B,6BAA6BoF,EAAStO,SAAUkY,GACnE,MAAOT,EAAO,CACZ,GAAI72B,EAAQ,CACV,GAAIA,EAAO2jB,QAAU3jB,EAAOu3B,QAAQ1iK,EAAMiB,QAAQ+gK,IAAS,CACzD,MAAO,CACLjjO,GAAIijO,EACJzX,SAAUpf,EAAOpsM,IAGrBosM,EAAShT,EAAQs7B,6BAA6BtoB,EAAQs3B,OACjD,CACL,MAAM77J,EAAS5G,EAAM6mG,YAAYgyD,EAAS95N,GAAI0jO,EAAW,MAAO,MAChET,EAAQp7J,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO7nE,GAC/D,GAAI6nE,EAAQ,CACVukI,EAASs3B,EAAYhY,EAAe,GAAKA,EAAeA,EAAev3N,OAAS,KAItF,OAAO,KASTa,gBACE,MAAM4uO,SAAyBvuO,KAAKisO,cAAgB,SAAWj7L,GAAazhC,MAAMvP,KAAKisO,aAAe,IACpGhW,KACEA,GACEj2N,KACJwyE,EAASyjJ,EAAKrqJ,MAAM7sD,IAAIwvN,GAAiB,GAG3C,IAAKtY,EAAKY,WAAWyN,UAAU9xJ,GAAS,CACtCyjJ,EAAKY,WAAW2X,wBAElB,OAAOh8J,EAkBT7yE,kBAAkBo7N,GAChBA,EAAc/6N,KAAKi2N,KAAKwY,qBAAqB1T,GAC7C,MAAMhkB,OACJA,EAAMvkI,OACNA,GACEuoJ,EAIJ,GAAIhkB,IAAW,MAAQA,SAAgB,GAAKA,EAAOnsJ,WAAamsJ,EAAO2jB,QAAUloJ,IAAWA,EAAO6T,eAAiB7T,EAAOqG,UAAYk+H,EAAOu3B,QAAQ97J,GAAS,CAG7J,MAAMjzE,EAAQizE,EAASukI,EAAOmlB,YAAY1pJ,GAAUA,EACpDv0E,OAAOmZ,OAAO2jN,EAAa,CACzBx7N,MAAOA,IAAUqD,UAAY,KAAOrD,EACpCm7N,OAAQ3jB,EAAO2jB,SAEjB,OAAOK,MACF,CACL,OAAO,OAcXp7N,mBAAmBo7N,EAAc,IAC/B,MAAMh7N,EAAKC,KAEX,IAAKD,EAAG6/D,SAAU,CAChB,IAAI8uK,EACJ,MAAMzY,KACJA,GACEl2N,EAEJ,GAAIixC,GAAagN,QAAQ+8K,GAAc,CACrCA,EAAYpwN,GAAKsrN,EAAK0Y,gBAAgBhkO,GAGxC,GAAIsrN,EAAKrqJ,MAAMynB,QAAU4iI,EAAKlkG,SAASrrC,KAAM,CAC3C,IAAIlV,EAAMo9J,EACV,MAAMp8J,GAAUhB,GAAQo9J,EAAkB7T,EAAYpwN,MAAQ,MAAQikO,SAAyB,EAAIA,EAAkB7T,EAAYvoJ,UAAY,MAAQhB,SAAc,EAAIA,EAAOykJ,EAAKrqJ,MAAMonB,MAAM+nI,EAAYpsD,KAC3Mn8F,SAAiByjJ,EAAK4Y,SAASr8J,GAEjC,MAAM4jI,EAAgBr2M,EAAG+uO,kBAAkB/T,GAG3C,IAAK3kB,EAAe,CAClB,OAAO,MAET,GAAIr2M,EAAGq2M,cAAe,CACpBr2M,EAAG+sO,gBAIL,MAAO4B,EAAoBzY,EAAKiJ,eAAiB,MAAQwP,SAA2B,GAAKA,EAAkBhjH,OAAO0qF,IAAiB,CACjI6f,EAAK8Y,UAAU34B,GAuBjB,GAAI6f,EAAK1oM,QAAQ,sBAAuB,CACtC0oM,KAAAA,EACA7f,cAAAA,MACK,MAAO,CACZ,OAAO,MAET,MAAMskB,EAAStkB,EAAcskB,OAAS36N,EAAGivO,iBAAiB54B,IACxDznC,IACEA,EAAGw4B,KACHA,EAAI30H,OACJA,GACE4jI,EAENskB,EAAOjmB,WAAW1gF,wBAA0B,MAC5C2mG,EAAOsT,kBAAoB53B,EAC3BskB,EAAO3gN,OAAOotL,GAGdA,EAAKvoJ,UAAU7/B,IAAI,aACnB4vJ,EAAIsgE,OAAO,aAGX,UAAYvU,EAAOwU,UAAU,CAC3BvwO,OAAQwoM,EACR5wL,MAAOmkN,EAAOjmB,WAAWhwM,MAAQ2xM,EAAcW,OAAOxgM,MACtDhX,MAAO62M,EAAc72M,MACrBizE,OAAAA,IACG,CAEH20H,EAAKvoJ,UAAU98C,OAAO,aACtB6sK,EAAI+P,UAAU,aAEhB,OAAO,KAET,OAAO,MAUT/+K,cAAcu2B,EAAS,MAAO2xJ,GAC5B,MAAM9nL,EAAKC,MACTo2M,cACEA,EAAaskB,OACbA,EAAMzE,KACNA,GACEl2N,EACN,GAAIq2M,EAAe,CAEjB,GAAIskB,EAAOlvF,cAAe,CAGxBzrI,EAAGq2M,cAAgB,KAEnB,IAAK6f,EAAK98M,cAAgBuhN,EAAOjmB,WAAW91I,KAAK1mB,GAAUwmB,iBAAiBw3J,IAAQ,CAClFh+K,GAAUmrE,sBAAsB6yG,EAAKl3J,cAEvCh/D,EAAGq2M,cAAgBA,EAErBr2M,EAAGouO,WAAaj4M,EAChBwkM,EAAO7kB,WAAWhuB,GAClB9nL,EAAGouO,WAAa,OAYpBxuO,sBACE,MAAMI,EAAKC,MACTo2M,cACEA,GACEr2M,EACN,IAAIoM,EAAS,MACb,GAAIiqM,EAAe,CACjB,MAAMW,OACJA,GACEX,EAMJr2M,EAAGovO,qBAAuB/4B,EAAcskB,OAAO9kB,aAAamB,EAAOq4B,aAAar4B,EAAOs4B,mBACvFljO,QAAepM,EAAGovO,2BAGZpvO,EAAGk2N,KAAKqZ,oBAEdvvO,EAAGovO,qBAAuB,KAE5B,OAAOhjO,EAUTxM,+BAA8BwwB,MAC5BA,EAAKo/M,aACLA,IAEA,MAAMxvO,EAAKC,KACX,GAAIi4C,GAAU4O,aAAc,OACpB9mD,EAAGyvO,gBACT,OAGF,GAAIzvO,EAAGovO,qBAAsB,CAC3B,OAGF,GAAIpvO,EAAGq2M,gBAAkBr2M,EAAGq2M,cAAcskB,OAAO/7J,KAAKxuC,EAAMxxB,QAAS,CACnE,GAAIoB,EAAG+uO,kBAAkBS,GAAe,CAGtC,SAAUxvO,EAAGyvO,gBAAiB,CAC5B,GAAIzvO,EAAGisO,2BAA4B,OAC3BjsO,EAAG0vO,aAAaF,QAIrB,CACHxvO,EAAGk2N,KAAK8Y,UAAUhvO,EAAGq2M,eACrBr2M,EAAG26N,OAAOjmB,WAAW3/I,aAElB,OACC/0D,EAAGyvO,kBASf7vO,mBACEZ,OAAQk3N,EAAIsZ,aACZA,EAAY5wO,OACZA,EAAMwxB,MACNA,EAAK4mL,OACLA,IAEA,GAAIA,EAAO24B,YAAa,CAEtB,OAEF,MAAM3vO,EAAKC,MACTk/N,YACEA,GACEn/N,EAAG8/D,OACT,GAAIlhE,EAAOslD,QAAQ,oBAAqB,CACtC,OAAO,WACF,GAAIhM,GAAU4O,cAAgB9mD,EAAG4vO,oBAAsBzQ,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY/3B,OAASh3K,EAAM23J,UAAY/nL,EAAGssO,eAAiBtsO,EAAG6vO,qBAAsB,OACpM7vO,EAAG0vO,aAAaF,QACjB,GAAIvvO,KAAKi7I,eAAiB,YAAa,OACtCl7I,EAAG8vO,mBAAmB,CAC1BN,aAAAA,EACA5wO,OAAAA,IAGJoB,EAAG4vO,iBAAmBzQ,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY/3B,KAC5FpnM,EAAG6vO,qBAAuBz/M,EAAM23J,UAIlCnoL,mBAAmBwwB,GACjB,GAAIA,EAAMxxB,OAAOslD,QAAQ,oBAAqB,CAC5CjkD,KAAK8sO,cAAclqO,UAAWutB,IAQlCxwB,0BAAyB4vO,aACvBA,EAAY5wO,OACZA,EAAMwxB,MACNA,IAEA,IAAI2/M,EACJ,MAAM15B,cACJA,EAAav2I,OACbA,GACE7/D,KACJ,GAAIrB,EAAOslD,QAAQ,qBAAuBhM,GAAU4O,cAAgB12B,EAAMtjB,OAAS,WAAY,CAC7F,OAGF,GAAIsjB,KAAW2/M,EAAwBjwK,EAAOkyD,SAASg+G,YAAc,MAAQD,SAA+B,OAAS,EAAIA,EAAsB70F,gBAAkB9qH,EAAMtjB,KAAM,CAC3K,OAEF,GAAIupM,EAAe,CAGjB,GAAIA,EAAc1qF,OAAO1rH,KAAKi2N,KAAKwY,qBAAqBc,YAA0BvvO,KAAKwvO,gBAAkB,CACvG,cAGExvO,KAAKyvO,aAAaF,GAO1B5vO,eAAc4yE,QACZA,EAAOC,OACPA,IAEA,MAAM4jI,cACJA,GACEp2M,KACJ,GAAIo2M,IAAkB,MAAQA,SAAuB,GAAKA,EAAcskB,OAAO9vK,UAAW,CACxF,GAAI4nB,IAAW4jI,EAAc5jI,QAAU4jI,EAAcskB,OAAO1+I,aAAazJ,EAAS,CAChF6jI,EAAcskB,OAAOsV,gBAS3BrwO,kBACE,MAAMI,EAAKC,MACTi2N,KACEA,EAAI7f,cACJA,GACEr2M,EACN,GAAIq2M,GAAiB6f,EAAKrrK,WAAaqrK,EAAKiJ,YAAa,CACvD,MAAM/3B,EAAO8uB,EAAKlvB,QAAQkvB,EAAKiJ,cAC7BxE,OACEA,GACEtkB,EAGN,GAAIjP,IAASuzB,EAAO3kB,YAAa,CAC/BK,EAAcmiB,MAAQpxB,EAItBhtI,GAAe+jG,qBACfw8D,EAAO3gN,OAAOotL,GACduzB,EAAOnyF,OAAO4+D,GACduzB,EAAO5lK,QACPqF,GAAekkG,wBACV,CACLt+J,EAAG+sO,kBAYTntO,uBAAuBwwB,GACrB,MAAMpwB,EAAKC,KAEX,GAAImwB,EAAM+hG,QAAS,CACjB,OAEF,IAAKnyH,EAAGq2M,cAAe,CACrB,MAAMn3M,IACFA,EAAG6jD,QACHA,GACE3yB,EACJ8/M,EAAYhxO,IAAQ,YAEpBitO,EAAWnsO,EAAGmsO,WAAappL,IAAY7jD,EAAIH,SAAW,GAAKmxO,IAC3D/Q,YACEA,GACEn/N,EAAGk2N,KAGT,IAAKiW,GAAYN,GAAoB3sO,KAASigO,IAAgBA,EAAYpG,aAAc,CACtF,SAAU/4N,EAAG0vO,aAAavQ,GAAc,CACtC,MAAMzqB,WACFA,GACE10M,EAAG26N,QACPv0F,MACEA,GACEsuE,EAEN,GAAIy3B,GAAY/lG,EAAO,CAGrBsuE,EAAW3d,mBAAmB3mK,GAC9B,IAAKA,EAAM0nK,iBAAkB,CAC3B1xD,EAAM5mI,MAAQ0wO,EAAY,GAAKhxO,EAC/Bw1M,EAAWzD,gBAAgB7gL,IAG/BA,EAAM21B,oBAadnmD,gBAAgBwwB,GACd,MAAMpwB,EAAKC,KAGX,OAAQmwB,EAAMlxB,KACZ,IAAK,QACHc,EAAGmwO,gBAAgB//M,GACnB,MACF,IAAK,KACHA,EAAM21B,iBACN/lD,EAAGyvO,gBACH,MACF,IAAK,SACHr/M,EAAM21B,iBACN/lD,EAAG+sO,cAAclqO,UAAWutB,GAC5B,MACF,IAAK,MACHpwB,EAAGowO,cAAchgN,GACjB,MAGJ,GAAI27M,GAAiB37M,EAAMlxB,KAAM,CAC/BkxB,EAAM+hG,QAAU,KAGlB,GAAI/hG,EAAM+hG,QAAS,CAEjB/hG,EAAM+sH,kBACN,OAAO,OAGXv9I,sBAAsBwwB,GACpB,MAAMpwB,EAAKC,MACTi2N,KACEA,GACEl2N,GACJyyE,OACEA,GACEzyE,EAAGq2M,cACTjmL,EAAM21B,iBACN31B,EAAM+sH,kBACN,IAAIkzF,EACJ,SAAUrwO,EAAGyvO,gBAAiB,CAE5B,GAAIzvO,EAAGmc,YAAa,CAClB,OAGF,IAAKnc,EAAGs7N,UAAW,CACjB,GAAIlrM,EAAM2yB,SAAW3yB,EAAM0yB,SAAW1yB,EAAMsiG,QAAUwjG,EAAKt3D,MAAO,CAGhE,OAGF,GAAIxuI,EAAMipF,SAAU,CAClBg3H,EAAWna,EAAKoa,oBAAoB,MAAO,KAAMlgN,EAAO,WAGrD,CAEH,GAAIpwB,EAAGksO,aAAez5J,IAAWyjJ,EAAKrqJ,MAAMxlC,KAAM,OAC1CrmC,EAAGuwO,gBAEX,IAAKvwO,EAAGmc,YAAa,CACnBk0N,EAAWna,EAAKoa,oBAAoB,KAAM,KAAMlgN,IAIpD,GAAIigN,GAAYrwO,EAAGosO,qBAAsB,CACvCpsO,EAAG0vO,aAAaW,MAKxBzwO,oBAAoBwwB,GAClBA,EAAM21B,iBACN,MAAM/lD,EAAKC,MACTk/N,YACEA,GACEn/N,EAAGk2N,KACT,GAAIiJ,EAAa,CACf,MAAMmP,GAAal+M,EAAMipF,SACzB,IAAIqrH,EAAW1kO,EAAGwwO,wBAAwBrR,EAAamP,GAEvD,IAAK5J,GAAY4J,GAAatuO,EAAGksO,YAAa,CAC5C,MAAMuE,QAA0CzwO,EAAGyvO,gBACnD,GAAIgB,IAAsC,KAAM,OACxCxwO,KAAKswO,gBAEX7L,GAAY1kO,EAAGmc,aAAenc,EAAGwwO,wBAAwBrR,EAAamP,IAG1E,GAAI5J,EAAU,CACZ,IAAIgM,EAAqB,KACzB,GAAI1wO,EAAGs7N,UAAW,CAChBoV,QAA2B1wO,EAAGyvO,gBAEhC,IAAKzvO,EAAGmc,aAAeu0N,EAAoB,CACzC1wO,EAAGk2N,KAAK8Y,UAAUtK,EAAU,CAC1BphH,QAAStjH,EAAGusO,6BAEd,UAAYvsO,EAAG0vO,aAAahL,GAAY,OAEhC1kO,EAAGowO,cAAchgN,OAMjCxwB,mBAAmBwwB,GACjB,GAAInwB,KAAKo2M,eAAiBp2M,KAAKi2N,KAAKya,sCAAsCvgN,GAAQ,CAChFnwB,KAAK8sO,iBAOTntO,uBAAuBwwB,GACrB,MAAMpwB,EAAKC,MACTi2N,KACEA,EAAIyE,OACJA,EAAMtkB,cACNA,GACEr2M,EACJ4wO,EAAS,IAAI5a,GAAS5lM,EAAMkzB,eAC5ButL,EAAsBD,EAAO1a,OAASA,GAAQl2N,EAAG+uO,kBAAkB6B,GAGrE,GAAIv6B,IAAkBskB,EAAO3kB,aAAe2kB,EAAO/7J,KAAKxuC,EAAMgvC,SAAU,CACtE,GAAIp/D,EAAG20M,aAAe,SAAU,CAC9B30M,EAAG+sO,cAAclqO,UAAWutB,QAIzB,IAAKpwB,EAAGovO,uBAAyBpvO,EAAGk7I,eAAiB,aAAel7I,EAAGk7I,eAAiB,cAAgB21F,GAAsB,OAC3H7wO,EAAGyvO,kBAIf7vO,gBAAgBwwB,GACd,MAAMuxF,EAASvxF,EAAM6tC,SACrB,GAAI0jD,IAAW1hH,KAAK06N,OAAOjmB,WAAY,CACrC,GAAIz0M,KAAK+tL,YAAcrsE,EAAOiwE,YAAcjwE,EAAO7oC,WAAa6oC,EAAO9hD,SAAU,CAC/E8hD,EAAOiwE,cAQbhyL,gBAAewwB,MACbA,IAEA,MAAMpwB,EAAKC,KACX,IAAKD,EAAGk2N,KAAK4a,cAAc94L,SAAS5nB,EAAMxxB,SAAWwxB,EAAM+yH,OAAQ,CACjE,IAAKnjJ,EAAG26N,OAAO/7J,KAAKxuC,EAAMxxB,QAAS,CACjC,GAAIoB,EAAG20M,aAAe,SAAU,CAC9B30M,EAAG+sO,cAAclqO,UAAWutB,OACvB,OACCpwB,EAAGyvO,mBAUjB7vO,qBAAqBwwB,GACnB,GAAIA,EAAMxxB,OAAOigD,UAAU7G,SAAS,0BAA4B/3C,KAAKo2M,cAAe,OAC5Ep2M,KAAKwvO,kBAMjBzD,GAAS7jO,OAAS,WAClBijO,GAAmB2F,gBAAgB/E,GAAU,MAyJ7C,MAAMgF,WAAiBl2E,GAErB9sJ,mBACE,MAAO,WAET8T,2BACE,MAAO,CAiCLi6I,aAAc,KA0Cd74I,MAAO,KACPpW,KAAM,QAQV2zD,0BACE,MAAMroD,EAAS+B,MAAMsmD,aACrBroD,EAAOsoD,MAAMjiE,KAAK,oBAClB,OAAO2Z,EAoDTxY,gBAAgBi9J,GACd,MAAM78J,EAAKC,MACTuvO,aACEA,EAAY5kO,GACZA,EAAEwlB,MACFA,GACEysI,EAIN78J,EAAG8/D,OAAOkvK,UAAUQ,EAAc,CAChCyB,UAAWjxO,EAAG8/D,OAAOg6H,WAAWlvL,GAChCwlB,MAAAA,IAEFjW,MAAMuhJ,gBAAgBmB,GAExBj9J,gBAAeo3M,OACbA,IAEA,OAAOA,GAAUA,EAAOk6B,wBAA0B,MAEpDtxO,iBAAiBwwB,GACf,MAAM+gN,EAAWlxO,KAAK6/D,OAAOsxK,qBAAqBhhN,GAElD,GAAI+gN,EAAU,CACZ,OAAOlgM,GAAa55B,OAAO8C,MAAMqhJ,iBAAiBprI,GAAQ+gN,IAG9DvxO,sBAAsBi9J,GACpB,IAAKA,EAAYpqF,QAAUoqF,EAAYpqF,OAAO6T,aAAc,CAC1Du2E,EAAY35I,MAAMmuN,UAAY,OAKlCzxO,kBAAiBsjB,MACfA,EAAK8zL,OACLA,EAAMvkI,OACNA,IAEA,MAAM3S,OACJA,GACE7/D,KACJ,GAAI+2M,IAAW,MAAQA,SAAgB,GAAKA,EAAOs6B,cAAe,CAChErgM,GAAaxhC,MAAMyT,EAAO8zL,EAAOs6B,eAEnC,IAAKxxK,EAAOgZ,SAAU,CACpB51D,EAAMmuN,UAAY,CAChBnmO,KAAM,eACN8tB,YAAa/4B,KACb4vH,KAAM,yBACN95G,IAAK,cACL29G,OAAQ,IACR7zD,SAAU4S,EAAOqG,SACjBy4J,OAAQ,IAAMzxK,EAAO+L,MAAM9pE,OAAO+9D,EAAOq8F,gBAAgB99J,QAAO8xB,IAAMA,EAAE2oD,cAI9E04J,eACE,OAAO,MAKXR,GAASnvK,aAAe,GACxBmvK,GAAS7oO,OAAS,WAClBijO,GAAmB2F,gBAAgBC,GAAU,KAAM,CAAC,OAAQ,cAC5D5F,GAAmB2F,gBAAgBC,GAAU,MAAO,CAAC,UAkDrD,MAAMS,WAAoB9xK,GAExB3xD,mBACE,MAAO,cAET8T,2BACE,MAAO,CAcL4vN,gBAAiB,MAKrB9xO,UAAUs2N,EAAM99M,GACd,MAAMpY,EAAKC,KACXka,MAAMsB,UAAUy6M,EAAMl2N,EAAG2xO,cAAcv5N,IAEzCxY,UACE,MAAMI,EAAKC,KACXD,EAAGypL,IAAMjwD,GAAQ1I,IAAI,CACnBoW,WAAYlnI,EAAG8/D,OAAOppB,QACtBywF,YAAa,mEACbigD,WAAY,IACZJ,WAAY,MACZjxK,IAAK,oBACLgxK,QAAS/mL,EAAG4xO,kBAAkB38N,KAAKjV,GACnCstB,UAAW,CACT84K,YAAa,gBACb7pL,QAASvc,IAEVA,EAAGwd,eACNxd,EAAGikM,YAAYjkM,EAAGypL,IAAK,CAAC,aAAc,SAExC7pL,eAAchB,OACZA,IAEA,MAAMo4M,EAAS/2M,KAAK6/D,OAAO+xK,qBAAqBjzO,GAEhD,OAAOo4M,EAAO06B,kBAAoB,OAASvxO,QAAQ62M,EAAO06B,iBAAmBzxO,KAAKyxO,iBAIpF9xO,cAAcwY,GACZ,UAAWA,IAAW,WAAY,CAChC,MAAO,CACLs5N,gBAAiBt5N,GAGrB,OAAOA,EAGTxY,UAAUwY,GACR+B,MAAMV,UAAUxZ,KAAK0xO,cAAcv5N,IAErCxY,YACEK,KAAKwpL,KAAOxpL,KAAKwpL,IAAIztK,UACrB7B,MAAM8B,YAERrc,UAAUgiE,GACR,IAAKA,EAAS,CACZ3hE,KAAK6xO,eACA,GAAI7xO,KAAKwpL,IAAK,CACnBxpL,KAAKwpL,IAAIztK,UACT/b,KAAKwpL,IAAM,KAEbtvK,MAAM6nD,UAAUJ,GAQlBhiE,mBAAkB6pL,IAChBA,EACA5iD,aAAc03F,EAAWnuM,MACzBA,IAEA,MAAMpwB,EAAKC,KACTwyE,EAASzyE,EAAG8/D,OAAOuiI,qBAAqBk8B,GACxCvnB,EAASh3M,EAAG8/D,OAAO+xK,qBAAqBtT,GACxCwT,EAAM,CACJxT,YAAAA,EACA9rJ,OAAAA,EACAukI,OAAAA,EACA5mL,MAAAA,EACAq5J,IAAAA,EACAuoD,YAAahyO,GAEjB,IAAIoM,EAEJ,IAAKpM,EAAGmnI,aAAe10D,IAAWzyE,EAAGiyO,YAAcx/J,EAAO6K,aAAet9E,EAAGkyO,sBAAwBl7B,IAAWh3M,EAAGmyO,WAAY,CAC5H,OAAOnyO,EAAGypL,IAAI9sD,MAEhB38H,EAAGiyO,WAAax/J,EAChBzyE,EAAGkyO,qBAAuBz/J,EAAO6K,WACjCt9E,EAAGmyO,WAAan7B,EAEhB,GAAIA,EAAO06B,gBAAiB,CAC1BtlO,EAAS4qM,EAAO06B,gBAAgBK,QAG7B,GAAI/xO,EAAG0xO,iBAAmB16B,EAAO06B,kBAAoB,MAAO,CAC/DtlO,EAASpM,EAAG0xO,gBAAgBK,GAG9B,GAAIhlO,EAAQwlB,UAAUnmB,GAAS,CAC7BpM,EAAGiyO,WAAajyO,EAAGkyO,qBAAuBlyO,EAAGmyO,WAAa,KAE5D,OAAO/lO,GAKXqlO,GAAYtpO,OAAS,cACrBijO,GAAmB2F,gBAAgBU,IAEnC,MAAMW,GAAsB,QAc5B,MAAMC,WAAwBpuK,GAAUtE,KACtC3xD,mBACE,MAAO,kBAGTvO,0BACE,MAAO,CAOLkiB,QAAS,KAOT5E,MAAO,GAKX0jD,0BACE,MAAO,CACL9iB,MAAO,CACLkqL,UAAW,YACXyK,YAAa,cACb7F,WAAY,uBACZ7+F,iBAAkB,oBAEpBv2H,OAAQ,CAAC,yBAA0B,yBAGvCzX,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChB,MACI0nD,OAAQo2J,GACNj2N,MACJ4rE,MACEA,GACEqqJ,EAEN,GAAIrqJ,EAAO,CACT5rE,KAAK4nO,UAAUh8J,IAGnBjsE,YACEK,KAAKqyO,cACLn4N,MAAM8B,YAERrc,UAAUisE,GACR5rE,KAAKsyO,SAAW,KAChB1mK,EAAMz8C,GAAG,CACP1qB,KAAM0tO,GACNxyO,CAAC,SAASK,KAAK6/D,OAAOioK,oBAAqB,iBAC1C9nO,MAELL,cACEK,KAAKupE,gBAAgB4oK,IAEvBI,6BACE,OAAOvyO,KAAKsyO,WAAa,MAAQtyO,KAAKuoL,WAAW,wBAEnD5oL,eAAcyyD,OACZA,IAEA,GAAIA,IAAW,OAAQ,CACrB,IAAIogL,EACJ,MAAMzyO,EAAKC,OACTD,EAAG0yO,gBAEL,IAAKD,EAAwBzyO,EAAG8/D,OAAOkyD,SAASq0G,YAAc,MAAQoM,SAA+B,GAAKA,EAAsBnX,UAAW,CACzIt7N,EAAG2yO,4BACE,IAAK3yO,EAAGwoL,WAAW,wBAAyB,CACjDxoL,EAAGgd,WAAW,uBAAwBhd,EAAG+c,SAK/Cnd,iBAAiB82C,EAAS82F,EAAUC,EAAWH,GAC7C,GAAIA,IAAa,EAAG,CAElBrtI,KAAKsyO,SAAW,KAChBtyO,KAAK0yO,wBAGT/yO,uBACE,MAAMI,EAAKC,KACTi2N,EAAOl2N,EAAG8/D,OACV4yK,EAAkB1yO,EAAG0yO,gBACvB,GAAI1yO,EAAGuyO,WAAaG,EAAiB,CACnC1yO,EAAGuyO,SAAWG,EACd,IAAIE,EAAWC,EACf,IAAK,MAAM77B,KAAUkf,EAAKlyB,QAAQsyB,eAAgB,CAChDsc,EAAY57B,EAAO47B,UACnB,GAAIA,EAAW,CACb,GAAIA,IAAc,KAAM,CACtBA,EAAY5yO,EAAG2hB,QAEjBu0M,EAAK2c,gBAAkBA,EAAkB,KACzC77B,EAAOgxB,mBAAmB4K,IAG9B,GAAIC,EAAiB,CACnB3c,EAAK2c,gBAAkB,MACvB3c,EAAK4c,uBAGT,GAAI9yO,EAAGwoL,WAAW,wBAAyB,CACzCxoL,EAAG2nB,aAAa,0BAMtB0qN,GAAgBvkO,UAAU4kO,gBAAkB,EAC5CL,GAAgBlqO,OAAS,kBACzBijO,GAAmB2F,gBAAgBsB,GAAiB,MAkBpD,MAAMU,WAA0B9uK,GAAUtE,KAExC3xD,mBACE,MAAO,oBAGTyyD,0BACE,MAAO,CACL9iB,MAAO,CAAC,WAKZ/9C,UAAUs2N,EAAM99M,GACd,GAAI89M,EAAKlkG,SAASghH,cAAe,CAC/B9c,EAAKlkG,SAASghH,cAAc5jN,GAAG,gBAAiBnvB,KAAKgzO,6BAA8BhzO,MAErFA,KAAKi2N,KAAOA,EACZ/7M,MAAMsB,UAAUy6M,EAAM99M,GAExBxY,YACE,MAAMI,EAAKC,KACX,GAAID,EAAGk2N,KAAKlkG,SAASghH,gBAAkBhzO,EAAGk2N,KAAKlkG,SAASghH,cAAc72N,YAAa,CACjFnc,EAAGkzO,0BAELlzO,EAAG02C,SAAW12C,EAAG02C,QAAQ30C,SACzB/B,EAAG02C,QAAU,KACbv8B,MAAM8B,YAERrc,UAAUgiE,GACR,GAAI3hE,KAAKkzO,YAAa,CACpB,GAAIvxK,EAAS,CACX3hE,KAAKizO,8BACA,CACLjzO,KAAKk/E,QAGThlE,MAAM6nD,UAAUJ,GAElBhiE,OACE,MAAMI,EAAKC,KACTi2N,EAAOl2N,EAAGk2N,KACZ,IAAKA,EAAKlkG,SAASghH,cAAe,CAChC,OAEFhzO,EAAGozO,gBAAkBld,EAAKlkG,SAASghH,cAAc5jN,GAAG,CAClDxvB,qBAAoB8tE,QAClBA,IAEA,MAAMspI,EAASkf,EAAKlyB,QAAQl3H,QAAQY,EAAQh3B,QAAQ/f,QAAQy/L,UAC5Dp2N,EAAGqzO,YAAYr8B,IAEjBs8B,eAAgB,EACd5lK,QAAAA,KACI1tE,EAAGuzO,OAAO7lK,GAChB8lK,gBAAiB,KACfxzO,EAAGyzO,eAELC,eAAgB,EACdhmK,QAAAA,MAEA,GAAIA,EAAQgpE,MAAO,CACjB12I,EAAGyzO,kBACE,CACLzzO,EAAG2zO,OAAOjmK,KAGdnxD,QAASvc,IAEXA,EAAGmzO,YAAc,KAEnBvzO,+BACEK,KAAKizO,0BAEPtzO,0BACE,MAAMI,EAAKC,KACXD,EAAGk2N,KAAKlkG,SAASghH,cAAczkN,GAAG,gBAAiBvuB,EAAGizO,6BAA8BjzO,GACpFA,EAAGozO,iBAAmBpzO,EAAGozO,kBACzBpzO,EAAGozO,gBAAkB,KAMvBxzO,SACE,IAAKK,KAAKkzO,YAAa,CACrBlzO,KAAKk/E,QAKTv/E,YAAYo3M,GACV,MAAMh3M,EAAKC,KACTq7I,EAAUt7I,EAAGk2N,KAAK0d,0BAA0B58B,EAAQ,IACpD68B,EAAS,GACX7zO,EAAG2nB,aAAa3nB,EAAG8zO,iBACnBx4F,EAAQr8I,SAAQkkJ,IACdA,EAAOj4I,KAAOi4I,EAAOnqH,YAAYoC,EAAE+nH,EAAOj4I,MAC1C,IAAImT,EAAQw1N,EAAO7iN,MAAK3S,GAASA,EAAMnT,OAASi4I,EAAO9kI,QACvD,IAAKA,EAAO,CACVA,EAAQ,CACNnT,KAAMi4I,EAAOnqH,YAAYoC,EAAE+nH,EAAO9kI,OAClCi9H,QAAS,IAEXu4F,EAAOp1O,KAAK4f,GAEdA,EAAMi9H,QAAQ78I,KAAK0kJ,MAErBnjJ,EAAG02C,QAAUwB,GAAU+b,OAAOj0D,EAAGk2N,KAAKx/K,QAAS12C,EAAG+yD,SAAS8gL,IAC3D7zO,EAAG6zO,OAASA,EACZ7zO,EAAGs7I,QAAUA,EACbt7I,EAAGg3M,OAASA,EAEdp3M,oBACE,MAAMI,EAAKC,KACTy2C,EAAU12C,EAAG02C,QACf,GAAIA,EAAS,CACXA,EAAQmI,UAAU7/B,IAAI,kBAChB+hC,GAAYsL,qBAAqB,CACrC3V,QAAAA,EACA0N,KAAM,YACN7nC,QAASvc,EAAG8/D,SAEdppB,EAAQ30C,SACR/B,EAAG02C,QAAU,MAKjB92C,OAAOw7H,GACL,IAAI24G,EACJ,MAAM/zO,EAAKC,KACX,GAAIm7H,EAAKwiC,UAAUrmH,wBAAwBnC,IAAMp1C,EAAGk2N,KAAKx/K,QAAQa,wBAAwBnC,IAAM,IAAK,CAClGp1C,EAAG02C,QAAQmI,UAAU7/B,IAAI,gBACpB,CACLhf,EAAG02C,QAAQmI,UAAU98C,OAAO,YAE9B,GAAI/B,EAAGg0O,eAAgB,CACrBh0O,EAAGg0O,eAAen1L,UAAU98C,OAAO,WACnC/B,EAAGg0O,eAAiB,KAEtB,IAAKD,EAAsB34G,EAAKv5E,iBAAmB,MAAQkyL,SAA6B,GAAKA,EAAoB7vL,QAAQ,wBAAyB,CAChJlkD,EAAG02C,QAAQmI,UAAU7/B,IAAI,WACzB,MAAMmkI,EAAS/nB,EAAKv5E,cAAcqC,QAAQ,oEAC1C,GAAIi/F,EAAQ,CACVA,EAAOtkG,UAAU7/B,IAAI,WACrBhf,EAAGg0O,eAAiB7wF,OAEjB,CACLnjJ,EAAG02C,QAAQmI,UAAU98C,OAAO,YAGhCnC,OAAOw7H,GACL,MAAMp7H,EAAKC,KACX,GAAIm7H,EAAKv5E,eAAiBu5E,EAAKv5E,cAAct/C,QAAQ,mEAAoE,CACvH,MAAM0xO,EAAW74G,EAAKv5E,cACpBshG,EAASnjJ,EAAGs7I,QAAQtqH,MAAKmyH,GAAUA,EAAOj1F,MAAQ+lL,EAASt9M,QAAQu3B,MACrE,GAAIi1F,EAAQ,CACV8wF,EAASp1L,UAAU7/B,IAAI,cACvBhf,EAAG8zO,gBAAkB9zO,EAAGgd,YAAW,KACjChd,EAAGyzO,cACHtwF,EAAOwwF,OAAO,CACZ38B,OAAQh3M,EAAGg3M,WAEZ,UAEA,CACLh3M,EAAGyzO,eAIP7zO,SAASi0O,GACP,OAAOzoE,GAAeG,GAAG;;;cAGfsoE,EAAO/pO,KAAIuU,GAAS+sJ,GAAeG,GAAG;;;sBAG9BltJ,EAAMi9H,QAAQxxI,KAAIo6L,GAAO94B,GAAeG,GAAG;iEACA24B,EAAIh2I,uBAAuBg2I,EAAIrkI;wCACxDqkI,EAAIr0E;8BACdq0E,EAAIh5L;;;;2CAISmT,EAAMnT;;;qBAMjD6nO,GAAkBlxK,aAAe,yBAEjCkxK,GAAkB5qO,OAAS,oBAC3BijO,GAAmB2F,gBAAgBgC,GAAmBpzO,EAAcwC,eAkBpE,MAAM+xO,WAAqBv0K,GAGzBc,0BACE,MAAO,CACLC,MAAO,CAAC,qBAAsB,8BAGlCw1J,WACE,OAAOj2N,KAAK6/D,OAUdlgE,qBAAqBwkO,GACnB,MAAMpkO,EAAKC,MACTk0O,uBACEA,GACEn0O,EACN,IAAIoM,EACJ,GAAIpM,EAAGo0O,cAAe,CAEpBhoO,EAASpM,EAAGk2N,KAAKme,QAAQvqO,KAAIgyN,IAC3B,MAAM93B,EAAUhkM,EAAGk2N,KAAKoe,WAAWxY,GAAQ93B,QAAQ68B,WACnD,MAAO,CACL31N,KAAMb,EAAaK,WAAWoxN,GAC9Bj0E,KAAM7nJ,EAAGu0O,gBAAgBvwC,GACzBnkI,SAAUmkI,EAAQjlM,SAAW,EAC7B+8N,OAAAA,MAGJ,GAAIqY,EAAwB,CAC1B/nO,EAAO3N,KAAK,CACVyM,KAAMlL,EAAGo7B,EAAE,iBACXysH,KAAM7nJ,EAAGw0O,gCAGR,GAAIx0O,EAAGy0O,WAAY,CAExB,MAAMC,EAAO,GACbtQ,EAAYvD,WAAW5hO,SAAQ+3M,IAC7BA,EAAO09B,MAAQltO,MAAMC,QAAQuvM,EAAO09B,OAAS19B,EAAOsxB,WAAa,OAAStxB,EAAO09B,KAAKz1O,SAAQyhB,IAC5F,IAAKg0N,EAAKh0N,GAAM,CACdg0N,EAAKh0N,GAAO,SAKlBtU,EAASlO,OAAOD,KAAKy2O,GAAMx8N,OAAOpO,KAAI4W,IAAG,CACvCxV,KAAMb,EAAaK,WAAWgW,GAC9BmnI,KAAM7nJ,EAAGu0O,gBAAgBv0O,EAAG20O,iBAAiBj0N,IAC7CA,IAAAA,EACA45I,gBAAiB,EACf1oJ,KAAAA,EACAgjO,OAAAA,MAEA50O,EAAG60O,eAAejjO,EAAMgjO,QAG5B,GAAIT,EAAwB,CAC1B/nO,EAAO3N,KAAK,CACVyM,KAAMlL,EAAGo7B,EAAE,iBACXysH,KAAM7nJ,EAAGw0O,+BAGR,CAELpoO,EAASpM,EAAGu0O,gBAAgBnQ,EAAYvD,YACxC,GAAIsT,EAAwB,CAC1B/nO,EAAO8W,MAAMzkB,QAAQwyC,GAAai5D,4BAA4BlqG,EAAGw0O,2BAGrE,OAAOpoO,EAETxM,wBACE,MAAMI,EAAKC,MACTi2N,KACEA,GACEl2N,GACJgkM,QACEA,EAAOn4H,MACPA,GACEqqJ,GACJ17I,WACEA,GACE3O,GACJwT,UACEA,GACE7E,EACJpuE,EAAS,GACX,IAAK,IAAIvN,EAAI,GAAGE,OACZA,GACEsgF,EAAWxgF,EAAIE,EAAQF,IAAK,CAChC,MAAM2X,EAAQ6oE,EAAUxgF,GACtBu0C,EAAY58B,EAAM9R,KACpB,IAAKs/L,EAAQryL,IAAIyhC,GAAY,CAE3B,IAAK58B,EAAMuiE,SAAU,CACnB3sE,EAAOgnC,GAAa,CAClBloC,KAAMsL,EAAMtL,MAAQb,EAAa03N,SAASvrN,EAAM9R,MAChDuxJ,QAAS,MACT2nE,SAAUxtM,IACR,MAAM4mL,EAAShT,EAAQryL,IAAIyhC,GAC3B,GAAI4jK,EAAQ,CACVA,EAAO5mL,EAAM6lI,QAAU,OAAS,cAC3B,CACL+tC,EAAQhlL,IAAIglL,EAAQ8wC,uBAAuBt+N,EAAO,CAChDslN,OAAQ97N,EAAG+0O,UAAUjZ,UAGzB1rM,EAAM+B,QAAU,UAM1B,OAAO/lB,EASTxM,iBAAiB8gB,GAEf,OAAOzgB,KAAKi2N,KAAKlyB,QAAQ9xH,QAAQ7zE,QAAO24M,GAAUA,EAAO09B,MAAQltO,MAAMC,QAAQuvM,EAAO09B,OAAS19B,EAAO09B,KAAK7oO,SAAS6U,IAAQs2L,EAAOsxB,WAAa,QAMlJ1oO,eAAegS,EAAMgjO,GACnB,MAAM5wC,EAAU/jM,KAAK00O,iBAAiB/iO,EAAK8O,KAC3CsjL,EAAQ/kM,SAAQ+3M,IACd,MAAMg+B,EAAUpjO,EAAKsR,MAAM8N,MAAKgkN,GAAWA,EAAQh+B,SAAWA,IAC9D,GAAIg+B,EAASA,EAAQ/+E,QAAU+gD,EAAOv0G,SAAW,QAOrD7iG,gBAAgBokM,GACd,IAAIixC,EAAgBjxC,EAAQjlM,OAAS,GAAKilM,EAAQ,GAAG83B,OACrD,MAAM5F,KACFA,GACEj2N,KACJijB,EAAQ8gL,EAAQt4L,QAAO,CAACwX,EAAO8zL,KAC7B,MAAMk+B,EAAkBhf,EAAKlyB,QAAQsyB,eAAej4N,QAAOqiO,GAAOA,EAAI5E,SAAW9kB,EAAO8kB,SACxF,GAAI9kB,EAAOsxB,WAAa,MAAO,CAC7B,MAAM6M,EAAa,CACjBjf,KAAAA,EACAlf,OAAAA,EACA9rM,KAAM8rM,EAAO6lB,WACb5mE,QAAS+gD,EAAOv0G,SAAW,KAC3B5iC,SAAUm3I,EAAOv0G,SAAW,MAAQyyI,EAAgBn2O,SAAW,EAC/DgX,IAAKihM,EAAO8kB,SAAWmZ,EAAgB,cAAgB,IAEzDA,EAAgBj+B,EAAO8kB,OACvB,GAAI9kB,EAAO1vJ,WAAa0vJ,EAAO8iB,cAAe,CAC5Cqb,EAAWttF,KAAO5nJ,KAAKs0O,gBAAgBv9B,EAAO1vJ,UAEhDpkC,EAAMzkB,KAAK02O,GAEb,OAAOjyN,IACN,IACL,MAAO,CACLnN,IAAK9V,KAAKm1O,QACVlyN,MAAAA,GAUJtjB,oBAAmBo3M,OACjBA,EAAM9zL,MACNA,IAEA,MAAMljB,EAAKC,MACT+jM,QACEA,GACEhkM,EAAGk2N,KAOTl2N,EAAG+0O,UAAY/9B,EACf,GAAIA,EAAOq+B,mBAAqB,OAASrxC,EAAQp8L,MAAK84N,GAAOA,EAAI4H,WAAW,CAE1EplN,EAAMoyN,aAAe,CACnBpqO,KAAM,iBACN8tB,YAAah5B,EACb6vH,KAAM,2BACN95G,IAAK,cACL29G,OAAQ,IACRm0B,KAAM7nJ,EAAGu1O,qBAAqBvxC,GAC9B45B,SAAU59N,EAAGw1O,eACb31K,SAAU7/D,EAAG6/D,UAIjB,GAAIm3I,EAAOsxB,WAAa,QAAUtxB,EAAOzkM,OAAOunN,cAAe,CAC7D,MAAMob,EAAkBlxC,EAAQsyB,eAAej4N,QAAOqiO,GAAOA,EAAI5E,SAAW9kB,EAAO8kB,SACnF54M,EAAMuyN,WAAa,CACjBvqO,KAAM,gBACN8tB,YAAah5B,EACb6vH,KAAM,+BACN6D,OAAQ,IACR7zD,SAAUq1K,EAAgBn2O,SAAW,GAAKiB,EAAG6/D,SAC7C0xK,OAAQ,IAAMv6B,EAAOplF,SAS3BhyH,gBAAeioJ,KACbA,EAAIj2I,KACJA,EAAIqkJ,QACJA,IAEA,GAAI91J,QAAQyR,EAAKolM,OAAOv0G,WAAawzD,EAAS,CAC5C,IAAIy/E,EAAsBC,EAC1B/jO,EAAKolM,OAAO/gD,EAAU,OAAS,UAC/B,MAAMigE,KACFA,EAAIlf,OACJA,GACEplM,GACJoyL,QACEA,EAAOhyE,SACPA,GACEkkG,EAEJ0f,EAAe/tF,EAAK3kI,MAEpBgyN,EAAkBlxC,EAAQsyB,eAAej4N,QAAOqiO,GAAOA,EAAI5E,SAAWlqN,EAAKolM,OAAO8kB,SAElF+Z,IAAaH,EAAuB1jH,EAAS8jH,cAAgB,MAAQJ,SAA8B,OAAS,EAAIA,EAAqBr1K,UAAY2xD,EAAS8jH,WAAWjuF,KAAKtc,UAAUkqG,WAEtL,GAAIP,EAAgBn2O,SAAW,EAAG,CAChC,MAAMg3O,EAAkBH,EAAa5kN,MAAK+nI,GAAYA,EAASi+C,SAAWk+B,EAAgB,KAC1F,GAAIa,EAAiB,CACnBA,EAAgBl2K,SAAW,KAG7B,GAAIg2K,GAAY7+B,EAAO8kB,SAAWlqN,EAAKolM,OAAO8kB,OAAQ,CACpD+Z,EAASh2K,SAAW,UAInB,CACHq1K,EAAgBj2O,SAAQyhO,IACtB,MAAMsV,EAAcJ,EAAa5kN,MAAKqrC,GAAWA,EAAQ26I,SAAW0pB,IACpE,GAAIsV,EAAa,CACfA,EAAYn2K,SAAW,UAG3B,GAAIg2K,GAAY7+B,EAAO8kB,SAAWlqN,EAAKolM,OAAO8kB,OAAQ,CACpD+Z,EAASh2K,SAAW,QAIvB81K,EAAa/jO,EAAKi2I,QAAU,MAAQ8tF,SAAoB,OAAS,EAAIA,EAAWh7G,YAAWq6G,IAC1FA,EAAQ/+E,QAAUA,KAEpB,MAAMggF,EAAapuF,EAAKjvI,MACxB,GAAIq9N,GAAcA,EAAWj/B,SAAWA,EAAOzkM,OAAQ,CACrD0jO,EAAWhgF,QAAU2/E,EAAahuO,MAAKotO,GAAWA,EAAQ/+E,UAAY,SAQ5Er2J,0BAA0Bo3M,EAAQ9zL,GAChC,MAAMgyN,EAAkBj1O,KAAKi2N,KAAKlyB,QAAQsyB,eAAej4N,QAAOqiO,GAAOA,EAAI5E,SAAW9kB,EAAO8kB,SAC7F,GAAI9kB,EAAOsxB,WAAa,OAAS4M,EAAgBn2O,OAAS,EAAG,CAC3DmkB,EAAMzkB,KAAK,CACTyM,KAAM,qBACNgjD,IAAK,aACL7vC,MAAO,YACP2a,YAAa/4B,KACb4vH,KAAM,+BACN6D,OAAQ,IACRigH,OAAQ,EACN38B,OAAAA,KACIA,EAAOplF,SAGjB,OAAO1uG,GAIX/jB,EAAgB+0O,GAAc,QAAS,gBACvC/0O,EAAgB+0O,GAAc,eAAgB,CAM5CE,cAAe,MAOfK,WAAY,MAWZN,uBAAwB,MACxBiB,QAAS,oCAEXlB,GAAa/rO,OAAS,eACtBijO,GAAmB2F,gBAAgBmD,GAAc,MA+BjD,MAAMgC,WAAqBv2K,GACzB//D,YACE,IAAIu2O,GACHA,EAAel2O,KAAK06N,UAAY,MAAQwb,SAAsB,OAAS,EAAIA,EAAan6N,UACzF7B,MAAM8B,YAERwkD,0BACE,MAAO,CACL9iB,MAAO,CAAC,uBAGZ/9C,oBAAmBsjB,MACjBA,EAAK8zL,OACLA,IAEA9zL,EAAMkzN,OAAS,CACb1iH,OAAQ,IACR7D,KAAM,wBACN3kH,KAAMjL,KAAKm7B,EAAE,aACbykC,SAAUm3I,EAAOl+H,SACjBy4J,OAAQ,IAAMtxO,KAAKkvO,UAAUn4B,IAGjCp3M,UAAUo3M,GACR,GAAIA,aAAkBppJ,MAAO,CAC3B,IAAIyoL,EAEJr/B,GAAUq/B,EAAwBp2O,KAAK6/D,OAAOw2K,uBAAuBt/B,MAAa,MAAQq/B,SAA+B,OAAS,EAAIA,EAAsBr/B,OAE9J,GAAIA,EAAQ,CACV,GAAIA,EAAOl+H,SAAU,CAEnB,OAAO,MAET,MAAM8jJ,YACJA,GACE5lB,EACJ,IAAI2jB,OACFA,GACE16N,KACJ,IAAK06N,EAAQ,CACX16N,KAAK06N,OAASA,EAAS,IAAIrmB,GAAO,CAChC17L,MAAO3Y,KAAK6/D,OACZxpB,MAAO,CACLA,MAAO,WAIbqkL,EAAO3gN,OAAO4iN,GACdjC,EAAOwU,UAAU,CACfvwO,OAAQg+N,EACRnqJ,OAAQukI,EACRxgM,MAAO,WAKfrX,EAAgB+2O,GAAc,QAAS,gBACvC/2O,EAAgB+2O,GAAc,eAAgB,CAK5Cn2K,OAAQ,CACN+rK,GAAI,eAGRoK,GAAa/tO,OAAS,eACtBijO,GAAmB2F,gBAAgBmF,GAAc,OAkBjD,MAAMK,WAAsBtyK,GAAUtE,KACpC//D,eAAe4b,GACbrB,SAASqB,GACTrc,EAAgBc,KAAM,kBAAmB,CAAC,+BAAgC,aAE5EL,YACE,IAAI42O,EAAkBC,GACrBD,EAAmBv2O,KAAKy2O,cAAgB,MAAQF,SAA0B,OAAS,EAAIA,EAAiB1zE,cAAc9mJ,WACtHy6N,EAAoBx2O,KAAKy2O,cAAgB,MAAQD,SAA2B,OAAS,EAAIA,EAAkBz6N,UAC5G7B,MAAM8B,YAERi6M,WACE,OAAOj2N,KAAK6/D,OAMdlgE,OACE,MAAMI,EAAKC,MACTi2N,KACEA,GACEl2N,EACJ22O,EAASzgB,EAAKx/K,QACdwmH,EAAahlH,GAAUoP,SAASqvL,EAAQ,mBAC1Cz5E,EAAWz+J,QAAQy5C,GAAUoP,SAASqvL,EAAQ,4BAC9C,GAAI32O,EAAG02O,WAAY,CAEjB12O,EAAG02O,WAAWx5E,WAAaA,MACtB,CACLl9J,EAAG02O,WAAa,IAAIlzE,GAAW,CAC7B9+J,KAAM,gBACN0/C,KAAM,YACNs/G,cAAe,GACfvE,eAAgB,iBAChB7B,eAAgB44D,EAChBxyK,UAAWwyK,EACXxlK,aAAcwlK,EAAK0gB,gBACnBjzE,iBAAkB,CAChB6B,YAAa,CAAC,CACZ9uH,QAAS,qBAGbosH,cAAeqhB,GAAcrzD,IAAI,CAC/B1kE,UAAW,aACX1V,QAASw/K,EAAK0gB,kBAEhB15E,WAAAA,EACAt9J,mBAAmB82C,GACjB,MAAMvhB,EAAQh1B,QAAQu2C,EAAQwN,QAAQlkD,EAAG62O,gBAAgB3sO,KAAK,OAC9D,GAAIirB,GAASn1B,EAAG6/D,SAAU,CACxB,OAAO,MAET,MAAMi3K,EAAWpgM,EAAQwN,QAAQjkD,KAAKk/J,gBACpC63C,EAAS8/B,GAAY5gB,EAAKlyB,QAAQl3H,QAAQgqK,EAASngN,QAAQy/L,UAC3DrkN,GAAUilM,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOrnI,cAAgB,GAAKumJ,EAAKkU,SAASpzB,EAAO8kB,QAAQ93B,QAAQ//K,QAAU,EAOvI,OAAO9jB,QAAQ62M,IAAWA,EAAOxgF,YAAc,QAAUzkH,GAE3DorJ,eAAgB,8CAChB7vI,UAAW,CACTypN,gBAAiB/2O,EAAGg3O,kBACpBjzG,UAAW/jI,EAAGi3O,YACd17D,KAAMv7K,EAAGuzO,OACT2D,KAAMl3O,EAAG2zO,OACTp3N,QAASvc,KAGbA,EAAGikM,YAAYjkM,EAAG02O,WAAY,CAAC,YAAa,OAAQ,OAAQ,SAAU,eAM1Ej2K,0BACE,MAAO,CACL9iB,MAAO,CAAC,UAAW,mBAKvB/9C,QAAO8tE,QACLA,EAAOt9C,MACPA,IAEA,MAAMpwB,EAAKC,KACTk3O,EAAe5qL,GAAOC,YAAYp8B,EAAMxxB,OAAQ,cAElD,GAAIu4O,IAAiB,MAAQA,SAAsB,GAAKA,EAAa/a,QAAQgb,cAAe,CAC1F1pK,EAAQgpE,MAAQ,MAChB,OAGF,IAAK12I,EAAGk2N,KAAKlkG,SAASqlH,kBAAmB,CACvC3pK,EAAQgpE,MAAQv2I,QAAQiwB,EAAMxxB,OAAOslD,QAAQ,qBAGjDtkD,mBAAkB8tE,QAChBA,EAAOt9C,MACPA,IAEA,MAAMsmB,QACFA,GACEg3B,EACJspI,EAAStpI,EAAQspI,OAAS/2M,KAAK6/D,OAAOkkI,QAAQl3H,QAAQp2B,EAAQ/f,QAAQy/L,UAUxE,OAAOn2N,KAAK6/D,OAAOtyC,QAAQ,wBAAyB,CAClDwpL,OAAAA,EACA5mL,MAAAA,IAGJxwB,aAAY8tE,QACVA,EAAOt9C,MACPA,IAEA,MAAMpwB,EAAKC,MACTi2N,KACEA,GACEl2N,GACJg3M,OACEA,GACEtpI,EACN,IAAKwoJ,EAAKlkG,SAASqlH,kBAAmB,CACpC,MAAMC,EAAqBphB,EAAKx/K,QAAQzuC,cAAc,4BAA4BsvC,wBAClFv3C,EAAG02O,WAAWj4E,KAAO64E,EAAmBliM,IACxCp1C,EAAG02O,WAAW5wH,KAAOwxH,EAAmBhiM,OAE1C4gL,EAAK0gB,gBAAgB/3L,UAAU7/B,IAAI,qBACnC0uD,EAAQkwF,UAAUt8J,MAAMm0M,SAAWv9J,GAAUC,cAAcu1B,EAAQh3B,QAAS,YAS5Ew/K,EAAK1oM,QAAQ,kBAAmB,CAC9BwpL,OAAAA,EACA5mL,MAAAA,IAOJxwB,QAAO8tE,QACLA,EAAOt9C,MACPA,IAEA,IAAKs9C,EAAQgpE,MAAO,CAClB,OAAOz2I,KAAKs3O,cAAc,CACxB7pK,QAAAA,IAGJ,MAAM1tE,EAAKC,MACTi2N,KACEA,GACEl2N,EACJ02C,EAAUg3B,EAAQmwF,SAClB25E,EAAW9pK,EAAQ9uE,OAAOslD,QAAQ,kBAClCuzL,EAAWvhB,EAAKlyB,QAAQryL,IAAI6lO,EAAS7gN,QAAQqgL,QAC7C0gC,EAAWhqK,EAAQ6wF,UAAU5nI,QAAQmlM,QAAU2b,EAAS3b,OACxDz/J,EAAUqR,EAAQ/Z,aAClBqjJ,EAASkf,EAAKlyB,QAAQl3H,QAAQp2B,EAAQ/f,QAAQy/L,UAC9CnjJ,EAAY+jI,EAAOzkM,OACnBohD,EAAe0I,EAAU65J,EAAKlyB,QAAQl3H,QAAQzQ,EAAQ1lC,QAAQy/L,UAAYF,EAAKkU,SAASsN,GAAU1zC,QAAQ39J,KAAKyiB,YACjH,IAAI4nB,EACJ,GAAI/c,EAAc,CAChB+c,EAAY/c,EAAaphD,WACpB,CACL,MAAMolO,EAAYH,EAAS//L,cAAcyM,QAAQ,kBACjD,GAAIyzL,EAAW,CACbjnK,EAAYwlJ,EAAKlyB,QAAQl3H,QAAQ6qK,EAAUhhN,QAAQy/L,cAC9C,CACL1lJ,EAAYwlJ,EAAKlyB,QAAQrzH,UAG7BulJ,EAAK0gB,gBAAgB/3L,UAAU98C,OAAO,qBAEtC20C,EAAQ30C,SAER,IAAIojH,EAASuyH,IAAa1gC,EAAO8kB,QAAU7oJ,IAAcvC,IAAc+mK,IAAazgC,EAAO1mI,iBAAmB3c,IAAiBqjJ,EAAOluJ,aAYtIq8D,EAASA,GAAU+wG,EAAK1oM,QAAQ,2BAA4B,CAC1DwpL,OAAAA,EACAtmI,UAAAA,EACA/c,aAAAA,EACAvjC,MAAAA,MACK,MACP,IAAK+0F,EAAQ,CAEXA,GAAUz0C,EAAUc,YAAYwlI,EAAQrjJ,GAE1C+Z,EAAQgpE,OAASvxB,EACjB,IAAKA,EAAQ,CACX6xF,EAAO8kB,OAAS4b,EAEhB,GAAIzkK,EAAU3rB,SAASvoD,SAAW,EAAG,CACnCk0E,EAAU1gE,OAAOnM,YAAY6sE,IAgBjCijJ,EAAK1oM,QAAQ,aAAc,CACzBwpL,OAAAA,EACAtmI,UAAAA,EACA/c,aAAAA,EACA+iF,MAAOhpE,EAAQgpE,MACftmH,MAAAA,IAOJxwB,gBACEK,KAAKi2N,KAAK0gB,gBAAgB/3L,UAAU98C,OAAO,qBAQ7CnC,iBAEEK,KAAKk/E,OAMPv/E,UAEEK,KAAKk/E,QAIThgF,EAAgBo3O,GAAe,QAAS,iBACxCA,GAAc10K,aAAe,mBAC7B00K,GAAcpuO,OAAS,gBACvBijO,GAAmB2F,gBAAgBwF,GAAe,MAkBlD,MAAMqB,WAAqBj4K,GACzB3xD,mBACE,MAAO,eAETvO,0BACE,MAAO,CAOLo4O,WAAY,QAIhBj4O,UAAUs2N,EAAM99M,GACd,MAAMpY,EAAKC,KACXD,EAAGk2N,KAAOA,EACV/7M,MAAMsB,UAAUy6M,EAAM99M,GACtBpY,EAAG83O,QAAU,IAAI3wE,GAAa,CAC5BziK,KAAM,eACNy6J,eAAgB,iBAChB55B,eAAgB,+BAChB70E,aAAcwlK,EAAKx/K,QACnBgN,UAAWwyK,EACX5oM,UAAW,CACTyqN,kBAAmB/3O,EAAGg4O,oBACtBC,YAAaj4O,EAAGk4O,cAChBC,SAAUn4O,EAAGo4O,WACb/mH,OAAQrxH,EAAGq4O,SACX97N,QAASvc,KAIfJ,YACE,IAAI04O,GACHA,EAAgBr4O,KAAK63O,WAAa,MAAQQ,SAAuB,OAAS,EAAIA,EAAct8N,UAC7F7B,MAAM8B,YAGRrc,iBAAiBi4O,GACf,GAAIA,IAAe,OAAQ,CACzB,OAAQl4O,EAAcgE,eAExB,OAAOk0O,EAGTj4O,sBACE,OAAQK,KAAK4/D,SAEfjgE,eAAc8tE,QACZA,IAEA,MAAMwoJ,KACFA,EAAI4hB,QACJA,GACE73O,KACJ+2M,EAAStpI,EAAQspI,OAASkf,EAAKlyB,QAAQl3H,QAAQY,EAAQh3B,QAAQ/f,QAAQy/L,UACzE0hB,EAAQv+L,SAAWy9J,EAAOz9J,SAE1Bm0B,EAAQh3B,QAAQp1C,MAAMi4C,SAAW,GACjC28K,EAAKx/K,QAAQmI,UAAU7/B,IAAI,qBAM7Bpf,YAAW8tE,QACTA,IAEA,GAAIA,EAAQgpE,OAASz2I,KAAK43O,WAAY,CACpC53O,KAAKi2N,KAAK2c,gBAAkB,KAC5BnlK,EAAQspI,OAAO7vM,MAAQumE,EAAQ8/D,UAOnC5tI,UAAS8tE,QACPA,IAEA,MAAMwoJ,KACFA,GACEj2N,MACJ+2M,OACEA,GACEtpI,EACNwoJ,EAAKx/K,QAAQmI,UAAU98C,OAAO,qBAC9B,GAAI2rE,EAAQgpE,MAAO,CACjB,GAAIz2I,KAAK43O,WAAY,CACnB3hB,EAAK2c,gBAAkB,MACvB3c,EAAK4c,0BACA,CACL97B,EAAO7vM,MAAQumE,EAAQ8/D,YAO/BoqG,GAAazvO,OAAS,eACtBijO,GAAmB2F,gBAAgB6G,GAAc,MAejD,MAAMW,WAA8B7sH,GAElC19G,mBACE,MAAO,wBAGTlB,kBACE,MAAO,wBAKTlN,iBACE,MAAMI,EAAKC,KACX,IAAKD,EAAGk2N,KAAM,CACZ,MAAM,IAAIvlN,MAAM,GAAG3Q,EAAGsQ,YAAYtC,2CAEpChO,EAAGm3M,QAAUn3M,EAAGs5E,OAChBn/D,MAAMuB,iBAER9b,WAAW44O,GACT,IAAIC,EACJ,MAAOA,EAAiBD,EAAQ3sK,SAAW,MAAQ4sK,SAAwB,GAAKA,EAAej+J,YAAa,CAC1G,MAAM,IAAI7pE,MAAM,yDAElB,IAAK6nO,EAAQx0C,QAAS,CACpB,MAAM,IAAIrzL,MAAM,6CAEX1Q,KAAKy4O,cASd94O,2BAA2B46E,GACzB,OAAQA,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAW6E,UAAUhhF,QAAOmY,IAAUA,EAAMuiE,WAAa89H,GAA2BhrM,SAAS2K,EAAM1J,OAASgqM,GAAyBtgM,KAAWA,EAAMqpE,YAAcjE,OAAW,GAKjPh8E,uBAAuBwkO,EAAa5pJ,EAAYm+J,GAC9C,MAAMC,EAAc71N,GAAY25L,MAAM67B,GAAsBM,oBAAoBr+J,GAAa,QAC3Fs+J,EAAiBH,GAAqB,IAAI75N,IAAI65N,GAChD,OAAQvU,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYlyJ,QAAQ7zE,QAAO,EAC3FmY,MAAAA,KACIA,GAASoiO,EAAYpiO,MAAYsiO,GAAkBA,EAAe56N,IAAI1H,MAAS1M,KAAI,EACvF0M,MAAAA,EACAtL,KAAAA,MACD,CACCxG,KAAM8R,EACN47F,MAAOlnG,GAAQsL,EACf1J,KAAMgqM,GAAyB8hC,EAAYpiO,IAAU,WAAaoiO,EAAYpiO,GAAO1J,WAC/E,GAEVwsE,aACE,IAAIy/J,EAAqBjX,EACzB,OAAQiX,EAAsB94O,KAAKy4O,iBAAmB,MAAQK,SAA6B,EAAIA,EAAsB94O,KAAKy4O,cAAgBH,GAAsBS,gBAAgB/4O,KAAKi2N,KAAKlyB,SAAU89B,EAAmB7hO,KAAKi2N,KAAKrqJ,SAAW,MAAQi2J,SAA0B,OAAS,EAAIA,EAAiBtnJ,WAAYv6E,KAAK04O,mBAE/Tr/J,WAAW0jI,KAIb79M,EAAgBo5O,GAAuB,eAAgB,CAerDriB,KAAM,KAWNyiB,kBAAmB,OAErBJ,GAAsB1hK,YACtB0hK,GAAsBpwO,OAAS,wBAqC/B,MAAM8wO,WAAmCprH,GAEvC7/G,mBACE,MAAO,6BAGTlB,kBACE,MAAO,6BAITlN,iBACE,IAAKK,KAAKi2N,KAAM,CACd,MAAM,IAAIvlN,MAAM,GAAG1Q,KAAKqQ,YAAYtC,+CAGxCpO,sBAAsBvB,GACpB,MAAM63N,KACJA,EAAIyiB,kBACJA,GACE14O,KACJ,OAAOtB,EAAeA,EAAe,GAAIwb,MAAMmkM,sBAAsBjgN,IAAU,GAAI,CACjF63N,KAAAA,EACAyiB,kBAAAA,IAGJ/4O,WAAW44O,GACTv4O,KAAK4rE,MAAQ5rE,KAAKi2N,KAAKrqJ,MAKzBjsE,UAAUvB,GACR,MAAM2B,EAAKC,KACX,OAAOka,MAAM2jM,UAAUz/M,MAAa2B,EAAG24O,mBAAqB34O,EAAG24O,kBAAkB9sO,SAASxN,EAAO+T,YAGrGjT,EAAgB85O,GAA4B,eAAgB,CAe1D/iB,KAAM,KAQNyiB,kBAAmB,OAErBx5O,EAAgB85O,GAA4B,kBAAmB,yBAC/DA,GAA2BpiK,YAC3BoiK,GAA2B9wO,OAAS,6BAKpC,MAAM+wO,GAAe,CACnBz8M,KAAM,OACN08M,IAAK,SACLzjE,QAAS,SACT15I,OAAQ,SACR1xB,OAAQ,OACRie,SAAU,YA2IZ,MAAM6wN,WAAez5K,GAEnB3xD,mBACE,MAAO,SAETvO,0BACE,MAAO,CAqCL45O,kBAAmB,MAKnBt5K,OAAQ,CACN33C,EAAG,yBAYLkxN,QAAS,OAGb15O,UAAUs2N,EAAM99M,GACd,GAAI89M,EAAKlkG,SAASunH,UAAW,CAC3B,MAAM,IAAI5oO,MAAM,4HAElB,MAAM3Q,EAAKC,KACXD,EAAGk2N,KAAOA,EACVl2N,EAAGw5O,kBAAoBx5O,EAAGw5O,kBAAkBvkO,KAAKjV,GACjDma,MAAMsB,UAAUy6M,EAAM99M,GACtBpY,EAAG6nO,UAAU3R,EAAKrqJ,OAClB,GAAIzzD,UAAiBA,IAAW,SAAU,CACxC,MAAM5I,EAAQyhC,GAAazhC,MAAM4I,UAE1B5I,EAAM6pO,yBACN7pO,EAAM8pO,eACN9pO,EAAMg+G,WACb,IAAKv8E,GAAagN,QAAQzuC,GAAQ,CAChC0mN,EAAKrqJ,MAAMxtE,OAAOmR,EAAO,KAAM0mN,EAAKz4M,iBAI1C7d,YACE,IAAI65O,EAAiBC,GACpBD,EAAkBx5O,KAAK05O,aAAe,MAAQF,SAAyB,OAAS,EAAIA,EAAgBz9N,WACpG09N,EAAwBz5O,KAAK25O,qBAAuB,MAAQF,SAA+B,OAAS,EAAIA,EAAsB19N,UAC/H7B,MAAM8B,YAER4vD,YACE,OAAO5rE,KAAKi2N,KAAKrqJ,MAEnBjsE,UAAUisE,GACR5rE,KAAKupE,gBAAgB,SACrBqC,EAAMz8C,GAAG,CACP1qB,KAAM,QACNm1O,aAAc,sBACdx7O,OAAQ,gBACRke,QAAStc,OAMbwgE,0BACE,MAAO,CACLC,MAAO,CAAC,eAAgB,mBAAoB,qBAAsB,iBAAkB,cAUxF9gE,eAAek6O,GACb,MAAM95O,EAAKC,KACTi2N,EAAOl2N,EAAGk2N,KACVx/K,EAAUw/K,EAAK0gB,gBACjB,GAAIlgM,EAAS,CAEXwB,GAAUoP,SAAS5Q,EAAS,2BAA2Bz3C,SAAQ2pJ,GAAeA,EAAY/pG,UAAU98C,OAAO,cAC3G,IAAK/B,EAAG25O,UAAW,CACjB35O,EAAG25O,UAAY,IAAIngH,GAAQ,CACzB0N,WAAYxwF,EACZywF,YAAa,iBACbvnI,SAAQinI,aACNA,IAEA,OAAOA,EAAalwG,QAAQojN,cAIlC,IAAK7jB,EAAKrqJ,MAAMwgB,WAAY,CAC1BrsF,EAAG25O,UAAU/nH,OAEfskG,EAAKlyB,QAAQsyB,eAAer3N,SAAQ+3M,IAClC,GAAIA,EAAOorB,aAAe,MAAO,CAC/B,MAAM4X,EAAgBh6O,EAAG6rE,MAAMoe,QAAQmD,UAAU/uF,QAAO,EACpD+T,SAAAA,EACAytD,SAAAA,EACAkZ,SAAAA,KACI3mE,IAAa4kM,EAAOxgM,QAAUqpD,IAAakZ,IACjDkhK,EAAmBD,EAAcj7O,OAAS,EAC1CgkJ,EAAWi0D,EAAOtgK,QACpB,GAAIqsG,EAAU,CACZ,MAAMm3F,EAASljC,EAAO4lB,YACtB,IAAIud,EAAeD,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOjyO,cAAc,kBACtF8xO,EACF,GAAIE,EAAkB,CACpB,MAAMG,EAAS,WACfL,EAAa,GAAG/5O,EAAGo7B,EAAE,kBAAoB4+M,EAAcj7O,OAAS,EAAI,aAAe,IAAMi7O,EAAclwO,KAAIuwO,IACzG,IAAI76O,EAAQ66O,EAAaC,cAAgBD,EAAa76O,MACtD,IAAK66O,EAAaC,cAAgBtjC,EAAOlG,aAAetxM,EAAO,CAC7DA,EAAQgI,MAAMC,QAAQjI,GAAS,KAAKA,EAAMsK,KAAI8B,GAAOorM,EAAOlG,YAAYllM,KAAM1B,KAAK,UAAY8sM,EAAOlG,YAAYtxM,GAEpHA,EAAQA,GAAS,GACjB,OAAQw6O,EAAcj7O,OAAS,EAAIq7O,EAAS,YAAcC,IAAiB,SAAWA,EAAe,GAAGA,EAAalyJ,YAAY3oF,QAChI0K,KAAK,kBACH,CACL6vO,EAAa/5O,EAAGo7B,EAAE,kBAEpB,IAAK++M,EAAc,CAEjBA,EAAejiM,GAAU72C,cAAc,CACrCkR,OAAQ2nO,EACRx5N,IAAK,MACLi+B,UAAW,gBACXhoB,QAAS,CACPojN,WAAAA,SAGC,CACLI,EAAaxjN,QAAQojN,WAAaA,EAGpC,GAAI/iC,EAAOxgM,QAAUxW,EAAG6rE,MAAMkqB,kBAAmBokJ,EAAat7L,UAAU7/B,IAAI,YAC5E+jI,EAASlkG,UAAU7/B,IAAI,gBACvB+jI,EAASlkG,UAAU8X,OAAO,WAAYsjL,GAExCjjC,EAAO52L,KAAKisE,WAAa4tJ,MAG7B,GAAIH,EAAc,CAChB5jB,EAAKqkB,gBAMX36O,YAAYo3M,EAAQ5+L,GAClB,MAAMyzD,MACFA,GACE5rE,MACJuzF,SACEA,GACEwjH,EAAOorB,WAGbprB,EAAOwjC,QAAU3uK,EAAMwqB,UAAU13F,EAAeA,EAAeA,EAAe,GAAIq4M,EAAOorB,YAAahqN,GAAS,GAAI,CACjHhG,SAAU4kM,EAAOxgM,MAEjB5W,CAAC4zF,EAAW,WAAa,KAAM,SAAU/gB,GACvC,OAAO+gB,EAAS,CACdh0F,MAAOS,KAAKT,MACZizE,OAAAA,EACA0V,SAAUloF,KAAKkoF,SACf/1E,SAAUnS,KAAKmS,SACf4kM,OAAAA,OAGF,MAEJnrI,EAAMxtE,SAERuB,aAAao3M,GACX,GAAI/2M,KAAKq5O,QAAS,CAChB,IAAK,MAAMj7O,KAAU4B,KAAKw6O,uBAAuBzjC,GAAS,CACxD/2M,KAAK4rE,MAAMuxI,aAAa/+M,QAErB,CACL4B,KAAK4rE,MAAMuxI,aAAapG,EAAOxgM,QAGnC5W,cAAco3M,GACZ,IAAK,MAAM34M,KAAU4B,KAAKw6O,uBAAuBzjC,GAAS,CACxD34M,EAAOwhE,SAAW,KAClB5/D,KAAK4rE,MAAMxtE,OAAOA,GAEpB4B,KAAK4rE,MAAMxtE,SAEbuB,uBAAuBo3M,GACrB,OAAO/2M,KAAK4rE,MAAMoe,QAAQn+E,OAAOzN,QAAOA,GAAUA,EAAO+T,WAAa4kM,EAAOxgM,QAG/E5W,kBAAkBo3M,EAAQ9gH,EAAW73F,EAAQytG,EAAcjgC,EAAO6uK,EAAgBC,EAAeC,GAC/F,MAAM56O,EAAKC,KACT46O,EAAUH,EACZ,SAASI,IACP96O,EAAGo9M,aAAapG,GAElB,SAAS+jC,GAAU3qN,MACjBA,IAEA,GAAIA,EAAMlxB,MAAQ,QAAS,CACzBw7O,KAGJ,SAAS5xJ,GAAS9pF,OAChBA,EAAMQ,MACNA,IAEA,GAAIA,GAAS,KAAM,CACjBs7O,QACK,CACL96O,EAAGg7O,oBAAoBh8O,GACvBgB,EAAGi7O,YAAYjkC,EAAQ,CACrB7uH,SAAUnpF,EAAOmpF,SACjB3oF,MAAAA,EACA86O,aAAct7O,EAAO4wD,OACrB9iD,KAAM,UAIZ,MAAO,CAACmkC,GAAa55B,OAAO,CAC1BvK,KAAM,OACNohD,IAAK,KACLi4E,YAAa,QACbntG,YAAah5B,EACbwtL,UAAW,KACXzkC,MAAO,gDACPvpJ,OAAQnB,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO8pF,YAAc,IAAM9pF,EAAOmB,MAAQssG,EAClG3jB,SAAU,IACV4yJ,UAAAA,EACAjyJ,SAAAA,EACA+xJ,QAAAA,EACAC,QAAAA,GACCF,GAAc3pM,GAAa55B,OAAO,CACnCvK,KAAM,OACNohD,IAAK,SACLi4E,YAAa,YACbntG,YAAah5B,EACbwtL,UAAW,KACXzkC,MAAO,iDACPvpJ,OAAQnB,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO8pF,YAAc,IAAM9pF,EAAOmB,MAAQ,KAClG2oF,SAAU,IACV4yJ,UAAAA,EACAjyJ,SAAAA,EACA+xJ,QAAAA,EACAC,QAAAA,GACCF,GAAc3pM,GAAa55B,OAAO,CACnCvK,KAAM,OACNohD,IAAK,QACLn4C,IAAK,aACLowH,YAAa,WACbntG,YAAah5B,EACbwtL,UAAW,KACXzkC,MAAO,gDACPvpJ,OAAQnB,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO8pF,YAAc,IAAM9pF,EAAOmB,MAAQ,KAClG2oF,SAAU,IACV4yJ,UAAAA,EACAjyJ,SAAAA,EACA+xJ,QAAAA,EACAC,QAAAA,GACCF,IAELh7O,oBAAoBo3M,EAAQ9gH,EAAW73F,EAAQytG,EAAcjgC,EAAO6uK,EAAgBC,EAAeC,GACjG,MAAM56O,EAAKC,KACTi7O,EAAQR,EACV,SAASI,IACP96O,EAAGo9M,aAAapG,GAElB,SAAS+jC,GAAU3qN,MACjBA,IAEA,GAAIA,EAAMlxB,MAAQ,QAAS,CACzBw7O,KAGJ,SAAS5xJ,GAAS9pF,OAChBA,EAAMQ,MACNA,IAEA,GAAIA,GAAS,KAAM,CACjBs7O,QACK,CACL96O,EAAGg7O,oBAAoBh8O,GACvBgB,EAAGi7O,YAAYjkC,EAAQ,CACrB7uH,SAAUnpF,EAAOmpF,SACjB3oF,MAAAA,KAIN,MAAO,CAACyxC,GAAa55B,OAAO,CAC1BvK,KAAM,SACNq5H,YAAa,mBACbntG,YAAah5B,EACbwtL,UAAW,KACXzkC,MAAO,gDACPvpJ,OAAQnB,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO8pF,YAAc,IAAM9pF,EAAOmB,MAAQssG,EAClG3jB,SAAU,IACV4yJ,UAAAA,EACAjyJ,SAAAA,EACAoyJ,MAAAA,EACAJ,QAAAA,GACCF,GAAc3pM,GAAa55B,OAAO,CACnCvK,KAAM,SACNq5H,YAAa,cACbntG,YAAah5B,EACbwtL,UAAW,KACXzkC,MAAO,+CACPvpJ,OAAQnB,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO8pF,YAAc,IAAM9pF,EAAOmB,MAAQ,KAClG2oF,SAAU,IACV4yJ,UAAAA,EACAjyJ,SAAAA,EACAoyJ,MAAAA,EACAJ,QAAAA,GACCF,GAAc3pM,GAAa55B,OAAO,CACnCvK,KAAM,SACNiJ,IAAK,aACLowH,YAAa,cACbntG,YAAah5B,EACbwtL,UAAW,KACXzkC,MAAO,+CACPvpJ,OAAQnB,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO8pF,YAAc,IAAM9pF,EAAOmB,MAAQ,KAClG2oF,SAAU,IACV4yJ,UAAAA,EACAjyJ,SAAAA,EACAoyJ,MAAAA,EACAJ,QAAAA,GACCF,IAELh7O,oBAAoBu7O,GAClB,IAAIC,GAKHA,EAAyBn7O,KAAK25O,qBAAuB,MAAQwB,SAAgC,OAAS,EAAIA,EAAuBl4N,MAAMjkB,SAAQuX,IAC9IA,IAAU2kO,IAAgB3kO,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMkoC,YAGlF9+C,sBAAsBo3M,EAAQ9gH,EAAW73F,EAAQytG,EAAcjgC,EAAO6uK,EAAgBC,EAAeC,GACnG,MAAM56O,EAAKC,KACTi7O,EAAQR,EACRI,EAAUH,EACZ,SAAS7xJ,GAAS9pF,OAChBA,EAAMQ,MACNA,IAEA,GAAIA,GAAS,KAAM,CACjBm7O,QACK,CACL36O,EAAGi7O,YAAYjkC,EAAQ,CACrB7uH,SAAUnpF,EAAOmpF,SACjB3oF,MAAOA,IAETk7O,KAGJ,MAAO,CAACzpM,GAAa55B,OAAO,CAC1BvK,KAAM,WACNq5H,YAAa,mBACbntG,YAAah5B,EACbwtL,UAAW,KACXzkC,MAAO,gDACPvpJ,OAAQnB,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO8pF,YAAc,IAAM9pF,EAAOmB,MAAQssG,EAClG3jB,SAAU,IACVW,SAAAA,EACAoyJ,MAAAA,EACAJ,QAAAA,GACCF,GAAc3pM,GAAa55B,OAAO,CACnCvK,KAAM,WACNq5H,YAAa,cACbntG,YAAah5B,EACbwtL,UAAW,KACXzkC,MAAO,+CACPvpJ,OAAQnB,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO8pF,YAAc,IAAM9pF,EAAOmB,MAAQ,KAClG2oF,SAAU,IACVW,SAAAA,EACAoyJ,MAAAA,EACAJ,QAAAA,GACCF,GAAc3pM,GAAa55B,OAAO,CACnCvK,KAAM,WACNiJ,IAAK,aACLowH,YAAa,cACbntG,YAAah5B,EACbwtL,UAAW,KACXzkC,MAAO,+CACPvpJ,OAAQnB,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO8pF,YAAc,IAAM9pF,EAAOmB,MAAQ,KAClG2oF,SAAU,IACVW,SAAAA,EACAoyJ,MAAAA,EACAJ,QAAAA,GACCF,IAELh7O,oBAAoBo3M,EAAQ9gH,EAAW73F,EAAQytG,EAAcjgC,EAAO6uK,EAAgBC,EAAeC,GACjG,MAAM56O,EAAKC,KACX,MAAO,CAACgxC,GAAa55B,OAAO,CAC1BvK,KAAMopF,EACNngF,IAAK,aACLowH,YAAa,YACbntG,YAAah5B,EACbwtL,UAAW,KACXzkC,MAAO,gDACPvpJ,MAAOnB,EAASA,EAAOmB,OAASnB,EAASytG,EACzC3jB,SAAU,IACVvoF,UAASZ,OACPA,EAAMQ,MACNA,IAEA,GAAIA,IAAU,GAAI,CAChBm7O,QACK,CACL36O,EAAGi7O,YAAYjkC,EAAQ,CACrB7uH,SAAUnpF,EAAOmpF,SACjB3oF,MAAAA,EACA86O,aAAct7O,EAAOk5L,cAAgBl5L,EAAOkzE,QAAUlzE,EAAOkzE,QAAQpoE,KAAI6nF,GAAOA,EAAI3yF,EAAOk5L,gBAAehuL,KAAK,MAAQrH,YAGzH,IAAK7D,EAAOm5L,YAAa,CACvBuiD,OAING,QAASH,EACTI,QAASH,GACRC,IAeLh7O,cAAco3M,EAAQ9gH,EAAW73F,EAAQytG,EAAcjgC,EAAO6uK,EAAgBC,EAAeC,GAC3F,MAAM56O,EAAKC,KACX,GAAID,EAAGs5O,QAAS,CACd,OAAOt5O,EAAGq7O,4BAA4Bv8O,WAExC,OAAQo3F,GACN,IAAK,OACH,OAAOl2F,EAAGs7O,qBAAqBx8O,WACjC,IAAK,SACH,OAAOkB,EAAGu7O,uBAAuBz8O,WACnC,IAAK,WACH,OAAOkB,EAAGw7O,yBAAyB18O,WACrC,QACE,OAAOkB,EAAGy7O,uBAAuB38O,YAGvCc,yBAAyBo3M,GACvB,IAAI0kC,EACJ,MAAMxlB,KACFA,EAAIojB,QACJA,GACEr5O,KACJ07O,GAAkBD,EAAcxlB,EAAKrqJ,SAAW,MAAQ6vK,SAAqB,OAAS,EAAIA,EAAYzxJ,QAAQj5D,MAAK3yB,GAAUA,EAAO+T,WAAa4kM,EAAOxgM,QAC1J,MAAO,CAAC7X,EAAeA,EAAe,UAAW26O,IAAY,SAAWA,EAAUz2O,WAAY,GAAI,CAChGiK,KAAM,6BACNohD,IAAK,cACL8vJ,gBAAiBhH,EAAOxgM,MACxB0/M,KAAAA,EACAjsI,QAAS0xJ,EAAiB,GAAK,CAAC,CAC9BvpO,SAAU4kM,EAAOxgM,QAEnBolO,iBAAkB,+BAClBC,iBAAkB,+BAClB5iC,cAAe,4BACf9xM,MAAO,WAQXvH,iBAAiBo3M,EAAQx3M,GACvBw3M,EAAS/2M,KAAKi2N,KAAKlyB,QAAQl3H,QAAQkqI,GACnC,MAAMh3M,EAAKC,MACT4rE,MACEA,EAAKytK,QACLA,GACEt5O,EACJ+iJ,EAAWi0D,EAAOtgK,QAClBr4C,EAASwtE,EAAMoe,QAAQ8E,MAAM,WAAYioH,EAAOxgM,OAChD0/E,EAAYl2F,EAAG87O,cAAc9kC,GAC/B,GAAIA,EAAOorB,aAAe,MAAO,CAC/B,OAGFpiO,EAAGw5O,oBACH,MAAMt2N,EAAQljB,EAAG+7O,cAAc/kC,EAAQ9gH,EAEvC73F,IAAW,MAAQA,SAAgB,GAAKA,EAAO06E,SAAW,KAAO16E,EAAQmB,EAAOqsE,EAAO7rE,EAAGw5O,mBAAmB,KAC3Gx5O,EAAGo9M,aAAapG,GAChBh3M,EAAGw5O,sBACFxiC,EAAOorB,WAAWwY,YAAatB,GAElCp2N,EAAMjkB,SAAQ2S,GAAQA,EAAKu0H,YAAcv0H,EAAKu0H,YAAclmI,KAAKm7B,EAAExpB,EAAKu0H,aAAev0H,EAAKu0H,cAC5FnmI,EAAG45O,kBAAoBntE,GAAauvE,UAAUj5F,EAAU,CACtDnqI,MAAO5Y,EAAGk2N,KACVngN,IAAK,iBACL2gH,aAAc,UACd8b,OAAQ,CACN1lI,KAAM,OACNwpC,MAAO,WAETpzB,MAAAA,IAMJtjB,oBACE,IAAIq8O,GAGHA,EAAyBh8O,KAAK25O,qBAAuB,MAAQqC,SAAgC,OAAS,EAAIA,EAAuBj/N,WAAW/c,KAAK25O,kBAAkB59N,SACpK/b,KAAK25O,kBAAoB,KAK3Bh6O,cAAco3M,GACZ,MAAM5jK,EAAY4jK,EAAOxgM,MACvBA,EAAQvW,KAAK6/D,OAAO+L,MAAM2O,WAAWtO,mBAAmB94B,GACxDtmC,EAAOkqM,EAAOitB,WAChB,OAAOn3N,EAAOosO,GAAapsO,GAAQosO,GAAaliC,EAAOlqM,OAAS0J,GAAS0iO,GAAa1iO,EAAM1J,OAAS,OAEvGlN,+BAA8Bo3M,OAC5BA,EAAMvkI,OACNA,EAAMvvD,MACNA,IAEA,MAAM9Q,EAAW4kM,EAAOxgM,MACtB1J,EAAO7M,KAAK67O,cAAc9kC,GAC5B,GAAIlqM,IAAS,OAAQ,CACnB,MAAM9M,EAAKC,KACTT,EAAQizE,EAAOrgE,GACf/T,EAAS8pF,IACPnoF,EAAGi7O,YAAYjkC,EAAQ,CACrB7uH,SAAAA,EACA3oF,MAAAA,EACA86O,aAActjC,EAAOlG,YAAckG,EAAOlG,YAAYtxM,GAASA,EAC/DsN,KAAM,UAGZoW,EAAMg5N,iBAAmB,CACvBhxO,KAAM,QACN8tB,YAAah5B,EACb6vH,KAAM,gCACN95G,IAAK,cACL29G,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMlzO,EAAO,MAEvB6kB,EAAMi5N,iBAAmB,CACvBjxO,KAAM,YACN8tB,YAAah5B,EACb6vH,KAAM,iCACN6D,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMlzO,EAAO,MAEvB6kB,EAAMk5N,gBAAkB,CACtBlxO,KAAM,WACN8tB,YAAah5B,EACb6vH,KAAM,gCACN6D,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMlzO,EAAO,OAI3BuB,iCAAgCo3M,OAC9BA,EAAMvkI,OACNA,EAAMvvD,MACNA,IAEA,MAAM9Q,EAAW4kM,EAAOxgM,MACtB1J,EAAO7M,KAAK67O,cAAc9kC,GAC5B,GAAIlqM,IAAS,SAAU,CACrB,MAAM9M,EAAKC,KACTT,EAAQizE,EAAOrgE,GACf/T,EAAS8pF,IACPnoF,EAAGi7O,YAAYjkC,EAAQ,CACrB7uH,SAAAA,EACA3oF,MAAAA,KAGN0jB,EAAMm5N,mBAAqB,CACzBnxO,KAAM,YACN8tB,YAAah5B,EACb6vH,KAAM,gCACN95G,IAAK,cACL29G,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMlzO,EAAO,MAEvB6kB,EAAMo5N,iBAAmB,CACvBpxO,KAAM,cACN8tB,YAAah5B,EACb6vH,KAAM,+BACN6D,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMlzO,EAAO,MAEvB6kB,EAAMq5N,iBAAmB,CACvBrxO,KAAM,cACN8tB,YAAah5B,EACb6vH,KAAM,+BACN6D,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMlzO,EAAO,OAI3BuB,mCAAkCo3M,OAChCA,EAAMvkI,OACNA,EAAMvvD,MACNA,IAEA,MAAM9Q,EAAW4kM,EAAOxgM,MACtB1J,EAAO7M,KAAK67O,cAAc9kC,GAC5B,GAAIlqM,IAAS,WAAY,CACvB,MAAM9M,EAAKC,KACTT,EAAQizE,EAAOrgE,GACf/T,EAAS8pF,IACPnoF,EAAGi7O,YAAYjkC,EAAQ,CACrB7uH,SAAAA,EACA3oF,MAAAA,KAGN0jB,EAAMs5N,qBAAuB,CAC3BtxO,KAAM,YACN8tB,YAAah5B,EACb6vH,KAAM,gCACN95G,IAAK,cACL29G,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMlzO,EAAO,MAEvB6kB,EAAMu5N,mBAAqB,CACzBvxO,KAAM,cACN8tB,YAAah5B,EACb6vH,KAAM,+BACN6D,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMlzO,EAAO,MAEvB6kB,EAAMw5N,mBAAqB,CACzBxxO,KAAM,cACN8tB,YAAah5B,EACb6vH,KAAM,+BACN6D,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMlzO,EAAO,OAI3BuB,iCAAgCo3M,OAC9BA,EAAMvkI,OACNA,EAAMvvD,MACNA,IAEA,MAAMpW,EAAO7M,KAAK67O,cAAc9kC,GAChC,IAAK,yBAAyBtvM,KAAKoF,GAAO,CACxC,IAAI6vO,EAAuBC,EAC3B,MAAM58O,EAAKC,KACTT,EAAQw3M,EAAO6lC,mBAAmBpqK,GAClC0V,GAAYw0J,GAAyBC,EAAyB5lC,EAAOorB,WAAWwY,eAAiB,MAAQgC,SAAgC,OAAS,EAAIA,EAAuBz0J,YAAc,MAAQw0J,SAA+B,EAAIA,EAAwB,IAChQz5N,EAAM45N,mBAAqB,CACzB5xO,KAAM,YACN8tB,YAAah5B,EACb6vH,KAAM,gCACN95G,IAAK,cACL29G,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMvxO,EAAGi7O,YAAYjkC,EAAQ,CACnCx3M,MAAAA,EACA2oF,SAAAA,MAaRvoF,kBAAiBo3M,OACfA,EAAMvkI,OACNA,EAAMvvD,MACNA,IAEA,MAAMljB,EAAKC,KACX,GAAI+2M,EAAOorB,aAAe,MAAO,CAC/BpiO,EAAG+8O,iCAAiCj+O,WACpCkB,EAAGg9O,mCAAmCl+O,WACtCkB,EAAGi9O,qCAAqCn+O,WACxCkB,EAAGk9O,mCAAmCp+O,WACtC,GAAIk4M,EAAO52L,KAAKisE,WAAY,CAC1BnpE,EAAMi6N,aAAe,CACnBjyO,KAAM,kBACN8tB,YAAah5B,EACb6vH,KAAM,0BACN95G,IAAK,cACL29G,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,UAAY7/D,EAAGs5O,UAAYt5O,EAAGo9O,0BAA0BpmC,GACrEu6B,OAAQ,IAAMvxO,EAAGo9M,aAAapG,IAGlC,GAAIh3M,EAAGs5O,QAAS,CACdp2N,EAAMm6N,cAAgB,CACpBnyO,KAAM,mBACN8tB,YAAah5B,EACb6vH,KAAM,kCACN95G,IAAK,cACL29G,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,WAAa7/D,EAAGs9O,wBAAwBtmC,GACrDu6B,OAAQ,IAAMvxO,EAAGghM,cAAcgW,MASvCp3M,0BAA0Bo3M,GACxB,MAAMh3M,EAAKC,KACX,OAAOE,QAAQH,EAAGy6O,uBAAuBzjC,GAAQhmL,MAAK3yB,IAAW2B,EAAGm+M,iBAAmBn+M,EAAGyuB,SAASzuB,EAAGm+M,gBAAiBn+M,EAAI,CAAC3B,MAAa,SAM3IuB,wBAAwBo3M,GACtB,OAAO72M,QAAQF,KAAKw6O,uBAAuBzjC,GAAQhmL,MAAK3yB,IAAWA,EAAOwhE,YAU5EjgE,oBAAmBo3M,OACjBA,EAAM9zL,MACNA,IAEA,MAAMljB,EAAKC,KACX,GAAI+2M,EAAO52L,KAAKisE,WAAY,CAC1BnpE,EAAMq6N,WAAa,CACjBryO,KAAM,gBACN8tB,YAAah5B,EACb0zH,OAAQ,IACR7D,KAAM,0BACN95G,IAAK,cACL8pD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMvxO,EAAGw9O,iBAAiBxmC,IAEpC9zL,EAAMk6L,aAAe,CACnBlyM,KAAM,kBACN8tB,YAAah5B,EACb0zH,OAAQ,IACR7D,KAAM,0BACNhwD,SAAU7/D,EAAG6/D,UAAY7/D,EAAGs5O,UAAYt5O,EAAGo9O,0BAA0BpmC,GACrEu6B,OAAQ,IAAMvxO,EAAGo9M,aAAapG,IAEhC,GAAIh3M,EAAGs5O,QAAS,CACdp2N,EAAM89K,cAAgB,CACpB91L,KAAM,mBACN8tB,YAAah5B,EACb6vH,KAAM,kCACN6D,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,WAAa7/D,EAAGs9O,wBAAwBtmC,GACrDu6B,OAAQ,IAAMvxO,EAAGghM,cAAcgW,UAG9B,GAAIA,EAAOorB,aAAe,MAAO,CACtCl/M,EAAM7kB,OAAS,CACb6M,KAAM,YACN8tB,YAAah5B,EACb0zH,OAAQ,IACR7D,KAAM,0BACN95G,IAAK,cACL8pD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMvxO,EAAGw9O,iBAAiBxmC,KAOxCp3M,qBAAoBqqF,QAClBA,IAEA,MAAM+5G,QACJA,GACE/jM,KAAK6/D,OACT,IAAK,IAAIjhE,EAAI,EAAGA,EAAIorF,EAAQhmE,MAAOplB,IAAK,CACtC,MAAMR,EAAS4rF,EAAQgJ,MAAMp0F,GAE7B,IAAKR,EAAO06E,SAAU,CACpB,IAAI0kK,EACJ,MAAMzmC,GAAU34M,EAAOg7N,aAAep5N,KAAKo5O,oBAAsBr1C,EAAQhzK,MAAK0vM,GAAOA,EAAI0B,aAAe,OAAS1B,EAAIlqN,QAAUnY,EAAO+T,WACtI,GAAI4kM,IAAW,MAAQA,SAAgB,IAAMymC,EAAqBzmC,EAAOorB,cAAgB,MAAQqb,SAA4B,GAAKA,EAAmBjqJ,SAAU,CAG7J,IAAKwjH,EAAOwjC,QAAS,CACnBxjC,EAAOwjC,QAAU,IAAItyJ,GAAiB,CACpCmxI,YAAa,KACbjnN,SAAU/T,EAAO+T,SACjB+1E,SAAU9pF,EAAO8pF,SACjB3oF,MAAOnB,EAAOmB,MACdI,SAAS6yE,GACP,OAAOukI,EAAOorB,WAAW5uI,SAAS,CAChCh0F,MAAOS,KAAKT,MACZizE,OAAAA,EACA0V,SAAUloF,KAAKkoF,SACf/1E,SAAUnS,KAAKmS,SACf4kM,OAAAA,OAMRA,EAAOwjC,QAAQh7O,MAAQnB,EAAOmB,MAC9Bw3M,EAAOwjC,QAAQF,aAAej8O,EAAOi8O,aACrCtjC,EAAOwjC,QAAQryJ,SAAW9pF,EAAO8pF,SACjC8B,EAAQ9xE,OAAOtZ,EAAG,EAAGm4M,EAAOwjC,YASpC56O,gBAGEK,KAAKy9O,eAAe,OAMtB99O,eACEK,KAAKy9O,eAAe,OAOtB99O,gBAAehB,OACbA,IAEA,GAAIqB,KAAK25O,kBAAmB,CAC1B35O,KAAKu5O,oBAGP,GAAI56O,EAAOigD,UAAU7G,SAAS,iBAAkB,CAC9C,MAAM+qG,EAAWnkJ,EAAOslD,QAAQ,kBAChCjkD,KAAKu9O,iBAAiBz6F,EAASpsH,QAAQy/L,UACvC,OAAO,OAQXx2N,sBAAsBwwB,GACpB,MAAM2yH,EAAW3yH,EAAMxxB,OAAOslD,QAAQ,kBAEtC,GAAI6+F,EAAU,CACZ9iJ,KAAKu9O,iBAAiBz6F,EAASpsH,QAAQy/L,WAI3Cx2N,kBAAkBV,EAAKmzD,EAAQjiC,GAC7B,MAAMysH,EAAgBzsH,EAAMxxB,OAAOslD,QAAQ,kBACzC8yJ,EAASn6D,GAAiB58I,KAAK6/D,OAAOkkI,QAAQhzK,MAAK0vM,GAAOA,EAAI91N,KAAOiyI,EAAclmH,QAAQy/L,WAC7F,OAAOj2N,QAAQ62M,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOorB,aAK1EgX,GAAOjxO,OAAS,SAChBijO,GAAmB2F,gBAAgBqI,IAEnC,MAAMuE,GAAmB,CACvBz4F,IAAK,KACL/7D,aAAc,KACdt7E,WAAY,KACZ+vO,UAAW,MAuLb,MAAMC,WAAkBl+K,GAEtB3xD,mBACE,MAAO,YAETvO,0BACE,MAAO,CAqCL45O,kBAAmB,MAQnBj8C,qBAAsB,IActB0gD,YAAa,MAEbC,wBAAyB,KACzBh+K,OAAQ,CAEN+3F,QAAS,CACPhoJ,QAAS,wBACTi2C,eAAgB,OAElBiyG,WAAY,CACVloJ,QAAS,wBACTi2C,eAAgB,OAElBgyG,UAAW,CACTjoJ,QAAS,wBACTi2C,eAAgB,OAElBkyG,UAAW,CACTnoJ,QAAS,wBACTi2C,eAAgB,OAElBmyG,MAAO,CACLpoJ,QAAS,wBACTi2C,eAAgB,SAKxB0a,0BACE,MAAO,CACLrF,OAAQ,CAAC,kBACTsF,MAAO,CAAC,qBAAsB,eAAgB,qBAAsB,cAGxE7oD,wBACE,MAAO,CACLmmO,eAAgB,qBAChBC,oBAAqB,2BACrBC,oBAAqB,uBACrBC,yBAA0B,4BAC1BC,yBAA0B,wBAC1BC,kBAAmB,qBACnBC,uBAAwB,GAK5B1+O,UAAUs2N,EAAM99M,GACd,GAAI89M,EAAKlkG,SAAS3zH,OAAQ,CACxB,MAAM,IAAIsS,MAAM,4HAElB,MAAM3Q,EAAKC,KACXD,EAAGk2N,KAAOA,EACVl2N,EAAGu+O,0BAA4Bv+O,EAAGu+O,0BAA0BtpO,KAAKjV,GACjEma,MAAMsB,UAAUy6M,EAAM1uN,MAAMC,QAAQ2Q,GAAU,CAC5C/Z,OAAQ+Z,GACNA,GACJpY,EAAG6nO,UAAU3R,EAAKrqJ,OAClB,GAAI7rE,EAAG3B,OAAQ,CACb63N,EAAKrqJ,MAAMxtE,OAAO2B,EAAG3B,QAEvB2B,EAAGw+O,aAAetoB,EAAK9mM,GAAG,qBAAsBpvB,EAAGy+O,qBAAsBz+O,GAE3EJ,UAAUisE,GACR5rE,KAAKupE,gBAAgB,SACrBqC,EAAMz8C,GAAG,CACP1qB,KAAM,QACNm1O,aAAc,sBACdx7O,OAAQ,gBACRke,QAAStc,OAGbL,YACE,IAAI8+O,EACJz+O,KAAK0+O,oBACJD,EAAqBz+O,KAAKu+O,gBAAkB,MAAQE,SAA4B,OAAS,EAAIA,EAAmB53O,KAAK7G,MACtHka,MAAM8B,YAERrc,UAAUgiE,GACR,MAAMoiI,QACJA,GACE/jM,KAAKi2N,KAETlyB,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ/kM,SAAQ+3M,IAChE,MAAMr1F,EAAS1hH,KAAK2+O,qBAAqB5nC,GACzC,GAAIr1F,EAAQ,CACVA,EAAO9hD,SAAW+B,MAGtBznD,MAAM6nD,UAAUJ,GAElBhiE,kBAAkBJ,GAChBS,KAAK6/D,OAAO82K,gBAAgB/3L,UAAUr/C,EAAQ,MAAQ,UAAU,wBAChE,IAAK,MAAMuY,KAAQ9X,KAAK4+O,eAAgB,CACtC,MAAMroO,EAAQvW,KAAK4+O,eAAe9mO,GAClCvB,EAAM2vH,YAAc3mI,EAAQgX,EAAMwgM,OAAO6lB,WAAa,MAK1Dj9N,mBACE,IAAIk/O,GACHA,EAAqB7+O,KAAKi2N,KAAKlyB,WAAa,MAAQ86C,SAA4B,OAAS,EAAIA,EAAmB7/O,QAAQgB,KAAK8+O,yBAA0B9+O,MAK1JL,gBACE,IAAIw9N,EACJ,MAAMp9N,EAAKC,KAEXD,EAAG+9O,yBAA2B/9O,EAAGg/O,wBAEhC5hB,EAAmBp9N,EAAGk2N,KAAKlyB,WAAa,MAAQo5B,SAA0B,OAAS,EAAIA,EAAiBn+N,SAAQyhO,GAAO1gO,EAAGi/O,sBAAsBve,EAAK,QAEtJ1gO,EAAGk2N,KAAKrqJ,MAAMxtE,SACd2B,EAAG+9O,yBAA2B/9O,EAAGk/O,sBACjCl/O,EAAGyiG,OAAS,KAKd7iG,gBACEK,KAAK++O,uBACL/+O,KAAKk/O,kBACLl/O,KAAKi/O,sBACLj/O,KAAKwiG,OAAS,MAKhB7iG,kBACE,GAAIK,KAAKwiG,OAAQ,CACfxiG,KAAKm/O,oBACA,CACLn/O,KAAKo/O,iBAOTz/O,kBACE,GAAIK,KAAKi2N,KAAKQ,YAAa,CACzB,OAEFz2N,KAAKi2N,KAAKlyB,QAAQsyB,eAAer3N,SAAQ+3M,GAAU/2M,KAAKq/O,wBAAwBtoC,KAChF/2M,KAAK69H,SAAW,KASlBl+H,wBAAwBo3M,GACtB,MAAMh3M,EAAKC,MACTi2N,KACEA,GACEl2N,EACJoiO,EAAapiO,EAAGu/O,oBAAoBvoC,GAEtC,GAAIorB,GAAcprB,EAAOnsJ,UAAW,CAClC,MAAMk4F,EAAWi0D,EAAOtgK,QACtBr4C,EAAS63N,EAAKrqJ,MAAMoe,QAAQt4E,IAAIqlM,EAAOpsM,KAAOsrN,EAAKrqJ,MAAMoe,QAAQ8E,MAAM,WAAYioH,EAAOxgM,OAC5F,IAAImrG,EAAS3hH,EAAG4+O,qBAAqB5nC,GAGrC,IAAKr1F,EAAQ,CACX,MAAM70G,EAAO,GAAGkqM,EAAOitB,YAAc,eACnC2W,YACEA,GACExY,EACJod,EAAc5E,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY7kO,IACtF,GAAIypO,EAAa,QACRpd,EAAWwY,YAAY7kO,IAEhC4rG,EAAS8qD,GAAax4G,OAAOhjB,GAAa55B,OAAO,CAC/CvK,KAAAA,EACAiJ,IAAK,CACHnW,CAACI,EAAGg+O,gBAAiB,EACrBp+O,CAAC4/O,GAAcA,GAGjB7oN,QAAS,CACPqgL,OAAQA,EAAOxgM,OAEjBwgM,OAAAA,EACAp+L,MAAOs9M,EACP1oC,UAAW,KACX9oL,KAAMsyM,EAAOxgM,MACbhX,MAAOnB,IAAWA,EAAOoqF,YAAcpqF,EAAO06E,SAAW/4E,EAAGy/O,iBAAiBphP,GAAU,GACvF+yL,SAAUpxL,EAAGi+O,oBACbpwD,qBAAsB7tL,EAAGo9L,qBACzBt0G,SAAU9oF,EAAGu+O,0BACbzD,QAAS96O,EAAGu+O,0BACZ1+K,SAAU7/D,EAAG6/D,SACbsmE,YAAanmI,EAAG89O,YAAc9mC,EAAO6lB,WAAa,KAElD9/L,OAAQi6K,EAAOj6K,QACd69M,GAAc73F,GAAU,GAE3BphC,EAAOjrE,QAAQgS,cAAgB,KAC/B1oD,EAAG0/O,qBAAqB1oC,EAAQr1F,GAChC,MAAMg+H,GAA2B/E,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY/uK,SAAW+uK,EAAY/uK,MAAM6iC,SAAWksI,EAAY/uK,MAAM1xC,MAEjK,GAAIwnF,EAAOi+H,UAAYD,GAA2Bh+H,EAAO91C,MAAM5nD,QAAU,EAAG,CAC1E,MAAM47N,EAAkBl+H,EAAOniH,MAC7BsgP,EAAc,IAAMn+H,EAAO91C,MAAM1xC,KAAO+7L,EAAKrqJ,MAAM0uB,kBAAkBy8G,EAAOxgM,MAAO,MAAM1M,KAAItK,GAAS02N,EAAKrqJ,MAAM2O,WAAWs2C,IAAI,CAC9HlmH,GAAIpL,EACJI,CAACo3M,EAAOxgM,OAAQhX,MAEpBmiH,EAAOniH,MAAQ,KACf,IAAKmiH,EAAO91C,MAAM2iB,SAAU,CAC1BmzB,EAAO91C,MAAM3zD,KAAK,CAChB1B,MAAOwgM,EAAOxgM,MACdijF,UAAW,OAGfkoB,EAAOs0E,OAAO7mK,GAAG,aAAc0wN,GAC/BA,IACAn+H,EAAOniH,MAAQqgP,EAIjB,IAAK7/O,EAAG3B,QAAUsjH,EAAOniH,OAAS02N,EAAKrqJ,MAAMgiC,WAAa,MAAO,CAC/D7tG,EAAGu+O,0BAA0B,CAC3Bv/O,OAAQ2iH,EACRniH,MAAOmiH,EAAOniH,aAKf,CAEHQ,EAAGu+O,0BAA0B,CAC3Bv/O,OAAQ2iH,EACRniH,MAAOmiH,EAAOniH,QAGhBmiH,EAAO3nG,OAAO+oI,GAEdphC,EAAO0O,OAET0yB,EAASlkG,UAAU7/B,IAAIhf,EAAGk+O,sBAO9Bt+O,2BACE,MAAMI,EAAKC,MACT+jM,QACEA,EAAOn4H,MACPA,GACE7rE,EAAGk2N,KACT,IAAI1/M,EAAOnY,EAGX2B,EAAG+/O,gBAAkB,KACrB,IAAK,MAAM/oC,KAAUhT,EAAQsyB,eAAgB,CAC3C9/M,EAAQxW,EAAG4+O,qBAAqB5nC,GAChC,GAAIxgM,EAAO,CACTnY,EAASwtE,EAAMoe,QAAQt4E,IAAIqlM,EAAOpsM,KAAOihE,EAAMoe,QAAQ8E,MAAM,WAAYioH,EAAOxgM,OAChF,GAAInY,IAAWA,EAAO06E,SAAU,CAG9B,IAAK16E,EAAOoqF,UAAW,CACrBjyE,EAAMhX,MAAQQ,EAAGy/O,iBAAiBphP,OAC7B,CACLmY,EAAMhX,MAAQnB,EAAOmB,WAIpB,CACHgX,EAAMhX,MAAQ,KAIpBQ,EAAG+/O,gBAAkB,MAEvBngP,oBAAoBo3M,GAClB,IAAKA,EAAO5nI,QAAU4nI,EAAOorB,aAAe,OAASprB,EAAOxgM,OAASwgM,EAAO7nI,OAAQ,CAClF,UAAW6nI,EAAOorB,aAAe,WAAY,CAC3CprB,EAAOorB,WAAa,CAClB5uI,SAAUwjH,EAAOorB,YAGrB,OAAOprB,EAAOorB,YAGlBxiO,yBAAyBo3M,GACvB,MAAMr1F,EAAS1hH,KAAK2+O,qBAAqB5nC,GACzC,GAAIr1F,EAAQ,CACV1hH,KAAKg/O,sBAAsBjoC,EAAQ,MAEnCr1F,EAAO3lG,UAEP/b,KAAKy/O,qBAAqB1oC,EAAQn0M,YAGtCjD,sBAAsBo3M,EAAQ7gL,GAC5B,MAAMn2B,EAAKC,MACT4rE,MACEA,GACE7rE,EAAGk2N,KACP4gB,EAAW9/B,EAAOtgK,QAClBirE,EAAS3hH,EAAG4+O,qBAAqB5nC,GACnC,GAAIr1F,EAAQ,CACV,IAAK3hH,EAAGoZ,aAAc,CAEpBuoG,EAAOiQ,OAET,MAAM4oH,QACJA,GACExjC,EACJ,IAAKnrI,EAAM1vD,aAAenc,EAAG+9O,yBAA2BvD,EAAS,CAC/D3uK,EAAMuxI,aAAao9B,EAASrkN,GAE9B2gN,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASj4L,UAAU98C,OAAO/B,EAAGk+O,sBAQrFt+O,qBAAqBo3M,GACnB,IAAIgpC,EACJ,OAAQA,EAAuB//O,KAAK4+O,kBAAoB,MAAQmB,SAA8B,OAAS,EAAIA,EAAqBhpC,EAAOpsM,IAEzIhL,qBAAqBo3M,EAAQr1F,GAC3B1hH,KAAK4+O,eAAiB5+O,KAAK4+O,gBAAkB,GAC7C5+O,KAAK4+O,eAAe7nC,EAAO78K,KAAKvvB,IAAM+2G,EAIxC/hH,iBAAiBo3M,EAAQx3M,EAAOgX,GAC9B,IAAIinO,EACJ,GAAIj2O,MAAMC,QAAQjI,GAAQ,CACxB,MAAO,CACLA,MAAAA,GAGJ,GAAIyxC,GAAajhC,OAAOxQ,GAAQ,CAC9B,MAAO,CACL2oF,SAAU3xE,EAAMo3N,YAAc,UAAYp3N,EAAMypO,YAAc,WAAa,IAC3EzgP,MAAAA,GAGJ,MAAMY,EAAQ+I,OAAO3J,GAAOY,MAAMH,KAAKo+O,mBACvC,MAAO,CACLl2J,SAAU/nF,EAAM,MAAQq9O,EAAqBzmC,EAAOorB,cAAgB,MAAQqb,SAA4B,OAAS,EAAIA,EAAmBt1J,WAAa,IACrJ3oF,MAAOY,EAAM,IAGjBR,kBAAiBuoF,SACfA,EAAQ3oF,MACRA,IAEA,OAAOA,aAAiBiP,MAAQjH,MAAMC,QAAQjI,GAASA,GAAS2oF,KAAYw1J,GAAmB,GAAKx1J,GAAY3oF,EAKlHI,qBAAoBqqF,QAClBA,IAEA,MAAM+5G,QACJA,GACE/jM,KAAK6/D,OACT,IAAK,IAAIjhE,EAAI,EAAGA,EAAIorF,EAAQhmE,MAAOplB,IAAK,CACtC,IAAIqhP,EACJ,MAAM7hP,EAAS4rF,EAAQgJ,MAAMp0F,GAC3Bm4M,GAAU34M,EAAOg7N,aAAep5N,KAAKo5O,oBAAsBr1C,EAAQhzK,MAAK0vM,GAAOA,EAAI0B,aAAe,OAAS1B,EAAIlqN,QAAUnY,EAAO+T,WAClI,GAAI4kM,IAAW,MAAQA,SAAgB,IAAMkpC,EAAsBlpC,EAAOorB,cAAgB,MAAQ8d,SAA6B,GAAKA,EAAoB1sJ,SAAU,CAGhK,IAAKwjH,EAAOwjC,QAAS,CACnBxjC,EAAOwjC,QAAU,IAAItyJ,GAAiB,CACpCmxI,YAAa,KACbjnN,SAAU/T,EAAO+T,SACjBxH,GAAIosM,EAAOpsM,GACXhL,SAAS6yE,GACP,OAAOukI,EAAOorB,WAAW5uI,SAAS,CAChCh0F,MAAOS,KAAKT,MACZizE,OAAAA,EACArgE,SAAUnS,KAAKmS,SACf4kM,OAAAA,OAMRA,EAAOwjC,QAAQh7O,MAAQnB,EAAOmB,MAC9ByqF,EAAQ9xE,OAAOtZ,EAAG,EAAGm4M,EAAOwjC,WAQlC56O,gBACE,IAAKK,KAAKq+O,wBAA0Br+O,KAAK69H,SAAU,CACjD79H,KAAKkgP,4BAGTvgP,oBAAmB4yE,QACjBA,EAAOwkI,OACPA,IAIA,IAAK/2M,KAAKwiG,QAAUjwB,IAAY,MAAQA,SAAiB,GAAKA,EAAQiwB,OAAQ,CAC5E,MAAMA,EAASjwB,EAAQiwB,OAAOjjG,MAC9B,GAAIijG,EAAQ,CACVxiG,KAAK8+O,yBAAyB/nC,OACzB,CACL/2M,KAAKq/O,wBAAwBtoC,KAInCp3M,uBACEK,KAAKq+O,yBAEP1+O,sBACEK,KAAKq+O,yBAMP1+O,eACE,IAAKK,KAAKwiG,OAAQ,CAChBxiG,KAAKk/O,mBAGTv/O,iBAIE,GAAIK,KAAK4+O,eAAgB,CACvB,IAAK,MAAMroO,KAAStY,OAAO4N,OAAO7L,KAAK4+O,gBAAiB,CACtDroO,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMkgC,QAAQ30C,WAIlEnC,sBAAsBwwB,GAIpB,GAAIA,EAAMxxB,OAAO2D,QAAQtC,KAAKk+O,0BAA2B,CACvD,OAAO,KAET,OAAO,MAETv+O,sBAAqBwwB,MACnBA,IAGA,GAAIA,EAAMxxB,OAAOslD,QAAQ,IAAIjkD,KAAK+9O,kBAAmB,CACnD,OAAO,OASXp+O,2BACEZ,OAAQwX,EAAKhX,MACbA,IAEA,MAAMQ,EAAKC,MACT+2M,OACEA,GACExgM,GACJg9E,SACEA,GACEwjH,EAAOorB,YACXv2J,MACEA,GACE7rE,EAAGk2N,KACP73N,EAAS24M,EAAOwjC,SAAW3uK,EAAMoe,QAAQj5D,MAAK5I,IAAMA,EAAExd,KAAOosM,EAAOpsM,IAAMwd,EAAEhW,WAAa4kM,EAAOxgM,SAAW4R,EAAE2wD,WAE/G,GAAI/4E,EAAG+/O,gBAAiB,CACtB,OAEF,MAAMK,EAAmB5gP,GAAS,MAAQA,IAAU,IAAMgI,MAAMC,QAAQjI,IAAUA,EAAMT,SAAW,EAEnG8sE,EAAMuxI,aAAa/+M,EAAQ,MAC3B24M,EAAOwjC,QAAU,KACjB,GAAI4F,EAAkB,CAEpB,IAAK/hP,EAAQ,CACX,YAEG,CACL,IAAIgiP,EAAqBC,EAGzBtpC,EAAOwjC,QAAU3uK,EAAMwqB,UAAU13F,EAAeA,EAAe,CAC7DyT,SAAUoE,EAAM9R,MACf1E,EAAGugP,iBAAiBvpC,EAAQx3M,EAAOgX,IAAS,GAAI,CACjD5W,SAAUygP,EAAsBrpC,EAAOorB,cAAgB,MAAQie,SAA6B,OAAS,EAAIA,EAAoBh4J,iBAAmB,UAAY,gBAAkBxlF,YAAay9O,EAAsBtpC,EAAOorB,cAAgB,MAAQke,SAA6B,OAAS,EAAIA,EAAoBj4J,cAE9SzoF,CAAC4zF,EAAW,WAAa,KAAM,SAAU/gB,GACvC,OAAO+gB,EAAS,CACdh0F,MAAOS,KAAKT,MACZizE,OAAAA,EACA0V,SAAUloF,KAAKkoF,SACf/1E,SAAUnS,KAAKmS,SACf4kM,OAAAA,OAGF,MAGNnrI,EAAMxtE,SAWRuB,oBAAmBsjB,MACjBA,IAEAA,EAAMs9N,gBAAkB,CACtBt1O,KAAMjL,KAAKwiG,OAAS,qBAAuB,sBAC3CzpE,YAAa/4B,KACbyzH,OAAQ,IACR7D,KAAM,0BACN95G,IAAK,cACLw7N,OAAQ,IAAMtxO,KAAKugP,oBAMzB3C,GAAUh8K,aAAe,eACzBg8K,GAAU11O,OAAS,YACnBijO,GAAmB2F,gBAAgB8M,IAmGnC,MAAM4C,WAAc9gL,GAClB3xD,mBACE,MAAO,QAETvO,0BACE,MAAO,CAML+W,MAAO,KAKPkqO,YAAa,KAqBb/gB,SAAU,KAKV5/J,OAAQ,CACNg7F,IAAK,gBAKXn7J,UAAUs2N,EAAM99M,GACd,MAAMpY,EAAKC,KACX,GAAIi2N,EAAKlkG,SAASrrC,KAAM,CACtB,OAGF3mF,EAAGkhN,uBAAuBgV,EAAKlkG,SAAS2uH,cAExCvoO,EAASpY,EAAG2xO,cAAcv5N,GAC1BpY,EAAGk2N,KAAOA,EACV/7M,MAAMsB,UAAUy6M,EAAM99M,GACtBpY,EAAG6nO,UAAU3R,EAAKrqJ,OAClBqqJ,EAAKY,WAAW1nM,GAAG,CACjBwxN,gBAAiB,oBACjB3hB,WAAY,aAIZnyM,KAAM,KACNvQ,QAASvc,IAKbJ,cAAcwY,GACZ,UAAWA,IAAW,SAAU,CAC9B,MAAO,CACL5B,MAAO4B,EACPqhF,UAAW,MAGf,OAAOrhF,EAGTxY,UAAUwY,GACR,GAAIA,IAAW,KAAM,CACnBnY,KAAK4rE,MAAMquB,oBACN,CACL//E,MAAMV,UAAUxZ,KAAK0xO,cAAcv5N,KAGvCxY,UAAUisE,GACR5rE,KAAKupE,gBAAgB,SACrBqC,EAAMz8C,GAAG,CACP1qB,KAAM,QACN2Z,MAAO,eACP9B,QAAStc,OAGbL,eAAe+/N,GACb1/N,KAAK4gP,cAAgBlhB,EAEvB//N,YAAY4W,GACVvW,KAAK4rE,MAAMxtD,MAAM,CACf7H,MAAAA,EACAijF,UAAWx5F,KAAKw5F,UAChBxhF,GAAIhY,KAAKygP,cAGb9gP,kBAAkBqY,GAChB,IAAKhY,KAAKwd,cAAe,CACvBxd,KAAK4rE,MAAMxtD,MAAM,CACf7H,MAAOvW,KAAKuW,MACZijF,UAAWx5F,KAAKw5F,UAChBxhF,GAAAA,KAINrY,YACEua,MAAM8B,YAERrc,UAAUgiE,GACR,MAAMiK,MACJA,GACE5rE,KAGJ,GAAI2hE,GAAWiK,EAAM2lB,UAAW,CAC9B,MAAMziB,QACJA,GACElD,EACJkD,EAAQqf,WAAWviB,EAAMwrB,UACzBxrB,EAAMquB,gBACNruB,EAAM3zD,KAAK62D,GAEb50D,MAAM6nD,UAAUJ,GAElBiK,YACE,OAAO5rE,KAAKi2N,KAAKrqJ,MAKnBpL,0BACE,MAAO,CACLppD,OAAQ,CAAC,cAAe,aACxBqpD,MAAO,CAAC,eAAgB,qBAAsB,4BAA6B,sBAAuB,iBAAkB,cAWxH9gE,eAAe08F,EAAYvE,GACzB93F,KAAK6gP,uBAAuBxkJ,EAAYvE,GAU1Cn4F,uBAAuB08F,EAAYvE,EAAUgpJ,EAAa,OACxD,MAAM/gP,EAAKC,MACT4rE,MACEA,EAAKqqJ,KACLA,GACEl2N,EACJw4F,EAAc3sB,EAAMiB,QAAQwvB,GAC9B,IAAK9D,EAAYrR,cAAe,CAC9B,OAEF4Q,EAAWA,IAAal1F,WAAa21F,EAAYp4E,KAAKqvD,UAAYsoB,EAUlE,GAAIm+H,EAAK1oM,QAAQ,oBAAqB,CACpCgrE,YAAAA,EACAT,SAAAA,MACK,MAAO,CACZ,OAEF,GAAIA,EAAU,CACZlsB,EAAMksB,SAASS,OACV,CACL3sB,EAAMisB,OAAOU,GAEf,IAAKuoJ,EAAY,CAEf7qB,EAAKY,WAAWkqB,iBAAiBxoJ,GASnC09H,EAAK1oM,QAAQ,cAAe,CAC1BgrE,YAAAA,EACAT,SAAAA,IAEFm+H,EAAK+qB,mBAMPrhP,cACE,MAAMI,EAAKC,KACX,GAAID,EAAG6rE,MAAM2lB,YAAcxxF,EAAG6/D,SAAU,CACtC7/D,EAAG6rE,MAAM+rB,aAAa34F,SAAQkxB,GAAKnwB,EAAG8gP,uBAAuB3wN,EAAG,KAAM,QACtEnwB,EAAGk2N,KAAKqkB,YAAY,OAOxB36O,YACE,MAAMI,EAAKC,KACX,GAAID,EAAG6rE,MAAM2lB,YAAcxxF,EAAG6/D,SAAU,CACtC7/D,EAAG6rE,MAAM+rB,aAAa34F,SAAQkxB,GAAKnwB,EAAG8gP,uBAAuB3wN,EAAG,MAAO,QACvEnwB,EAAGk2N,KAAKqkB,eASZ36O,mBAAkBgvK,IAChBA,IAGA,MAAM5mE,EAAY4mE,EAAIsnD,KAAKrqJ,MAAMiB,QAAQ8hG,EAAIhkK,IAE7CgkK,EAAIsyE,eAAiBtyE,EAAIsyE,iBAAmBl5I,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU7gB,eAM9GvnF,WAAWqzN,GACT,MAAMjzN,EAAKC,MACTs+N,YACEA,EAAW3vD,IACXA,EAAGooC,OACHA,GACEic,GACJ7yM,KACEA,GACE6yM,EAAWxgJ,OACfo2J,EAAa,CACXsY,cAAe,EACfC,yBAA0B,GAE9B,IAAKphP,EAAG6/D,UAAY7/D,EAAG6rE,MAAM2lB,WAAa,gBAAiBpxE,EAAM,CAE/D,GAAI42L,EAAOlqM,OAAS,SAAU,CAC5B,OAGFkqM,EAAO4tB,UAAUrG,GAEjBsK,EAAW,0BAA4BzoN,EAAKqvD,UAC5Co5J,EAAW,eAAiB,EAC5B,GAAI7xB,IAAWh3M,EAAGqhP,kBAAmB,CACnC9iB,EAAY1/K,UAAU7/B,IAAI,iBAC1Bu/M,EAAY+iB,aAAe,KAE7BthP,EAAGuhP,iBAAiBtuB,QACf,GAAIsL,EAAY+iB,aAAc,CACnC/iB,EAAY1/K,UAAU98C,OAAO,iBAC7Bw8N,EAAY+iB,aAAe,MAI7B1yE,EAAIu7D,UAAUtB,GAGhBjpO,iBAAiBqzN,GACf,MAAMjzN,EAAKC,MACTwyE,OACEA,EAAM8rJ,YACNA,EAAWvnB,OACXA,EAAMn+H,QACNA,GACEo6I,GACJiD,KACEA,GACEl2N,EACJogB,EAAOqyD,EAAOryD,MACd84E,YACEA,GACE94E,GACJugO,aACEA,GACEzqB,EAAKlkG,SAGT/tG,EAAQ7D,EAAK0xE,YAAc6uJ,GAAgBA,EAAa/hP,SAAW,SAAW,EAAI,GACpF,IAAIgqD,EAAO,KACT44L,EAAe,KACjB,GAAI3oK,GAAWm+H,EAAQ,CACrB,MAAMyqC,EAAcvrB,EAAKlyB,QAAQryL,IAAIyO,EAAKg4E,YACxCspJ,EAAsBzuB,EAAW0uB,cAAgB3qC,IAAWh3M,EAAGqhP,kBAEjE,GAAII,IAAgB,MAAQA,SAAqB,GAAKA,EAAYZ,cAAe,CAC/E,GAAIa,EAAqB,CAEvB94L,EAAO64L,EAAYZ,cAAcliP,EAAeA,EAAe,GAAIs0N,GAAa,GAAI,CAClF/5H,YAAAA,EACAtB,aAAcnlB,EAAOof,cACrB4vJ,YAAAA,EACAx9N,MAAAA,KAEFu9N,EAAe,YAId,GAAIxhP,EAAG6gP,cAAe,CAEzBj4L,EAAO5oD,EAAG6gP,cAAcliP,EAAeA,EAAe,GAAIs0N,GAAa,GAAI,CACzE/5H,YAAAA,EACAtB,aAAcnlB,EAAOof,cACrB4vJ,YAAAA,EACAx9N,MAAAA,EACA09N,cAAeD,KAKnB,GAAIA,GAAuB94L,GAAQ,MAAQ44L,GAAgBtpM,GAAUmgB,qBAAqBkmK,KAAiB,EAAG,CAC5G31K,EAAOv+C,EAAaY,WAAW,GAAGiuF,IAAgB,cAAgB,GAAKA,MAAgBj1E,YAEpF,GAAIjkB,EAAG6gP,cAAe,CAE3Bj4L,EAAO5oD,EAAG6gP,cAAc5tB,GAG1B,UAAWrqK,IAAS,SAAU,CAC5B21K,EAAY5sK,UAAY/I,OACnB,UAAWA,IAAS,SAAU,CACnC4xD,GAAQ+K,KAAK,CACX1jE,cAAe08K,EACflhL,UAAW,CACT6L,aAAc,KACd5B,SAAUvkC,GAAYm7B,QAAQ0K,MAKpC,GAAI1Q,GAAUmgB,qBAAqBkmK,GAAe,EAAG,CACnDA,EAAYqjB,SAAW,KAEzB,OAAOrjB,EAAY5sK,UAErB0vL,wBACE,OAAOphP,KAAKi2N,KAAKlyB,QAAQsyB,eAAetlM,MAAKgmL,IAAWA,EAAOwrB,sBAOjE5iO,aAAaiiP,GACX,MAAMh2K,MACJA,EAAKqqJ,KACLA,GACEj2N,KACJ,GAAI4rE,EAAM2lB,UAAW,CAEnB,IAAK,MAAMsI,KAAajuB,EAAMwrB,SAAU,CAEtC,MAAM2/G,EAASkf,EAAKlyB,QAAQryL,IAAImoF,EAAUtjF,OACxCqpI,EAASm3D,GAAUkf,EAAKuG,iBAAiBzlB,EAAOpsM,IAClDi1I,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOhhG,UAAU7/B,IAAI,UAAW86E,EAAUL,UAAY,QAAU,YAatH75F,oBAAmBo3M,OACjBA,EAAM9zL,MACNA,IAEA,MAAMljB,EAAKC,KACX,GAAI+2M,EAAOglB,YAAc,MAAO,CAC9B94M,EAAM4+N,SAAW,CACf52O,KAAM,oBACN8tB,YAAah5B,EACb6vH,KAAM,6BACN95G,IAAK,cACL29G,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMvxO,EAAG6rE,MAAMxtD,MAAM24L,EAAOxgM,MAAO,OAE7C0M,EAAM6+N,UAAY,CAChB72O,KAAM,qBACN8tB,YAAah5B,EACb6vH,KAAM,8BACN6D,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMvxO,EAAG6rE,MAAMxtD,MAAM24L,EAAOxgM,MAAO,QAG/C,GAAIxW,EAAG6rE,MAAM2lB,UAAW,CACtBtuE,EAAM8+N,YAAc,CAClB92O,KAAM,kBACN8tB,YAAah5B,EACb6vH,KAAM,yBACN95G,IAAKihM,EAAOglB,UAAY,GAAK,cAC7BtoG,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAMvxO,EAAG6rE,MAAMquB,kBAQ7Bt6F,0BAA0Bo3M,EAAQ9zL,GAChC,IAAI++N,EACJ,MAAMjiP,EAAKC,MACT4rE,MACEA,EAAKhM,SACLA,GACE7/D,EACNkjB,EAAMzkB,KAAK,CACTyM,KAAM,yBACNmT,MAAO,WACP2a,YAAah5B,EACb6vH,KAAM,0BACN3hE,IAAK,WACLn4C,IAAK,cACL29G,OAAQ,IACR7zD,SAAAA,EACA8zK,OAAQ,EACN38B,OAAAA,KACInrI,EAAMxtD,MAAM24L,EAAOxgM,MAAO,QAElC0M,EAAMzkB,KAAK,CACTyM,KAAM,0BACNmT,MAAO,WACP2a,YAAah5B,EACb6vH,KAAM,2BACN3hE,IAAK,YACLwlE,OAAQ,IACR7zD,SAAAA,EACA8zK,OAAQ,EACN38B,OAAAA,KACInrI,EAAMxtD,MAAM24L,EAAOxgM,MAAO,SAElC,MAAM0rO,IAAYD,EAAkBp2K,EAAMwrB,YAAc,MAAQ4qJ,SAAyB,OAAS,EAAIA,EAAgBr6O,MAAK84N,GAAOA,EAAIlqN,QAAUwgM,EAAOxgM,WAAYqpD,EACnK38C,EAAMzkB,KAAK,CACTyM,KAAM,uBACNmT,MAAO,WACP2a,YAAah5B,EACb6vH,KAAM,sBACN3hE,IAAK,cACL2R,UAAWqiL,EACXxuH,OAAQ,IACRigH,OAAQ,EACN38B,OAAAA,KACInrI,EAAMs2K,cAAcnrC,EAAOxgM,SAEnC,OAAO0M,EAQTtjB,cAAay3F,SACXA,IAEA,MAAM6+H,KACFA,GACEj2N,MACJy2C,QACEA,GACEw/K,EACJksB,EAAkB1rM,GAAWwB,GAAUoP,SAAS5Q,EAAS,0BAC3D,GAAIA,EAAS,CACX,IAAK,MAAMmpG,KAAUuiG,EAAiB,CACpCviG,EAAOhhG,UAAU98C,OAAO,UAAW,QAAS,UAE9C,GAAIs1F,EAAU,CACZ,IAAK,MAAMyC,KAAazC,EAAU,CAChC,MAAMwoD,EAASq2E,EAAKmsB,wBAAwBvoJ,EAAUtjF,OACtD,GAAIqpI,EAAQ,CACVA,EAAOhhG,UAAU7/B,IAAI,UAAW86E,EAAUL,UAAY,QAAU,cAY1E75F,oBAAoBwwB,GAClB,MAAMpwB,EAAKC,MACTrB,OACEA,GACEwxB,EACJyvH,EAASjhJ,EAAOslD,QAAQ,kBACxB8yJ,EAASn3D,GAAU7/I,EAAGk2N,KAAK2b,qBAAqBhyF,GAElD,GAAIzvH,EAAM6wB,QAAQliD,OAAS,GAAKi4M,GAAUA,EAAOglB,YAAc,QAAUh8N,EAAG6/D,SAAU,CACpF7/D,EAAG6rE,MAAMxtD,MAAM24L,EAAOxgM,QAS1B5W,eAAewwB,GACb,MAAMpwB,EAAKC,MACT4rE,MACEA,GACE7rE,GACJpB,OACEA,GACEwxB,EACJw+I,EAAMhwK,EAAOslD,QAAQ,gBACrB27F,EAASjhJ,EAAOslD,QAAQ,kBACxB1tC,EAAQqpI,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOlpH,QAAQqgL,OAEzE,GAAIp4M,EAAOigD,UAAU7G,SAAS,cAAgBh4C,EAAG6/D,UAAYjhE,EAAOigD,UAAU7G,SAAS,iBAAkB,CACvG,OAGF,GAAI6nG,GAAUrpI,EAAO,CACnB,IAAI8rO,EACJ,MAAMC,GAAiBD,EAAmBz2K,EAAMwrB,YAAc,MAAQirJ,SAA0B,OAAS,EAAIA,EAAiBtxN,MAAKwxN,GAAKA,EAAEhsO,QAAUA,IAEpJ,GAAI+rO,IAAkBnyN,EAAMipF,SAAU,CACpCxtC,EAAMxtD,MAAM7H,GAAQ+rO,EAAc9oJ,WAClC,OAAO,WAGJ,GAAIrpE,EAAMipF,SAAU,CACvB,MAAM29F,EAASh3M,EAAGk2N,KAAKlyB,QAAQryL,IAAI6E,GACnC,GAAIwgM,EAAOglB,YAAc,MAAO,CAC9B,GAAI5rM,EAAMsiG,OAAQ,CAChB7mD,EAAMs2K,cAAc3rO,OACf,CACLq1D,EAAMxtD,MAAM7H,MAMpB,GAAIo4J,EAAK,CACP5uK,EAAG8gP,uBAAuBrwI,GAAa9+F,IAAIi9J,GAAKhkK,IAChD,OAAO,OAQXhL,YAAYwwB,GACV,IAAIqyN,EACJ,MAAMvsB,KACFA,GACEj2N,MACJk/N,YACEA,GACEjJ,EAEN,IAAKj2N,KAAK4/D,WAAas/J,EAAYpG,eAAiB0pB,EAAsBtjB,EAAY1sJ,UAAY,MAAQgwK,SAA6B,GAAKA,EAAoBt7J,cAAe,CAC7KlnF,KAAK6gP,uBAAuB3hB,EAAYv0N,IAExC,OAAO,KAET,OAAO,OAKX61O,GAAMt4O,OAAS,QACfijO,GAAmB2F,gBAAgB0P,GAAO,KAAM,CAAC,OAAQ,cACzDrV,GAAmB2F,gBAAgB0P,GAAO,MAAO,CAAC,aAUlD,IAAIiC,GAAoBv1N,GAAU,MAAMu1N,UAA0Bv1N,GAAU7R,IAC1EtN,mBACE,MAAO,mBAYTpO,aAAao3M,EAAQ9kI,EAASn8D,EAAKyiF,EAAaJ,EAAY+B,GAC1D,MAAMtuB,EAAQ5rE,KAAK4rE,MACjB82K,EAAY3rC,EAAO2rC,YAAc3rC,EAAO95G,IAAM,CAAC,CAC7CA,IAAK85G,EAAO95G,IACZyiI,SAAU3oB,EAAO2vB,kBACd,IACP,IAAI/9K,EAAO,iBAAiB7yC,MAC5B4sO,EAAU1jP,SAAQmZ,IAChB,IAAItL,EAAOsL,EAAO8kF,IAChBA,EAAM,KACR,GAAIpwF,IAAS,KAAMA,EAAO,MAC1B,OAAQA,GACN,IAAK,MACL,IAAK,MACHowF,EAAMrxB,EAAMqxB,IAAI85G,EAAOxgM,MAAO07D,GAC9B,MACF,IAAK,MACHgrB,EAAMrxB,EAAMv3D,IAAI0iM,EAAOxgM,MAAO07D,GAC9B,MACF,IAAK,MACHgrB,EAAMrxB,EAAMjjD,IAAIouL,EAAOxgM,MAAO07D,GAC9B,MACF,IAAK,UACL,IAAK,MACHgrB,EAAMrxB,EAAM+2K,QAAQ5rC,EAAOxgM,MAAO07D,GAClC,MACF,IAAK,QACHgrB,EAAMhrB,EAAQnzE,OACd,MACF,IAAK,gBACHm+F,EAAMhrB,EAAQxmE,QAAO,CAACwxF,EAAKzqB,KACzB,MAAMjzE,EAAQizE,EAAOukI,EAAOxgM,OAC5B,OAAO0mF,GAAO19F,GAAS,KAAO,EAAI,KACjC,GACH,MAEJ,UAAWsN,IAAS,WAAY,CAC9BowF,EAAMhrB,EAAQxmE,OAAOoB,EAAM,SAAUsL,EAASA,EAAOyqO,KAAO,GAE9D,GAAI3lJ,IAAQ,KAAM,CAChB,MAAM4lJ,EAAW,uBAEfC,EAAY3qO,EAAO2wI,MAAQ,oCAAoC3wI,EAAO2wI,aAAe,GAEvF,IAAIi6F,EAAY5qO,EAAOunN,SAAWvnN,EAAOunN,SAAS,CAC9CvnN,OAAAA,EACA8kF,IAAAA,IACGA,EACL+lJ,EACF,GAAID,GAAa,KAAM,CACrBA,EAAY,GAGd,IAAK75O,OAAO65O,GAAWn3O,SAAS,QAAS,CACvCo3O,EAAcF,EAEZ,GAAGA,eAAuBD,MAAaE,SAEvC,0BAA0BF,MAAaE,aAGtC,CACHC,EAAcD,EAEhBp6L,GAAQ,OAAOq6L,aAGnB,OAAOr6L,EAAO,aA4BlB,MAAMs6L,WAAuBR,GAAiB/iL,KAE5C3xD,mBACE,MAAO,eAETvO,0BACE,MAAO,CAyBL0jP,iBAAkB,KAwBlBvkP,OAAQ,UAGZgB,UAAUs2N,EAAM99M,GACdnY,KAAKi2N,KAAOA,EACZ/7M,MAAMsB,UAAUy6M,EAAM99M,GACtB,IAAK89M,EAAKlkG,SAAS3zG,MAAO,CACxB,MAAM,IAAI1N,MAAM,iDAElB1Q,KAAK4nO,UAAU3R,EAAKrqJ,OACpBqqJ,EAAKY,WAAW1nM,GAAG,CACjBwxN,gBAAiB,oBACjB3hB,WAAY,aAMZnyM,KAAM,IACNvQ,QAAStc,OAGbL,UAAUisE,GACR5rE,KAAKupE,gBAAgB,SACrBqC,EAAMz8C,GAAG,CACP1qB,KAAM,QACNkpG,OAAQ,gBAER9gF,KAAM,EACNvQ,QAAStc,OAGb4rE,YACE,OAAO5rE,KAAKi2N,KAAKrqJ,MAEnBjsE,UAAUgiE,GAER3hE,KAAKmjP,aAAanjP,KAAKrB,QACvBub,MAAM6nD,UAAUJ,GAElBhiE,aAAahB,GACXqyC,GAAaoyM,aAAazkP,EAAQ,UAClC,OAAOA,EAETgB,aAAahB,GAEXqB,KAAK4rE,MAAM0tB,iBAAmBt5F,KAAK4/D,UAAYjhE,IAAW,SAE1D,IAAKqB,KAAKwd,cAAe,CACvBxd,KAAK4rE,MAAMxtD,SAGfze,uBAAuBujP,GACrBlyM,GAAaqyM,cAAcH,EAAkB,oBAC7C,OAAOA,EAETvjP,yBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAK4rE,MAAMxtD,SAMfoiD,0BACE,MAAO,CACLC,MAAO,CAAC,cASZ9gE,mBAAkBgvK,IAChBA,EAAGn8F,OACHA,IAEA,GAAIm8F,EAAIxnF,iBAAmB,mBAAoB3U,EAAOryD,MAAO,CAE3DwuJ,EAAIxnF,cAAgB,MAEpBwnF,EAAIsyE,eAAiB,UAChB,GAAItyE,EAAIznF,gBAAkB1U,EAAOryD,KAAKqvD,UAAW,CAEtDm/F,EAAI20E,YAAYtjP,KAAKujP,wBAGzB5jP,sBAAsB6jP,IAKtB7jP,YAAWo3M,OACTA,EAAMunB,YACNA,EAAW3vD,IACXA,EAAGn8F,OACHA,EAAMjhE,KACNA,EAAImwO,cACJA,IAEA,MAAM3hP,EAAKC,MACTmgB,KACEA,GACEqyD,GACJg9F,UACEA,GACEzvK,EAAGk2N,KACP/uI,EAAiB,gBAAiB/mE,EAClCgnE,EAAiB,mBAAoBhnE,EACrCsjO,EAAgB1jP,EAAGpB,SAAW,SAC9BiqO,EAAa,CACX8a,iBAAkB,EAClBC,mBAAoB,GAEtBC,EAGA18J,IAAkBu8J,GAAiB1jP,EAAGmjP,kBAAoB/iO,EAAKqvD,aAAekyK,GAE9Ev6J,IAAkBs8J,EAEpB,GAAIv8J,GAAiBC,EAAe,CAClC51E,EAAKtK,OAASuoK,EAEhB,GAAIzvK,EAAG6rE,MAAM2lB,WAAaqyJ,IAAoB7jP,EAAG6/D,SAAU,CAEzDm3I,EAAO4tB,UAAUrG,GACjB,MAAM/lI,EAAcrR,EAAgB1U,EAASryD,EAAKo4E,YAClDo2E,EAAIxnF,cAAgBA,EACpBwnF,EAAIznF,cAAgBA,EAEpB,GAAIC,EAAe,CACjByhJ,EAAW,kBAAoB,MAG5B,CACHA,EAAW,oBAAsB,EAInC,MAAMib,EAAgB9jP,EAAG+jP,kBAAkBxlB,EAAavnB,EAAQx+G,GAC9Dv0E,SAAe6/N,IAAkB,SAAWA,EAAgBA,EAAc7/N,MAE5E,GAAIA,EAAQ,EAAG,CACbzS,EAAKtK,QAAUkZ,EAAKqvD,YAAci0K,EAAgB,EAAIz/N,EAAQwrJ,EAAY,GAG5E,GAAIq0E,EAAc58O,OAAQ,CACxBsK,EAAKtK,QAAU48O,EAAc58O,QAIjC0nK,EAAIu7D,UAAUtB,GAEhBjpO,kBAAkB2+N,EAAavnB,EAAQx+G,GACrC,MAAMtmB,EAAUsmB,EAAY3G,cAAc3/E,QAE1C,GAAIggE,EAAQA,EAAQnzE,OAAS,GAAGqoF,cAAe,CAC7ClV,EAAQrgE,MAEV,MAAM+2C,EAAO3oD,KAAK+jP,aAAahtC,EAAQ9kI,EAAS,uBAAwBsmB,EAAaA,EAAYp4E,KAAKg4E,WAAYI,EAAYp4E,KAAK84E,aAEnI,IAAKqlI,EAAYj3K,SAASvoD,OAAQ,CAChCw/N,EAAY5sK,UAAY/I,MAGrB,CACH1Q,GAAUqtE,KAAK38D,EAAM21K,EAAY3qK,mBAGnC,OAAOojJ,EAAO2rC,UAAY3rC,EAAO2rC,UAAU5jP,OAASi4M,EAAO95G,IAAM,EAAI,EAQvEt9F,eACEZ,OAAQ6sE,EAAK2G,QACbA,IAEA,IAAKvyE,KAAK4/D,UAAYgM,EAAM2lB,UAAW,CAGrC,GAAIhf,GAAW3G,EAAMwrB,SAASrmE,MAAKipE,GAAWA,EAAQzjF,SAASg8D,IAAU,CACvE,OAIF,MAAMyxK,EAAe/lP,OAAOD,KAAKu0E,GAAS5qE,MAAK4O,IAC7C,MAAM0tO,EAAWjkP,KAAKi2N,KAAKlyB,QAAQryL,IAAI6E,GAEvC,OAAOrW,QAAQ+jP,KAAc/jP,QAAQ+jP,EAAShnJ,MAAQ/8F,QAAQ+jP,EAASvB,eAEzE,GAAIsB,EAAc,CAChBhkP,KAAKi2N,KAAKiuB,iBAAmB,OAQnCvkP,UACEK,KAAKi2N,KAAKlyB,QAAQsyB,eAAer3N,SAAQ+3M,IACvC,GAAI/2M,KAAKmkP,WAAWptC,GAAS,CAC3B/2M,KAAKi2N,KAAKmuB,cAAcrtC,OAI9Bp3M,WAAWo3M,GACT,OAAOA,EAAO95G,KAAO85G,EAAO2rC,WAGhCO,GAAerhL,aAAe,kBAC9BqhL,GAAe/6O,OAAS,eACxBijO,GAAmB2F,gBAAgBmS,IAmKnC,MAAMoB,WAAmBxpF,GAEvB9sJ,mBACE,MAAO,aAETvO,0BACE,MAAO,CACLqN,KAAM,SA2BNoW,MAAO,KASPqhO,YAAa,MAQjBziO,2BACE,MAAO,CA8BLi6I,aAAc,MAGlBt7F,0BACE,MAAMroD,EAAS+B,MAAMsmD,aACrBroD,EAAOsoD,MAAMjiE,KAAK,sBAClB,OAAO2Z,EAgDTxY,eAAei9J,GACb,MAAMm6C,OACJA,GACEn6C,EACJ,OAAOm6C,GAAUA,EAAOwtC,0BAA4B,OAASxtC,IAAW/2M,KAAK6/D,OAAO2kL,eAEtF7kP,iBAAiBwwB,GACf,OAAO6gB,GAAa55B,OAAO8C,MAAMqhJ,iBAAiBprI,GAAQnwB,KAAK6/D,OAAOw2K,uBAAuBlmN,IAE/FxwB,oBAAmBsjB,MACjBA,EAAK8zL,OACLA,IAEA,MAAMh3M,EAAKC,KACX,GAAI+2M,EAAQ,CACV,GAAIA,EAAO0tC,gBAAiB,CAC1BzzM,GAAaxhC,MAAMyT,EAAO8zL,EAAO0tC,iBAEnC,GAAI1tC,EAAO8iB,cAAe,CACxB,MAAMrqJ,UACFA,GACEunI,EACJnnF,EAAOpgD,EAAYzvE,EAAG8/D,OAAOpqB,IAAM,OAAS,QAAU11C,EAAG8/D,OAAOpqB,IAAM,QAAU,OAClFxyB,EAAMwiF,eAAiB,CACrBguB,OAAQ,IACR7D,KAAM,6BAA6BA,IACnC3kH,KAAMlL,EAAGo7B,EAAEq0C,EAAY,kBAAoB,qBAC3C8hK,OAAQ,IAAMv6B,EAAOvnI,WAAaA,GAGtC,GAAIzvE,EAAGukP,YAAa,CAClB,MAAMI,EAAqB3kP,EAAG4kP,sBAAsB5tC,GAClD6tC,EAAoB7kP,EAAG8kP,qBAAqB9tC,GAC9C,GAAI2tC,EAAoB,CACtBzhO,EAAM6hO,SAAW,CACfrxH,OAAQ,IACR7D,KAAM,oCACN3kH,KAAMlL,EAAGo7B,EAAE,gBAAiB/wB,EAAaY,WAAW05O,EAAmBz5O,OACvEqmO,OAAQ,KACN,MACEh/N,OAAQ0gE,GACN+jI,EAGJ,GAAI2tC,EAAmBpyO,OAAOi/D,YAAYwlI,EAAQ2tC,GAAqB,CACrE,IAAIK,EACJhuC,EAAO8kB,OAAS6oB,EAAmB7oB,OAGnC,MAAOkpB,EAAsB/xK,EAAU3rB,YAAc,MAAQ09L,SAA6B,GAAKA,EAAoBjmP,QAAS,CAC1Hk0E,EAAUlxE,aAMpB,GAAI8iP,EAAmB,CACrB3hO,EAAM+hO,SAAW,CACfvxH,OAAQ,IACR7D,KAAM,qCACN3kH,KAAMlL,EAAGo7B,EAAE,eAAgB/wB,EAAaY,WAAW45O,EAAkB35O,OACrEqmO,OAAQ,KACN,MACEh/N,OAAQ0gE,GACN+jI,EAGJ,GAAI6tC,EAAkBtyO,OAAOi/D,YAAYwlI,EAAQ6tC,EAAkB/7L,aAAc,CAC/E,IAAIo8L,EACJluC,EAAO8kB,OAAS+oB,EAAkB/oB,OAGlC,MAAOopB,EAAuBjyK,EAAU3rB,YAAc,MAAQ49L,SAA8B,GAAKA,EAAqBnmP,QAAS,CAC7Hk0E,EAAUlxE,eAQxB,OAAOmhB,EAETtjB,sBAAsBo3M,GACpB,MAAM1mI,gBACJA,EAAe/9D,OACfA,GACEykM,EACJ,GAAI1mI,EAAiB,CACnB,OAAOA,EAAgBhpB,WAAa0vJ,EAAO1vJ,SAAWgpB,EAAgBhpB,SAASgpB,EAAgBhpB,SAASvoD,OAAS,GAAKuxE,EAGxH,IAAK/9D,EAAO68D,OAAQ,CAClB,OAAO78D,GAGX3S,qBAAqBo3M,GACnB,MAAMluJ,YACJA,EAAWv2C,OACXA,GACEykM,EACJ,GAAIluJ,EAAa,CACf,OAAOA,EAGT,IAAKv2C,EAAO68D,OAAQ,CAClB,OAAO78D,IAIb+xO,GAAWziL,aAAe,GAC1ByiL,GAAWn8O,OAAS,aACpBijO,GAAmB2F,gBAAgBuT,GAAY,MAM/C,MAAMa,GAAY,CAChB9+L,UAAW,YACX80F,UAAW,YACX70F,QAAS,UACT8+L,UAAW,YACX7/L,UAAW,YACX8/L,QAAS,UACT5+L,UAAW,YACXC,SAAU,WACVH,SAAU,WACVK,QAAS,UACTC,SAAU,WACVF,MAAO,QACPH,YAAa,eAkBf,MAAM8+L,WAAmB3lL,GACvB//D,eAAe4b,GACbrB,SAASqB,GACTrc,EAAgBc,KAAM,eAAgB,IACtCd,EAAgBc,KAAM,YAAa,IAErCwgE,0BACE,MAAO,CACLC,MAAO,CAAC,mBAAoB,iBAAkB,YAAa,qBAAsB,cAAe,mBAAoB,qBAAsB,cAAe,qBAEzJ,oCAEAtF,OAAQ,CAAC,oBACTuF,SAAU,CAAC,uBAAwB,yBAKvC/gE,iBACE,MAAMI,EAAKC,MACT6/D,OACEA,GACE9/D,EAEN8/D,EAAOylL,aAAYnpB,GAAWp8N,EAAGwlP,aAAappB,KAE9Ct8J,EAAOg3J,WAAW1nM,GAAG,CACnBq2N,WAAY,eACZlpO,QAASvc,IAEXA,EAAG6nO,UAAU/nK,EAAO+L,OAEtBjsE,aAAaw8N,GAEXA,EAAQspB,oBAAsBxtM,GAAU72C,cAAc,CACpDkR,OAAQ6pN,EAAQ1lL,QAChBiI,UAAW,CACTgnM,gCAAiC,KAIvC/lP,UAAUgiE,GACR,IAAK3hE,KAAKwd,cAAe,CAEvBxd,KAAK2lP,YAAc,KACnB3lP,KAAKk7F,QACLl7F,KAAK2lP,YAAc,MAErBzrO,MAAM6nD,UAAUJ,GAElBhiE,kBAAkBimP,GAEhB5lP,KAAK6/D,OAAOppB,QAAQmI,UAAU8X,OAAO,2BAA4BkvL,GAInEjmP,UAAUisE,GACR5rE,KAAKupE,gBAAgB,SACrBqC,EAAMz8C,GAAG,CACP1qB,KAAM,QACN2gF,OAAQ,gBAER0zG,QAAS,CACPjsK,KAAM,EACN7U,GAAI,kBAENsE,QAAStc,OAIbL,mBACEK,KAAK6lP,gBAGPlmP,iBAAiBqzN,GACf,MAAMjc,OACFA,EAAMvkI,OACNA,EAAM8rJ,YACNA,GACEtL,EACJmJ,EAAUn8N,KAAK6/D,OAAOsqK,SAASpzB,EAAO8kB,QAExC,IAAK77N,KAAK4/D,UAAYm3I,EAAO+uC,YAAc/uC,EAAOxoH,WAAa/b,EAAO6T,eAAiB81I,EAAQ3sJ,UAAW,CACxG,MAAMu2K,EAAc/lP,KAAKgmP,cAAcxzK,EAAQukI,GAC/C,GAAIgvC,IAAgB,MAAQA,SAAqB,GAAKA,EAAYH,IAAK,CAErEtnB,EAAY1/K,UAAU7/B,IAAI,iBAE1Bu/M,EAAY5sK,UAAY,GAExBshK,EAAWsL,YAAcynB,EAAYznB,cAO3C3+N,gBAAegvK,IACbA,EAAG3jG,MACHA,EAAKsiE,UACLA,IAGA,GAAItiE,IAAU2jG,EAAIhkK,IAAM2iI,IAAcqhC,EAAI1nK,OAAQ,CAChDjH,KAAKimP,cAAgB,MAIzBtmP,oBAAmByyD,OACjBA,EAAMmgB,QACNA,EAAOwkI,OACPA,IAEA,GAAI/2M,KAAK4/D,SAAU,CACjB,OAEF,GAAIxN,IAAW,UAAYmgB,EAAQuzK,aAAe/uC,EAAO+uC,WAAY,CAEnE,IAAK,MAAM/zD,KAAS/xL,KAAKkmP,aAAaj0O,QAAS,CAC7C,GAAI8/K,EAAMglB,SAAWA,EAAQ,CAC3B/2M,KAAKmmP,YAAYp0D,IAGrB/xL,KAAKomP,UACL,OAEFpmP,KAAK6lP,gBAGPlmP,eACGK,KAAK4/D,UAAY5/D,KAAKk7F,QAGzBv7F,oBACGK,KAAK4/D,UAAY5/D,KAAKk7F,QAGzBv7F,sBACGK,KAAK4/D,UAAY5/D,KAAKk7F,QAQzBv7F,kCAAiCZ,OAC/BA,IAEA,IAAKiB,KAAKqmP,YAAa,CACrB,MAAMnqK,EAAUn9E,EAAO8M,OAAOhC,KAAIqmB,GAAKlwB,KAAK6/D,OAAO+L,MAAMnmE,QAAQyqB,KACjE,IAAI+oC,EAAU,MACd,IAAK,MAAM84H,KAAS/xL,KAAKkmP,aAAc,CACrC,IAAIzsD,EAAc,KAElB,IAAK,IAAI76L,EAAImzL,EAAMu0D,UAAW1nP,GAAKmzL,EAAMw0D,SAAW9sD,EAAa76L,IAAK,CACpE66L,EAAcv9G,EAAQtwE,SAAShN,GAEjC,GAAImzL,EAAM8H,aAAeJ,EAAa,CACpC1H,EAAM8H,WAAaJ,EACnBxgI,EAAU,MAIdA,GAAWj5D,KAAKomP,WAMpBzmP,qBAAqB82C,GACnB,IAAI+vM,EACJ,IAAKA,EAAuB/vM,EAAQ8R,eAAiB,MAAQi+L,SAA8B,GAAKA,EAAqBz0D,MAAO,CAC1H,OAAO/xL,KAAK6/D,OAAO+L,MAAMonB,MAAMv8C,EAAQ8R,YAAYwpI,MAAMu0D,WAE3D,OAAOtmP,KAAKihE,WAAWmhI,qBAAqB3rJ,GAG9C92C,qBAAqB82C,GACnB,IAAIgwM,EACJ,IAAKA,EAAwBhwM,EAAQ8R,eAAiB,MAAQk+L,SAA+B,GAAKA,EAAsB10D,MAAO,CAC7H,OAAOt7I,EAAQ8R,YAAYwpI,MAAMglB,OAEnC,OAAO/2M,KAAKihE,WAAW2wK,qBAAqBn7L,GAK9C92C,oBAAmBo3M,OACjBA,EAAM9zL,MACNA,IAEA,GAAI8zL,EAAO2vC,YAAc,MAAO,CAC9BzjO,EAAM6iO,WAAa,CACjB76O,KAAM,2BACN2kH,KAAM,aAAamnF,EAAO+uC,WAAa,iBAAmB,qBAC1Dl9L,QAAS,4BACT9yC,IAAK,cACL29G,OAAQ,IACR7zD,SAAU5/D,KAAK4/D,SACf0xK,OAAQ,IAAMv6B,EAAO+uC,YAAc/uC,EAAO+uC,aAOhDnmP,kBAAkBwwB,GAChB,IAAKnwB,KAAKqmP,YAAa,CACrB,MAAMM,EAAqBx2N,EAAMxxB,OAAOslD,QAAQ,wBAChD,GAAI0iM,EAAoB,CACtB,IAAIC,EACJ,MAAM/mL,OACFA,GACE7/D,MACJ+xL,MACEA,GACE40D,EAAmBp+L,aACvB69K,SACEA,GACEvmK,EAAOkyD,UACXglF,OACEA,GACEhlB,EACJllL,EAAOzC,EAAaK,YAAYm8O,EAAwB1B,GAAU/0N,EAAMtjB,SAAW,MAAQ+5O,SAA+B,EAAIA,EAAwBz2N,EAAMtjB,MAC5Jg6O,EAAY,CACV5wB,KAAMp2J,EACNoS,QAAS,GACT8kI,OAAAA,EACAunB,YAAaqoB,EAAmBhzL,kBAChCh1D,OAAQwxB,EAAMxxB,OACdwxB,MAAAA,GAEJ,IAAK,IAAIvxB,EAAImzL,EAAMu0D,UAAW1nP,GAAKmzL,EAAMw0D,QAAS3nP,IAAK,CACrDioP,EAAU50K,QAAQzzE,KAAKqhE,EAAO+L,MAAMonB,MAAMp0F,IAE5CihE,EAAOtyC,QAAQ,aAAa1gB,IAAQg6O,GAEpC,IAAKzgB,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASnrF,aAAahyI,iBAAmB,OAAO4D,IAAO5D,cAAe,CAC7H,MAAM0lK,EAAM9uG,EAAOg3J,WAAWiwB,SAAS32N,EAAM+wB,eACvCklL,EAASqJ,aAAa,CAC1B9kO,GAAIgkK,EAAIhkK,GACRwrN,SAAUpf,EAAOpsM,UAIhB,GAAIwlB,EAAMtjB,OAAS,QAAS,CAC/B7M,KAAK+mP,aAAa,CAChBh1D,MAAAA,OASVpyL,cAAaoyL,MACXA,IAEA,MAAM9/G,EAAU,GAChB,IAAK,IAAIrzE,EAAImzL,EAAMu0D,UAAW1nP,GAAKmzL,EAAMw0D,QAAS3nP,IAAK,CACrDqzE,EAAQzzE,KAAKwB,KAAK6/D,OAAO+L,MAAMonB,MAAMp0F,IAEvCoB,KAAK6/D,OAAOq8F,gBAAkBjqF,EAGhCtyE,iBACGK,KAAK4/D,UAAY5/D,KAAKk7F,QAGzBv7F,gBAAeyyD,OACbA,IAGA,GAAIA,IAAW,UAAYA,IAAW,UAAW,EAC9CpyD,KAAK4/D,UAAY5/D,KAAKk7F,MAAM,QAOjCv7F,mBAAmBoyL,GACjB,IAAIi1D,EAAuBC,EAAmBC,EAC9C,MAAM50O,EAAStS,KAAK6/D,OAAOy8J,qBAAqBvqC,EAAMglB,QAAQ0uC,oBAC5DpzL,EAAS,GAAG0/H,EAAMu0D,eAAev0D,EAAMglB,OAAOpsM,KAGhD,IAAI8rC,GAAWuwM,GAAyBC,EAAoB30O,EAAOggD,aAAe,MAAQ20L,SAA2B,OAAS,EAAIA,EAAkB50L,MAAa,MAAQ20L,SAA+B,EAAIA,GAAyBE,EAAwB50O,EAAOkqG,iBAAmB,MAAQ0qI,SAA+B,OAAS,EAAIA,EAAsB70L,GAEjW,GAAI//C,EAAOkqG,cAAe,QACjBlqG,EAAOkqG,cAAcnqD,GAE9B,IAAK5b,EAAS,CACZA,EAAUwB,GAAU72C,cAAcpB,KAAKmnP,qBAAqBp1D,IAG9Dx3E,GAAQ1oD,SAASv/C,EAAQmkC,EAAS4b,GAClC0/H,EAAMt7I,QAAUA,EAChBs7I,EAAMusC,YAAc7nL,EAAQkd,kBAC5B,OAAOld,EAGT92C,qBAAqBoyL,GACnB,IAAIq1D,EACJ,MAAMrwC,OACFA,EAAMuvC,UACNA,EAASC,QACTA,EAAOpxM,IACPA,EAAGG,KACHA,EAAIpuC,MACJA,EAAKD,OACLA,GACE8qL,GACJllL,KACEA,GACEkqM,EACJvkI,EAASxyE,KAAK6/D,OAAO+L,MAAMonB,MAAMszJ,GACjClpM,EAAY,CACVsB,UAAW,CACT2oM,sBAAuB,EAEvBv9C,aAAc/X,EAAM8H,YAEtBtxI,YAAa,CACXwpI,MAAAA,GAEF1wL,MAAO,CACL8zC,IAAAA,EACAG,KAAAA,EACAruC,OAAAA,EACAC,MAAAA,GAEFwvB,QAAS,CACP27B,OAAQ,GAAGi0L,OAAevvC,EAAOpsM,KACjC27O,UAAAA,EACAC,QAAAA,EACAxvC,OAAQA,EAAOxgM,MACf4/M,SAAUpf,EAAOpsM,IAEnB08C,SAAU,CAEV,CACE3I,UAAW,IAAIlB,GAAax9C,KAAK6/D,OAAOo7J,SAAS7jN,OAAO,CACtDzX,CAAC,KAAKkN,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAK5D,sBAAuB4D,EAC9ElN,CAACo3M,EAAOkkB,SAAUlkB,EAAOkkB,QACzBt7N,CAACo3M,EAAOmkB,iBAAkBnkB,EAAOmkB,kBAChC9jN,OAAO2/L,EAAOokB,SAEjB/xK,aAAc,KAEdb,YAAa,CACXwpI,MAAAA,GAGFr7J,QAAS,CACPqgL,OAAQA,EAAOxgM,MACf4/M,SAAUpf,EAAOpsM,IAGnBtJ,MAAO,CACL4F,OAAQjH,KAAK6/D,OAAOg3J,WAAWrnD,eAKtC43E,EAAwBrwC,EAAOuwC,kBAAoB,MAAQF,SAA+B,OAAS,EAAIA,EAAsBvgP,KAAKkwM,EAAQ,CACzI35J,UAAAA,EACA79C,MAAOw3M,EAAOmlB,YAAY1pJ,GAC1BA,OAAAA,EACAukI,OAAAA,EACAuvC,UAAAA,EACAC,QAAAA,IAEF,OAAOnpM,EAETz9C,uBAAuB2mP,EAAWC,EAAS72E,GACzC,IAAI63E,EAAYC,EAAoBC,EAAUC,EAC9C,MAAM3nP,EAAKC,MACT6/D,OACEA,GACE9/D,GACJ82N,WACEA,GACEh3J,EAKNymL,GAAaiB,EAAajB,KAAe,MAAQiB,SAAoB,EAAIA,GAAcC,EAAqB3wB,EAAW8wB,UAAY,MAAQH,SAA4B,OAAS,EAAIA,EAAmBzwB,UACvMwvB,GAAWkB,EAAWlB,KAAa,MAAQkB,SAAkB,EAAIA,GAAYC,EAAwB7wB,EAAW+wB,aAAe,MAAQF,SAA+B,OAAS,EAAIA,EAAsB3wB,UACzM,MAEA8wB,EAAehoL,EAAOu0K,QAAQ3oO,QAAO,CAAC5B,EAAKgyN,KACzChyN,EAAIgyN,GAAU,CACZn9K,UAAW,CACTgnM,gCAAiC,GAEnCr+L,SAAU,IAEZ,OAAOx9C,IACN,IAEH,IAAK,MAAMkoL,KAAShyL,EAAGmmP,aAAc,CACnC,GAAIn0D,EAAM6zD,KAAO7zD,EAAMu0D,WAAaC,GAAWx0D,EAAMw0D,SAAWD,EAAW,CAEzEvmP,EAAG+nP,YAAY/1D,EAAOhyL,EAAGkmP,cAAev2E,GAExCm4E,EAAa91D,EAAMglB,OAAO8kB,QAAQx0K,SAAS7oD,KAAKuB,EAAGonP,qBAAqBp1D,KAG5E,OAAO81D,EAETloP,QAAQ82D,EAAQ,OACd,MAAM12D,EAAKC,MACT6/D,OACEA,GACE9/D,GACJ82N,WACEA,GACEh3J,EAEN,IAAKpJ,IAAUogK,EAAW8wB,QAAU5nP,EAAG6/D,WAAa7/D,EAAG4lP,YAAa,CAClE,OAEF,MAAMkC,EAAe7nP,KAAK+nP,yBAE1BloL,EAAOylL,aAAYnpB,IACjB5hH,GAAQ+K,KAAK,CACX1jE,cAAeu6K,EAAQspB,oBACvBn0L,YAAa,SACblU,UAAWyqM,EAAa1rB,EAAQN,aAGpC97N,EAAGkmP,cAAgB,MAGrBtmP,eACEK,KAAKomP,UAMPzmP,YAAYoyL,GACVjvK,GAAYhhB,OAAO9B,KAAKkmP,aAAcn0D,GACtC,IAAK,IAAI7hL,EAAQ6hL,EAAMu0D,UAAWp2O,GAAS6hL,EAAMw0D,QAASr2O,IAAS,QAC1DlQ,KAAKgoP,UAAU,GAAG93O,OAAW6hL,EAAMglB,OAAOpsM,OAIrDhL,MAAMsoP,EAAS,MACb,MAAMloP,EAAKC,KACT+jM,EAAUhkM,EAAG8/D,OAAOkkI,QAAQsyB,eAAej4N,QAAOkH,GAAKA,EAAEwgP,YAAcxgP,EAAEipF,UAAU,MACnF25J,EAAYnoP,EAAGmmP,aAAapnP,OAC9BiB,EAAGmmP,aAAe,GAClBnmP,EAAGioP,UAAY,GACf,GAAIC,IAAWloP,EAAG8/D,OAAOsoL,iBAAkB,CACzC,IAAK,MAAMx5E,KAAO5uK,EAAG8/D,OAAOg3J,WAAWnnD,KAAM,CAC3C,IAAK,MAAMqnC,KAAUhT,EAAS,CAC5Bp1B,EAAIqwD,WAAWrwD,EAAIo4B,QAAQgQ,EAAOpsM,MAItC5K,EAAGqmP,QAAQ8B,IAAcnoP,EAAG8/D,OAAOg3J,WAAWkI,WAIlDp/N,gBACE,MAAMumP,aACFA,GACElmP,KACJooP,EAAY,IAAI52O,IAClB,IAAK,MAAMugL,KAASm0D,EAAaj0O,QAAS,CACxC,MAAM8kM,OACFA,GACEhlB,GACJt7I,QACEA,GACEsgK,EAEN,GAAItgK,EAAS,CACX,IAAIglB,EAAS2sL,EAAU12O,IAAIqlM,GAC3B,IAAKt7I,EAAQ,CAEX2sL,EAAU92O,IAAIylM,EAAQt7I,EAASllB,GAAUvxB,KAAKyxB,EAASA,EAAQe,gBAEjEu6I,EAAMz8I,KAAOmmB,EAAOnmB,KACpBy8I,EAAM7qL,MAAQu0D,EAAOv0D,UAGlB,CACHlH,KAAKmmP,YAAYp0D,IAGrB/xL,KAAKomP,UAIPzmP,YAAYoyL,EAAOt7H,EAAOi5G,EAAO,MAC/B,MAAM9jG,MACFA,EAAKirJ,WACLA,GACE72N,KAAK6/D,QACTwoL,YACEA,EAAWC,eACXA,GACEv2D,GACJw2D,gBACEA,GACE1xB,EACN,IAAIyvB,UACAA,EAASC,QACTA,GACEx0D,EACJ41D,EACAC,EAEF,IAAKnxL,GAAS4xL,GAAeC,EAAgB,CAC3C,OAEF,IAAKD,GAAe5xL,EAAO,CACzB,GAAIi5G,EAAM,CACR,MAAMx/J,EAAQw/J,EAAK3/E,WAAU4+E,GAAOA,EAAIooD,WAAauvB,IACrDqB,EAASj4E,EAAKx/J,GACdo2O,EAAYqB,EAAO5wB,cACd,CAEL,EAAG,CACD4wB,EAAS9wB,EAAW6B,WAAW9sJ,EAAMonB,MAAMszJ,WACnCqB,GAAUrB,IAAcC,GAGpCx0D,EAAMs2D,YAAc/B,IAAcv0D,EAAMu0D,UACxC,MAAMkC,EAAYlC,EAAYv0D,EAAMu0D,UACpCv0D,EAAM58I,IAAMwyM,EAAOxyM,IAAMqzM,GAAa94E,EAAOi4E,EAAOvwM,aAAemxM,GAErE,IAAKD,GAAkB7xL,EAAO,CAC5B,GAAIi5G,EAAM,CAER,MAAMx/J,EAAQkE,KAAKC,IAAIq7J,EAAK3/E,WAAU4+E,GAAOA,EAAIooD,YAAcwvB,EAAU,IAAI72E,EAAK5wK,OAAS,GAC3F8oP,EAAYl4E,EAAKx/J,GACjBo2O,EAAYsB,EAAU7wB,cACjB,CAEL,EAAG,CACD6wB,EAAY/wB,EAAW6B,WAAW9sJ,EAAMonB,MAAMuzJ,WACtCqB,GAAarB,KAAYD,GAGrCv0D,EAAMu2D,eAAiB/B,IAAYx0D,EAAMw0D,QACzC,MAAMkC,EAAY12D,EAAMw0D,QAAUA,EAClCx0D,EAAM18I,OAASuyM,EAAUvyM,OAASozM,GAAa/4E,EAAOk4E,EAAUxwM,aAAemxM,GAEjFx2D,EAAM9qL,OAAS8qL,EAAM18I,OAAS08I,EAAM58I,IAItCx1C,cAAc6yE,EAAQukI,GACpB,GAAIvkI,EAAO6T,aAAc,CACvB,OAEF,MAAMtmF,EAAKC,MACTgoP,UACEA,GACEjoP,GACJ6rE,MACEA,GACE7rE,EAAG8/D,OACPs2J,EAAWpf,EAAOpsM,GAClBuF,EAAQ07D,EAAMnmE,QAAQ+sE,GACtBvzE,EAAM,GAAGiR,OAAWimN,IACtB,IAAIpkC,EAAQi2D,EAAU/oP,GACtB,IAAK8yL,EAAO,CACV,MAAMxyL,EAAQw3M,EAAOmlB,YAAY1pJ,GACjCu/G,EAAQi2D,EAAU/oP,GAAO,CACvB83M,OAAAA,GAEFh3M,EAAGmmP,aAAa1nP,KAAKuzL,GAErB,IAAI22D,EACFC,EACAC,EAAe14O,EACjB,EAAG,CACDw4O,EAAgB98K,EAAMonB,QAAQ41J,GAC9BD,EAAeD,GAAiB3xC,EAAOmlB,YAAYwsB,GACnD,GAAIC,IAAiBppP,EAAO,CAC1ByoP,EAAU,GAAGY,OAAkBzyB,KAAcpkC,SAExC22D,GAAiBC,IAAiBppP,GAE3C,IAAIspP,EACFC,EACAC,EAAa74O,EACf,EAAG,CACD24O,EAAcj9K,EAAMonB,QAAQ+1J,GAC5BD,EAAaD,GAAe9xC,EAAOmlB,YAAY2sB,GAC/C,GAAIC,IAAevpP,EAAO,CACxByoP,EAAU,GAAGe,OAAgB5yB,KAAcpkC,SAEtC82D,GAAeC,IAAevpP,GACvCwyL,EAAMu0D,UAAYsC,EAAe,EACjC72D,EAAMw0D,QAAUwC,EAAa,EAE7B,GAAIh3D,EAAMw0D,QAAUx0D,EAAMu0D,UAAY,EAAG,CACvC,MAAM0C,EAAezyM,GAAUvxB,KAAK+xL,EAAOtgK,QAASsgK,EAAOtgK,QAAQe,eACnEu6I,EAAMz8I,KAAO0zM,EAAa1zM,KAC1By8I,EAAM7qL,MAAQ8hP,EAAa9hP,MAC3B6qL,EAAM6zD,IAAM,MAGhB,IAAK7zD,EAAMt7I,SAAWs7I,EAAM6zD,IAAK,CAC/B7lP,EAAGkpP,mBAAmBl3D,GAExB,OAAOA,GAIX7yL,EAAgBmmP,GAAY,QAAS,cACrCnmP,EAAgBmmP,GAAY,eAAgB,CAmB1CgB,YAAa,OAEfhB,GAAWn9O,OAAS,aACpBijO,GAAmB2F,gBAAgBuU,IA4CnC,MAAM6D,WAAkBxpL,GAEtB3xD,mBACE,MAAO,YAGTyyD,0BACE,MAAO,CACLC,MAAO,CAAC,oBAAqB,mBAKjC7oD,wBACE,MAAO,CACLuxO,OAAQ,cACRC,WAAY,mBACZC,gBAAiB,yBACjBC,WAAY,oBAGhB3pP,UAAUs2N,EAAM99M,GACd+B,MAAMsB,UAAUy6M,EAAM99M,GACtBla,OAAOmZ,OAAOpX,KAAM,CAClBi2N,KAAAA,EACA1iE,WAAY0iE,EAAKziE,gBAAgByiE,EAAKx/K,QAASwB,GAAUkkB,WAAWotL,WAAW,IAAMtxM,GAAUkkB,WAAWkyF,kBAG9G1uJ,oBACE,MAAMu/N,YACJA,GACEl/N,KAAKi2N,KACT,OAAQj2N,KAAK4/D,WAAas/J,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY1sJ,UAAY0sJ,EAAYpG,cAAgB94N,KAAK+wB,KAAKjyB,OAAS,EAE7Ja,UAAUgiE,GACR,GAAIA,EAAS,CACX3hE,KAAKy+C,QAEPvkC,MAAM6nD,UAAUJ,GAElBiK,YACE,OAAO5rE,KAAKi2N,KAAKrqJ,MAQnBjsE,gBACE,MAAMI,EAAKC,KACT4/I,EAAS7/I,EAAGk2N,KAAKuG,iBAAiBz8N,EAAGo2N,UACvC,GAAIv2E,EAAQ,CACV,IAAK7/I,EAAGypP,YAAa,CACnB,MAAO/yM,EAASlgC,EAAOwwI,GAAS9uG,GAAU72C,cAAc,CACtDqf,IAAK,MACLi+B,UAAW,qBACX2I,SAAU,CAAC,CACT5mC,IAAK,MACLi+B,UAAW,qBACV,CACDj+B,IAAK,MACLi+B,UAAW,uBAEZ,CACDuS,UAAW,OAEb,GAAIlxD,EAAGokD,OAAS,SAAU,CACxBy7F,EAAOn+I,YAAYg1C,OACd,CACLA,EAAQiI,WAAa,yBACrB3+C,EAAGk2N,KAAKx/K,QAAQh1C,YAAYg1C,GAE9B12C,EAAGypP,YAAc,CACf5pG,OAAQnpG,EACRlgC,MAAOA,EACPwwI,MAAOA,EACP0iG,UAAW7pG,GAGf7/I,EAAGypP,YAAYjzO,MAAMm7C,UAAY3xD,EAAGgxB,KACpChxB,EAAGypP,YAAYziG,MAAMr1F,UAAY3xD,EAAG2wD,MAAM5xD,OAC1C8gJ,EAAOhhG,UAAU7/B,IAAI,uBACrB,IAAKhf,EAAG2pP,0BAA2B,CACjC3pP,EAAGk2N,KAAKY,WAAW1nM,GAAG,CACpBw6N,WAAY5pP,EAAGi/N,WACf1iN,QAASvc,IAEXA,EAAG2pP,0BAA4B,OASrC/pP,gBACE,MAAMI,EAAKC,MACTi2N,KACEA,EAAIuzB,YACJA,GACEzpP,EAEN,IAAK,MAAM6pP,KAAO7pP,EAAG8pP,WAAa9pP,EAAG2wD,MAAO,CAC1C,MAAMi+G,EAAMsnD,EAAKyC,WAAWkxB,EAAIj/O,IAChC,GAAIgkK,EAAK,CAEPA,EAAIsyE,eAAiB,KACrB,MAAM3iB,EAAc3vD,EAAIo4B,QAAQhnM,EAAGo2N,UACnCmI,EAAYiB,SAAW,KACvB5wD,EAAIqwD,WAAWV,GACf3vD,EAAIsyE,eAAiB,OAGzB,GAAIuI,EAAa,CACfA,EAAY5pG,OAAOn1F,WAAWtkD,YAAYqjP,EAAY5pG,QACtD4pG,EAAYC,UAAU7qM,UAAU98C,OAAO,uBACvC/B,EAAGypP,YAAc,KAEnB,GAAIzpP,EAAG2pP,0BAA2B,CAChCzzB,EAAKY,WAAWvoM,GAAG,CACjBq7N,WAAY5pP,EAAGi/N,YACdj/N,GACHA,EAAG2pP,0BAA4B,MAEjCzzB,EAAK1oM,QAAQ,iBASf5tB,OAAOoxB,EAAM+4N,EAAkB9pP,KAAKm2N,UAClC,MAAMp2N,EAAKC,MACTi2N,KACEA,GACEl2N,EACJg3M,EAASkf,EAAKlyB,QAAQl3H,QAAQi9K,IAAoB7zB,EAAKlyB,QAAQryL,IAAIo4O,GACnEp5L,EAAQ3wD,EAAG6rE,MAAMm+K,YAAYhzC,EAAOxgM,MAAOwa,EAAMgmL,EAAO+uC,YAAc/uC,EAAOxoH,UAC/E,IAAI3vF,EAAI,EACRX,OAAOmZ,OAAOrX,EAAI,CAChBiqP,SAAU,GACVH,UAAW9pP,EAAG2wD,MACdA,MAAAA,EACA3/B,KAAAA,EACAolM,SAAUpf,EAAOpsM,GACjBs/O,OAAQ,IAAIjlP,OAAO,WAAWoF,EAAa6pK,aAAa/qK,OAAO6nB,cAAkB,QAEnF,GAAIA,EAAM,CACRhxB,EAAGmqP,oBACE,CACLnqP,EAAGoqP,gBAGL,IAAK,MAAM7rB,KAAermL,GAAUoP,SAAS4uK,EAAKx/K,QAAS,IAAI12C,EAAGopP,UAAW,CAC3E7qB,EAAY1/K,UAAU98C,OAAO/B,EAAGopP,OAAQppP,EAAGqpP,YAC3C,GAAI9qB,EAAY8rB,iBAAkB,CAChC9rB,EAAY5sK,UAAY4sK,EAAY8rB,iBACpC9rB,EAAY8rB,iBAAmB,MAGnC,IAAK15L,EAAO,CACV,OAEF,GAAIA,EAAM5xD,OAAS,EAAG,CACpBiB,EAAGsqP,eAAep0B,EAAKiJ,YAAaxuK,GAGtC,IAAK,MAAMk5L,KAAOl5L,EAAO,CACvB3wD,EAAGiqP,SAASJ,EAAIj/O,IAAM/L,IACtB,MAAM+vK,EAAMsnD,EAAKyC,WAAWkxB,EAAI1vN,KAAKvvB,IACrCgkK,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAIqwD,WAAWrwD,EAAIo4B,QAAQgQ,EAAOpsM,KAE5E,GAAI/L,EAAI,IAAM,CACZ,OAGJq3N,EAAK1oM,QAAQ,YAAa,CACxBwD,KAAAA,EACA2/B,MAAAA,IAMJ/wD,QACE,IAAI2qP,EACJ,GAAItqP,KAAK+wB,OAASu5N,EAActqP,KAAK0wD,SAAW,MAAQ45L,SAAqB,GAAKA,EAAYxrP,OAAQ,CACpGkB,KAAK6E,OAAO,KAQhB0lP,iBACE,IAAIC,EAAoBC,EACxB,OAAQD,GAAsBC,EAAezqP,KAAK0wD,SAAW,MAAQ+5L,SAAsB,OAAS,EAAIA,EAAa3rP,UAAY,MAAQ0rP,SAA4B,EAAIA,EAAqB,EAahM7qP,QAAQuQ,GACN,MAAMw6O,EAAU1qP,KAAK0wD,MAAMxgD,GAC3B,GAAIw6O,EAAS,CACX1qP,KAAKi2N,KAAK8Y,UAAU,CAClB5Y,SAAUn2N,KAAKm2N,SACfxrN,GAAI+/O,EAAQ//O,IACX,CACDqmO,SAAU,OAGd,QAAS0Z,EAEX/qP,eAAeu/N,EAAaxuK,GAC1B,MAAMi6L,EAAezrB,EAAcl/N,KAAKi2N,KAAKrqJ,MAAMnmE,QAAQy5N,EAAYv0N,IAAM,EAC3EigP,EAAcl6L,EAAMz+C,QAAQgG,MAAK,CAACpS,EAAGye,IAAMlQ,KAAK41B,IAAInkC,EAAEqK,MAAQy6O,GAAgBv2O,KAAK41B,IAAI1lB,EAAEpU,MAAQy6O,KACnG3qP,KAAK6qP,QAAQn6L,EAAMjrD,QAAQmlP,EAAY,KAKzCjrP,eACEK,KAAK6qP,QAAQ,GAKflrP,cACEK,KAAK6qP,QAAQ7qP,KAAK0wD,MAAM5xD,OAAS,GAKnCa,cACE,IAAImrP,EAAuBC,EAAoBC,EAC/C,MAAMjrP,EAAKC,MACTi2N,KACEA,GACEl2N,EAEJkrP,GAAaH,GAAyBC,EAAqB90B,EAAKmJ,gBAAkB,MAAQ2rB,SAA4B,OAAS,EAAIA,EAAmBpgP,MAAQ,MAAQmgP,SAA+B,EAAIA,GAAyBE,EAAwB/0B,EAAKi1B,mBAAqB,MAAQF,SAA+B,OAAS,EAAIA,EAAsBrgP,GAC9VwgP,EAAel1B,EAAKrqJ,MAAMnmE,QAAQwlP,IAAc,EAChDP,EAAU3qP,EAAG2wD,MAAM3/B,MAAK64N,GAAOA,EAAI15O,MAAQi7O,IAC7C,GAAIT,EAAS,CACXz0B,EAAK8Y,UAAU,CACb5Y,SAAUp2N,EAAGo2N,SACbxrN,GAAI+/O,EAAQ//O,IACX,CACDqmO,SAAU,WAEP,CACLjxO,EAAGqrP,gBAMPzrP,cACE,IAAI0rP,EAAwBC,EAAqBC,EACjD,MAAMxrP,EAAKC,MACTi2N,KACEA,EAAIvlK,MACJA,GACE3wD,EACJkrP,GAAaI,GAA0BC,EAAsBr1B,EAAKmJ,gBAAkB,MAAQksB,SAA6B,OAAS,EAAIA,EAAoB3gP,MAAQ,MAAQ0gP,SAAgC,EAAIA,GAA0BE,EAAyBt1B,EAAKi1B,mBAAqB,MAAQK,SAAgC,OAAS,EAAIA,EAAuB5gP,GACvWwgP,EAAel1B,EAAKrqJ,MAAMnmE,QAAQwlP,IAAc,EAClD,IAAIO,EACJ,IAAK96L,EAAM5xD,OAAQ,CACjB,OAEF,IAAK,IAAIF,EAAI8xD,EAAM5xD,OAAS,EAAGF,IAAKA,GAAK,EAAG,CAC1C,GAAI8xD,EAAM9xD,GAAGsR,MAAQi7O,EAAc,CACjCK,EAAU96L,EAAM9xD,GAChB,OAGJ,GAAI4sP,EAAS,CACXv1B,EAAK8Y,UAAU,CACb5Y,SAAUp2N,EAAGo2N,SACbxrN,GAAI6gP,EAAQ7gP,IACX,CACDqmO,SAAU,WAEP,CACLjxO,EAAG0rP,eASP9rP,YAAW2+N,YACTA,EAAWvnB,OACXA,EAAMvkI,OACNA,IAEA,IAAIk5K,EACJ,MAAM3rP,EAAKC,MACT4+C,UACEA,GACE0/K,GACJ/qE,WACEA,EAAU02F,OACVA,EAAMX,WACNA,GACEvpP,EACJ4rP,EAAW5rP,EAAGo2N,WAAapf,EAAOpsM,MAAQ+gP,EAAe3rP,EAAGiqP,YAAc,MAAQ0B,SAAsB,OAAS,EAAIA,EAAal5K,EAAO7nE,KAC3I,GAAIghP,EAAU,CAEZ/sM,EAAU7/B,IAAIhf,EAAGopP,QACjB7qB,EAAYstB,WAAa,KACzBttB,EAAY8rB,iBAAmB9rB,EAAY5sK,UAG3C,MAAMhE,EAAQ6lG,EAAWK,YAAc37G,GAAUmzF,KAAKkzF,EAAa,0CAA4CA,EAC/G,IAAK,IAAI/rK,EAAWghG,EAAWl3C,WAAY9pD,GAAY7E,EAAM3V,SAASwa,IAAY,CAChF,MAAMs5L,EAAgBt5L,EACpB+E,EAAc/E,EAASu5L,UACvBpuC,EAAU,CAAC,UAEbnrJ,EAAWghG,EAAWl3C,WACtB,IAAIvtE,EAASm7M,EAAO5wN,UAGpB,IAAK,IAAIl5B,EAAQ8pP,EAAOliO,KAAKuvC,GAAcn3D,EAAOA,EAAQ8pP,EAAOliO,KAAKuvC,GAAc,CAClF,MAAM53C,EAAW43C,EAAY9xD,UAAUspC,EAAQ3uC,EAAM+P,OACnD67O,EAAc5rP,EAAM,GAAK,IAAS,GAClCqN,EAAIrN,EAAM,GACV6rP,EAAa7rP,EAAM,GAAK,IAAS,GACnCu9M,EAAQl/M,KAAK,GAAG4L,EAAaY,WAAW0U,KAAYqsO,iBAA2BzC,MAAe97O,WAAWw+O,KACzGl9M,EAASm7M,EAAO5wN,UAElBqkL,EAAQl/M,KAAK4L,EAAaY,WAAWssD,EAAY9xD,UAAUspC,IAAU,WAErE+8M,EAAcphM,WAAWiJ,aAAazb,GAAUoT,0BAA0BqyJ,EAAQzzM,KAAK,IAAK,CAC1F+oD,SAAU,OACR64L,GACJA,EAAc/pP,SAEhBm2C,GAAU72C,cAAc,CACtBkR,OAAQgsN,EACR5/K,UAAW3+C,EAAGspP,gBACdp+O,KAAM0gP,KAMZhsP,YAAYwwB,GACV,MAAMpwB,EAAKC,KACX,GAAID,EAAGgxB,KAAM,CACXhxB,EAAGgxB,KAAOhxB,EAAGgxB,KAAK1nB,OAAO,EAAGtJ,EAAGgxB,KAAKjyB,OAAS,GAC7CiB,EAAG8E,OAAO9E,EAAGgxB,MACb,OAAO,KAET,OAAO,MAETpxB,cACE,GAAIK,KAAK+wB,KAAM,CACb/wB,KAAK+wB,KAAO,GACZ/wB,KAAK6E,OAAO7E,KAAK+wB,MACjB,OAAO,KAET,OAAO,MAETpxB,mBACE,MAAMI,EAAKC,MACT5B,OACEA,GACE2B,EAAG8/D,OAAOkyD,SAChB,GAAI3zH,GAAU2B,EAAGo2N,UAAYp2N,EAAGwqP,WAAY,CAC1CxqP,EAAG0+C,QACHrgD,EAAOm/O,iBAAiBx9O,EAAG8/D,OAAOkkI,QAAQl3H,QAAQ9sE,EAAGo2N,UAAWp2N,EAAGgxB,OAQvEpxB,kBAAkBwwB,GAChB,IAAI87N,EACJ,MAAMlsP,EAAKC,MACTi2N,KACEA,GACEl2N,GACJm/N,YACEA,GACEjJ,EAEN,IAAK9lM,EAAM+hG,UAAYnyH,EAAG6/D,UAAYs/J,IAAgB,MAAQA,SAAqB,GAAKA,EAAY1sJ,SAAW0sJ,EAAYpG,gBAAkBmzB,EAAa97N,EAAMlxB,OAAS,MAAQgtP,SAAoB,OAAS,EAAIA,EAAWntP,UAAY,EAAG,CAC1O,MAAMi4M,EAASkf,EAAKlyB,QAAQl3H,QAAQopJ,EAAKmJ,aAAajJ,UAEtD,GAAIpf,GAAUA,EAAOqrB,aAAe,MAAO,CACzCriO,EAAGo2N,SAAWF,EAAKmJ,aAAajJ,SAChCp2N,EAAGgxB,MAAQZ,EAAMlxB,IACjBc,EAAG8E,OAAO9E,EAAGgxB,QAInBpxB,eAAes2N,EAAMi2B,EAAkBC,GACrC,MAAMpsP,EAAKC,KACX,GAAID,EAAGgxB,QAAUo7N,GAAkBA,EAAeh2B,WAAap2N,EAAGo2N,UAAW,CAC3Ep2N,EAAG0+C,UAKTv/C,EAAgBgqP,GAAW,eAAgB,CACzC/kM,KAAM,SACNpzB,KAAM,GAKN+uC,OAAQ,CACNssL,GAAI,cACJC,WAAY,cACZC,SAAU,cACVC,eAAgB,cAChBC,eAAgB,mBAChBt0F,OAAQ,cAERu0F,UAAW,iBAGfvD,GAAUhhP,OAAS,YACnBijO,GAAmB2F,gBAAgBoY,IAyBnC,MAAMwD,WAAqBhtL,GAEzB3xD,mBACE,MAAO,eAETpO,UAAUs2N,EAAM99M,GACdnY,KAAKi2N,KAAOA,EACZ/7M,MAAMsB,UAAUy6M,EAAM99M,GAKxBqoD,0BACE,MAAO,CACLC,MAAO,CAAC,sBAAuB,qBAAsB,oBAAqB,qBAAsB,qBAAsB,oBAAqB,mBAAoB,oBAAqB,kBAAmB,WAI3M9gE,kBAAkBwwB,GAChB,MAAMpwB,EAAKC,KACTi2N,EAAOl2N,EAAGk2N,KACV02B,EAAax8N,EAAMxxB,OAAOslD,QAAQ,8BAIpC,GAAI0oM,IAAe5sP,EAAG8/I,UAAW,CAC/B9/I,EAAG8/I,UAAY,KACf,IAAIg8E,EAAS8wB,EAAWj2N,QAAQmlM,OAC9BM,EAAUlG,EAAKoe,WAAWxY,GAG5B,IAAKM,EAAQ3sJ,UAAW,CACtBqsJ,EAAS5F,EAAK22B,iBAAiB,GAC/BzwB,EAAUlG,EAAKoe,WAAWxY,GAE5BM,EAAQtkI,SAASpnF,MAAK,IAAM1Q,EAAG8/I,UAAY,SAU/ClgJ,UAAUktP,EAAiB5rM,GACzB,MAAMlhD,EAAKC,MACTi2N,KACEA,GACEl2N,EACJ87N,EAASgxB,EAAgBn2N,QAAQmlM,OACjC6a,EAASzgB,EAAKx/K,QACdq2M,EAAa72B,EAAKme,QAAQne,EAAKme,QAAQ3uO,QAAQo2N,GAAU,GACzDkxB,EAAc92B,EAAKoe,WAAWyY,GAC9BE,EAAkB/2B,EAAKoe,WAAWxY,GACpC,IAAIM,EAAU6wB,EACZC,EAAO,EACT,GAAI9wB,EAAQ/kG,MAAQ,KAAM,CAExB,GAAI21H,EAAY31H,MAAQ,KAAM,CAC5B+kG,EAAU4wB,EACVE,GAAQ,GAGZ,GAAIh3B,EAAKxgL,IAAK,CACZw3M,IAAS,EAEX,GAAIJ,EAAgBjuM,UAAU7G,SAAS,6BAA8B,CACnE,OAEF,MAAMm1M,EAAiB/wB,EAAQ1lL,QAAQuM,YAAc+pM,EAAYt2M,QAAQuM,YACzEjjD,EAAGotP,YAAc,CACf12M,QAASo2M,EACT/pG,SAAUq5E,EAAQv8E,OAAOnpG,QACzB22M,UAAWjxB,EAAQ1lL,QACnB0lL,QAAAA,EACA6wB,gBAAAA,EACAK,cAAelxB,EAAQ1lL,QAAQuM,YAC/BsqM,UAAWrsM,EACX3H,SAAU6iL,EAAQ7iL,UAAY,EAC9B29E,SAAU7iH,KAAKuU,IAAIukO,EAAgB/wB,EAAQllG,UAAYi2H,GACvDD,KAAAA,GAEFvW,EAAO93L,UAAU7/B,IAAI,qBACrBiuO,EAAgBO,kBAAkB,YAMpC5tP,UACE,MAAMwtP,EAAcntP,KAAKmtP,YACzB,GAAIA,EAAa,CACfntP,KAAKi2N,KAAKx/K,QAAQmI,UAAU98C,OAAO,qBACnCqrP,EAAYH,gBAAgBO,kBAAkB,WAAY,OAC1DvtP,KAAKmtP,YAAc,MAGvBxtP,gBAAgBw8N,EAASwwB,GACvB,MAAM5sP,EAAKC,KACTi2N,EAAOl2N,EAAGk2N,KACV4F,EAAS8wB,EAAWj2N,QAAQmlM,OAC5BuY,EAAUne,EAAK22B,iBAGjB,GAAIxY,EAAQ,KAAOvY,EAAQ,CACzB,MAAM2xB,EAAcv3B,EAAKoe,WAAWD,EAAQ,IAC5C,GAAIoZ,EAAYh+K,UAAW,CACzBg+K,EAAY31J,SACZ,QAGJskI,EAAQrkI,WAEVn4F,cAAcw8N,EAASwwB,GACrB,MAAM5sP,EAAKC,KACTi2N,EAAOl2N,EAAGk2N,KACV4F,EAAS8wB,EAAWj2N,QAAQmlM,OAC5BuY,EAAUne,EAAK22B,iBAGjB,GAAIxY,EAAQ,KAAOvY,EAAQ,CACzB,IAAKM,EAAQ3sJ,UAAW,CACtB,MAAMg+K,EAAcv3B,EAAKoe,WAAWD,EAAQ,IAC5CoZ,EAAY11J,WACZ,QAGJqkI,EAAQtkI,SAOVl4F,WAAW8tP,GACT,MAAMN,YACJA,GACEntP,KACJ,GAAImtP,EAAa,CACf,MAAMO,EAAOD,EAAaN,EAAYG,UACpC//G,EAAWn5H,KAAKuU,IAAIwkO,EAAYl2H,SAAUk2H,EAAYE,cAAgBK,EAAOP,EAAYF,MAE3FE,EAAYhxB,QAAQj1N,MAAQkN,KAAKC,IAAIk5H,EAAU4/G,EAAY7zM,WAU/D35C,qBAAoBhB,OAClBA,EAAMqiD,QACNA,IAEA,MAAMjhD,EAAKC,KACTsmC,EAAW3nC,EAAOslD,QAAQ,oBAC1Bk4K,EAAU71L,GAAYvmC,EAAGk2N,KAAKoe,WAAW/tM,EAAS5P,QAAQmlM,QAC5D,IAAInlK,EAAS,KACb,GAAIylK,GAAWx9N,EAAOslD,QAAQ,kCAAmC,CAC/DlkD,EAAG4tP,cAAcxxB,EAAS71L,QACrB,GAAI61L,GAAWx9N,EAAOslD,QAAQ,oCAAqC,CACxElkD,EAAGo/I,gBAAgBg9E,EAAS71L,QACvB,GAAIA,EAAU,CACnBvmC,EAAG6tP,UAAUtnN,EAAU0a,EAAQ,GAAGC,SAClCyV,EAASpwB,EAGXvmC,EAAG8tP,oBAAoBn3L,GAOzB/2D,mBAAmBwwB,GACjB,GAAInwB,KAAKmtP,YAAa,CACpBntP,KAAK8tP,WAAW39N,EAAM6wB,QAAQ,GAAGC,SACjC9wB,EAAM21B,kBAQVnmD,kBAAkBwwB,GAChB,GAAInwB,KAAKmtP,YAAa,CACpBntP,KAAK+tP,UACL59N,EAAM21B,kBAQVnmD,mBAAmBwwB,GAEjB,GAAI8nB,GAAU4O,aAAc,CAC1B,OAEF,MAAM9mD,EAAKC,MACTrB,OACEA,GACEwxB,EAEJmW,EAAWnW,EAAM+yH,SAAW,GAAKvkJ,EAAOslD,QAAQ,uIAChDk4K,EAAU71L,GAAYvmC,EAAGk2N,KAAKoe,WAAW/tM,EAAS5P,QAAQmlM,SAC1Dj9K,UACEA,GACEjgD,EACN,GAAI2nC,EAAU,CAGZ,GAAIsY,EAAU7G,SAAS,oBAAsB6G,EAAU7G,SAAS,yBAA0B,CACxFh4C,EAAG6tP,UAAUtnN,EAAUnW,EAAM8wB,cACxB,GAAItiD,EAAOslD,QAAQ,oCAAqC,CAC7DlkD,EAAGo/I,gBAAgBg9E,EAAS71L,QACvB,GAAI3nC,EAAOslD,QAAQ,kCAAmC,CAC3DlkD,EAAG4tP,cAAcxxB,EAAS71L,KAShC3mC,mBAAmBwwB,GACjB,GAAInwB,KAAKmtP,YAAa,CACpBntP,KAAK8tP,WAAW39N,EAAM8wB,SACtB9wB,EAAM21B,kBAQVnmD,iBAAiBwwB,GACf,GAAInwB,KAAKmtP,YAAa,CACpBntP,KAAK+tP,UACL59N,EAAM21B,kBAGVnmD,mBAAkBw8N,QAChBA,IAEA,MAAMwwB,EAAa3sP,KAAKi2N,KAAK+3B,gBAAgB7xB,GAC3CiY,EAAUp0O,KAAKi2N,KAAK22B,iBAEtB,GAAIxY,EAAQ,KAAOjY,EAAQN,OAAQ,CACjC8wB,EAAW/tM,UAAU7/B,IAAI,mCAG7Bpf,iBAAgBw8N,QACdA,IAEA,MAAMwwB,EAAa3sP,KAAKi2N,KAAK+3B,gBAAgB7xB,GAC7CwwB,EAAW/tM,UAAU98C,OAAO,kCAQ9BnC,oBAAoBktP,GAClB,IAAIoB,EACJ,MAAMluP,EAAKC,KAEX,GAAI6sP,GAAmB9sP,EAAGmuP,iBAAmBrB,EAAgBn2N,QAAQmlM,SAAW97N,EAAGmuP,gBAAgBx3N,QAAQmlM,OAAQ,CACjH97N,EAAG8tP,sBAGL,MAAMb,EAAkBjtP,EAAGk2N,KAAKoe,WAAWwY,EAAkBA,EAAgBn2N,QAAQmlM,QAAUoyB,EAAsBluP,EAAGmuP,mBAAqB,MAAQD,SAA6B,OAAS,EAAIA,EAAoBv3N,QAAQmlM,QAC3N,GAAImxB,EAAiB,CACnBA,EAAgBO,kBAAkB,aAAcrtP,QAAQ2sP,IACxD,GAAIA,EAAiB,CACnBG,EAAgBmB,iCACX,CACLnB,EAAgBoB,6BAGpBruP,EAAGmuP,gBAAkBrB,EAEvBltP,SACE,MAAMy0O,QACJA,EAAOjK,SACPA,GACEnqO,KAAKi2N,KAET,GAAIme,EAAQt1O,OAAS,EAAG,CAGtBqrO,EAASiK,EAAQ,IAAIyY,gBAAgBjuM,UAAU7/B,IAAI,eACnDorN,EAASiK,EAAQ,IAAIyY,gBAAgBjuM,UAAU7/B,IAAI,kBAIzD2tO,GAAa9qL,aAAe,UAC5B8qL,GAAaxkP,OAAS,eACtBijO,GAAmB2F,gBAAgB4b,IAqCnC,MAAM2B,WAAqB3uL,GACzB3xD,mBACE,MAAO,eAETlB,kBACE,MAAO,eAET2zD,0BACE,MAAO,CACLppD,OAAQ,CAAC,WAAY,aACrBqpD,MAAO,CAAC,qBAGZ7oD,wBACE,MAAO,CACL02O,iBAAkB,IAGtB9uP,0BACE,MAAO,CAMLkmF,UAAW,OAKX5lB,OAAQ,CACNyuL,SAAU,OACVC,SAAU,MACVC,SAAU,SAEZC,eAAgB,gBAChBC,cAAe,eACfC,gBAAiB,iBACjB31N,sBAAuB,CAAC,iBAAkB,gBAAiB,oBAG/Dt5B,UAAUs2N,EAAM99M,GACd+B,MAAMsB,UAAUy6M,EAAM99M,GACtB89M,EAAKY,WAAW1nM,GAAG,CACjBwxN,gBAAiB,oBACjBrkO,QAAStc,OAEXA,KAAKi2N,KAAOA,EAEdt2N,mBAAkBgvK,IAChBA,EAAGn8F,OACHA,IAEAm8F,EAAI74J,IAAI,aAAe9V,KAAK6uP,QAAU7uP,KAAKsuP,iBAAiB1iP,SAAS4mE,GAEvE7yE,kBAAkBV,EAAKmzD,EAAQjiC,GAC7B,MAAMi2M,SACFA,GACEpmO,KAAKi2N,KAAKlkG,UACdpzH,OACEA,GACEwxB,EAKN,OAAQnwB,KAAK4/D,UAAYx9D,WAAW0sP,eAAe9kP,WAAWlL,SAAW,KAAOsnO,IAAaA,EAAS/K,cAAgB18N,GAAUuB,QAAQvB,EAAOslD,QAAQ,+FAEzJtkD,OACEK,KAAK+uP,WAEPpvP,MACEK,KAAK+uP,SAAS,MAEhBpvP,QACEK,KAAKgvP,YAUPrvP,SAASsvP,EAAQ,OACf,MAAMlvP,EAAKC,MACT6/D,OACEA,GACE9/D,EAEJkyE,EAAUpS,EAAOq8F,gBAAgB99J,QAAO8xB,IAAMA,EAAE2oD,WAAao2K,IAU/D,IAAKh9K,EAAQnzE,QAAU+gE,EAAOgZ,UAAYhZ,EAAOtyC,QAAQ,aAAc,CACrE0kD,QAAAA,EACAg9K,MAAAA,MACK,MAAO,CACZ,OAEFlvP,EAAG8uP,OAASI,EACZlvP,EAAGuuP,iBAAiBtvP,SAAQ0yF,IAC1B,IAAIw9J,EACJ,OAAQA,EAAwBrvL,EAAOg3J,WAAW6B,WAAWhnI,MAAU,MAAQw9J,SAA+B,OAAS,EAAIA,EAAsBxwE,UAAU,gBAE7J3+K,EAAGuuP,iBAAmBzuL,EAAOq8F,gBAAgBjqJ,QAC7C4tD,EAAO+L,MAAM5sE,SAAQ0yF,IACnBA,EAAIvxE,KAAK8uO,MAAQlvP,EAAG8uP,QAAU9uP,EAAGuuP,iBAAiB1iP,SAAS8lF,MAG7D7xB,EAAOq8F,gBAAgBl9J,SAAQwzE,GAAUxyE,KAAKmvP,eAAe38K,EAAQy8K,KASrEpvL,EAAOtyC,QAAQ,OAAQ,CACrB0kD,QAAAA,EACAg9K,MAAAA,IAGJtvP,eAAe6yE,EAAQy8K,GACrB,IAAIG,GACHA,EAAwBpvP,KAAK6/D,OAAOg3J,WAAW6B,WAAWlmJ,MAAa,MAAQ48K,SAA+B,OAAS,EAAIA,EAAsBC,UAAU,YAAaJ,GAU3KtvP,UAAU6yE,GACR,MAAMzyE,EAAKC,KACTiyE,EAAUlyE,EAAGuuP,kBACbzuL,OACEA,GACE9/D,EACJuvP,EAAkB98K,GAAU3S,EAAO0vL,eAYrC,GAAI1vL,EAAOgZ,UAAYhZ,EAAO2vL,gBAAkBv9K,EAAQnzE,QAAU+gE,EAAOtyC,QAAQ,cAAe,CAC9F0kD,QAAAA,EACAq9K,gBAAAA,EACAL,MAAOlvP,EAAG8uP,WACL,MAAO,CACZ,MAAO,GAIT9uP,EAAG0vP,YAAYx9K,GACf,MAAMy9K,EAAmBz9K,EAAQpoE,KAAI6nF,IACnC,GAAI3xF,EAAG8uP,OAAQ,CAEbn9J,EAAIvxE,KAAK8uO,MAAQ,UACZ,CACLv9J,EAAMA,EAAIzL,OACVyL,EAAI3xF,EAAG2lF,WAAa3lF,EAAG4vP,gBAAgBj+J,GAEzC,OAAOA,KAET,GAAI3xF,EAAG8uP,OAAQ,CACbhvL,EAAO+L,MAAM0nB,KAAKo8J,EAAkBJ,GAEpCvvP,EAAG6vP,qBACE,CACL7vP,EAAG8vP,oBAAoBP,EAAiBI,GACxC7vL,EAAOq8F,gBAAkBwzF,EAW3B7vL,EAAOtyC,QAAQ,QAAS,CACtB0kD,QAAAA,EACAq9K,gBAAAA,EACAL,MAAOlvP,EAAG8uP,SAEZ,OAAOa,EAOT/vP,iBACE,GAAIK,KAAK6uP,OAAQ,CACf7uP,KAAKsuP,iBAAiBtvP,SAAQ0yF,IAC5B,IAAIo+J,EACJ,OAAQA,EAAyB9vP,KAAK6/D,OAAOg3J,WAAW6B,WAAWhnI,MAAU,MAAQo+J,SAAgC,OAAS,EAAIA,EAAuBpxE,UAAU,gBAGvK1+K,KAAK6uP,OAAS,MACd7uP,KAAKsuP,iBAAmB,GAS1B3uP,gBAAgB6yE,GACd,MAAMu9K,EAAev9K,EAAOxyE,KAAK0lF,WACjC,IAAIsqK,EAAU,EACd,MAAOhwP,KAAK6/D,OAAO+L,MAAMs1J,WAAWlhO,KAAK0lF,UAAW,GAAGqqK,OAAkBC,KAAY,CACnFA,IAEF,MAAO,GAAGD,OAAkBC,IAE9BrwP,oBAAoBswP,EAAiBp9J,GACnC,MAAMjnB,MACJA,GACE5rE,KAAK6/D,OACT,GAAI+L,EAAM8a,KAAM,CACd,OAAOupK,EAAgB39O,OAAOi/D,YAAYshB,EAAUo9J,EAAgBpnM,iBAC/D,CACL,MAAMqnM,EAAWtkL,EAAMnmE,QAAQwqP,GAC/B,OAAOrkL,EAAMgnB,OAAOs9J,EAAW,EAAGr9J,IAGtClzF,kBAAiB6yE,OACfA,EAAMvvD,MACNA,IAEA,MAAMljB,EAAKC,KACX,IAAKD,EAAG8/D,OAAOgZ,WAAa94E,EAAG8/D,OAAO2vL,eAAiBh9K,IAAWA,EAAO6T,aAAc,CACrFpjE,EAAMktO,IAAM,CACVllP,KAAMlL,EAAG4uP,cACT51N,YAAah5B,EACb+V,IAAK,cACL85G,KAAM,oBACN6D,OAAQ,IACR7zD,SAAU4S,EAAOqG,SACjBy4J,OAAQ,IAAMvxO,EAAGgvP,SAAS,OAE5B9rO,EAAMgjE,KAAO,CACXh7E,KAAMlL,EAAG2uP,eACT31N,YAAah5B,EACb6vH,KAAM,qBACN6D,OAAQ,IACR69G,OAAQ,IAAMvxO,EAAGgvP,YAEnB,GAAIhvP,EAAGuuP,iBAAiBxvP,OAAQ,CAC9BmkB,EAAMmtO,MAAQ,CACZnlP,KAAMlL,EAAG6uP,gBACT71N,YAAah5B,EACb6vH,KAAM,sBACN6D,OAAQ,IACR69G,OAAQ,IAAMvxO,EAAGivP,UAAUx8K,MAUnC7yE,YAAYkS,GACV,OAAOA,EAAMoG,MAAK,CAACo4O,EAAMC,KACvB,MAAMC,EAAOF,EAAKp0K,UAChBu0K,EAAOF,EAAKr0K,UACd,IAAK,IAAIr9E,EAAI,EAAGA,GAAK2xP,EAAKzxP,OAAQF,IAAK,CACrC,GAAI2xP,EAAK3xP,GAAK4xP,EAAK5xP,GAAI,CACrB,OAAQ,EAEV,GAAI2xP,EAAK3xP,GAAK4xP,EAAK5xP,GAAI,CACrB,OAAO,QAMjByvP,GAAazsL,aAAe,kBAC5BysL,GAAanmP,OAAS,eACtBijO,GAAmB2F,gBAAgBud,GAAc,KAAM,QACvDljB,GAAmB2F,gBAAgBud,GAAc,MAAO,SACxDljB,GAAmB2F,gBAAgBud,GAAc,MAAO,gBACxDljB,GAAmB2F,gBAAgBud,GAAc,MAAO,qBAKxD,MAAMoC,GAAqB,CACzB3uP,OAAQ,EACR1D,OAAQ,EACRs4B,QAAS,EACTlsB,QAAS,GA8FX,MAAMkmP,WAAoBhxL,GAIxB9nD,wBACE,MAAO,CAEL+4O,kBAAmB,qBACnBC,iBAAkB,6BAElBC,eAAgB,IAAIr/O,IACpBs/O,kBAAmB,IAAIjyO,KAI3B2hD,0BACE,MAAO,CACLC,MAAO,CAAC,qBAAsB,kBAAmB,mBAAoB,aACrEC,SAAU,CAAC,sBAKf/gE,iBACE,MAAMI,EAAKC,MACT6/D,OACEA,GACE9/D,EACN,IAAKA,EAAG2/N,SAAU,CAChB9qN,QAAQC,KAAK,4DACb,OAEF,GAAIgrD,EAAOkxL,aAAelxL,EAAOmxL,iBAAmB,MAAO,CACzDp8O,QAAQC,KAAK,8FAGf9U,EAAG6nO,UAAU/nK,EAAO+L,OACpB,GAAI7rE,EAAGk7I,aAAc,CACnBp7E,EAAO1wC,GAAGpvB,EAAGk7I,aAAcl7I,EAAGkxP,eAAgBlxP,GAEhDA,EAAGmxP,YAELvxP,UAAUisE,GACR,MAAM7rE,EAAKC,KACXD,EAAG8wP,eAAepyM,QAClB1+C,EAAG+wP,kBAAkBryM,QACrB1+C,EAAGwpE,gBAAgB,qBACnBqC,EAAMz8C,GAAG,CACP1qB,KAAM,oBACN2gF,OAAQrlF,EAAGqgO,cACX9jN,QAASvc,IAGbJ,UAAUgiE,GACR,MAAM9B,OACJA,GACE7/D,KACJ,GAAI2hE,EAAS,CACX3hE,KAAK6wP,eAAepyM,QACpBz+C,KAAK8wP,kBAAkBryM,QAEzB,IAAKohB,EAAOriD,cAAe,CACzBqiD,EAAOg3J,WAAWs6B,gBAEpBj3O,MAAM6nD,UAAUJ,GAElBhiE,2BAA2BsL,GACzB,OAAOA,EAAOjL,KAAKm7B,EAAElwB,GAAQA,EAG/BtL,kBAAkBwwB,GAChB,IAAIihO,EAAuBC,EAC3B,MAAOD,EAAwBpxP,KAAK6/D,OAAOyxL,sBAAwB,MAAQF,SAA+B,IAAMC,EAAyBD,EAAsBzyP,UAAY,MAAQ0yP,SAAgC,GAAKA,EAAuBptM,QAAQ,wBAAyB,CAC9QjkD,KAAKihE,WAAWswL,kBAAkBphO,IAGtC40F,kBACE,OAAO/kH,KAAK6/D,OAAOklD,YAErBA,gBAAgBxlH,GACd,MAAMsgE,OACFA,GACE7/D,KACJwxP,EAAe3xL,EAAOklD,YACxBllD,EAAOklD,YAAcxlH,EACrB,GAAIsgE,EAAOklD,cAAgBysI,EAAc,CACvC3xL,EAAOppB,QAAQmI,UAAU8X,OAAO,4BAmCpC/2D,qBACEK,KAAKkxP,YAEPvxP,aAAawY,GACX,GAAIA,GAAU,KAAM,CAClB,OAAOA,EAET,OAAOzZ,EAAeA,EAAe,CACnCmO,KAAM,SACN6lH,QAAS,CAAC,CACR58G,IAAK,8BACL8yC,QAAS,SACT0zI,QAAS,EACP9pH,OAAAA,KACIxyE,KAAKyxP,aAAaj/K,KAE1BtrE,MAAO,GACPmhO,SAAU,MACVhyL,MAAO,SACPwlL,OAAQ77N,KAAK6/D,OAAOu0K,QAAQ,IAC3Bj8N,GAAS,GAAI,CACd5B,MAAO,yBAIX5W,YACE,MAAMI,EAAKC,MACT+2M,OACEA,GACEh3M,GACJgkM,QACEA,GACEhkM,EAAG8/D,OACT,IAAK9/D,EAAG2xP,yBAA2B36C,KAAYh3M,EAAG4xP,YAAc5tD,EAAQn4L,SAAS7L,EAAG4xP,YAAa,CAC/F5xP,EAAG2xP,wBAA0B,KAC7B,GAAI3xP,EAAG6xP,iBAAmB,OAAQ,EAC/B7xP,EAAG4xP,WAAa5tD,EAAQhlL,IAAIg4L,OACxB,EACJh3M,EAAG4xP,WAAa5tD,EAAQnxG,OAAO,EAAGmkH,GAErCh3M,EAAG2xP,wBAA0B,OAKjC/xP,gBAAehB,OACbA,IAGA,GAAIqB,KAAK4/D,UAAYjhE,IAAW,MAAQA,SAAgB,GAAKA,EAAOslD,QAAQ,oBAAsBtlD,EAAOslD,QAAQ,gBAAiB,CAChI,OAEFjkD,KAAKyxP,aAAazxP,KAAK6/D,OAAOuiI,qBAAqBzjM,IAQrDgB,aAAa6yE,GACX,GAAIA,EAAQ,CACV,GAAIxyE,KAAK6wP,eAAe5yO,IAAIu0D,GAAS,CACnCxyE,KAAK83F,SAAStlB,OACT,CACLxyE,KAAK63F,OAAOrlB,KAelB7yE,eAAcyyD,OACZA,EAAMrzD,OACNA,EAAMkzE,QACNA,IAEA,MAAMlyE,EAAKC,MACT6wP,eACEA,EAAcC,kBACdA,GACE/wP,EACN,GAAIA,EAAG6/D,SAAU,CACf,OAEF,GAAIxN,IAAW,YAAa,CAC1By+L,EAAepyM,QACfqyM,EAAkBryM,aACb,GAAIgyM,GAAmBr+L,GAAS,CACrC,IAAK,MAAOogB,KAAWq+K,EAAgB,CACrC,IAAK9xP,EAAO6M,SAAS4mE,GAAS,CAC5Bq+K,EAAev3O,OAAOk5D,GACtBs+K,EAAkBx3O,OAAOk5D,UAGxB,GAAIzyE,EAAG8xP,uBAAyB5/K,IAAY,MAAQA,SAAiB,GAAKA,EAAQnzE,OAAQ,CAC/F,GAAIszD,IAAW,SAAU,CACvB,MAAM0/L,EAAcjB,EAAen/O,IAAIugE,EAAQ,IAC/C,GAAI6/K,IAAgB,MAAQA,SAAqB,GAAKA,EAAYC,UAAW,CAC3ED,EAAYC,UAAY,MACxBhyP,EAAG8/D,OAAOg3J,WAAWkqB,iBAAiB9uK,EAAQ,UAE3C,GAAI7f,IAAW,iBAAkB,CACtC,IAAI4/L,EAAgBC,EACpB,IAAK,MAAMvgK,KAAOzf,EAAS,CACzB,MAAM6/K,EAAcjB,EAAen/O,IAAIggF,GACvC,GAAIogK,IAAgB,MAAQA,SAAqB,GAAKA,EAAYC,UAAW,CAC3ED,EAAYC,UAAY,MACxB,MAAM7hP,EAAQnR,EAAOkzE,QAAQxsE,QAAQisF,GACrC,IAAKugK,GAAaD,EAAiB9hP,EAAO,CACxC8hP,EAAiB9hP,EACjB+hP,EAAYvgK,IAIlB,GAAIugK,EAAW,CACblyP,EAAG8/D,OAAOg3J,WAAWkqB,iBAAiBkR,MAM9CtyP,iBAAiB6yE,EAAQvrE,GACvB,IAAIirP,EACJ,MAAMJ,EAAc9xP,KAAK6wP,eAAen/O,IAAI8gE,GAC5C,GAAIs/K,EAAa,CAEf,IAAKA,EAAYC,WAAaD,EAAYK,iBAAkB,CAC1D,OAAOnyP,KAAKoyP,uBAAyBnrP,EAGvC,IAAK6qP,EAAYO,mBAAoB,CACnC,IAAK,MAAMx2B,KAAU77N,KAAK6/D,OAAOu0K,QAAS,CACxC,MAAMntO,EAAS6qP,EAAYQ,eAAez2B,GAAQzkL,aAClD,GAAInwC,EAAS6qP,EAAYO,mBAAoB,CAC3CP,EAAYO,mBAAqBprP,KAKzC,QAASirP,EAAwBJ,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYO,sBAAwB,MAAQH,SAA+B,EAAIA,EAAwB,GAAKjrP,EAOzMtH,iBAAgBgvK,IACdA,EAAGn8F,OACHA,IAEA,MAAMzyE,EAAKC,MACTo0O,QACEA,GACEr0O,EAAG8/D,QACP+wL,iBACEA,GACE7wP,EACN4uK,EAAI74J,IAAI4gD,OAAO,yBAA0B32D,EAAG6/D,UAE5C,GAAI+uG,EAAI74J,IAAI86O,GAAmB,CAE7B,GAAI7wP,EAAGwyP,kBAAoBxyP,EAAGglH,aAAehlH,EAAG+wP,kBAAkB7yO,IAAIu0D,GAAS,CAC7EzyE,EAAGyyP,kBAAkB7jF,GAAK,KAExB,GAAI5uK,EAAG+wP,kBAAkB7yO,IAAIu0D,GAAS,CACpCzyE,EAAG0yP,eAAe9jF,WAGjB,CACL5uK,EAAG0yP,eAAe9jF,QAEf,CAEL5uK,EAAG+wP,kBAAkBx3O,OAAOk5D,GAG9B,MAAMs/K,EAAc/xP,EAAG8wP,eAAen/O,IAAI8gE,GAC1C,IAAKzyE,EAAG6/D,UAAYkyL,EAAa,CAE/B,IAAKA,EAAYC,UAAW,CAC1BhyP,EAAG2yP,eAAelgL,EAAQm8F,EAAKmjF,GAEjCnjF,EAAI74J,IAAIiJ,IAAI6xO,GACZ,IAAK,MAAM/0B,KAAUuY,EAAS,CAC5B,MAAM/V,EAAa1vD,EAAIp/G,WAAWssK,GAClC,GAAIi2B,EAAYC,UAAW,CACzB1zB,EAAW58N,YAAYqwP,EAAYQ,eAAez2B,QAC7C,CAEL97N,EAAG4yP,uBAAuBt0B,EAAYyzB,GAExC/xP,EAAG6yP,eAAev0B,EAAYyzB,EAAYe,WAAY,OAGxD,GAAI9yP,EAAG+yP,sBAAuB,CAC5B/yP,EAAG+yP,sBAAwB,MAC3B,IAAK76M,GAAUub,SAASs+L,EAAYQ,eAAele,EAAQ,IAAK,MAAO,CAErEr0O,EAAG8/D,OAAOg3J,WAAW1nM,GAAG,CACtBvC,KAAM,KACNtQ,QAASvc,EACTylP,WAAY,IAAMzlP,EAAGgzP,kBAAkBpkF,EAAKn8F,QAWtD7yE,kBAAkBgvK,EAAKn8F,GAErB,GAAIxyE,KAAK+kH,YAAa,CACpB/kH,KAAKwyP,kBAAkB7jF,GAAK,IAAM3uK,KAAK6/D,OAAOkzL,kBAAkBvgL,SAC3D,CACLxyE,KAAK6/D,OAAOkzL,kBAAkBvgL,IAQlC7yE,kBAAkBgvK,EAAK32J,GACrB8oC,GAAY2D,gBAAgB,CAC1BhO,QAASk4H,EAAIl4H,QACbtkC,SAAU,SACVtC,QAASmI,EACTsE,QAAStc,OAGbL,eAAegvK,GACbA,EAAI74J,IAAIhU,OAAO9B,KAAK4wP,kBACpB,IAAK,MAAM/0B,KAAU77N,KAAK6/D,OAAOu0K,QAAS,CACxC,MAAM/V,EAAa1vD,EAAIp/G,WAAWssK,GAElCwC,EAAWz/K,UAAU98C,OAAO9B,KAAK4wP,kBACjC34M,GAAUwhB,mBAAmB4kK,EAAY,IAAMr+N,KAAK2wP,mBACpD3wP,KAAK4yP,eAAev0B,EAAY,KAAM,QAG1C1+N,uBAAuB0+N,EAAYyzB,GACjC75M,GAAU72C,cAAc,CACtBkR,OAAQ+rN,EACR3/K,UAAW1+C,KAAK2wP,kBAAoB,yBACpCtvP,MAAO,CACL8zC,IAAK28M,EAAYe,WACjB5rP,OAAQjH,KAAKoyP,wBAEf/qM,SAAU,CAAC,CACT5mC,IAAK,IACLi+B,UAAW,yBACV1+C,KAAKgzP,wBAWZrzP,eAAe6yE,EAAQm8F,EAAKmjF,GAC1B,IAAImB,EACJ,MAAMlzP,EAAKC,KACT6yP,GAAcI,EAActkF,EAAIukF,MAAM,MAAQ,MAAQD,SAAqB,OAAS,EAAIA,EAAY77M,aACpGk7M,EAAiB,GACjBa,EAAa,GAEbC,EAAoB,CAACh7M,EAASi7M,EAAiBx3B,KAC7C,GAAIzjL,GAAW,KAAM,CACnB,UAAWA,IAAY,SAAU,CAC/Bi7M,EAAgB3hM,UAAYtZ,MAGzB,CACHA,EAAUH,GAAU72C,cAAcg3C,GAClCi7M,EAAgB5xP,YAAY22C,IAGhCk6M,EAAez2B,GAAUw3B,GAG7B,GAAIvB,EAAYK,iBAAkB,CAChC,OAEFl0P,OAAOmZ,OAAO06O,EAAa,CACzBe,WAAAA,EACAP,eAAAA,EACAD,mBAAoB,IAEtB,IAAK,MAAMx2B,KAAU97N,EAAG8/D,OAAOu0K,QAAS,CACtC,MAAM/V,EAAa1vD,EAAIp/G,WAAWssK,GAElCltD,EAAIsgE,OAAOlvO,EAAG6wP,kBAGd,MAAMyC,EAAkBp7M,GAAU72C,cAAc,CAC9CkR,OAAQ+rN,EACR3/K,UAAW3+C,EAAG4wP,kBACdtvP,MAAO,CACL8zC,IAAK09M,EAAa,QAItB,MAAMS,EAAiBvzP,EAAG2/N,SAAS,CACjCltJ,OAAAA,EACA6gL,gBAAAA,EACAh1B,WAAAA,EACAxC,OAAAA,IAEF,GAAI/uN,EAAQwlB,UAAUghO,GAAiB,CACrCH,EAAW30P,KAAK80P,EAAe7iP,MAAK2nC,GAAWg7M,EAAkBh7M,EAASi7M,EAAiBx3B,UACtF,CACLu3B,EAAkBE,EAAgBD,EAAiBx3B,IAIvD,GAAIs3B,EAAWr0P,OAAQ,CACrBgzP,EAAYK,iBAAmB,KAC/B5hP,QAAQ/G,IAAI2pP,GAAY1iP,MAAK9C,IAE3BmkP,EAAYC,UAAY,KAExBhyP,EAAGwzP,wBAAwB/gL,GAC3Bs/K,EAAYK,iBAAmB,aAE5B,CACLL,EAAYC,UAAY,MAU5BpyP,wBAAwB6yE,GACtB,MAAMzyE,EAAKC,KACX,GAAID,EAAGwyP,iBAAkB,CACvB,MAAM5jF,EAAM5uK,EAAG8/D,OAAOg3J,WAAW6B,WAAWlmJ,GAC5C,GAAIm8F,EAAK,CACP5uK,EAAGglH,YAAc,KACjB,GAAIhlH,EAAG+wP,kBAAkB7yO,IAAIu0D,GAAS,CACpCm8F,EAAIsgE,OAAO,uBAEblvO,EAAGyyP,kBAAkB7jF,GAAK,KACxB5uK,EAAGglH,YAAc,MACjB4pD,EAAI+P,UAAU,2BAIpB3+K,EAAG8/D,OAAOg3J,WAAWkqB,iBAAiBvuK,GAUxC7yE,eAAe0+N,EAAYw0B,EAAYW,GACrC,IAAK,IAAI3tP,EAAI,EAAGA,EAAIw4N,EAAWh3K,SAASvoD,OAAQ+G,IAAK,CACnD,MAAMkoD,EAAQswK,EAAWh3K,SAASxhD,GAElC,IAAKkoD,EAAMnP,UAAU7G,SAAS/3C,KAAK2wP,mBAAoB,CACrD5iM,EAAM1sD,MAAM4F,OAASusP,EAAS,GAAKX,EAAa,OAatDlzP,aAAa6yE,GACX,MAAMzyE,EAAKC,KACX,GAAID,EAAG6/D,SAAU,CACf,OAEF,SAAW7/D,EAAGwtB,QAAQ,eAAgB,CACpCilD,OAAAA,MACM,MAAO,CACb,OAGFzyE,EAAG8wP,eAAev/O,IAAIkhE,EAAQ,CAC5Bu/K,UAAW,QAGbhyP,EAAG+wP,kBAAkBx3O,OAAOk5D,GAC5BzyE,EAAG+yP,sBAAwB,KAC3B/yP,EAAGwzP,wBAAwB/gL,GAS7B7yE,eAAe6yE,GACb,MAAMzyE,EAAKC,KACX,GAAID,EAAG6/D,SAAU,CACf,OAEF,SAAW7/D,EAAGwtB,QAAQ,iBAAkB,CACtCilD,OAAAA,MACM,MAAO,CACb,OAEFzyE,EAAG8wP,eAAev3O,OAAOk5D,GACzBzyE,EAAG+wP,kBAAkB/xO,IAAIyzD,GACzBzyE,EAAGwzP,wBAAwB/gL,IAI/BtzE,EAAgBwxP,GAAa,QAAS,eACtCxxP,EAAgBwxP,GAAa,eAAgB,CAoF3ChxB,SAAU,KAgBVzkF,aAAc,KAoBd87D,OAAQ,GAQR66C,eAAgB,QAOhBC,sBAAuB,MAMvBO,uBAAwB,IAMxBY,qBAAsB,aAMtBT,iBAAkB,OAEpB7B,GAAYxoP,OAAS,cACrBijO,GAAmB2F,gBAAgB4f,IA8DnC,MAAM+C,WAAmBzvL,GAAUtE,KAwEjC//D,UAAUs2N,EAAM99M,GACdnY,KAAKi2N,KAAOA,EACZ/7M,MAAMsB,aAAa3c,WAErBc,YACE,IAAI42O,GACHA,EAAmBv2O,KAAKy2O,cAAgB,MAAQF,SAA0B,OAAS,EAAIA,EAAiBx6N,UACzG7B,MAAM8B,YAMRrc,OACE,MAAMI,EAAKC,MACTi2N,KACEA,GACEl2N,EACNA,EAAG02O,WAAa,IAAIlzE,GAAW,CAC7B9+J,KAAM,aACNi7J,YAAa,KACb+D,cAAe,GACfvE,eAAgB,cAChBT,MAAO,KACPoE,cAAeozD,EAAKpzD,cACpBpD,WAAYw2D,EAAKx/K,QACjBga,aAAc1wD,EAAG2zP,qBACjB5vF,gBAAiB/jK,EAAG+jK,gBACpB7E,mBAAoBv0G,IAAOA,EAAGzG,QAAQ,0BACtCy/G,iBAAkB,CAChB6B,YAAa,CAAC,CACZ9uH,QAASw/K,EAAK3yG,WAAW7sE,QACzB0V,UAAW,cAIfq2G,uBAAwB,MACxB7iK,YAAY82C,GACV,MAAMlnC,EAAQknC,EAAQyc,UAAU,MAC9BoB,EAAYnzD,SAASC,cAAc,OACrCkzD,EAAU1V,UAAU7/B,IAAI,uBACxBxP,EAAMigD,gBAAgB,MAEtBjgD,EAAMlO,MAAM8yD,UAAY,GACxBG,EAAU7yD,YAAY8N,GACtB,GAAI0mN,EAAK/5D,gBAAgBp9J,OAAS,EAAG,CACnC,MAAM60P,EAASpkP,EAAM2jD,UAAU,MAC/BygM,EAAO/0M,UAAU7/B,IAAI,2BACrBu1C,EAAU7yD,YAAYkyP,GAExB17M,GAAUiP,kBAAkBoN,EAAW,aAAc,UAAW,aAChE,OAAOA,GAETjnC,UAAW,CACTumO,gBAAiB,oBACjB9vH,UAAW,cACXw3C,KAAM,SACN27D,KAAM,SACN/7I,MAAO,UACPruE,KAAM,IAENvQ,QAASvc,KAGbA,EAAGikM,YAAYjkM,EAAG02O,WAAY,CAAC,kBAAmB,YAAa,OAAQ,SAAU,WACjF12O,EAAG8zP,cAAgB57M,GAAU72C,cAAc,CACzCs9C,UAAW,yBAEb3+C,EAAG+zP,kBAAoB,CAAC,0BAA2B,WAIrDtzL,0BACE,MAAO,CACL9iB,MAAO,CAAC,YAGZg2M,2BACE,MAAMK,EAAgB/zP,KAAKi2N,KAAKme,QAAQ,GACxC,OAAOp0O,KAAKi2N,KAAKkU,SAAS4pB,GAAet9M,QAI3C92C,mBAAkBwwB,MAChBA,EAAKpxB,OACLA,EAAM0uE,QACNA,IAEA,MAAM1tE,EAAKC,MACTi2N,KACEA,GACEl2N,EACJqtP,EAAYrtP,EAAG2zP,qBAEjB,GAAI3zP,EAAG6/D,UAAYq2J,EAAKp9I,UAAYo9I,EAAKu5B,gBAAkBpC,EAAUr1M,SAAS01B,EAAQh3B,SAAU,CAC9F,OAAO,MAETg3B,EAAQumL,YAAc/9B,EAAK7zB,qBAAqB30H,EAAQh3B,SAExD,GAAIg3B,EAAQumL,YAAYn7K,SAAU,CAChC,OAAO,MAETpL,EAAQwmL,eAAiBh+B,EAAKY,WAAWyN,UAAU72J,EAAQumL,aAAa7+M,IACxE,GAAIp2C,EAAO8kK,WAAWc,cAAgB,QAAS,CAE7C,IAAKsxD,EAAKp8B,WAAWpsH,EAAQumL,aAAc,CACzC/9B,EAAKi+B,UAAU,CACb1hL,OAAQ/E,EAAQumL,YAChBG,eAAgB,cAGf,IAAKl+B,EAAKp8B,WAAWpsH,EAAQumL,eAAiB7jO,EAAMipF,WAAajpF,EAAM2yB,QAAS,CAErFmzK,EAAKi+B,UAAU,CACb1hL,OAAQ/E,EAAQumL,cAIpB,MAAM/hL,EAAUxE,EAAQwE,QAAUgkJ,EAAK/5D,gBAAgB99J,QAAO8xB,IAAMA,EAAE2oD,WAAU5mE,QAAQgG,MAAK,CAACm8O,EAAIC,IAAOp+B,EAAKrqJ,MAAMnmE,QAAQ2uP,GAAMn+B,EAAKrqJ,MAAMnmE,QAAQ4uP,KACrJ,OAAOpiL,EAAQnzE,OAAS,IAAMmzE,EAAQtqE,MAAK+pF,GAAOA,EAAIrL,eAExD1mF,aAAY8tE,QACVA,IAEA,IAAI6mL,EAAuBC,EAC3B,MAAMx0P,EAAKC,MACTi2N,KACEA,GACEl2N,GACJqmO,SACEA,EAAQ2J,SACRA,EAAQ8F,WACRA,GACE5f,EAAKlkG,SACX,GAAIq0G,EAAU,CACZrmO,EAAGy0P,sBAAwBpuB,EAASxmK,SACpCwmK,EAASxmK,SAAW,KAGtBmwK,IAAa,MAAQA,SAAkB,OAAS,GAAKukB,EAAwBvkB,EAAS0kB,mBAAqB,MAAQH,SAA+B,OAAS,EAAIA,EAAsBztP,KAAKkpO,EAAU,OACpM8F,IAAe,MAAQA,SAAoB,OAAS,GAAK0e,EAAwB1e,EAAW4e,mBAAqB,MAAQF,SAA+B,OAAS,EAAIA,EAAsB1tP,KAAKgvO,EAAY,OAC5M5f,EAAKx/K,QAAQmI,UAAU7/B,IAAI,oBAC3B,MAAMmgN,EAAczxJ,EAAQh3B,QAAQzuC,cAAc,cAClDk3N,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYtgL,UAAU98C,OAAO,aACvF2rE,EAAQh3B,QAAQkd,kBAAkB/U,UAAU98C,OAAO,aAAc,WACjEm0N,EAAK4a,cAAcpvO,YAAY1B,EAAG8zP,eAEpCl0P,QAAO8tE,QACLA,EAAOt9C,MACPA,IAEA,MAAMpwB,EAAKC,MACTi2N,KACEA,GACEl2N,GACJ6rE,MACEA,EAAKirJ,WACLA,GACEZ,GACJ/0K,QACEA,GACE/wB,EACN,IAAIsmH,EAAQ,KACVk4B,EAAMkoD,EAAWiwB,SAAS5lM,GAC1BwzM,EACA39B,EACAr5K,EACA0sH,EACA12G,EACF,GAAIi7G,EAAK,CACP,MAAMgmF,EAAShmF,EAAIx5H,IAAM8gL,EAAK2+B,eAAepwN,EAAIyxL,EAAK3yG,WAAW9+E,EAC/Db,EAAUgrI,EAAI1nK,OAAS,EACvB4tP,EAAaF,EAAShxN,EACtBmxN,EAAUH,EAAShmF,EAAI1nK,OAAS,EAChC8tP,EAAgBJ,EAAShxN,EAAU,EACrCozL,EAAYpoD,EAAIooD,UAChB29B,EAAa9oL,EAAMonB,MAAM+jI,GAEzB3sD,EAAOx+F,EAAM8a,OAASguK,EAAW/kL,UAAY5vE,EAAGi1P,aAAe9zM,EAAU2zM,GAAc3zM,EAAU6zM,EAEjGr3M,GAAS0sH,GAAQj6I,EAAM+wB,SAAW4zM,MAG/B,CACH,GAAI3kO,EAAM+wB,QAAU+0K,EAAK2+B,eAAepwN,EAAG,CACzCuyL,EAAY,EACZ29B,EAAa9oL,EAAMtgC,MACnBoS,EAAQ,UACH,CACLq5K,EAAYnrJ,EAAM5nD,MAAQ,EAC1B0wO,EAAa9oL,EAAMxlC,KACnBsX,EAAQ,KAEVixH,EAAMsnD,EAAKY,WAAW8B,OAAO5B,GAE/B,GAAI29B,IAAe30P,EAAG20P,YAAc30P,EAAG29C,QAAUA,GAAS39C,EAAGqqK,OAASA,EAAM,CAC1E38F,EAAQgpE,MAAQ12I,EAAGk1P,aAEnB,OAEF,GAAIl1P,EAAG20P,aAAeA,EAAY,CAChC,IAAIQ,GACHA,EAAwBr+B,EAAW6B,WAAW34N,EAAG20P,eAAiB,MAAQQ,SAA+B,OAAS,EAAIA,EAAsBx2E,UAAU3+K,EAAG+zP,mBAE5J/zP,EAAG20P,WAAaA,EAChB30P,EAAG29C,MAAQA,EACX39C,EAAGqqK,KAAOA,EAGV,GAAIsqF,IAAejnL,EAAQumL,YAAa,CACtCv9G,EAAQ,MAGV,IAAK/4F,GAASq5K,IAAc,GAAKnrJ,EAAM2lB,UAAW,CAChDklD,EAAQ,MAEV,GAAI7qE,EAAM8a,KAAM,CACdhzB,EAAehW,EAAQg3M,EAAW7rM,YAAc6rM,EAEhD,GAAIjnL,EAAQwE,QAAQtqE,MAAK+pF,GAAOA,EAAI35C,SAAS28M,KAAc,CACzDj+G,EAAQ,MAEVhpE,EAAQn7D,OAASmkI,GAAS2zB,EAAOsqF,EAAaA,EAAWpiP,OACzDq8J,EAAI0gF,UAAUtvP,EAAG+zP,kBAAmBr9G,GAAS2zB,GAC7CrqK,EAAG2nB,aAAa3nB,EAAGo1P,YACnB,GAAIT,GAAcA,EAAW/kL,WAAa+kL,EAAWtlL,WAAWxD,GAAQ,CACtE7rE,EAAGo1P,WAAap1P,EAAGgd,YAAW,IAAMk5M,EAAKp+H,OAAO68J,IAAa30P,EAAGq1P,yBAE7D,CACL1hM,EAAehW,EAAQkuB,EAAMonB,MAAM+jI,EAAY,GAAK29B,EAGtD,IAAKtqF,GAAQ2sD,IAAcnrJ,EAAMnmE,QAAQgoE,EAAQumL,cAAgBt2M,GAAS,EAAI,IAAM+vB,EAAQn7D,QAAUm7D,EAAQumL,YAAY1hP,SAAWm7D,EAAQn7D,OAAQ,CACnJmkI,EAAQ,MAIVk4B,GAAO12H,GAAUqd,cAAcv1D,EAAG8zP,cAAez/O,KAAKC,IAAIs6J,EAAIx5H,KAAOuI,EAAQixH,EAAIl4H,QAAQa,wBAAwBrwC,OAAS,GAAI,IAE9HlH,EAAG8zP,cAAcxyP,MAAMg0P,WAAajrF,EAAO,SAAW,UACtDrqK,EAAG8zP,cAAcj1M,UAAU8X,OAAO,kBAAmB+/E,GAErDhpE,EAAQ/Z,aAAeA,EACvB+Z,EAAQgpE,MAAQ12I,EAAGk1P,aAAex+G,EAMpC92I,aAAawwB,GACX,MAAMpwB,EAAKC,MACTytE,QACEA,GACEt9C,EACNs9C,EAAQgpE,MAAQhpE,EAAQgpE,OAAS12I,EAAGk1P,aACpC,GAAIxnL,EAAQgpE,MAAO,CACjBhpE,EAAQvlD,MAAQ,KAChB,GAAInoB,EAAG8/D,OAAO+L,MAAM8a,KAAM,CAExBjZ,EAAQ6nL,mBAAqB7nL,EAAQwE,QAAQpoE,KAAI2oE,IAC/C,IAAI+iL,EACJ,MAAO,CACL/iL,OAAAA,EACAjC,UAAWglL,EAAiB/iL,EAAOlgE,UAAY,MAAQijP,SAAwB,OAAS,EAAIA,EAAe5qP,GAC3G8gE,YAAa+G,EAAO/G,gBAK1B,MAAMt/D,QAAepM,EAAGwtB,QAAQ,4BAA6B4C,GAC7D,GAAIhkB,IAAW,MAAO,CACpBshE,EAAQgpE,MAAQ,YAEZ12I,EAAG02O,WAAW+e,eAAez1P,EAAG8zP,cAAe,CACnDx9M,MAAO,gBAEHt2C,EAAG01P,gBAAgBhoL,GAI3B1tE,EAAG2nB,aAAa3nB,EAAGo1P,YACnBp1P,EAAG20P,WAAa30P,EAAG29C,MAAQ39C,EAAGqqK,KAAO,KACrCrqK,EAAGwtB,QAAQ,cAAe4C,GAE5BxwB,sBAAsB8tE,GACpB,MAAM1tE,EAAKC,MACTi2N,KACEA,GACEl2N,GACJ6rE,MACEA,EAAKszJ,YACLA,GACEjJ,EACN,IAAIhkJ,QACFA,GACExE,EACJA,EAAQgpE,MAAQhpE,EAAQgpE,QAAUxkE,EAAQtqE,MAAK+pF,IAAQ9lB,EAAMhgE,SAAS8lF,KACtE,GAAIjkB,EAAQgpE,MAAO,CACjB,IAAItqI,EACJ,GAAIy/D,EAAM8a,KAAM,CACd,IAAIgvK,EAAuBC,EAE3B1jL,EAAUA,EAAQ7zE,QAAOo0E,IAAWA,EAAOlgE,QAAUkgE,EAAOlB,aAAYh/D,IAAW2/D,EAAQrmE,SAAS0G,IAAS,QAC7GnG,QAAeshE,EAAQn7D,OAAOsjP,eAAe3jL,EAASlyE,EAAGqqK,MAAQsrF,EAAwBjoL,EAAQn7D,OAAO+0C,YAAc,MAAQquM,SAA+B,OAAS,EAAIA,EAAsB,GAAKjoL,EAAQ/Z,cAE7MuiK,EAAKY,WAAW73N,SAAQkxB,GAAKA,EAAEwuJ,UAAU3+K,EAAG+zP,qBAE5C,IAAKrmL,EAAQn7D,OAAO88D,eAAiBumL,EAAyBloL,EAAQn7D,OAAO+0C,YAAc,MAAQsuM,SAAgC,GAAKA,EAAuB72P,OAAQ,CACrKm3N,EAAKp+H,OAAOpqB,EAAQn7D,QAEtBm7D,EAAQgpE,MAAQtqI,IAAW,UACtB,CACLy/D,EAAM0nB,KAAKrhB,EAASxE,EAAQ/Z,cAE9B,IAAKwrK,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY3I,YAAc,EAAG,CAC1FN,EAAKmJ,aAAe,KAEpBnJ,EAAK8Y,UAAU,CACb9Y,KAAAA,EACAzjJ,OAAQ0sJ,EAAY1sJ,OACpB2jJ,SAAU+I,EAAY/I,WAG1BvqJ,EAAMiqL,eAERpoL,EAAQ2rE,SAAS3rE,EAAQgpE,OACzBw/E,EAAKx/K,QAAQmI,UAAU98C,OAAO,oBAMhCnC,UACE,MAAMI,EAAKC,MACTi2N,KACEA,GACEl2N,EACJqmO,EAAWnQ,EAAKlkG,SAASq0G,SAC3BnQ,EAAKx/K,QAAQmI,UAAU98C,OAAO,oBAC9B,GAAIskO,EAAU,CACZA,EAASxmK,SAAW7/D,EAAGy0P,sBAEzBz0P,EAAG8zP,cAAc/xP,SACjBm2C,GAAUiP,kBAAkB+uK,EAAKx/K,WAAY12C,EAAG+zP,mBAIlDn0P,SAAQipI,WACNA,IAGA,GAAIA,EAAY,CACd5oI,KAAKk/E,QAITv/E,eAAeywH,GACbpwH,KAAKi2N,KAAKx/K,QAAQmI,UAAU8X,OAAO,0BAA2B05D,IAGlElxH,EAAgBu0P,GAAY,QAAS,cACrCv0P,EAAgBu0P,GAAY,eAAgB,CAK1CqC,SAAU,KAKVV,mBAAoB,IAMpBtxF,gBAAiB,IAMjBkxF,WAAY,QAEdvB,GAAW7xL,aAAe,GAC1B6xL,GAAWvrP,OAAS,aACpBijO,GAAmB2F,gBAAgB2iB,GAAY,OAC/CtoB,GAAmB2F,gBAAgB2iB,GAAY,KAAM,SA+CrD,MAAMsC,WAAe/xL,GAAUtE,KAE7B3xD,mBACE,MAAO,SAETvO,0BACE,MAAO,CAMLmrI,MAAO,IAKP7qE,OAAQ,CACNssL,GAAI,cACJE,SAAU,cACVD,WAAY,cACZE,eAAgB,gBAItB30O,wBACE,MAAO,CACLuxO,OAAQ,eACRC,WAAY,oBACZC,gBAAiB,0BACjBC,WAAY,qBAGhB3pP,UAAUs2N,EAAM99M,GACd,MAAMpY,EAAKC,KACXka,MAAMsB,UAAUy6M,EAAM99M,GACtBla,OAAOmZ,OAAOrX,EAAI,CAChBk2N,KAAAA,EACAhrN,KAAM,GACN+qP,OAAQ,GACRziG,WAAY0iE,EAAKziE,gBAAgByiE,EAAKx/K,QAASwB,GAAUkkB,WAAWotL,WAAW,IAAMtxM,GAAUkkB,WAAWkyF,kBAG5G4nE,EAAK9mM,GAAG,CACN8mO,WAAY,mBACZ35O,QAASvc,IAGbJ,oBACE,OAAOO,QAAQF,KAAKiL,MAEtBtL,mBACE,GAAIK,KAAKiL,KAAM,CACbjL,KAAK8oB,sBAAsB9oB,KAAK6E,OAAQ,CAAC7E,KAAKiL,KAAM,MAAO,QAG/DtL,YACEK,KAAKy+C,MAAM,MACXvkC,MAAM8B,YAERrc,UAAUgiE,GACR,GAAIA,EAAS,CACX3hE,KAAKy+C,QAEPvkC,MAAM6nD,UAAUJ,GAElBiK,YACE,OAAO5rE,KAAKi2N,KAAKrqJ,MAKnBpL,0BACE,MAAO,CACLC,MAAO,CAAC,qBAWZ9gE,OAAOsL,EAAM4/O,EAAU,KAAMqL,EAAU,OACrC,MAAMn2P,EAAKC,KAEX,IAAKiL,EAAM,CACT,OAAOlL,EAAG0+C,QAGZ,IAAKy3M,GAAWjrP,IAASlL,EAAGkL,MAAQlL,EAAG6/D,SAAU,CAC/C,OAEF,MAAMq2J,KACFA,EAAIrqJ,MACJA,GACE7rE,EAEJgkM,EAAUkyB,EAAKlyB,QAAQsyB,eAAej4N,QAAOqiO,GAAOA,EAAI2B,aAAe,QACvE5kI,EAAa,GACbnkB,EAAS0qH,EAAQl6L,KAAI42N,IACnB,IAAI01B,EAEJ34J,EAAWh/F,MAAM23P,EAAmB11B,EAAI5vB,eAAiB,MAAQslD,SAA0B,OAAS,EAAIA,EAAiBnhP,KAAKyrN,IAC9H,OAAOA,EAAIlqN,SAEbm6C,EAAQkb,EAAM/mE,OAAOoG,EAAMouE,EAAQmkB,GAErC,IAAK,MAAMu5G,KAAUhT,EAAS,CAC5B,GAAIgT,EAAO+uC,YAAc/uC,EAAOxoH,SAAU,CACxC,IAAI6nK,EAAY,KACdC,EAAY,KACd,IAAK,MAAMzM,KAAOl5L,EAAO,CACvB,GAAIk5L,EAAIrzO,QAAUwgM,EAAOxgM,MAAO,CAC9B,MAAMhX,EAAQqqP,EAAI1vN,KAAK0vN,EAAIrzO,OAC3B,GAAIhX,IAAU62P,EAAW,CACvBxM,EAAIyM,UAAYA,EAElBD,EAAY72P,EACZ82P,EAAY,GAAGzM,EAAIrzO,SAASqzO,EAAIj/O,QAKxC,IAAI/L,EAAI,EACRX,OAAOmZ,OAAOrX,EAAI,CAChBiqP,SAAU,GACVH,UAAW9pP,EAAG2wD,MACdA,MAAAA,EACAzlD,KAAAA,EACAg/O,OAAQ,IAAIjlP,OAAO,WAAWoF,EAAa6pK,aAAa/qK,OAAO+B,cAAkB,QAEnFlL,EAAGu2P,YACH,IAAK5lM,EAAO,CACV,OAGF,IAAK,MAAMk5L,KAAOl5L,EAAO,CAEvB3wD,EAAGiqP,SAAS,GAAGJ,EAAIrzO,SAASqzO,EAAIj/O,MAAQi/O,EAAIyM,UAAYt2P,EAAGiqP,SAASJ,EAAIyM,WAAaz3P,IAErF,GAAIA,EAAImB,EAAG4qI,MAAO,CAChB,OAGJ,IAAK5qI,EAAGw2P,qBAAsB,CAC5BtgC,EAAKY,WAAW1nM,GAAG,CACjB1qB,KAAM,aACNu6N,WAAY,aACZ1iN,QAASvc,IAEX6rE,EAAMz8C,GAAG,CACP1qB,KAAM,eACN9E,CAAC,UAAUs2N,EAAK6R,oBAAqB,iBACrCxrN,QAASvc,IAEXA,EAAGw2P,qBAAuB,KAE5BtgC,EAAKqkB,cACLrkB,EAAK1oM,QAAQ,SAAU,CACrB0oM,KAAAA,EACAllM,KAAM9lB,EACNylD,MAAAA,IAEF,GAAIm6L,IAAY9qP,EAAGy2P,aAAc,CAC/Bz2P,EAAG02P,YAAY,MAEjB,OAAO/lM,EAET/wD,YAEE,IAAK,MAAM2+N,KAAermL,GAAUoP,SAASrnD,KAAKi2N,KAAKx/K,QAAS,IAAMz2C,KAAKmpP,QAAS,CAClF7qB,EAAY1/K,UAAU98C,OAAO9B,KAAKmpP,OAAQnpP,KAAKopP,YAE/C,MAAMz6E,EAAMn+D,GAAa9+F,IAAI4sN,GAAa3vD,IAE1C,GAAIA,EAAK,CAEPA,EAAIsyE,eAAiB,KACrBtyE,EAAIqwD,WAAWV,GACf3vD,EAAIsyE,eAAiB,QAO3BthP,MAAMu2B,EAAS,OACb,MAAMn2B,EAAKC,MACTi2N,KACEA,GACEl2N,EACN,GAAIA,EAAGiqP,SAAU,QACRjqP,EAAGiqP,SAEZjqP,EAAGkL,KAAO,KACVlL,EAAGu2P,YACH,GAAIv2P,EAAGw2P,qBAAsB,CAC3Bv2P,KAAKupE,gBAAgB,cACrBvpE,KAAKupE,gBAAgB,gBACrBxpE,EAAGw2P,qBAAuB,MAE5B,IAAKrgO,EAAQ,CACX+/L,EAAK1oM,QAAQ,cAAe,CAC1B0oM,KAAAA,KASNs0B,iBACE,IAAIC,EAAoBF,EACxB,OAAQE,GAAsBF,EAActqP,KAAK0wD,SAAW,MAAQ45L,SAAqB,OAAS,EAAIA,EAAYxrP,UAAY,MAAQ0rP,SAA4B,EAAIA,EAAqB,EAS7LgM,mBACE,MAAMz2P,EAAKC,MACTi2N,KACEA,GACEl2N,GACJm/N,YACEA,GACEjJ,EACN,GAAIiJ,IAAgB,MAAQA,SAAqB,GAAKA,EAAY/3B,KAAKpvJ,SAASE,GAAUwmB,iBAAiBw3J,EAAKx/K,UAAW,CACzH,MAAM00M,EAAejsB,EAAY53B,SAC/BovD,EAAgBx3B,EAAYnoB,OAC9B,OAAOo0C,KAAkB,GAAKprP,EAAG2wD,MAAM/oD,MAAKiiP,GAAOA,EAAI15O,QAAUi7O,GAAgBuL,GAAiB9M,EAAIrzO,QAAUmgP,EAAcngP,SAMlI5W,YAAYg3P,EAAY,OACtB,IAAIC,EACJ,MAAM72P,EAAKC,KACX,MAAO42P,EAAY72P,EAAG2wD,SAAW,MAAQkmM,SAAmB,GAAKA,EAAU93P,QAAS,OACpF,MAAMm3N,KACFA,GACEl2N,EACJ82P,EAAW5gC,EAAKiJ,aAAejJ,EAAKi1B,gBACpCC,EAAe0L,GAAYF,IAAc,KAAO1gC,EAAKrqJ,MAAMnmE,QAAQoxP,EAASlsP,KAAO,EACnF+/O,EAAU3qP,EAAG2wD,MAAMq/B,WAAU65J,GAAOA,EAAI15O,MAAQi7O,IAClD,GAAIT,KAAa,EAAG,CAClB3qP,EAAG8qP,QAAQH,IAMf/qP,cACE,IAAIm3P,EACJ,MAAM/2P,EAAKC,KACX,MAAO82P,EAAa/2P,EAAG2wD,SAAW,MAAQomM,SAAoB,GAAKA,EAAWh4P,QAAS,OACvF,MAAMm3N,KACFA,EAAIvlK,MACJA,GACE3wD,EACJ82P,EAAW5gC,EAAKiJ,aAAejJ,EAAKi1B,gBACpCC,EAAe0L,EAAW5gC,EAAKrqJ,MAAMnmE,QAAQoxP,EAASlsP,IAAM,EAC9D,IAAK,IAAI/L,EAAI8xD,EAAM5xD,OAAS,EAAGF,IAAKA,GAAK,EAAG,CAC1C,MAAMgrP,EAAMl5L,EAAM9xD,GAClB,GAAIgrP,EAAI15O,MAAQi7O,EAAc,CAC5BprP,EAAG8qP,QAAQjsP,GACX,QAQNe,QAAQuQ,GACN,MAAM+lN,KACFA,GACEj2N,KACJ0qP,EAAU1qP,KAAK0wD,MAAMxgD,GACvB,GAAIw6O,EAAS,CACXz0B,EAAK8Y,UAAU,CACbx4N,MAAOm0O,EAAQn0O,MACf5L,GAAI+/O,EAAQ//O,KAGhB,OAAOzK,QAAQwqP,GAKjB/qP,eACEK,KAAK6qP,QAAQ,GAKflrP,cACEK,KAAK6qP,QAAQ7qP,KAAK0wD,MAAM5xD,OAAS,GAQnCa,YAAW2+N,YACTA,EAAWvnB,OACXA,EAAMvkI,OACNA,EAAMjzE,MACNA,IAEA,IAAImsP,EACJ,MAAM3rP,EAAKC,MACTuzJ,WACEA,EAAU02F,OACVA,EAAMX,WACNA,GACEvpP,EACJ4rP,GAAYD,EAAe3rP,EAAGiqP,YAAc,MAAQ0B,SAAsB,OAAS,EAAIA,EAAa30C,EAAOxgM,MAAQ,IAAMi8D,EAAO7nE,IAClI,GAAIghP,EAAU,CACZ,IAAIoL,EAEJz4B,EAAY1/K,UAAU7/B,IAAIhf,EAAGopP,SAE5B4N,EAAwBz4B,EAAYt2N,cAAc,IAAIjI,EAAGspP,sBAAwB,MAAQ0N,SAA+B,OAAS,EAAIA,EAAsBj1P,SAE5J,MAAM4rD,EAAQzV,GAAUmzF,KAAKkzF,EAAa,0CAA4CA,EACtF,GAAIp1N,OAAO3J,GAAO0J,gBAAkBC,OAAOnJ,EAAGkL,MAAMhC,cAAe,CACjEykD,EAAMgE,UAAY,gBAAgB3xD,EAAGupP,eAAe57L,EAAMgE,+BAA+B3xD,EAAGspP,oBAAoBsC,cAI7G,CACHp4F,EAAWK,YAAclmG,EACzB,IAAK,IAAI6E,EAAWghG,EAAWl3C,WAAY9pD,GAAY7E,EAAM3V,SAASwa,IAAY,CAChF,MAAMs5L,EAAgBt5L,EACpB+E,EAAc/E,EAASu5L,UACvBpuC,EAAU,CAAC,UAEbnrJ,EAAWghG,EAAWl3C,WACtB,IAAIvtE,EAASm7M,EAAO5wN,UAGpB,IAAK,IAAIl5B,EAAQ8pP,EAAOliO,KAAKuvC,GAAcn3D,EAAOA,EAAQ8pP,EAAOliO,KAAKuvC,GAAc,CAClF,MAAM53C,EAAW43C,EAAY9xD,UAAUspC,EAAQ3uC,EAAM+P,OACnD67O,EAAc5rP,EAAM,GAAK,IAAS,GAClCqN,EAAIrN,EAAM,GACV6rP,EAAa7rP,EAAM,GAAK,IAAS,GACnCu9M,EAAQl/M,KAAK,GAAG4L,EAAaY,WAAW0U,KAAYqsO,iBAA2BzC,MAAe97O,WAAWw+O,KACzGl9M,EAASm7M,EAAO5wN,UAElBqkL,EAAQl/M,KAAK4L,EAAaY,WAAWssD,EAAY9xD,UAAUspC,IAAU,UAErE+8M,EAAcphM,WAAWiJ,aAAazb,GAAUoT,0BAA0BqyJ,EAAQzzM,KAAK,IAAK,CAC1F+oD,SAAU,OACR64L,GACJA,EAAc/pP,SAEhBm2C,GAAU72C,cAAc,CACtBkR,OAAQgsN,EACR5/K,UAAW3+C,EAAGspP,gBACdp+O,KAAM0gP,IAGV5rP,EAAGi2P,OAAOx3P,KAAK8/N,IAanB3+N,kBAAiBo3M,OACfA,EAAMvkI,OACNA,EAAMvvD,MACNA,EAAKq7M,YACLA,IAEA,MAAMv+N,EAAKC,KACX,GAAI+2M,EAAOqrB,WAAY,CACrBn/M,EAAMpe,OAAS,CACboG,KAAM,oBACN8tB,YAAah5B,EACb6vH,KAAM,0BACN95G,IAAK,cACL29G,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,KAEN,IAAI0lB,EAAM50P,WAAW0sP,eAAe9kP,WACpC,IAAKgtP,EAAK,CACRA,EAAM14B,EAAYjmK,UAEpBt4D,EAAG8E,OAAOmyP,MAOlBr3P,iBACEK,KAAK6E,OAAO7E,KAAKiL,KAAM,MAAO,OAKlC8qP,GAAOn0L,aAAe,WACtBm0L,GAAO7tP,OAAS,SAChBijO,GAAmB2F,gBAAgBilB,IA2FnC,MAAMkB,WAAav3L,GAEjB3xD,mBACE,MAAO,OAETvO,0BACE,MAAO,CAML03P,UAAW,KA6BX9d,kBAAmB,OAGvBxhO,wBACE,MAAO,CACLu/O,SAAU,IAAInyP,OAAO,CAErB,8BAA+B,iBAAiBiF,KAAK,MACrDmtP,YAAa,aACbC,UAAW,SACXC,aAAc,QACdC,cAAe,UAKnB53P,UAAUs2N,EAAM99M,GAEdA,EAASnY,KAAK0xO,cAAcv5N,GAC5BnY,KAAKi2N,KAAOA,EACZj2N,KAAK4nO,UAAU3R,EAAKrqJ,OACpB1xD,MAAMsB,UAAUy6M,EAAM99M,GAIxBxY,cAAcwY,GACZ,UAAWA,IAAW,UAAY5Q,MAAMC,QAAQ2Q,GAAS,CACvD,MAAO,CACL5B,MAAO4B,EACPqhF,UAAW,MAGf,OAAOrhF,EAGTxY,UAAUwY,GACR+B,MAAMV,UAAUxZ,KAAK0xO,cAAcv5N,IAErCxY,UAAUisE,GACR5rE,KAAKupE,gBAAgB,SACrBqC,EAAMz8C,GAAG,CACP1qB,KAAM,QACN+yP,WAAY,oBACZv/O,KAAM,sBACNqE,QAAStc,OAGbuW,UAAUA,GAER,MAAMwgM,EAAS/2M,KAAKi2N,KAAKlyB,QAAQryL,IAAI6E,GACrC,GAAIwgM,UAAiBA,EAAO+kB,WAAa,SAAU,CAEjD/kB,EAAO+kB,SAASvlN,MAAQwgM,EAAO+kB,SAAS3pN,UAAYoE,EACpDA,EAAQwgM,EAAO+kB,SAEjB97N,KAAK4rE,MAAM3zD,KAAK1B,EAAOvW,KAAKw5F,WAG9B5tB,YACE,OAAO5rE,KAAKi2N,KAAKrqJ,MAKnBpL,0BACE,MAAO,CACLC,MAAO,CAAC,iBAAkB,qBAAsB,4BAA6B,eAAgB,UAAW,cAS5G9gE,sBACE,MAAMI,EAAKC,MACTi2N,KACEA,GACEl2N,EACN,IAAKk2N,EAAKQ,aAAeR,EAAKptF,UAAW,CACvC,MAAM4uH,EAAe13P,EAAG6rE,MAAMkD,QAC5B4oL,EAAcD,EAAa34P,OAC3B8/C,EAAY,IAAIpB,GAClB,IAAIoxB,EAEJ,IAAK,MAAM+oL,KAAc1hC,EAAKlyB,QAAQsyB,eAAgB,CACpD,IAAIuhC,EACJ,MAAMC,EAAaF,EAAWlhN,QAG5B/f,GAAWkhO,EAAwBD,EAAWh7B,eAAiB,MAAQi7B,SAA+B,OAAS,EAAIA,EAAsBlhO,QAC3I,IAAIohO,EAAgB,QAGnBphO,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQqhO,mBAAqBrhO,EAAQqhO,UACxFn5M,EAAUr/C,MAAQs4P,EAAWj5M,UAC7B,GAAI+4M,EAAW77B,WAAa,MAAO,CACjCl9K,EAAU7/B,IAAIhf,EAAGq3P,aACjBxoL,EAAS6oL,EAAa1mO,MAAK9Y,GAAQA,EAAK1B,QAAUohP,EAAWphP,OAAS0B,EAAKqyE,QAAUryE,EAAKqyE,SAAWqtK,EAAW77B,SAASxxI,SACzH,GAAI1b,EAAQ,CACV,GAAI8oL,EAAc,GAAKhhO,EAAS,CAC9BA,EAAQqhO,UAAYN,EAAahyP,QAAQmpE,GAAU,EAErDhwB,EAAU7/B,IAAIhf,EAAGs3P,WACjB,GAAIzoL,EAAO4qB,UAAW,CACpB56C,EAAU7/B,IAAIhf,EAAGu3P,cACjB14M,EAAU98C,OAAO/B,EAAGw3P,eACpBO,EAAgB,gBACX,CACLl5M,EAAU7/B,IAAIhf,EAAGw3P,eACjB34M,EAAU98C,OAAO/B,EAAGu3P,cACpBQ,EAAgB,kBAEb,CACLl5M,EAAU98C,OAAO/B,EAAGs3P,WAGpB,IAAKz4M,EAAU,WAAY,CACzBA,EAAU98C,OAAO/B,EAAGu3P,cACpB14M,EAAU98C,OAAO/B,EAAGw3P,qBAGnB,CACL34M,EAAU98C,OAAO/B,EAAGq3P,aAGtBn/M,GAAU0jE,cAAck8I,EAAYj5M,GACpC3G,GAAUkkF,cAAc07H,EAAY,CAClCG,YAAaF,MAcrBn4P,oBAAmBo3M,OACjBA,EAAM9zL,MACNA,IAEA,MAAMljB,EAAKC,MACT4rE,MACEA,GACE7rE,EACJk4P,EAASv5P,EAAeA,EAAe,GAAIq4M,EAAO+kB,UAAW,GAAI,CAC/DvlN,MAAOwgM,EAAOxgM,MACd6iN,YAAa,OAEjB,GAAIriB,EAAO+kB,WAAa,MAAO,CAC7B74M,EAAMi1O,QAAU,CACdjtP,KAAM,mBACN8tB,YAAah5B,EACb6vH,KAAM,4BACN95G,IAAK,cACL29G,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAM1lK,EAAM3zD,KAAKggP,EAAQ,OAEnCh1O,EAAMk1O,SAAW,CACfltP,KAAM,oBACN8tB,YAAah5B,EACb6vH,KAAM,6BACN6D,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACb0xK,OAAQ,IAAM1lK,EAAM3zD,KAAKggP,EAAQ,QAEnC,GAAIl4P,EAAGm3P,WAAan3P,EAAGk2N,KAAKlyB,QAAQ9xH,QAAQtqE,MAAK84N,GAAOA,EAAI3E,WAAW,CACrE,MAAMltJ,EAAShD,EAAMkD,QAAQ/9C,MAAKrhB,GAAKA,EAAE6G,QAAUwgM,EAAOxgM,OAASwgM,EAAO+kB,SAASxxI,QAAUysH,EAAO+kB,SAASxxI,SAAW56E,EAAE46E,SAC1HrnE,EAAMi0O,UAAY,CAChBjsP,KAAM,eACN8tB,YAAah5B,EACb6vH,KAAM,wBACN6D,OAAQ,IACR7zD,SAAU7/D,EAAG6/D,SACbgoF,KAAM,CACJwwG,WAAY,CACVntP,KAAM2jE,EAAS,yBAA2B,sBAC1C71C,YAAah5B,EACb6vH,KAAM,4BACNhwD,SAAUgP,IAAWA,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO4qB,WAC5Ei6B,OAAQ,IACR69G,OAAQ,IAAM1lK,EAAMysL,UAAUJ,EAAQ,OAExCK,YAAa,CACXrtP,KAAM2jE,EAAS,0BAA4B,uBAC3C71C,YAAah5B,EACb6vH,KAAM,6BACNhwD,SAAUgP,IAAWA,EAAO4qB,UAC5Bi6B,OAAQ,IACR69G,OAAQ,IAAM1lK,EAAMysL,UAAUJ,EAAQ,QAExCM,aAAc,CACZttP,KAAM,kBACN8tB,YAAah5B,EACb6vH,KAAM,0BACN6D,OAAQ,IACR7zD,UAAWgP,EACX0iK,OAAQ,KACN1lK,EAAM2sL,aAAaN,EAAO1hP,aAYxC5W,0BAA0Bo3M,EAAQ9zL,GAChC,MAAMljB,EAAKC,MACT4rE,MACEA,EAAKhM,SACLA,GACE7/D,EACN,GAAIg3M,EAAO+kB,WAAa,MAAO,CAC7B,MAAMltJ,EAAShD,EAAMkD,QAAQ/9C,MAAKrhB,GAAKA,EAAE6G,QAAUwgM,EAAOxgM,QAC1D0M,EAAMzkB,KAAK,CACTyM,KAAM,wBACNmT,MAAO,UACP2a,YAAah5B,EACb6vH,KAAM,yBACN3hE,IAAK,UACLn4C,IAAK,cACL29G,OAAQ,IACR7zD,SAAAA,EACA8zK,OAAQ,EACN38B,OAAAA,KACInrI,EAAM3zD,KAAK8+L,EAAOxgM,MAAO,OAC9B,CACDtL,KAAM,yBACNmT,MAAO,UACP2a,YAAah5B,EACb6vH,KAAM,0BACN3hE,IAAK,WACLwlE,OAAQ,IACR7zD,SAAAA,EACA8zK,OAAQ,EACN38B,OAAAA,KACInrI,EAAM3zD,KAAK8+L,EAAOxgM,MAAO,QAC9B,CACDtL,KAAM,2BACNmT,MAAO,eACP2a,YAAah5B,EACb6vH,KAAM,yBACN3hE,IAAK,kBACL2R,SAAUA,GAAYgP,GAAUA,EAAO4qB,UACvCi6B,OAAQ,IACRigH,OAAQ,EACN38B,OAAAA,KACInrI,EAAMysL,UAAUthD,EAAOxgM,MAAO,OACnC,CACDtL,KAAM,4BACNmT,MAAO,eACP2a,YAAah5B,EACb6vH,KAAM,0BACN3hE,IAAK,mBACL2R,SAAUA,GAAYgP,IAAWA,EAAO4qB,UACxCi6B,OAAQ,IACRigH,OAAQ,EACN38B,OAAAA,KACInrI,EAAMysL,UAAUthD,EAAOxgM,MAAO,QACnC,CACDtL,KAAM,uBACNmT,MAAO,eACP2a,YAAah5B,EACb6vH,KAAM,uBACN3hE,IAAK,kBACLwlE,OAAQ,IACR7zD,SAAUA,IAAagP,EACvB8kK,OAAQ,EACN38B,OAAAA,KACInrI,EAAM2sL,aAAaxhD,EAAOxgM,SAGpC,OAAO0M,EAKTtjB,mBAAkBmvE,QAChBA,IAEA,MAAMi1H,QACJA,GACE/jM,KAAK6/D,OACT,IAAK,IAAIjhE,EAAI,EAAGA,EAAIkwE,EAAQhwE,OAAQF,IAAK,CACvC,IAAI45P,EACJ,MAAM5pL,EAASE,EAAQlwE,GACrBm4M,GAAUnoI,EAAOwqJ,aAAep5N,KAAKo5O,oBAAsBr1C,EAAQryL,IAAIk9D,EAAOr4D,OAChF,GAAIwgM,IAAW,MAAQA,SAAgB,IAAMyhD,EAAmBzhD,EAAO+kB,YAAc,MAAQ08B,SAA0B,GAAKA,EAAiBluK,OAAQ,CACnJxb,EAAQlwE,GAAKF,EAAeA,EAAeA,EAAe,GAAIkwE,GAASmoI,EAAO+kB,UAAW,GAAI,CAC3F1C,YAAa,SASrBz5N,eAAewwB,GACb,MAAMpwB,EAAKC,MACT4rE,MACEA,GACE7rE,GACJpB,OACEA,GACEwxB,EACJyvH,EAASjhJ,EAAOslD,QAAQ,6BACxB1tC,EAAQqpI,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOlpH,QAAQqgL,OACzE,GAAIh3M,EAAGo3P,SAAS1vP,KAAK9I,EAAO+/C,YAAc3+C,EAAG6/D,SAAU,CACrD,OAGF,GAAIggF,GAAUrpI,EAAO,CACnB,MAAMwgM,EAASh3M,EAAGk2N,KAAKlyB,QAAQl3H,QAAQ+yE,EAAOlpH,QAAQy/L,UACpDmsB,EAAgB12K,EAAM2lB,WAAa3lB,EAAMwrB,SAASrmE,MAAKwxN,GAAKA,EAAEhsO,QAAUA,IAE1E,GAAI+rO,IAAkBnyN,EAAMipF,SAAU,CACpC,OAEF,GAAI29F,EAAO+kB,WAAa3rM,EAAMipF,SAAU,CACtC,GAAIjpF,EAAM2yB,SAAW3yB,EAAMsiG,OAAQ,CACjC7mD,EAAM2sL,aAAaxhD,EAAOxgM,WACrB,CACL,MAAM0hP,EAAS,CACb7+B,YAAa,KACb7iN,MAAOwgM,EAAOxgM,OAGhB,UAAWwgM,EAAO+kB,WAAa,SAAU,CACvC9qL,GAAa55B,OAAO6gP,EAAQlhD,EAAO+kB,UAErClwJ,EAAM3zD,KAAKggP,EAAQ,KAAM9nO,EAAM2yB,YASvCnjD,eACEK,KAAKy4P,sBAEP94P,UACEK,KAAKy4P,uBAKTxB,GAAKr1L,aAAe,SACpBq1L,GAAK/uP,OAAS,OACdijO,GAAmB2F,gBAAgBmmB,GAAM,MA4BzC,MAAMyB,WAAoBh5L,GAExB3xD,mBACE,MAAO,cAET8T,2BACE,MAAO,CAML82O,gBAAiB,KACjBC,iBAAkB,kCAItBp4L,0BACE,MAAO,CACLrF,OAAQ,CAAC,eAKbx7D,UAAUs2N,EAAM99M,GACd+B,MAAMsB,UAAUy6M,EAAM99M,GAEtB89M,EAAK9mM,GAAG,CACN4xF,OAAQ,eACRzkG,QAAStc,OAEX/B,OAAOmZ,OAAOpX,KAAMi4C,GAAU72C,cAAc,CAC1C2nD,UAAW,UACXz2C,OAAQ2jN,EAAKx/K,QACbiI,UAAW,oBACX2I,SAAU,CAAC,CACT0B,UAAW,iBACXrK,UAAW,mBAIf1+C,KAAK64P,cAAgB,CACnBr9B,YAAa,MACbs9B,UAAW,MACXhvD,aAAc,MACdnqM,CAACK,KAAK44P,kBAAmB,OAG7Bj5P,aAEEK,KAAKy2C,QAAQmI,UAAU7/B,IAAI,qBAE7Bpf,eACE,MAAMI,EAAKC,MAEP6/D,OAAQo2J,EAAIx/K,QACZA,EAAOkrE,eACPA,GACE5hH,EACJg5P,EAAexiN,GAAUspB,OAAOo2J,EAAK4a,eAAe93L,UACpDigN,EAAgB/iC,EAAKY,WAAWiwB,SAASiS,EAAav0N,GACtDy0N,EAAgBD,IAAkBj5P,EAAGi5P,cACvC,GAAIA,EAAe,CACjB,GAAIC,EAAe,CACjB,GAAIl5P,EAAGi5P,cAAe,CACpBj5P,EAAGi5P,cAAct6E,UAAU3+K,EAAG64P,kBAC9B74P,EAAGi5P,cAAct6E,UAAU,uBAE7B3+K,EAAGi5P,cAAgBA,EACnBA,EAAc/pB,OAAOlvO,EAAG64P,kBACxBj3I,EAAejwD,UAAY,GAC3BiwD,EAAelgH,YAAY1B,EAAGm5P,uBAMhC,MAAMC,EAAkBp5P,EAAGi5P,cAAc3jN,OAASt1C,EAAG8/D,OAAOyjD,WAAW9+E,GAAKzkC,EAAGq5P,oBAC/Er5P,EAAG02C,QAAQmI,UAAUu6M,EAAkB,MAAQ,UAAU,qBACzDp5P,EAAGi5P,cAAcG,EAAkB,SAAW,aAAa,uBAG3DJ,EAAav0N,GAAKzkC,EAAGs5P,iBACrBphN,GAAUqE,QAAQ7F,EAAS12C,EAAGu5P,UAAU,GAAI,CAC1CjjN,MAAO,QACPgE,YAAa0+M,GACZ,MAELh5P,EAAGw5P,oBAAsBP,EAE3Br5P,sBACE,MAAMI,EAAKC,MACTg5P,cACEA,EAAaH,cACbA,GACE94P,EACJ6oO,EAAa,CACX4wB,oBAAqB,GAEvBC,EAAc,GACdC,EAAgB35P,EAAG25P,gBAAkB35P,EAAG25P,cAAgBv4P,SAASoyD,0BACjE+lM,EAAYv5P,EAAGu5P,YAAcv5P,EAAGu5P,UAAY,IAE9CA,EAAUt6P,SAAQgF,IAChBA,EAAE46C,UAAU98C,OAAO,0BAGrBw3P,EAAUx6P,OAAS,EACnBk6P,EAAc1V,aAAYE,IACxB8V,EAAU96P,QAAQglP,EAAMzzL,iBAAiBhwD,EAAG44P,qBAG9C,MAAOe,EAAcphM,WAAY,CAC/BohM,EAAc53P,OAAO43P,EAAcphM,YAErCv4D,EAAGq5P,oBAAsB,EACzBr5P,EAAGs5P,iBAAmB,EAEtBC,EAAUzvP,KAAI7F,IAEZA,EAAEigD,QAAQ,gBAAgBrF,UAAU5/C,SAAQ8W,GAAO2jP,EAAY3jP,GAAO,IACtE9R,EAAEigD,QAAQ,eAAerF,UAAU5/C,SAAQ8W,GAAO8yN,EAAW9yN,GAAO,IAEpE7X,OAAOmZ,OAAOqiP,EAAaZ,GAC3B56P,OAAOmZ,OAAOwxN,EAAYiwB,GAC1B,MAAMc,EAAO31P,EAAEwwD,UACfz0D,EAAGs5P,iBAAmBjlP,KAAKC,IAAItU,EAAGs5P,iBAAkBM,GAEpD31P,EAAE3C,MAAMg2H,UAAY,WACpBt3H,EAAGq5P,oBAAsBhlP,KAAKC,IAAItU,EAAGq5P,oBAAqBr5P,EAAGi5P,cAAc/xP,OAASjD,EAAEwwD,UAAYmlM,GAClG31P,EAAE3C,MAAMg2H,UAAY,GACpB,MAAMlrH,EAASnI,EAAEkvD,UAAU,MAE3BlvD,EAAE46C,UAAU7/B,IAAI,uBAChB26O,EAAcj4P,YAAY0K,GAC1B,OAAOA,KAETstP,EAAY,aAAe,MAC3BxhN,GAAU0jE,cAAc57G,EAAG4hH,eAAgB83I,GAC3CxhN,GAAU0jE,cAAc57G,EAAG02C,QAASmyL,GACpC,OAAO8wB,GAGXhB,GAAYxwP,OAAS,cACrBijO,GAAmB2F,gBAAgB4nB,GAAa,OAwBhD,MAAMkB,WAAel6L,GACnB3xD,mBACE,MAAO,SAETpO,UAAUs2N,EAAM99M,GACd+B,MAAMsB,UAAUy6M,EAAM99M,GACtB89M,EAAK9mM,GAAG,CACN0qO,UAAW,cACXv9O,QAAStc,OAGbL,UAAUgiE,GACR,IAAK3hE,KAAKwd,cAAe,CAEvBxd,KAAK6/D,OAAOy6K,cAEdpgO,MAAM6nD,UAAUJ,GAOlBhiE,aAAYgvK,IACVA,IAEA,MAAM/uG,SACFA,GACE5/D,KACJ85P,EAAOnrF,EAAIooD,UAAY,IAAM,EAC/BpoD,EAAIu7D,UAAU,CACZ6vB,UAAWn6L,GAAYk6L,EACvBE,SAAUp6L,IAAak6L,KAI7BF,GAAO1xP,OAAS,SAChBijO,GAAmB2F,gBAAgB8oB,IAsCnC,MAAMK,WAAkBxX,GAAiB/iL,KAEvClgE,0BACE,MAAO,CAKL06P,aAAc,KACdC,YAAa,OAIjB35L,0BACE,MAAO,CACLC,MAAO,CAAC,aAAc,cAK1B1yD,mBACE,MAAO,UAETpO,UAAUs2N,EAAM99M,GACdnY,KAAKi2N,KAAOA,EACZ/7M,MAAMsB,UAAUy6M,EAAM99M,GACtBnY,KAAK4nO,UAAU3R,EAAKrqJ,OACpBqqJ,EAAKkkC,YAAcn6P,KAAKm6P,YAE1Bx6P,UAAUisE,GACR5rE,KAAKupE,gBAAgB,SACrBqC,EAAMz8C,GAAG,CACP1qB,KAAM,QACN2gF,OAAQ,gBACR9oE,QAAStc,OAGb4rE,YACE,OAAO5rE,KAAKi2N,KAAKrqJ,MAEnBjsE,YACEua,MAAM8B,YAERrc,UAAUgiE,GACRznD,MAAM6nD,UAAUJ,GAChB,MAAM9B,OACJA,GACE7/D,KACJ,GAAI2hE,EAAS,CACX9B,EAAOppB,QAAQmI,UAAU7/B,IAAI,0BACxB,CACL/e,KAAKo6P,kBACLv6L,EAAOppB,QAAQmI,UAAU98C,OAAO,sBAChC+9D,EAAOylL,aAAYnpB,GAAWA,EAAQ74G,WAAW6B,kBAKrDxlH,aACEK,KAAKo6P,kBAaPz6P,kBACE,MAAMI,EAAKC,MACTi2N,KACEA,EAAIrqJ,MACJA,GACE7rE,EACJmzP,EAAQj7M,GAAUoP,SAAS4uK,EAAKx/K,QAAS,kBACzCyjN,EAAen6P,EAAGm6P,cAAgBjkC,EAAK/5D,gBAAgBp9J,OAAS,EAChEmzE,GAAWrG,EAAMwgB,WAAaxgB,EAAM1nE,QAAQ2H,OAAS+/D,EAAMmP,YAAY38E,QAAO8xB,IAAMA,EAAEm2D,gBAAkB6zK,GAAgBjkC,EAAKp8B,WAAW3pK,MAE1I+lM,EAAKlyB,QAAQ/kM,SAAQ+3M,IACnB,IAAIsjD,GACHA,EAAoBtjD,EAAO2rC,aAAe,MAAQ2X,SAA2B,OAAS,EAAIA,EAAkBr7P,SAAQmZ,IACnH,GAAI,SAAUA,EAAQ,CACpB,KAAM,gBAAiBA,GAAS,CAC9BA,EAAOmiP,YAAcniP,EAAOyqO,KAE9B,GAAI,CAAC,SAAU,SAAU,QAAQh3O,gBAAgBuM,EAAOmiP,aAAc,CACpEniP,EAAOyqO,KAAOzqO,EAAOmiP,gBAChB,CAELniP,EAAOyqO,KAAO3kP,OAAOmZ,OAAO,GAAIe,EAAOmiP,qBAK/CpH,EAAMl0P,SAAQs/N,IAEZ,IAAKA,EAAY5nM,QAAQqgL,OAAQ,CAC/B,OAEF,MAAMA,EAASkf,EAAKlyB,QAAQryL,IAAI4sN,EAAY5nM,QAAQqgL,QAClDpuJ,EAAO5oD,EAAGgkP,aAAahtC,EAAQ9kI,EAAS,yBAC1C,GAAI8kI,EAAO2rC,UAAY3rC,EAAO2rC,UAAU5jP,OAASi4M,EAAO95G,IAAM,EAAI,EAAG,CAEnE,IAAKqhI,EAAYj3K,SAASvoD,OAAQ,CAChCw/N,EAAY5sK,UAAY/I,MAGrB,CACH1Q,GAAUqtE,KAAK38D,EAAM21K,EAAY3qK,wBAWzCh0D,eAAcyyD,OACZA,EAAMmgB,QACNA,IAEA,IAAIyxK,EAAe,KACnB,GAAIhkP,KAAK4/D,SAAU,CACjB,OAEF,GAAIxN,IAAW,SAAU,CAGvB4xL,EAAe/lP,OAAOD,KAAKu0E,GAAS5qE,MAAK4O,IACvC,MAAM0tO,EAAWjkP,KAAKi2N,KAAKlyB,QAAQryL,IAAI6E,GAEvC,OAAOrW,QAAQ+jP,KAAc/jP,QAAQ+jP,EAAShnJ,MAAQ/8F,QAAQ+jP,EAASvB,eAG3E,GAAIsB,EAAc,CAChBhkP,KAAKo6P,mBAITz6P,mBAAmBJ,GACjB,MAAMQ,EAAKC,KACXD,EAAGwpE,gBAAgB,mBACnB,GAAIhqE,EAAO,CACTQ,EAAGk2N,KAAK9mM,GAAG,CACT1qB,KAAM,kBACN81P,gBAAiBx6P,EAAG+4L,QACpBx8K,QAASvc,IAGbA,EAAG+4L,UAKLn5L,UACEK,KAAKo6P,mBAGTH,GAAUr4L,aAAe,YACzBq4L,GAAU/xP,OAAS,UACnBijO,GAAmB2F,gBAAgBmpB,IAKnC,MAAMO,GAAqBjqP,QAAQC,UA+BnC,MAAMiqP,WAAa/6L,GAAel/C,MAAMwjD,KAItCxD,0BACE,MAAO,CACLppD,OAAQ,CAAC,cAAe,YAAa,WAAY,SAAU,WAAY,kBACvEqpD,MAAO,CAAC,qBAAsB,iBAAkB,cAKpD9gE,UAAUkgE,EAAQ1nD,GAChB+B,MAAMsB,UAAUqkD,EAAQ1nD,GAExB,IAAKnY,KAAK06P,WAAY,CACpB9lP,QAAQumH,KAAK,gFAEft7D,EAAO+L,OAAS5rE,KAAK4nO,UAAU/nK,EAAO+L,OAExCjsE,UAAUgiE,GACR,GAAIA,EAAS,CACX,MAAM,IAAIjxD,MAAM,oCAGpBk7D,YACE,OAAO5rE,KAAK6/D,OAAO+L,MAErB8uL,iBACE,MAAM36P,EAAKC,MACT+jM,QACEA,GACEhkM,EAAG8/D,OACT,IAAK9/D,EAAG46P,cAAgB52D,EAAQn4L,SAAS7L,EAAG46P,aAAc,CACxD56P,EAAG46P,YAAc52D,EAAQhzK,MAAKgmL,GAAUA,EAAO6jD,eAEjD,OAAO76P,EAAG46P,YAEZh7P,UAAUisE,GACR5rE,KAAKupE,gBAAgB,SACrBqC,EAAMz8C,GAAG,CACP1qB,KAAM,QACNo2P,mBAAoB,uBACpBh4J,aAAc,iBACdi4J,sBAAuB,0BACvBC,iBAAkB,qBAClBz+O,QAAStc,OAabL,qBAAqB8iG,EAAY3K,EAAUkjK,EAAc,OACvD,GAAIv4J,GAAc,KAAM,CACtB,MAAM,IAAI/xF,MAAM,+CAElB,MAAM3Q,EAAKC,MACT4rE,MACEA,EAAK/L,OACLA,GACE9/D,GACJ82N,WACEA,GACEh3J,EACJ2S,EAAS5G,EAAMiB,QAAQ41B,GACvBtiF,EAAOqyD,EAAOjD,aAAa3D,GAC7B,SAAUA,EAAM65B,eAAejzB,EAAQslB,GAAW,CAChD,MAAM62E,EAAMkoD,EAAWyN,UAAU9xJ,GACjC,GAAIm8F,GAAOn8F,EAAOnD,oBAAqB,CACrC,MAAMivJ,EAAcv+N,EAAG26P,aAAe36P,EAAG26P,WAAWv+B,QAAQ3sJ,WAAam/F,EAAIo4B,QAAQhnM,EAAG26P,WAAW/vP,IAEnG2zN,GAAe3vD,EAAIqwD,WAAWV,GAIhC,IAAKv+N,EAAGk7P,eAAgB,CACtBp7L,EAAOppB,QAAQmI,UAAU7/B,IAAI,mBAC7Bhf,EAAGk7P,eAAiB,KACpBl7P,EAAG+oB,uBAAsB,KACvB+2C,EAAOppB,QAAQmI,UAAU98C,OAAO,mBAChC/B,EAAGk7P,eAAiB,SAiBxBp7L,EAAOtyC,QAAQpN,EAAKqvD,UAAY,eAAiB,aAAc,CAC7DgD,OAAAA,IASF3S,EAAOtyC,QAAQ,aAAc,CAC3BilD,OAAAA,EACAslB,SAAU33E,EAAKqvD,aAUrB7vE,eAAe8iG,GACb,OAAOziG,KAAKylG,eAAehD,EAAY,MAQzC9iG,aAAa8iG,GACX,OAAOziG,KAAKylG,eAAehD,EAAY,OAEzC9iG,oBAAmB6yE,OACjBA,EAAMslB,SACNA,IAUA93F,KAAK6/D,OAAOtyC,QAAQ,mBAAoB,CACtCilD,OAAAA,EACAslB,SAAAA,IAGJn4F,sBACEZ,OAAQ6sE,EAAKllE,OACbA,IAEA,MAAM4L,EAASs5D,EAAMiB,QAAQnmE,EAAOklE,EAAM2O,WAAWqB,UACnD+yF,EAAM3uK,KAAK6/D,OAAOg3J,WAAWyN,UAAUhyN,GACzCq8J,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAIsgE,OAAO,sBAEvDtvO,gBACEZ,OAAQ6sE,EAAKllE,OACbA,IAEA,MAAM4L,EAASs5D,EAAMiB,QAAQnmE,EAAOklE,EAAM2O,WAAWqB,UACnD+yF,EAAM3uK,KAAK6/D,OAAOg3J,WAAWyN,UAAUhyN,GACzCq8J,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAI+P,UAAU,sBAE1D/+K,yBAAwB6yE,OACtBA,IAEA,MAAMm8F,EAAM3uK,KAAK6/D,OAAOg3J,WAAWyN,UAAU9xJ,GAC7Cm8F,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAI+P,UAAU,sBAS1D/+K,0BAA0Bm4F,EAAW,KAAMgU,EAAU9rG,KAAK4rE,MAAM8E,UAE9D,MAAM7Q,OACFA,EAAM+L,MACNA,GACE5rE,KACJk7P,EAAW,GACX9tL,EAAe,GACjBvN,EAAOtyC,QAAQ,uBAAwB,CACrCuqE,SAAAA,IAGFlsB,EAAM+I,gBACN/I,EAAMsF,UAASsB,IACb,MAAMi2J,EAAWj2J,EAAOjD,aAAa3D,GACrC,IAAK4G,EAAOtD,OAAQ,CAClB,GAAI4oB,IAAa2wI,EAASj5J,UAAW,CACnCxvE,KAAKylG,eAAejzB,EAAQ,KAAM,MAClCpF,EAAa5uE,QAAQg0E,EAAOnrB,eACvB,IAAKywC,GAAY2wI,EAASj5J,UAAW,CAC1C,GAAIjoE,MAAMC,QAAQgrE,EAAOnrB,UAAW,CAClC+lB,EAAa5uE,QAAQg0E,EAAOnrB,UAE9B6zM,EAAS18P,KAAKwB,KAAKylG,eAAejzB,EAAQ,MAAO,WAGpDs5B,EAASA,IAAYlgC,EAAM8E,UAC9B9E,EAAMgJ,eACN,OAAQkjB,EAAW0iK,GAAqBjqP,QAAQ/G,IAAI0xP,IAAWzqP,MAAK,KAElEovD,EAAOy6K,YAAYxiJ,GACnB,GAAI1qB,EAAatuE,OAAQ,CACvB,GAAIg5F,EAAU,CACZlsB,EAAMr+C,QAAQ,SAAU,CACtB0kD,QAAS7E,EACTk1B,WAAY,KACZ64J,cAAe,WAEZ,CACLvvL,EAAMr+C,QAAQ,MAAO,CACnB0kD,QAAS7E,EACTi1B,SAAU,KACV+4J,YAAa,QAInBv7L,EAAOtyC,QAAQ,iBAAkB,CAC/BuqE,SAAAA,OASNn4F,oBACE,OAAOK,KAAKq7P,oBAAoB,MAOlC17P,kBACE,OAAOK,KAAKq7P,oBAAoB,OAQlC17P,eAAe8iG,GACb,MAAM1iG,EAAKC,MACT4rE,MACEA,GACE7rE,EACJyyE,EAAS5G,EAAMiB,QAAQ41B,GAEzB,GAAIjwB,EAAOjD,aAAaxvE,EAAG6rE,OAAO4uB,mBAAqB,MAAO,CAC5D,OAGF,IAAKhoB,EAAOnD,oBAAqB,CAC/B,IAAIxN,EACJ,MAAMjR,EAAU,GAEhB,IAAK,IAAIt+C,EAASkgE,EAAOlgE,OAAQA,IAAWA,EAAO68D,OAAQ78D,EAASA,EAAOA,OAAQ,CACjF,IAAKA,EAAO88D,WAAWxD,GAAQ,CAC7Bhb,EAAQu9B,QAAQ77E,IAIpB,IAAK,MAAMA,KAAUs+C,EAAS,CAC5B,IAAK7wD,EAAGmc,YAAa,OACbnc,EAAG0lG,eAAenzF,EAAQ,MAAO,QAI1CuvD,EAAa9hE,EAAG8/D,UAAY,MAAQgC,SAAoB,OAAS,EAAIA,EAAWy4K,cAEnF,IAAKv6O,EAAGmc,YAAa,OACbnc,EAAG8/D,OAAOkzL,kBAAkBvgL,IAStC7yE,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,KACTrB,EAASwxB,EAAMxxB,OACfuyO,EAAWnxO,EAAG8/D,OAAOsxK,qBAAqBhhN,GAC1CmrO,EAAkB38P,EAAOslD,QAAQ,oBAEnC,GAAIq3M,GAAmBv7P,EAAGw7P,mBAAqBrqB,IAAa,MAAQA,SAAkB,GAAKA,EAAS1+J,OAAO7C,SAAU,CACnH5vE,EAAG0lG,eAAeyrI,EAAS1+J,SAG/B7yE,eAAewwB,GAEb,GAAIA,EAAMxxB,OAAOslD,QAAQ,oBAAqB,CAC5C9zB,EAAM21B,kBAOVnmD,sBACE,MAAMu/N,YACJA,GACEl/N,KAAK6/D,OAET,IAAKq/J,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY53B,WAAa,IAAM43B,EAAYpG,aAAc,CACtH94N,KAAKylG,eAAey5H,EAAYv0N,IAChC,OAAO,KAET,OAAO,MAKThL,uBACE,GAAIK,KAAK6/D,OAAOkkI,QAAQ//K,QAAU,EAAG,CACnC,OAAOhkB,KAAKw7P,cAGd,OAAO,MAGT77P,cACE,MAAMI,EAAKC,MACT6/D,OACEA,GACE9/D,GACJm/N,YACEA,GACEr/J,EACJ2S,EAAS0sJ,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY1sJ,OAEjF,GAAI0sJ,IAAgB,MAAQA,SAAqB,GAAKA,EAAYnoB,OAAOrwH,MAAQlU,EAAO7C,UAAY6C,EAAOjD,aAAa1P,EAAO+L,OAAO4D,UAAW,CAC/IzvE,EAAG83F,OAAOrlB,GACV,OAAO,KAGT,OAAO,MAET7yE,yBACE,GAAIK,KAAK6/D,OAAOkkI,QAAQ//K,QAAU,EAAG,CACnC,OAAOhkB,KAAKy7P,gBAGd,OAAO,MAET97P,gBACE,MAAMI,EAAKC,MACT6/D,OACEA,GACE9/D,GACJm/N,YACEA,GACEr/J,EACJ2S,EAAS0sJ,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY1sJ,OAEjF,GAAI0sJ,IAAgB,MAAQA,SAAqB,GAAKA,EAAYnoB,OAAOrwH,KAAM,CAE7E,GAAIlU,EAAO7C,WAAa6C,EAAOjD,aAAa1P,EAAO+L,OAAO4D,UAAW,CACnEzvE,EAAG+3F,SAAStlB,GACZ,OAAO,KAGT,GAAIA,EAAOlgE,SAAWkgE,EAAOlgE,OAAO68D,OAAQ,CAC1CtP,EAAOkvK,UAAU,CACfv8J,OAAQA,EAAOlgE,OACfykM,OAAQmoB,EAAYnoB,SAEtB,OAAO,MAIX,OAAO,OAGX73M,EAAgBu7P,GAAM,QAAS,QAC/Bv7P,EAAgBu7P,GAAM,eAAgB,CAMpCc,kBAAmB,MAKnBz7L,OAAQ,CACNg7F,IAAK,sBACL/C,WAAY,uBACZ2jG,mBAAoB,cACpB1jG,UAAW,yBACX2jG,kBAAmB,mBAGvBlB,GAAK74L,aAAe,SACpB64L,GAAKvyP,OAAS,OACdijO,GAAmB2F,gBAAgB2pB,GAAM,MAAO,QAChDtvB,GAAmB2F,gBAAgB2pB,GAAM,KAAM,YAsF/C,MAAMmB,WAAkBl8L,GACtB//D,UAAUs2N,EAAM99M,GACd+B,MAAMsB,UAAUy6M,EAAM99M,GACtB,IAAK89M,EAAK4lC,WAAW,QAAS,CAC5B,MAAM,IAAInrP,MAAM,kEAGpB/Q,kBAAkBm8P,GAEhB,GAAI97P,KAAK+7P,UAAW,CAClBD,EAAWhmP,IAAM9V,KAAK+7P,WAG1Bp8P,uBAAuBq8P,IACvBr8P,yBAEE,GAAIK,KAAKi8P,cAAc5pL,UAAW,OAC1BryE,KAAKi8P,cAAcxkJ,MAAM,OAAQ,OACvC,GAAIz3G,KAAKkc,YAAa,CACpB,QAIJ,MAAMggP,YACJA,GACEl8P,KAAK6/D,OACT,GAAIq8L,EAAa,CACf,GAAIA,EAAYC,mBAAoB,OAC5BD,EAAYzkJ,MAAM,eACxB,GAAIz3G,KAAKkc,YAAa,CACpB,cAGElc,KAAK6/D,OAAO0rC,QAAQ6wJ,eAG9Bz8P,kBAAkB08P,GAChB,MAAMt8P,EAAKC,MACT6/D,OACEA,GACE9/D,EACJ26P,EAAa76L,EAAOkkI,QAAQhzK,MAAK0vM,GAAOA,aAAe2H,KACzD,IAAIx8J,MACAA,GACE/L,EACJ1zD,EAAS,KACXpM,EAAGu8P,QAAUD,EACbt8P,EAAGw8P,aACH18L,EAAO28L,iBACP,GAAIH,IAAWt8P,EAAGk8P,cAAe,CAC/Bl8P,EAAGk8P,cAAgBrwL,EACnBA,EAAQ,IAAIA,EAAMv7D,YAAY,CAC5Bq2E,KAAM,KACNnM,WAAY3O,EAAM2O,aAEpB1a,EAAO+L,MAAQA,QAEX7rE,EAAGq4G,mBACT,GAAIr4G,EAAGmc,YAAa,CAClB,OAGF,GAAImgP,EAAQ,CAEVzwL,EAAM1xC,KAAOn6B,EAAGk8P,cAAclhL,WAAW0hL,SAAQjqL,GAAUA,EAAOtD,OAAS,CAACsD,EAAOtY,QAAU,KAE7F/tD,EAASy/D,EAAM8wL,QAAQL,GAAQP,IAE7B9qN,GAAahX,QAAQ8hO,EAAYlwL,EAAM2O,WAAWoY,mBAAmB+nK,EAAWnkP,OAAQulP,EAAW78P,KAEnGc,EAAG48P,kBAAkBb,MAEvB/7P,EAAG68P,uBAAuBzwP,GAE1By/D,EAAM1xC,KAAO/tB,EAAOk7C,aAGjB,CACHwY,EAAO+L,MAAQ7rE,EAAGk8P,cAClBl8P,EAAGk8P,cAAgB,KAErBl8P,EAAGw8P,aACH18L,EAAOg9L,gBACPh9L,EAAOg3J,WAAWimC,eAClB,OAAO3wP,EAETxM,aAAa08P,GACX,GAAIA,IAAWr8P,KAAKwd,cAAe,CACjCxd,KAAK+8P,YAAYV,IAiBrB18P,YAAY08P,GACVrrN,GAAagsN,YAAYX,EAAQ,iBAC3Br8P,KAAK+8P,YAAYV,GAczB18P,oBACE,GAAIK,KAAKuxF,UAAW,OACZvxF,KAAK+8P,YAAY,OAG3BxrK,gBACE,OAAOrxF,QAAQF,KAAKs8P,UAGxBp9P,EAAgB08P,GAAW,QAAS,aACpC18P,EAAgB08P,GAAW,eAAgB,CAyCzCS,OAAQ,KAORN,UAAW,uBAEb78P,EAAgB08P,GAAW,eAAgB,CACzCxkP,OAAQ,CAAC,QAAS,iBAEpBlY,EAAgB08P,GAAW,aAAc,CACvCW,WAAY,EACZN,cAAe,OAEjBL,GAAU1zP,OAAS,YACnBijO,GAAmB2F,gBAAgB8qB,IAEnC,MAAMqB,GAAY,CAChBzzP,IAAK,MACL+sF,QAAS,WAEX,MAAM2mK,GAAc,CAClBC,GAAI,CACFj2P,MAAO,KACPD,OAAQ,MAEVm2P,GAAI,CACFl2P,MAAO,KACPD,OAAQ,MAEVo2P,GAAI,CACFn2P,MAAO,KACPD,OAAQ,OAEVq2P,GAAI,CACFp2P,MAAO,MACPD,OAAQ,OAEVs2P,MAAO,CACLr2P,MAAO,IACPD,OAAQ,IAEVu2P,OAAQ,CACNt2P,MAAO,IACPD,OAAQ,KAGZ,MAAMw2P,GAAc,CAClBC,SAAU,WACVC,UAAW,aAEb,MAAMC,GAAa,CACjBC,IAAK,MACLC,IAAK,OAEP,MAAMC,GAAe,CACnBF,IAAK,kBACLC,IAAK,aAGP,MAAME,WAAwBh2I,GAE5Bj6G,mBACE,MAAO,kBAGTlB,kBACE,MAAO,kBAETgV,2BACE,MAAO,CACLgsK,SAAU,OAIdluL,aACE,MAAMI,EAAKC,KACX,MAAO,CAAC,CACN2K,GAAIsyP,GAAUzzP,IACdyB,KAAMlL,EAAGo7B,EAAE,WACV,CACDxwB,GAAIsyP,GAAU1mK,QACdtrF,KAAMlL,EAAGo7B,EAAE,iBAKjB6iO,GAAgBpnL,YAChBonL,GAAgB91P,OAAS,kBAEzB,MAAM+1P,WAA+Bj2I,GAEnCj6G,mBACE,MAAO,yBAGTlB,kBACE,MAAO,yBAETgV,2BACE,MAAO,CACLgsK,SAAU,OAIdluL,aACE,MAAMI,EAAKC,KACX,MAAO,CAAC,CACN2K,GAAI8yP,GAAYC,SAChBzyP,KAAMlL,EAAGo7B,EAAE,gBACV,CACDxwB,GAAI8yP,GAAYE,UAChB1yP,KAAMlL,EAAGo7B,EAAE,mBAKjB8iO,GAAuBrnL,YACvBqnL,GAAuB/1P,OAAS,yBAEhC,SAASg2P,GAAgB5+P,EAAK0Y,EAAK7T,CAAAA,GAAKA,IACtC,OAAOlG,OAAOD,KAAKsB,GAAKuK,KAAI5K,IAAG,CAC7B0L,GAAI1L,EACJgM,KAAM+M,EAAG/Y,OAmMb,MAAMk/P,WAAqBlzI,GAEzBl9G,mBACE,MAAO,eAETlB,kBACE,MAAO,eAETrN,0BACE,MAAO,CACLsoJ,SAAU,MACVp4B,UAAW,MACXwkC,SAAU,KACV19B,SAAU,KAUV32D,OAAQ,KAKRu+L,yBAA0B,KAK1BC,uBAAwB,KACxBlsJ,MAAO,oBACP6kB,UAAW,MACX1T,WAAY,CACVh2D,UAAW,MAEbrL,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACLq7O,aAAc,CACZzxP,KAAM,QACNi8I,MAAO,0BACPl9E,MAAO,GACP+wH,WAAY,KACZ1E,aAAc,OACdC,YAAa,KACbzkE,OAAQ,IACRuD,UAAW,KAEbunI,eAAgB,CACd1xP,KAAM,kBACNi8I,MAAO,uBACPvpJ,MAAO,MACPk0H,OAAQ,KAEV+qI,kBAAmB,CACjB3xP,KAAM,QACNi8I,MAAO,+BACP+kC,SAAU,MACVtuL,MAAO,aACP04L,aAAc,OACdt4L,aACE,MAAM8+P,EAASz+P,KAAKsS,OACpB,OAAOmsP,EAAOC,UAAU70P,KAAI80P,IAAQ,CAClCh0P,GAAIg0P,EAAS9xP,KACb5B,KAAMwzP,EAAOrkO,UAAUukO,EAASxsJ,MAAOnyG,WAG3CL,UAASJ,MACPA,IAEAS,KAAK2Y,MAAM2yH,UAAUszH,eAAep8J,OAASjjG,IAAU,aACvDS,KAAK2Y,MAAM2yH,UAAUuzH,kBAAkBr8J,OAASjjG,IAAU,qBAE5Dk0H,OAAQ,KAEVmrI,eAAgB,CACd/xP,KAAM,WACNi8I,MAAO,4BACPkN,QAAS,MACTxzD,OAAQ,KACRixB,OAAQ,KAEVorI,kBAAmB,CACjBhyP,KAAM,WACNi8I,MAAO,+BACP/vH,YAAa/4B,KACbwiG,OAAQ,KACRixB,OAAQ,KAEVqrI,gBAAiB,CACfjyP,KAAM,QACNi8I,MAAO,6BACP/vH,YAAa/4B,KACb6tL,SAAU,MACVtuL,MAAO,MACP0jB,MAAO,GACPtjB,UAASJ,MACPA,EAAKsa,SACLA,IAEA,MAAM4kP,EAASz+P,KAAKsS,OACpB,GAAImsP,EAAOJ,uBAAwB,CACjC,MAAMU,EAAgBN,EAAOnzH,UAAUkzH,kBACrCG,EAAWI,EAAcnzL,MAAM76C,MAAKb,GAAKA,EAAEvlB,KAAO,eACpD,GAAIpL,IAAUq+P,GAAWE,KAAOa,EAAU,CACxC3+P,KAAKg/P,kBAAoBD,EAAcn/L,SACvCm/L,EAAcn/L,SAAW,KACzB5/D,KAAKi/P,eAAiBF,EAAcx/P,MACpCw/P,EAAcx/P,MAAQ,kBACjB,GAAIsa,IAAa+jP,GAAWE,KAAO99P,KAAKi/P,eAAgB,CAC7DF,EAAcn/L,SAAW5/D,KAAKg/P,kBAC9BD,EAAcx/P,MAAQS,KAAKi/P,kBAIjCxrI,OAAQ,KAEVyrI,iBAAkB,CAChBryP,KAAM,QACNi8I,MAAO,8BACP+kC,SAAU,MACVtuL,MAAO,KACP0jB,MAAO,GACPwwG,OAAQ,KAEV0rI,iBAAkB,CAChBtyP,KAAM,yBACNi8I,MAAO,8BACPvpJ,MAAO,WACPk0H,OAAQ,MAGZ87B,KAAM,CACJttG,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACLm8O,aAAc,CACZljM,MAAO,UACPjxD,KAAM,yBACNwoH,OAAQ,IACR6oE,QAAS,oBAEXqlB,aAAc,CACZzlJ,MAAO,SACPjxD,KAAM,yBACNwoH,OAAQ,IACR6oE,QAAS,uBAOnB38L,UAAUwY,EAAS,IACjB,MAAMpY,EAAKC,MACT6/D,OACEA,GACE1nD,EACN,IAAK0nD,EAAQ,CACX,MAAM,IAAInvD,MAAM,+BAElB3Q,EAAGs/P,aAAex/L,EAAOkkI,QAAQtjI,OAAMs2I,GAAUA,EAAO7nI,QAAU6nI,EAAOuoD,YAAY,KAAM,CACzF9/J,wBAAyB,QAE3Bz/F,EAAGw/P,mBAAmBpnP,GACtB+B,MAAMsB,UAAUrD,GAChBkgB,GAAuBlJ,GAAG,CACxB6G,OAAQ,iBACRnJ,MAAO,EACPvQ,QAASvc,IAGbJ,mBAAmBwY,GACjB,MAAMpY,EAAKC,KACTijB,EAAQ9K,EAAO8K,MAAQ9K,EAAO8K,OAAS,GACzC9K,EAAOjR,MAAQiR,EAAOjR,OAASnH,EAAGo7B,EAAE,YACpChjB,EAAO8pC,SAAW9pC,EAAO8pC,UAAY,GACrC9pC,EAAO8pC,SAASypI,WAAavzK,EAAO8pC,SAASypI,YAAc3rL,EAAGo7B,EAAE,8BAChElY,EAAMq7O,aAAer7O,EAAMq7O,cAAgB,GAC3Cr7O,EAAM67O,gBAAkB77O,EAAM67O,iBAAmB,GACjD77O,EAAMi8O,iBAAmBj8O,EAAMi8O,kBAAoB,GACnDj8O,EAAM67O,gBAAgB77O,MAAQi7O,GAAgBN,IAAYr+P,GAASA,EAAM+K,gBACzE2Y,EAAMi8O,iBAAiBj8O,MAAQi7O,GAAgBhB,IAC/Cj6O,EAAMq7O,aAAa1yL,MAAQ7rE,EAAGs/P,aAEhC1/P,eACE,IAAI6/P,EACJ,MAAMlB,aACJA,EAAYM,eACZA,EAAcJ,kBACdA,EAAiBK,kBACjBA,GACE7+P,KAAKsrI,UACT,GAAItrI,KAAKo+P,yBAA0B,CACjCE,EAAa/+P,MAAQS,KAAKq/P,aAAa/gM,OAAMh5D,IAAMA,EAAEk9F,SAEvDo8J,EAAep8J,OAASg8J,EAAkBj/P,QAAU,aACpDs/P,EAAkBr8J,OAASg8J,EAAkBj/P,QAAU,qBACtDigQ,EAAsBtlP,MAAMo4K,gBAAkB,MAAQktE,SAA6B,OAAS,EAAIA,EAAoB34P,KAAK7G,QAASnB,WAErIc,iBACE,MAAM+rL,EAAa1rL,KAAKm7B,EAAE,iBAC1Bn7B,KAAKkH,MAAQlH,KAAKm7B,EAAE,YACpBn7B,KAAK06H,YAAWhZ,IACd,GAAIA,aAAkB0rE,GAAS,CAC7B1rE,EAAOgqE,WAAaA,MAI1B/rL,gBACE,MAAMkM,EAAS7L,KAAK6L,OAOpB7L,KAAKutB,QAAQ,SAAU,CACrB1hB,OAAAA,IAGJlM,gBAMEK,KAAKutB,QAAQ,UACbvtB,KAAK2xH,OAEP9lH,aACE,MAAM4zP,EAAU,SACdtzP,EAAS,GACXnM,KAAK06H,YAAWhZ,IACd,GAAI+9I,EAAQh4P,KAAKi6G,EAAOzzD,KAAM,CAC5B9hD,EAAOu1G,EAAOzzD,IAAIzjD,QAAQi1P,EAAS,KAAO/9I,aAAkB6mF,GAAW7mF,EAAOs0C,QAAUt0C,EAAOniH,UAGnG,OAAO4M,GAGXgyP,GAAavnL,YACbunL,GAAaj2P,OAAS,eAKtB,MAAMw3P,GAAmBv+P,SAAS4gI,cASlC,MAAM49H,WAAYtkP,GAChB7b,0BACE,MAAO,CAeLsW,IAAK,CACH0L,QAAS,CACPlK,MAAO,CAACsoP,EAAIC,KAAQD,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG/hN,kBAAoBgiN,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAGhiN,iBAAmB+hN,EAAGp0N,QAAQq0N,MAepKlgQ,UAAUwY,GAERla,OAAOmZ,OAAOpX,KAAM,CAClB8/P,UAAW,GACXC,eAAgB,GAChBC,OAAQ,GACRC,UAAW,GACXC,SAAU,GACVz+H,WAAY,EACZ0+H,SAAU,EACVC,WAAY,EACZC,KAAM,EACNnnN,QAAS,EACTmvC,IAAK,KACL44J,eAAgB,MAChB95J,cAAe,MAEf4zI,YAAa,IAAIhF,GAAS,CACxBE,KAAM99M,EAAO89M,KACbtrN,GAAI,KACJ64K,YAAa,MAGjBtpK,MAAMsB,UAAUrD,GAElBxY,YACE,MAAMI,EAAKC,KAEX,IAAKD,EAAG82N,WAAW19M,aAAc,CAC/BpZ,EAAGugQ,iBACH,GAAIvgQ,EAAG82N,WAAWhsJ,MAAM9qE,EAAG4K,MAAQ5K,EAAI,QAC9BA,EAAG82N,WAAWhsJ,MAAM9qE,EAAG4K,KAGlCuP,MAAM8B,YASR9L,YACE,OAAOlQ,KAAKugQ,OAEdrwP,UAAUA,GACRlQ,KAAKugQ,OAASrwP,EAMhB6mN,gBACE,OAAO/2N,KAAKogQ,WAEdrpC,cAAcA,GACZ,GAAI/2N,KAAKogQ,aAAerpC,EAAW,CACjC/2N,KAAKogQ,WAAarpC,EAClB/2N,KAAKsjP,aAAY7sM,IACfA,EAAQ/f,QAAQxmB,MAAQ6mN,EACxBtgL,EAAQ+pN,aAAexgQ,KAAKi2N,KAAKQ,YAAcM,EAAY,EAAIA,EAAY,MAQjFpsN,SACE,OAAO3K,KAAKqoF,IAEd19E,OAAOA,GACL,MAAM5K,EAAKC,KACTygQ,EAAQ,CACN91P,GAAAA,GAEFkgE,EAAQ9qE,EAAG82N,WAAWhsJ,MACxB,GAAI9qE,EAAGsoF,MAAQ19E,GAAMkgE,EAAMlgE,KAAQ5K,EAAI,CACrC,GAAI8qE,EAAM9qE,EAAGsoF,OAAStoF,SAAW8qE,EAAM9qE,EAAGsoF,KAC1Cxd,EAAMlgE,GAAM5K,EACZA,EAAGsoF,IAAM19E,EACT5K,EAAGujP,aAAY7sM,IACb+5D,GAAap5F,OAAOq/B,EAASgqN,GAC7BhqN,EAAQ/f,QAAQ/rB,GAAKA,KAEvB5K,EAAG2gQ,UAASv5D,GAAQ32F,GAAap5F,OAAO+vL,EAAMs5D,MAWlD9gQ,WAAWk8N,EAAQplL,GACjB,MAAM12C,EAAKC,KACX,IAAIs+N,EAAc7nL,EAAQkd,kBAC1B5zD,EAAG+/P,UAAUjkC,GAAUplL,EACvB12C,EAAGggQ,eAAevhQ,KAAKi4C,GACvB12C,EAAGmgQ,SAAS1hQ,KAAKq9N,GACjBrrH,GAAap5F,OAAOq/B,EAAS,CAC3BvmC,MAAOnQ,EAAGmQ,QAEZnQ,EAAGigQ,OAAOnkC,GAAU,GACpB,MAAOyC,EAAa,CAClBv+N,EAAGigQ,OAAOnkC,GAAQr9N,KAAK8/N,GACvBv+N,EAAGkgQ,UAAUzhQ,KAAK8/N,GAClB9tH,GAAal/F,IAAIgtN,EAAa,CAC5BvnB,OAAQunB,EAAY5nM,QAAQqgL,OAE5Bof,SAAUmI,EAAY5nM,QAAQy/L,SAC9BkI,WAAYC,EAAY7zK,WACxBkkH,IAAK5uK,IAEPu+N,EAAcA,EAAY1/F,mBAG5BnoF,EAAQ/f,QAAQxmB,MAAQnQ,EAAGmQ,MAC3BumC,EAAQ+pN,aAAezgQ,EAAGk2N,KAAKQ,YAAc12N,EAAGmQ,MAAQ,EAAInQ,EAAGmQ,MAAQ,EAOzEvQ,WAAWk8N,GACT,OAAO77N,KAAK8/P,UAAUjkC,GAOxBl8N,aAAak8N,GACX,OAAOtlL,GAAUvxB,KAAKhlB,KAAKuvD,WAAWssK,IAMxCl8N,YAAYqY,GACVhY,KAAK+/P,eAAe/gQ,QAAQgZ,GAM9BrY,SAASqY,GACPhY,KAAKigQ,UAAUjhQ,QAAQgZ,GAOzBsyN,eACE,OAAOtqO,KAAK8/P,UAOdrpN,cACE,MAAMolL,EAAS59N,OAAOD,KAAKgC,KAAK8/P,WAAW,GAC3C,OAAO9/P,KAAK8/P,UAAUjkC,GASxBq3B,YACE,OAAOlzP,KAAKigQ,UAOdtgQ,SAASk8N,GACP,OAAO77N,KAAKggQ,OAAOnkC,GAOrBl8N,QAAQw2N,GACN,OAAOn2N,KAAKigQ,UAAUlvO,MAAKo2K,IACzB,MAAM+pC,EAAW1gI,GAAa9+F,IAAIy1L,GAElC,OAAO+pC,EAAS/a,UAAYA,GAAY+a,EAASn6B,QAAUof,KAG/Dx2N,eAAeghQ,EAAc,OAC3B,MAAM5gQ,EAAKC,KAEXD,EAAG82N,WAAWtpM,QAAQ,YAAa,CACjCohJ,IAAK5uK,IAEP,IAAK4gQ,EAAa,CAChB5gQ,EAAGujP,aAAY7sM,GAAWA,EAAQ30C,WAEpC/B,EAAG+/P,UAAY,GACf//P,EAAGigQ,OAAS,GACZjgQ,EAAGggQ,eAAejhQ,OAASiB,EAAGmgQ,SAASphQ,OAASiB,EAAGkgQ,UAAUnhQ,OAASiB,EAAG0hI,WAAa1hI,EAAGkH,OAAS,EAClGlH,EAAGogQ,SAAW,EAQhBl5P,aACE,OAAOjH,KAAKk5C,QAEdjyC,WAAWA,GACTjH,KAAKk5C,QAAUjyC,EAMjBmwC,mBAGE,OAAOp3C,KAAKiH,OAASjH,KAAKi2N,KAAK2qC,iBAMjCjhQ,qBAAqB+kO,GACnB,MAAM3kO,EAAKC,KACX,IAAK0kO,EAAU,CACb3kO,EAAG82N,WAAWgqC,iBAAiB9gQ,EAAG4K,GAAI5K,EAAGkH,QAG3C,GAAIlH,EAAG0hI,aAAe1hI,EAAGkH,OAAQ,CAC/BjH,KAAKsjP,aAAY7sM,GAAWA,EAAQp1C,MAAM4F,OAAS,GAAGlH,EAAGq3C,mBACzDr3C,EAAG0hI,WAAa1hI,EAAGkH,QASvBtH,OAAOg+C,GACL39C,KAAK8gQ,UAAU9gQ,KAAK8V,IAAIiJ,IAAI4+B,IAM9Bh+C,UAAUg+C,GACR39C,KAAK8gQ,UAAU9gQ,KAAK8V,IAAIhU,OAAO67C,IAQjCh+C,UAAUg+C,EAAS5+B,GACjB/e,KAAK8gQ,UAAU9gQ,KAAK8V,IAAIiJ,EAAM,MAAQ,UAAU4+B,IASlDh+C,UAAUg+C,GACR39C,KAAK8gQ,UAAU9gQ,KAAK8V,IAAIsB,OAAOumC,IAEjCh+C,UAAUmW,GACR,OAAOA,IAAQ,MAAQA,SAAa,GAAKA,EAAI+nC,eAAiB/nC,EAAM,IAAI0nC,GAAa1nC,GAEvFnW,UAAUmW,GACR9V,KAAKsjP,aAAY7sM,GAAWwB,GAAU0jE,cAAcllE,EAAS3gC,KAE/DnW,aAAaohQ,EAAWxhQ,GACtBS,KAAKsjP,aAAY7sM,GAAWA,EAAQgZ,aAAasxM,EAAWxhQ,KAE9DI,gBAAgBohQ,GACd/gQ,KAAKsjP,aAAY7sM,GAAWA,EAAQ+Y,gBAAgBuxM,KAStDvpO,cACE,OAAOx3B,KAAK+2N,YAAc,EAO5B5hL,UACE,OAAOn1C,KAAKqgQ,KAOdhrN,aACE,OAAOr1C,KAAKqgQ,KAAOrgQ,KAAKk5C,QAAUl5C,KAAKi2N,KAAK2qC,iBAQ9CjhQ,OAAOw1C,EAAKjf,GACV,GAAIl2B,KAAKqgQ,OAASlrN,EAAK,CACrBn1C,KAAKqgQ,KAAOlrN,EACZn1C,KAAKghQ,kBAAkB9qO,IAS3Bv2B,UAAU01C,EAAQnf,GAChBl2B,KAAK01D,OAAOrgB,EAASr1C,KAAKo3C,aAAclhB,GAG1Cv2B,UAAUw1C,EAAKjf,EAAS,OACtBl2B,KAAK01D,OAAOvgB,EAAKjf,GACjB,OAAOif,EAAMn1C,KAAKo3C,aAMpBz3C,kBAAkBu2B,GAChB,MAAMn2B,EAAKC,KACTihQ,EAAelhQ,EAAGk2N,KAAKgrC,aACzB,GAAIlhQ,EAAGogQ,UAAYpgQ,EAAGo1C,IAAK,CACzBp1C,EAAGujP,aAAY7sM,IACb,MAAMp1C,EAAQo1C,EAAQp1C,MACtB,GAAI4/P,IAAiB,YAAa,CAChC5/P,EAAM8yD,UAAY,eAAep0D,EAAGo1C,cAC/B,GAAI8rN,IAAiB,cAAe,CACzC5/P,EAAM8yD,UAAY,iBAAiBp0D,EAAGo1C,gBACjC,GAAI8rN,IAAiB,WAAY,CACtC5/P,EAAM8zC,IAAM,GAAGp1C,EAAGo1C,YAGtB,IAAKjf,EAAQ,CACXn2B,EAAG82N,WAAWtpM,QAAQ,eAAgB,CACpCohJ,IAAK5uK,IAGTA,EAAGogQ,QAAUpgQ,EAAGo1C,KAQpBx1C,OAAO60D,GACL,IAAI0sM,EAASlhQ,KAAKqgQ,KAAO7rM,EAEzB,GAAI0sM,EAAS,EAAG,CACd1sM,GAAa0sM,EACbA,EAAS,EAEXlhQ,KAAK01D,OAAOwrM,GACZ,OAAO1sM,EAYT70D,OAAOwhQ,EAAa3uL,EAAQisJ,EAAoB,KAAMn2H,EAAQ,MAAOo8H,EAAW,OAC9E,IAAItqJ,EAASS,EAAUumL,EAAqBC,EAC5C,MAAMthQ,EAAKC,MACT+6N,YACEA,EAAWjlN,IACXA,EAAGw0N,SACHA,EAAQ4oB,MACRA,EAAKj9B,KACLA,EAAIY,WACJA,EACA5vN,OAAQqmI,EACRjlD,IAAKrd,GACHjrE,EACJuhQ,EAAY9wJ,GAAa9+F,IAAI3R,EAAGggQ,eAAe,IAC/CvwF,EAAYqnD,EAAW0qC,YACvB31L,MACEA,GACEqqJ,GACJ5iI,OACEA,GACEznB,EACN,IAAIhtE,EAAI,EACN2S,EAEF,IAAKihE,GAAUA,IAAW,MAAO,CAC/BA,EAASyjJ,EAAKrqJ,MAAMiB,QAAQy0L,EAAU32P,IACtCw2P,EAAclrC,EAAKrqJ,MAAMnmE,QAAQ+sE,GAKnC,IAAKA,EAAQ,CACX,OAGF,MAAMgvL,GAAQpnL,EAAU5H,KAAY,MAAQ4H,SAAiB,OAAS,EAAIA,EAAQtkE,IAChF2rP,EAAYD,EAAOA,EAAK3jN,eAAiB2jN,EAAO,IAAIhkN,GAAagkN,GAAQ,KAC3E1rP,EAAIsB,OAAO,CAETsqP,sBAAuBjjC,GAAqBxI,EAAKp/J,qBAAuB6tK,EACxE56B,aAAcmsB,EAAKp8B,YAAYh/G,EAAWrI,KAAY,MAAQqI,SAAkB,OAAS,EAAIA,EAASlwE,IACtG8lL,aAAcj+G,EAAOqG,SACrB8oL,WAAYnvL,EAAOwB,SACnB4tL,aAAcpvL,EAAOuD,WAGvB,GAAIh2E,EAAG8hQ,cAAe,CACpB/rP,EAAIhU,OAAO/B,EAAG8hQ,eAGhB,GAAIJ,EAAW,CACb3rP,EAAIiJ,IAAI0iP,GACR1hQ,EAAG8hQ,cAAgB5jQ,OAAOmZ,OAAO,GAAIqqP,OAChC,CACL1hQ,EAAG8hQ,cAAgB,KAGrBhrC,EAAWtpM,QAAQ,kBAAmB,CACpCohJ,IAAK5uK,EACLyyE,OAAAA,EACA2uL,YAAAA,EACAn2L,MAAAA,IAEFirJ,EAAK0qB,gBAAgB,CACnBhyE,IAAK5uK,EACLyyE,OAAAA,EACA2uL,YAAAA,EACAn2L,MAAAA,IAGFjrE,EAAG+gQ,UAAUhrP,GACb,GAAI2oN,GAAqBxI,EAAKp/J,qBAAuB6tK,EAAU,CAC7DzO,EAAKl5M,YAAW,KACd,IAAKhd,EAAGmc,YAAa,CACnBpG,EAAIhU,OAAO,uBACX/B,EAAG+gQ,UAAUhrP,MAEdmgN,EAAKp/J,oBAEV92D,EAAG4K,GAAK6nE,EAAO7nE,GACf5K,EAAGg3N,UAAYoqC,EAEf,MAAMl6P,GAAUgvN,EAAK+6B,gBAAkB/6B,EAAK6rC,aAAatvL,IAAWg9F,EAEpE,IAAIuyF,EAAqBhiQ,EAAGgiQ,mBAAqB,KAEjD,GAAI1uK,EAAQ,CACV,IAAK,MAAMwoI,KAAUyO,EAAU,CAC7B,MAAM5/K,EAAK4/K,EAASzO,GACpBnxK,EAAG//C,GAAK,GAAGsrN,EAAKtrN,MAAMkxN,KAAU97N,EAAG4K,KACnCstC,GAAUkkF,cAAczxE,EAAI,CAC1Bs3M,aAAcxvL,EAAO9C,WAAa,EAClC66I,eAAgB/3I,EAAOlgE,OAAO+0C,SAASvoD,OACvC0rN,gBAAiBh4I,EAAO/G,YAAc,IAExC,GAAI+G,EAAOpD,WAAWxD,GAAQ,CAC5B,IAAI09J,EAAkBc,EACtBnyL,GAAUkkF,cAAczxE,EAAI,CAC1B2sI,gBAAiB,KAGjBkzC,aAAcjB,EAAmB92J,EAAOnrB,YAAc,MAAQiiL,SAA0B,GAAKA,EAAiBxqO,QAAUsrO,EAAoB53J,EAAOnrB,YAAc,MAAQ+iL,SAA2B,OAAS,EAAIA,EAAkBvgO,KAAIqmB,GAAK,GAAG+lM,EAAKtrN,MAAMkxN,KAAU3rM,EAAEvlB,OAAMV,KAAK,KAAO,WAErR,CACL,GAAIuoE,EAAOtD,OAAQ,CACjBxkB,EAAG8E,gBAAgB,qBACd,CACL9E,EAAG+E,aAAa,gBAAiB,OAEnC/E,EAAG8E,gBAAgB,eAIzBurK,EAAY3gJ,QAAU5H,EACtBuoJ,EAAY1yI,IAAM7V,EAAO7nE,GACzBowN,EAAYxE,UAAY4qC,EACxB,IAAKviQ,EAAI,EAAGA,EAAIs0P,EAAMp0P,OAAQF,IAAK,CACjCm8N,EAAYknC,UAAY/O,EAAMt0P,GAAG83B,QAAQy/L,SACzC4E,EAAYrE,QAAUT,EAAKlyB,QAAQl3H,QAAQkuJ,EAAYknC,WACvDlnC,EAAYpE,aAAe/3N,EAC3Bm8N,EAAYxC,MAAQ26B,EAAMt0P,GAC1Bm8N,EAAY9zN,OAASA,EACrB8zN,EAAYgnC,mBAAqBA,EACjChnC,EAAY0D,kBAAoBA,EAChCltN,EAAOxR,EAAGi/N,WAAWjE,GACrB,IAAKlE,EAAWm6B,eAAgB,CAE9B,GAAIz/O,EAAKtK,QAAU,KAAM,CACvB86P,EAAqB3tP,KAAKC,IAAI0tP,EAAoBxwP,EAAKtK,QAGvD,IAAKsK,EAAK2wP,UAAW,CACnBniQ,EAAGgiQ,mBAAqBA,KAKhC,MAAMI,GAAaf,EAAsBW,KAAwB,MAAQX,SAA6B,EAAIA,EAAsBn6P,EAChIlH,EAAGkH,QAAUo6P,EAAwBprC,EAAKmsC,iBAAiB5vL,EAAQ2vL,MAAgB,MAAQd,SAA+B,EAAIA,EAAwBc,EAEtJpiQ,EAAGsiQ,qBAAqB39B,GAExB,GAAIjG,IAAsBiG,EAAU,CAClC,GAAIp3F,IAAcvtI,EAAGkH,OAAQ,CAC3B4vN,EAAWyrC,iBAAiBviQ,EAAIuoG,GAElCuuH,EAAWtpM,QAAQ,YAAa,CAC9BohJ,IAAK5uK,EACLyyE,OAAAA,EACA2uL,YAAAA,EACAn2L,MAAAA,IAEF6rJ,EAAWtpM,QAAQ,cAErB0oM,EAAKssC,eAAe,CAClB5zF,IAAK5uK,EACLyyE,OAAAA,EACA2uL,YAAAA,EACAn2L,MAAAA,EACAsiE,UAAAA,EACAo3F,SAAAA,IAEF7N,EAAWtpM,QAAQ,YAAa,CAC9BohJ,IAAK5uK,EACLyyE,OAAAA,EACA2uL,YAAAA,EACAn2L,MAAAA,EACA05J,SAAAA,IAEF,GAAIp3F,GAAavtI,EAAGkH,SAAWqmI,EAAW,CACxCupF,EAAWtpM,QAAQ,eAAgB,CACjCohJ,IAAK5uK,EACLyyE,OAAAA,EACAvrE,OAAQlH,EAAGkH,OACXqmI,UAAAA,IAGJvtI,EAAGkhP,eAAiB,MAYtBthP,WAAWo7N,GACT,IAAIynC,EAAgBt5B,EACpB,IAAKnO,EAAY/E,WAAY,CAC3B+E,EAAc,IAAIhF,GAASgF,GAE7B,IACE5zB,KAAMm3B,EAAW9rJ,OACjBA,GACEuoJ,EACJ,MAAMh7N,EAAKC,MACTi2N,KACEA,EAAIlf,OACJA,EAAM9vM,OACNA,EAAM86P,mBACNA,EAAkBtjC,kBAClBA,EAAoB,KAAIC,YACxBA,EAAc,OACZ3D,EACJqL,GAAYo8B,EAAiBvsC,EAAKlkG,YAAc,MAAQywI,SAAwB,OAAS,EAAIA,EAAep8B,SAC5Gq8B,EAAkBjyJ,GAAa9+F,IAAI4sN,GACnCD,EAAaokC,EAAgBpkC,WAC7BqkC,EAAiBlyJ,GAAa9+F,IAAI2sN,GACpC,IAAK7rJ,EAAQ,CACXA,EAASuoJ,EAAYvoJ,OAASyjJ,EAAKrqJ,MAAMiB,QAAQ61L,EAAe/3P,IAChE,IAAK6nE,EAAQ,CACX,QAGJ,IAAI62J,EAActyB,EAAOmlB,YAAY1pJ,GACrC,MAAMwJ,EAAYxJ,EAAO34C,SAASk9K,EAAOxgM,OACvChF,EAAO,CACL8uH,iBAAkBp5H,EAClBA,OAAQ,KACR86P,mBAAAA,GAEF9mC,EAAUlkB,EAAO4rD,aAAa5nC,GAC9B6nC,EAAe,CACbtkC,YAAAA,EACAtiJ,UAAAA,EACAqiJ,WAAAA,EACA9+N,MAAO8pO,EACP72J,OAAAA,EACAukI,OAAAA,EACAxlM,KAAAA,EACA0kN,KAAAA,EACAtnD,IAAK8zF,EAAgB9zF,IACrB8vD,kBAAAA,EACAC,YAAAA,GAEFmkC,EAAc9rD,EAAO2oB,UAAY3oB,EAAO+rD,gBAE1C7sC,EAAK8sC,iBAAiBH,GAEtB,GAAIA,EAAatkC,cAAgBA,EAAa,CAE5CA,EAAcskC,EAAatkC,YAE7BrmL,GAAU0jE,cAAc2iH,EAAarD,GACrC,IAAI+nC,EAAmB,KAGvB,GAAIH,EAAa,CAUfx5B,EAAcw5B,EAAYh8P,KAAKkwM,EAAQ6rD,GACvC,GAAIv5B,IAAgBzmO,UAAW,CAC7BogQ,EAAmB,YAEhB,GAAIhnL,EAAW,CACpBqtJ,EAAcrtJ,EAAUinL,MAAM55B,GAGhC,MAAMD,GAAwBF,EAAwBjT,EAAKmT,wBAA0B,MAAQF,SAA+B,OAAS,EAAIA,EAAsBriO,KAAKovN,EAAM,CACxKoT,YAAAA,EACAtyB,OAAAA,IAOF,GAAIqyB,GAAwB52J,EAAO6T,aAAc,CAC/CgjJ,EAAc,GAOhB,MAAM65B,EAAiC95B,IAAyBryB,EAAO78K,KAAKwsD,OAASlU,EAAO6T,aAG5F,GAAI28K,IAAqBE,EAAgC,CACvD,IAAIC,EACJ,IAAIC,EAAe9kC,EAGnB,GAAI8H,IAAa,MAAQA,SAAkB,IAAM+8B,EAAwB/8B,EAAShwB,iBAAmB,MAAQ+sD,SAA+B,GAAKA,EAAsBz3I,OAAOqvG,KAAiBqL,EAAS1L,OAAO3kB,YAAa,CAC1NqtD,EAAerjQ,EAAGsjQ,oBAAoB/kC,EAAa8H,EAAS1L,OAAOjkL,SAErE,MAAM6sN,EAAmBj6B,GAAe,aAAeA,IAAgB,SACrEk6B,SAA0Bl6B,IAAgB,SAC1Cp+N,EAAOq4P,GAAoBj6B,GAAe,KAAO,GAAKngO,OAAOmgO,GAE/D,GAAItpO,EAAGkhP,eAAgB,CAErBmiB,EAAa1xM,UAAY,UAElB0xM,EAAa7jC,SACpBjB,EAAYzrK,cAAgB,KAI9B,IAAKywM,GAAoBvsD,EAAOsrB,aAAetrB,EAAOysD,kBAAmB,CAEvE,GAAIllC,EAAYqjB,SAAU,CACxByhB,EAAa/qM,UAAYptD,EACzBqzN,EAAYqjB,SAAW,UAClB,CACL1pM,GAAUwZ,aAAa2xM,EAAcn4P,QAElC,CACL,GAAI8rM,EAAO0sD,gBAAkBF,GAAoBtrN,GAAUmgB,qBAAqBgrM,IAAgB,CAE9F,GAAIG,EAAkB,CAEpBtrN,GAAUqtE,KAAKr6G,EAAMm4P,EAAazvM,wBAG/B,GAAI2vM,EAAkB,CACzB/oJ,GAAQ+K,KAAK,CACXloE,UAAWisL,EACXznL,cAAewhN,UAKhB,GAAIE,EAAkB,CACzB/oJ,GAAQ+K,KAAK,CACX1jE,cAAewhN,EACfhmN,UAAW,CACT6L,aAAc,KACd5B,SAAUvkC,GAAYm7B,QAAQorL,WAK/B,GAAI+5B,EAAa7jC,WAAat0N,EAAM,CACvCm4P,EAAa1xM,UAAY0xM,EAAa7jC,SAAWt0N,GAIrD,GAAIm4P,IAAiB9kC,EAAa,CAChC,MAAMhmK,WACJA,GACEgmK,EACJ,IAAK,MAAMh3K,KAAQ87M,EAAa9vM,WAAY,CAC1CgrK,EAAY5qK,aAAapM,EAAMgR,KAMrC,IAAKka,EAAO6T,aAAc,CACxB,IAAIq9K,GAEHA,EAAwBztC,EAAK0tC,sBAAwB,MAAQD,SAA+B,OAAS,EAAIA,EAAsB78P,KAAKovN,EAAM,CACzIwsC,gBAAAA,EACAG,aAAAA,EAIAz5B,aAAcy5B,EAAaz5B,cAAgBE,IAG/C,GAAItyB,EAAOmX,YAAc38M,EAAKtK,QAAU,KAAM,CAC5Cq3N,EAAY1/K,UAAU7/B,IAAI,2BAE1BxN,EAAKtK,OAASmN,KAAKC,IAAIiqN,EAAYlnL,aAAc6+K,EAAKzmD,WACtD8uD,EAAY1/K,UAAU98C,OAAO,2BAE/B,IAAK48N,EAAa,CAEhB3+N,EAAG82N,WAAWtpM,QAAQ,aAAcq1O,GAEtC,OAAOrxP,EAGT5R,oBAAoB2+N,EAAaslC,GAC/BlE,GAAiBrhI,SAASigG,EAAa,GACvCohC,GAAiBmE,aAAaD,GAC9B,MAAMR,EAAejiQ,SAASC,cAAc,OAC5CgiQ,EAAa3hQ,YAAYi+P,GAAiBv9H,mBAC1C,OAAOihI,GAKXlkQ,EAAgBygQ,GAAK,QAAS,OAC9BA,GAAI/oL,YACJ+oL,GAAIz3P,OAAS,MAUb,MAAM47P,WAAiB9/L,GAAU/2C,GAAO6L,GAAYzd,OAClDwG,2BACE,MAAO,CASLkiP,wBAAyB,KAQzBC,aAAc,KAkBdC,aAAc/tM,GAAUA,GAQ5Bv2D,QAAQu6B,GACN,MAAMi4E,MACJA,EAAKytC,OACLA,EAAMzmD,OACNA,EAAMjjC,OACNA,EAAMguM,YACNA,EAAWC,UACXA,EAASC,YACTA,EAAc,GAAEC,YAChBA,EAAWC,WACXA,EAAU37M,KACVA,GACEzuB,EACJkqO,EAAY5lQ,KAAK,KAAKwB,KAAKqQ,YAAYxD,QAGvC,GAAIorC,GAAUK,eAAgB,CAC5B8rN,EAAY5lQ,KAAK,2BACZ,CACL4lQ,EAAY5lQ,KAAK,uBAEnB,GAAIkB,EAAc0D,SAAU,CAC1BghQ,EAAY5lQ,KAAK,iBACZ,GAAIkB,EAAc8D,SAAU,CACjC4gQ,EAAY5lQ,KAAK,iBACZ,GAAIkB,EAAc4D,UAAW,CAClC8gQ,EAAY5lQ,KAAK,aAEnB,OAAO2sK,GAAeG,GAAG;;2BAEF44F,oBAA8BI,gBAAyBD;;;6BAGrDlyJ;sBACPj8C,EAAOjsD,KAAK;;wCAEMm6P,EAAYn6P,KAAK,uBAAuBq6P,gBAAyBD,QAAkBF;;0BAEjGvkH,GAAU,oDAAoDA;oFACJj3F;0BAC1DwwC,GAAU,oDAAoDA;;;qBAUtForK,kBACE,MAAMxkQ,EAAKC,KACX,GAAID,EAAGykQ,aAAc,CACnB,OAAOzkQ,EAAGykQ,aAEZ,MAAM5pO,EAAY76B,EAAGgkQ,wBACnBU,EAASriQ,WAAWqiQ,OACpBC,EAAkBn9P,MAAMyd,KAAK7jB,SAAS4uD,iBAAiB,kCACvDmG,EAAS,GACXwuM,EAAgB1lQ,SAAQsoD,IACtBA,EAAOA,EAAK4L,UAAU,MAEtB,GAAIt4B,GAAa0sB,EAAKvhD,KAAM,CAC1B,IAAIoG,EACJ,GAAIyuB,IAAc,KAAM,CACtBzuB,EAASm7C,EAAKvhD,UAGX,GAAI/F,KAAKgkQ,aAAc,CAC1B73P,EAASm7C,EAAKvhD,KAAKyE,QAAQi6P,EAAQ7pO,OAC9B,CACLzuB,EAAS,IAAI9F,IAAIihD,EAAKhJ,aAAa,QAAS1jB,GAE9C0sB,EAAKmI,aAAa,OAAQtjD,GAE5B,IAAIw4P,EAAYr9M,EAAKkQ,UACrB,GAAI58B,GAAa,SAASnzB,KAAK6/C,EAAKsR,SAAU,CAC5C,MAAMgsM,EAAY7kQ,EAAG8kQ,wBAAwBjqO,GAC7C+pO,EAAYA,EAAUn6P,QAAQ,0BAA2Bo6P,GAE3D1uM,EAAO13D,KAAKmmQ,MAEdzuM,EAAO13D,KAAK,2OASZ,OAAOuB,EAAGykQ,aAAezkQ,EAAGkkQ,aAAa/tM,GAE3CquM,gBAAgBhlQ,GACdS,KAAKwkQ,aAAejlQ,EAAQS,KAAKikQ,aAAa1kQ,GAASA,EAEzDI,wBAAwBi7B,GACtB,OAAO,SAAUz6B,EAAOyF,GACtB,IAAIuG,EACJ,IACE,IAAImK,EAEJ,GAAI,KAAK7O,KAAK7B,GAAM,CAClBuG,EAAShM,MACJ,CACL,GAAIy6B,IAAc,KAAM,CACtBtkB,EAAOlU,WAAW0C,SAASiB,UAGxB,GAAI/F,KAAKgkQ,aAAc,CAC1B1tP,EAAOlU,WAAW0C,SAASiB,KAAKyE,QAAQpI,WAAW0C,SAAS2/P,OAAQ7pO,OAC/D,CACLtkB,EAAOskB,EAETzuB,EAAS,QAAQ,IAAI9F,IAAIT,EAAK0Q,GAAMvQ,UAEtC,MAAO/B,GACPmI,EAAShM,EAEX,OAAOgM,GACP6I,KAAKhV,MAETL,WAAUkgE,OACRA,IAEA7/D,KAAKmpE,MAAQtJ,EAAOsJ,MAEtBxpE,oBAAmBkgE,OACjBA,IAEA,MAAMq7L,EAAW,GACf54O,EAAY,IAAIzD,IAClByD,EAAUvD,IAAI8gD,EAAOyjD,WAAWn0F,GAAG,CACjCxvB,SACEu7P,EAAS18P,KAAKqhE,EAAOyjD,WAAW7L,MAAM,kBAG1C53C,EAAOylL,aAAY,EACjB1lG,OAAAA,EACAt8B,WAAAA,MAEAhhG,EAAUvD,IAAIukG,EAAWn0F,GAAG,CAC1BxvB,SACEu7P,EAAS18P,KAAK8kH,EAAW7L,MAAM,kBAGnCn1F,EAAUvD,IAAI6gI,EAAOt8B,WAAWn0F,GAAG,CACjCxvB,SACEu7P,EAAS18P,KAAKohJ,EAAOt8B,WAAW7L,MAAM,qBAI5C53C,EAAOsJ,MAAQnpE,KAAKmpE,YACd54D,QAAQ/G,IAAI0xP,GAClB54O,EAAUtjB,SAAQgZ,GAAMA,MAE1BrY,eAEEK,KAAKy2C,QAAUt1C,SAASC,cAAc,OAGxCzB,aAAa82C,EAAS93C,EAASqB,KAAKy2C,QAASgI,EAAQ,MACnD,GAAIA,EAAO,CACT9/C,EAAO+yD,UAAY,GAErB/yD,EAAO8C,YAAYg1C,EAAQyc,UAAU,OACrCjb,GAAUwhB,mBAAmB96D,EAAQ,8CACrC,MAAMmmQ,EAASnmQ,EAAOqJ,cAAc,yBACpC,GAAI88P,EAAQ,CACVA,EAAOhjQ,UAGXnC,kBAAkB+qD,EAAIjM,EAAQ,KAAMtmC,EAAS,IAC3C,GAAIsmC,EAAO,CACTiM,EAAGgH,UAAY,GAEjB,OAAOzZ,GAAU72C,cAAcnD,OAAOmZ,OAAO,CAC3C9E,OAAQo4C,EACR//C,GAAIy/E,GAASjf,WAAW,WACvBhzD,IAELxY,gBAAekgE,OACbA,IAEA,MAAM2vF,KACJA,EAAID,KACJA,GACE1vF,EACJ,GAAI2vF,EAAM,CACRxvJ,KAAKy2C,QAAQzuC,cAAc,IAAIwnJ,EAAK7kJ,MAAM7I,SAE5C,GAAIytJ,EAAM,CACRvvJ,KAAKy2C,QAAQzuC,cAAc,IAAIunJ,EAAK5kJ,MAAM7I,UAS9CnC,eAAegpD,EAAO,IACpB,GAAIA,aAAgBjqC,YAAa,CAC/BiqC,EAAOA,EAAK6O,UAEd,MAAM74D,EAASs5C,GAAU72C,cAAc,CACrCkR,OAAQnR,SAAS8E,KACjB5E,MAAO,CACLg0P,WAAY,SACZj6M,SAAU,YAGZuN,KAAM,kCAAkCA,qCAE1C,MAAMx8C,EAASxN,EAAOy4C,aAAe,EACrCz4C,EAAOmD,SACP,OAAOqK,EAGTxM,YAAYgpD,GACV,GAAIA,aAAgBjqC,YAAa,CAC/BiqC,EAAOA,EAAK6O,UAEd,MAAM74D,EAASs5C,GAAU72C,cAAc,CACrCkR,OAAQnR,SAAS8E,KACjB5E,MAAO,CACLg0P,WAAY,SACZj6M,SAAU,YAEZuN,KAAAA,IAEF,MAAM2hL,EAAW3rO,EAAOoxD,iBAAiB,OACzC,IAAK,IAAInxD,EAAI,EAAGwwB,EAAIk7M,EAASxrO,OAAQF,EAAIwwB,EAAGxwB,IAAK,CAC/C0rO,EAAS1rO,GAAG6wD,aAAa,MAAO66K,EAAS1rO,GAAGkS,KAE9C,MAAM3E,EAASxN,EAAO+yD,UACtB/yD,EAAOmD,SACP,OAAOqK,EAETxM,yBAAyBkgE,GACvB,IAAI1zD,EAAS,EAGb0zD,EAAOylL,aAAYnpB,IACjB,GAAIA,EAAQ4oC,wBAAyB,CACnC54P,EAAS8rC,GAAUK,mBAIvB,OAAOnsC,IAAW,EAAIA,EAASA,EAAS,EAG1CxM,SAASJ,GAGP,OAAOA,EAAQ,GAEjBI,cAAc2W,EAAM/W,GAClB,OAAO6U,KAAK+oB,MAAM7mB,EAAO,IAAQ/W,GAAS,IAE5CI,oBAAoBkgE,GAClB,MAAMg3J,EAAah3J,EAAOg3J,WAExBmuC,EAAoBnuC,EAAWnnD,KAAKjqK,QAAQoxN,EAAW8X,iBACvDs2B,EAAmBpuC,EAAWnnD,KAAKjqK,QAAQoxN,EAAWquC,gBACxD,IAAI/4P,EAEJ,GAAI64P,KAAuB,EAAG,CAG5B,GAAIC,KAAsB,EAAG,CAC3B94P,EAAS0zD,EAAO+L,MAAM5nD,MAAQghP,MACzB,CAEL74P,EAAS84P,EAAmBD,EAAoB,OAE7C,CACL74P,EAAS0zD,EAAO+L,MAAM5nD,MAExB,OAAO7X,EAETxM,aAAawY,GACX,MAAMpY,EAAKC,KACX,IAAImlQ,EACJplQ,EAAGqlQ,eACHrlQ,EAAGyoE,UAAUrwD,SACPpY,EAAGslQ,iBAAiBltP,GAC1B,IACEgtP,QAAcplQ,EAAGulQ,SAASntP,GAC3B,cACOpY,EAAGwlQ,iBAAiBptP,GAC1BpY,EAAGwkQ,YAAc,WAIX,IAAIh0P,SAAQC,GAAWzQ,EAAG+oB,sBAAsBtY,WAChDzQ,EAAGylQ,aAAartP,GAExB,OAAOgtP,EAETxlQ,eAAewY,GACb,MAAMw3J,EAAY3vK,KAAKylQ,eAAettP,GACpCgtP,EAAQ,GACV,IAAI9/N,EACJ,OAAQA,QAAasqI,EAAUpqJ,UAAY8f,EAAK8D,KAAM,CACpDg8N,EAAM3mQ,KAAK6mC,EAAK9lC,OAElB,OAAO4lQ,EAITxlQ,gBAAgBkgE,GACd,MAAM6lM,cACFA,GACE1lQ,KAAK2lQ,YACT9uC,WACEA,GACEh3J,EACN7/D,KAAK4lQ,oBAAsB,CACzBC,iBAAkBhvC,EAAWgvC,iBAC7BC,gBAAiBjvC,EAAWivC,iBAG9B,MAAMC,EAAoB3xP,KAAKuqB,KAAK+mO,EAAgB7uC,EAAW0xB,iBAC/D1xB,EAAWgvC,iBAAmBE,EAC9BlvC,EAAWivC,gBAAkBC,EAC7BlmM,EAAO2sK,aAGP3sK,EAAOg3J,WAAWmvC,eAAenmM,EAAOyjD,WAAW9+E,GAErD7kC,iBAAiBkgE,GACfA,EAAOg3J,WAAWgvC,iBAAmB7lQ,KAAK4lQ,oBAAoBC,iBAC9DhmM,EAAOg3J,WAAWivC,gBAAkB9lQ,KAAK4lQ,oBAAoBE,gBAK/DnmQ,uBAAuBwY,GACrB,MAAMpY,EAAKC,MACT6/D,OACEA,EAAMkkI,QACNA,EAAOkiE,UACPA,EAASC,gBACTA,EAAeC,sBACfA,GACEhuP,GACJ0+M,WACEA,GACEh3J,EACJ8lM,EAAa5lQ,EAAG4lQ,WAAa,CAC3BQ,sBAAAA,EACAC,WAAY,EACZC,YAAa,GAAKF,EAAwB,EAAIpmQ,EAAGumQ,yBAAyBzmM,IAC1EsqK,SAAU,IAEdtqK,EAAOkkI,QAAQ/kM,SAAQ+3M,IACrB,GAAIhT,EAAQn4L,SAASmrM,EAAOpsM,IAAK,CAC/BosM,EAAO3mF,WACF,CACL2mF,EAAOplF,iBAML,IAAIphH,SAAQC,GAAWqvD,EAAO/2C,sBAAsBtY,KAC1D,GAAIqvD,EAAOg3J,WAAWkI,SAAW,EAAG,CAClC,GAAIknC,IAAchJ,GAAUzzP,IAAK,CAC/Bm8P,EAAWY,sBAAwB1vC,EAAWnnD,KAAK,GAAGqnD,cACjD,CACL4uC,EAAWY,sBAAwB1vC,EAAW8X,gBAAgB5X,UAC9D5+M,EAAOquP,UAAY,KAErB,IAAKL,EAAuB,OACpBtmM,EAAOkzL,kBAAkBlzL,EAAO+L,MAAMonB,MAAM2yK,EAAWY,uBAAwB,CACnF3mN,MAAO,WAIb,MAAMnJ,QACJA,GACE12C,EAEJA,EAAG0mQ,aAAa5mM,EAAOppB,SACvB12C,EAAG2mQ,eAAevuP,GAClB,IAAIwuP,EAEJ,GAAIR,EAAuB,CACzBR,EAAWgB,QAAUA,EAAU,IAAIhH,GAAI,CACrC7pP,IAAK+pD,EAAO+mM,OACZ/vC,WAAYh3J,EAAOg3J,WACnBZ,KAAMp2J,EAEN3vD,OAAQ,GACR6mN,WAAY,KAGhBl3J,EAAOylL,aAAYnpB,IACjB,IAAI0qC,EAAuBC,EAAiBC,EAE5C,GAAIJ,EAAS,CACXxqC,EAAQ6qC,SAAS,CACft3F,KAAM,CAACi3F,GACPjiC,SAAU,OAIZiiC,EAAQlwN,QAAQ/f,QAAQilG,SAAW97D,EAAOl1D,GAE5C,MAAMy2E,EAAcrhF,EAAGknQ,kBAAkBxwN,EAAQzuC,cAAc,QAAQm0N,EAAQxxN,QAAS,OACxF,IAAIzD,EACJ,GAAIg/P,IAAoB,MAAQA,SAAyB,GAAKA,EAAgB/pC,EAAQN,QAAS,CAC7F30N,EAAQi1N,EAAQ1lL,QAAQuM,gBACnB,CACL97C,EAAQi1N,EAAQp4B,QAAQsyB,eAAe5qN,QAAO,CAACU,EAAQ4qM,KACrD,UAAWA,EAAO7vM,QAAU,SAAU,CACpCiF,GAAU4qM,EAAO7vM,UACZ,CACLiF,IAAW0zD,EAAO42J,YAAc52J,EAAOg3J,WAAWnnD,KAAK,GAAGq3B,QAAQgQ,EAAOpsM,IAAMosM,EAAOtgK,SAASuM,YAEjG,OAAO72C,IACN,GAELw5P,EAAWS,YAAcl/P,EACzB,MAAMggQ,IAAkBL,EAAwB1qC,EAAQ0wB,mBAAqB,MAAQga,SAA+B,OAAS,EAAIA,EAAsB7jN,cAAgB,EACvK2iN,EAAWS,YAAcc,EACzBvB,EAAWx7B,SAAShO,EAAQN,QAAU,CACpClxN,GAAIwxN,EAAQxxN,GACZw8P,WAAYL,EAAkB3qC,EAAQv8E,UAAY,MAAQknH,SAAyB,OAAS,EAAIA,EAAgBn8P,KAAO,KACvHy8P,WAAYL,EAAkB5qC,EAAQhjI,UAAY,MAAQ4tK,SAAyB,OAAS,EAAIA,EAAgBp8P,KAAO,KACvH+kK,KAAM,GACNw3F,cAAAA,EACA9lL,YAAAA,EACAl6E,MAAAA,MAINvH,uBACE,MAAMI,EAAKC,MACTy2C,QACEA,EAAOkvN,WACPA,GACE5lQ,EAEN9B,OAAO4N,OAAO85P,EAAWx7B,UAAUnrO,SAAQ,EACzCkI,MAAAA,EACAyD,GAAAA,EACAw8P,SAAAA,EACAC,SAAAA,MAEA,CAACz8P,EAAIw8P,EAAUC,GAAUpoQ,SAAQ2L,IAC/B,GAAIA,EAAI,CACN,MAAMslD,EAAexZ,EAAQzuC,cAAc,QAAQ2C,OAEnD,GAAIslD,EAAc,CAChBA,EAAa5uD,MAAM6F,MAAQ,GAAGA,MAC9B+oD,EAAa5uD,MAAM+1H,KAAO,WAKlC,OAAO3gF,EAAQib,UAEjB/xD,uBAAuBwY,GACrB,GAAInY,KAAK2lQ,WAAWgB,QAAS,CAC3B3mQ,KAAK2lQ,WAAWgB,QAAQ5qP,iBACjB/b,KAAK2lQ,WAAWgB,SAG3BhnQ,wBAAwBkgE,EAAQ3vD,SACxB2vD,EAAOkzL,kBAAkBlzL,EAAO+L,MAAMonB,MAAM9iF,GAAQ,CACxD0vC,MAAO,gBAGH,IAAIrvC,SAAQC,GAAWxQ,KAAK8oB,sBAAsBtY,KAE1D7Q,WAAWgvK,GACT,MAAMw7D,EAAWnqO,KAAK2lQ,WAAWx7B,SAC/BplO,EAAK,uBACP9G,OAAO6I,QAAQ6nK,EAAI27D,UAAUtrO,SAAQ,EAAEC,EAAKM,MAC1C4qO,EAASlrO,GAAKywK,KAAKlxK,KAAK,CAACe,EAAMi4D,UAAUhtD,QAAQzF,EAAI,IAAK4pK,EAAIx5H,IAAKw5H,EAAIv3H,aAAc,IAAI5lC,SAK7F7R,kBAAkBwY,EAAQmuO,EAAWC,EAAS72E,GAC5C,MAAM3vK,EAAKC,MACT6/D,OACEA,GACE1nD,GACJgyN,SACEA,GACEpqO,EAAG4lQ,WAEP9d,EAAehoL,EAAOkyD,SAAS+zH,WAAWiC,uBAAuBzB,EAAWC,EAAS72E,GACvF,IAAK,MAAM23F,KAAel9B,EAAU,CAClC,MAAMhO,EAAUgO,EAASk9B,GACvB1oQ,EAASwC,SAASC,cAAc,OAElCm5G,GAAQ+K,KAAK,CACX1jE,cAAejjD,EACfy+C,UAAW,CACTiK,SAAUwgM,EAAawf,GAAahgN,YAGxC,GAAI1oD,EAAO20D,WAAWx0D,OAAQ,CAG5BH,EAAO20D,WAAWt0D,SAAQ+uD,IACxB,MAAMsE,OACFA,GACEtE,EAAMr3B,QACVq7J,EAAQlyH,EAAOkyD,SAAS+zH,WAAWI,aAAan1N,MAAKghK,IACnD,IAAIu1E,EACJ,QAASA,EAAqBv1E,EAAMusC,eAAiB,MAAQgpC,SAA4B,OAAS,EAAIA,EAAmB78M,WAAW/zB,QAAQ27B,UAAYA,KAE5J,GAAI0/H,EAAO,CAEThkI,EAAM2D,UAAYqgI,EAAMusC,YAAY9mK,cAGxC2kK,EAAQorC,gBAAkB,CAAC5oQ,EAAO+yD,cAa1CoyM,GAASj2P,UAAU43P,eAAiBv9O,eAAgBu9O,IAClD,MAAM,IAAI/0P,MAAM,wCAElBozP,GAAS57P,OAAS,WA4ClB,MAAMs/P,WAA4B1D,GAChC/1P,mBACE,MAAO,oBAETlB,kBACE,MAAO,YAETslG,mBAEE,OAAOnyG,KAAKm7B,EAAE,gBAEhBssO,+BACE,MAAO,mBAGT9nQ,qBAAoBkgE,OAClBA,EAAMomM,UACNA,EAASE,sBACTA,IAEA,MAAMR,WACJA,GACE3lQ,OACF2lQ,EAAWn3J,cACXm3J,EAAW+B,wBACN/B,EAAWgC,sBAElB,GAAIhC,EAAW+B,kBAAoB/B,EAAWiC,cAAe,CAC3D3pQ,OAAOmZ,OAAOuuP,EAAY,CACxB+B,iBAAkB,EAClBG,mBAAoBlC,EAAWkC,mBAAqB,EACpDC,qBAAsB,EACtB3H,QAAS,EACT4H,aAAc9B,IAAchJ,GAAU1mK,QAAU12B,EAAOg3J,WAAW8X,gBAAgB5X,UAAY,WAEzF4uC,EAAWqC,iBAClB,IAAK7B,EAAuB,OACpBnmQ,KAAK+yP,kBAAkBlzL,EAAQ8lM,EAAWY,sBAAuB,CACrE3mN,MAAO,YAOfjgD,uBAAuBwY,SACf+B,MAAMmrP,iBAAiBltP,GAC7B,MAAMpY,EAAKC,MACT2lQ,WACEA,GACE5lQ,GACJ8/D,OACEA,EAAMooM,UACNA,EAASC,UACTA,EAAS1B,UACTA,EAASP,UACTA,EAASE,sBACTA,GACEhuP,EACJgwP,EAAcjL,GAAY/kP,EAAOgwP,aACjCC,EAAajwP,EAAOyvM,cAAgB61C,GAAYC,SAChD4G,EAAa8D,EAAaD,EAAYjhQ,MAAQihQ,EAAYlhQ,OAC1Do9P,EAAc+D,EAAaD,EAAYlhQ,OAASkhQ,EAAYjhQ,MAC5DmhQ,EAAYtoQ,EAAGuoQ,SAAShE,GACxBiE,EAAaxoQ,EAAGuoQ,SAASjE,GACzBmE,EAAkBvC,IAAchJ,GAAU1mK,QAC1CkyK,EAAkBr0P,KAAKuqB,KAAKgnO,EAAWS,WAAaiC,GAEtD,IAAI3C,EAAgB6C,EACpB,GAAIN,EAAW,CACbvC,GAAiB3lQ,EAAG2oQ,eAAeT,EAAU,CAC3C7B,WAAYT,EAAWS,WACvBuC,YAAa,EACbn6J,aAAc,KAGlB,GAAI05J,EAAW,CACbxC,GAAiB3lQ,EAAG2oQ,eAAeR,EAAU,CAC3C9B,WAAYT,EAAWS,WACvBuC,YAAa,EACbn6J,aAAc,KAGlB,IAAI63J,EACFuB,EACAgB,EAAY/oM,EAAO+L,MAAM5nD,MAC3B,GAAIwkP,EAAiB,CACnBI,EAAY7oQ,EAAG8oQ,oBAAoBhpM,GACnCwmM,EAAcV,EAAWU,YAAcxmM,EAAOipM,aAAejpM,EAAOkpM,aAAelpM,EAAOmpM,eACrF,CACL3C,EAAcV,EAAWU,YAAcxmM,EAAOipM,aAAejpM,EAAOkpM,aAAelpM,EAAOyjD,WAAW7rE,aAIvG,GAAI+uN,IAAcgC,EAAiB,CAIjC,MAAMh5F,EAAY3vG,EAAOg3J,WAAW0xB,gBAClC0gB,EAAkB70P,KAAK+oB,OAAOuoO,EAAgB7lM,EAAOipM,cAAgBt5F,GACrE05F,EAAc90P,KAAK+oB,MAAMuoO,EAAgBl2F,GACzC25F,EAAgBP,EAAYK,EAC9BrB,EAAgB,EAAIxzP,KAAKuqB,KAAKwqO,EAAgBD,OACzC,CACLtB,EAAgBxzP,KAAKuqB,KAAK0nO,EAAcX,GAE1CznQ,OAAOmZ,OAAOuuP,EAAY,CACxBrB,WAAAA,EACAD,YAAAA,EACAgE,UAAAA,EACAE,WAAAA,EACAE,gBAAAA,EACAb,cAAAA,EACAvB,YAAAA,EACAX,cAAAA,EACAkD,UAAAA,EACAD,WAAYF,EAAkBb,EAC9Bp5J,YAAa,EACbk5J,iBAAkB,EAClBG,mBAAoB,EACpBC,qBAAsB,EACtB3H,QAAS,EACT4H,aAAcS,EAAkB3oM,EAAOg3J,WAAW8X,gBAAgB5X,UAAY,IAEhF,IAAKovC,EAAuB,CAC1BnmQ,KAAKopQ,gBAAgBvpM,IAGzBlgE,uBAAuBwY,SACf+B,MAAMqrP,iBAAiBptP,GAC7B,IAAKA,EAAOguP,sBAAuB,CACjCnmQ,KAAKqpQ,iBAAiBlxP,EAAO0nD,SAIjClgE,kBAAkBwY,GAChB,MAAMpY,EAAKC,MACT2lQ,WACEA,GACE5lQ,GACJ8/D,OACEA,EAAM2mM,UACNA,EAASP,UACTA,GACE9tP,GACJgyN,SACEA,EAAQ29B,qBACRA,EAAoBJ,iBACpBA,EAAgBhC,cAChBA,EAAakD,UACbA,EAASZ,iBACTA,GACErC,GACJ9uC,WACEA,GACEh3J,GACJ6vG,KACEA,GACEmnD,EACJ7mJ,EAAci2L,IAAchJ,GAAU1mK,QACtC+yK,EAAgBzpM,EAAO0pM,iBAAiB,cAC1C,IAAIC,EAAiBt5P,EACrB,GAAI8/D,GAAeg4L,GAAoB,KAAM,CAC3C,GAAIA,IAAqBt4F,EAAKA,EAAK5wK,OAAS,GAAGi4N,UAAW,CACxD7mN,EAAQw/J,EAAK5wK,OAAS,MACjB,CACLoR,EAAQw/J,EAAK3/E,WAAU7/D,GAAKA,EAAE6mM,YAAcixC,SAEzC,CACL93P,EAAQ8/D,EAAc0/F,EAAK3/E,WAAU7/D,GAAKA,EAAEmlB,OAASjhC,KAAKuqB,KAAKkhC,EAAOyjD,WAAW9+E,KAAMkrI,EAAK3/E,WAAU7/D,GAAKA,EAAEmlB,OAASyyN,EAAuBjoM,EAAOipM,aAAe,IAErK,MAAMW,EAAgBv5P,EAGpBw5P,EAAoB15L,GAAe03L,IAAqB,EAAI,EAAIh4F,EAAKx/J,GAAOilC,IAAM2yN,EAAuBjoM,EAAOipM,aAKlHU,EAAkB9D,EAAgBgE,EAElC,GAAIhC,IAAqB,EAAG,CAC1B8B,GAAmB3pM,EAAOipM,aAG5B,IAAIa,EACF76N,EAAS,EACX,MAAO06N,EAAkB,EAAG,CAC1B,MAAM76F,EAAMe,EAAKx/J,GACjB,GAAIs2P,GAAagD,EAAkB76F,EAAIv3H,aAAc,CACnDtI,GAAU06N,EACVA,EAAkB,EAGlBzpQ,EAAG4lQ,WAAWgC,sBAAwBj4F,EAAKx/J,EAAQ,GAAGmlC,WACjD,CACLt1C,EAAG6pQ,WAAWj7F,GACd66F,GAAmB76F,EAAIv3H,aACvBuyN,EAAgBh7F,EAAIooD,UAEpB,KAAM7mN,IAAUw/J,EAAK5wK,QAAU0qQ,EAAkB,EAAG,CAClDA,EAAkB,OACb,GAAIx5L,GAAe9/D,EAAQu5P,IAAkBb,EAAW,CAC7DY,EAAkB,IAKxB,GAAIF,EAAe,CACjB,IAAK,MAAMjC,KAAel9B,EAAU,CAClC,MAAMhO,EAAUgO,EAASk9B,GACvBwC,EAAchqM,EAAOsqK,SAASk9B,GAAa5wN,QAAQsZ,iBAAiB,wBACtEosK,EAAQorC,gBAAkB,GAC1B,IAAK,MAAMuC,KAAcD,EAAa,CACpC1tC,EAAQorC,gBAAgB/oQ,KAAKsrQ,EAAWtyM,aAI9C,MAAMuyM,EAAUr6F,EAAKx/J,EAAQ,GAC7B,GAAI65P,EAAS,CAEXpE,EAAWqE,gBAAkBD,EAAQ10N,OAASwqB,EAAOoqM,gBAAgB7yN,aAAeyoB,EAAO82K,gBAAgBv/L,aAC3GuuN,EAAWqC,iBAAmB+B,EAAQhzC,UAAY,QAE9Ch3N,EAAGmqQ,gBAAgBx6F,EAAKz9J,MAAMw3P,EAAev5P,GAAQiI,GAE3D,GAAI63D,EAAa,CACf21L,EAAWqE,iBAAmBrE,EAAWwE,oBAAsBtqM,EAAOyjD,WAAW9+E,MAC5E,CAEL,MAAMhiB,EAAWq0M,EAAW1nM,GAAG,cAAc,EAC3C2f,OAAQvvC,KACJuvC,GAAUvvC,UACVQ,EAAGgzP,kBAAkBlzL,EAAQ8pM,EAAgB,GACnDnnP,IAEF,OAAOssB,EAETnvC,iBAAiBwY,GACf,MAAMpY,EAAKC,MACT2lQ,WACEA,GACE5lQ,GACJ8/D,OACEA,EAAM2mM,UACNA,EAASP,UACTA,GACE9tP,GACJ2vP,qBACEA,EAAoBJ,iBACpBA,EAAgBhC,cAChBA,EAAakD,UACbA,EAASb,aACTA,EAAYpB,QACZA,GACEhB,GACJ/5L,MACEA,GACE/L,EACJypM,EAAgBzpM,EAAO0pM,iBAAiB,cACxCf,EAAkBvC,IAAchJ,GAAU1mK,QAC5C,IAAIrmF,EAAQ63P,GACV5H,QACEA,GACEwF,EACJ6D,EACF,MAAMC,EAAgBv5P,EAGpBw5P,EAAoBlB,GAAmBd,IAAqB,EAAI,EAAIvH,EAAU2H,EAAuBjoM,EAAOipM,aAC5Gp5F,EAAO,GAKT85F,EAAkB9D,EAAgBgE,EAElC,GAAIhC,IAAqB,EAAG,CAC1B8B,GAAmB3pM,EAAOipM,aAG5B,IAAIa,EACFS,EACAt7N,EAAS,EACX,MAAO06N,EAAkB,EAAG,CAC1B7C,EAAQ5sP,OAAO7J,EAAO07D,EAAMonB,MAAM9iF,GAAQ,KAAM,MAAO,MACvD,GAAIs2P,GAAagD,EAAkB7C,EAAQvvN,aAAc,CACvDtI,GAAU06N,EACVA,EAAkB,EAGlBzpQ,EAAG4lQ,WAAWgC,sBAAwBxH,MACjC,CACLiK,EAAcjK,EACdwJ,EAAgBz5P,EAChBiwP,EAAUwG,EAAQ/rO,UAAUulO,GAC5BqJ,GAAmB7C,EAAQvvN,aAC3Br3C,EAAG6pQ,WAAWjD,GAEdj3F,EAAKlxK,KAAK,CACR22C,IAAKwxN,EAAQxxN,IACbE,OAAQsxN,EAAQtxN,OAChB+B,aAAcuvN,EAAQvvN,aACtB2/K,UAAW4vC,EAAQ5vC,YAGrB,KAAM7mN,IAAU07D,EAAM5nD,OAASwlP,EAAkB,EAAG,CAClDA,EAAkB,OACb,GAAIhB,GAAmBt4P,EAAQu5P,IAAkBb,EAAW,CACjEY,EAAkB,IAIxB,GAAIF,EAAe,CACjBvpQ,EAAGsqQ,kBAAkBlyP,EAAQsxP,EAAev5P,EAAOw/J,GAMrDi2F,EAAWoC,aAAevB,EAAYt2P,EAAQy5P,EAC9ChE,EAAWxF,QAAUqG,EAAYrG,EAAUiK,EAC3C,GAAIzD,EAAS,CAEXhB,EAAWqE,gBAAkBrD,EAAQtxN,OAASwqB,EAAOoqM,gBAAgB7yN,aAAeyoB,EAAO82K,gBAAgBv/L,mBAEvGr3C,EAAGmqQ,gBAAgBx6F,EAAMv3J,GAC/B,OAAO22B,EAETnvC,gBAAgBwY,GACd,MAAMpY,EAAKC,MACT2lQ,WACEA,GACE5lQ,GACJ8/D,OACEA,EAAMooM,UACNA,EAASC,UACTA,EAAS/B,sBACTA,GACEhuP,GACJiuP,WACEA,EAAUuC,WACVA,EAAUn6J,YACVA,EAAW27H,SACXA,GACEw7B,EAEN1nQ,OAAO4N,OAAOs+N,GAAUnrO,SAAQm9N,GAAWA,EAAQzsD,KAAO,KAG1D,GAAIv3J,EAAO8tP,YAAchJ,GAAUzzP,IAAK,CACtCm8P,EAAWU,YAAcxmM,EAAO54D,OAAS44D,EAAOmpM,WAAanpM,EAAOyjD,WAAW7rE,aAAe13C,EAAGumQ,yBAAyBzmM,GAE5H,IAAI+/E,EAAQzmD,EAEZ,GAAI8uK,EAAW,CACbroH,EAAS7/I,EAAGuqQ,YAAYrC,EAAU,CAChC7B,WAAAA,EACAuC,WAAAA,EACAn6J,YAAAA,KAGJ,GAAI05J,EAAW,CACb/uK,EAASp5F,EAAGuqQ,YAAYpC,EAAU,CAChC9B,WAAAA,EACAuC,WAAAA,EACAn6J,YAAAA,KAGJ,IAAI1/D,EACJ,GAAIq3N,EAAuB,CACzBr3N,QAAe/uC,EAAGysO,WAAWr0N,OACxB,CACL22B,QAAe/uC,EAAGwqQ,YAAYpyP,GAEhC,MAAMwwC,EAAO5oD,EAAGyqQ,cAAcryP,GAC9B,MAAO,CACLwwC,KAAAA,EACAi3F,OAAAA,EACAzmD,OAAAA,EACArqD,OAAAA,GAGJnvC,yBACAA,gBACE,MAAMI,EAAKC,MACTmqO,SACEA,GACEpqO,EAAG4lQ,WAET,IAAIh9M,EAAO5oD,EAAG0qQ,uBACdxsQ,OAAO4N,OAAOs+N,GAAUnrO,SAAQ,EAC9BoiF,YAAAA,EACAsuF,KAAAA,EACA63F,gBAAAA,MAEA,MAAMmD,EAAkBtpL,EAAY5pB,UACpC,IAAImzM,EAAcj7F,EAAKjkK,QAAO,CAACU,EAAQwiK,KACrCxiK,GAAUwiK,EAAI,GACd,OAAOxiK,IACN,IACH,GAAIo7P,IAAoB,MAAQA,SAAyB,GAAKA,EAAgBzoQ,OAAQ,CACpF6rQ,GAAe,8CAA8CpD,EAAgBt9P,KAAK,YAEpF0+C,EAAOA,EAAKn+C,QAAQkgQ,EAAiBC,MAEvC,OAAOhiN,EAEThpD,uBACE,MAAMI,EAAKC,MACTy2C,QACEA,EAAOkvN,WACPA,GACE5lQ,EACN,GAAI4lQ,EAAWwE,oBAAqB,CAClC1zN,EAAQzuC,cAAc,6BAA6B3G,MAAMupQ,UAAY,IAAIjF,EAAWwE,wBAEtF,OAAOjwP,MAAMuwP,wBAKjBjD,GAAoB35P,UAAU43P,eAAiBv9O,eAAgBu9O,EAAettP,GAC5E,MAAMpY,EAAKC,MACT2lQ,WACEA,EAAUpB,YACVA,GACExkQ,GACJqmQ,WACEA,EAAUuC,WACVA,EAAUrE,WACVA,EAAUD,YACVA,EAAWqB,cACXA,GACEC,EACN,IAAIn3J,EACJ,OAAQA,EAAcm3J,EAAWn3J,aAAem6J,EAAY,CAC1D5oQ,EAAGwtB,QAAQ,aAAc,CACvBtiB,KAAMlL,EAAGo7B,EAAEqsO,GAAoBC,kBAAmB,CAChDj5J,YAAAA,EACAm6J,WAAAA,IAEFjgP,SAAUtU,KAAKkxB,OAAOkpE,EAAc,GAAKm6J,EAAa,MAExD,MAAMhgN,KACJA,EAAIi3F,OACJA,EAAMzmD,OACNA,EAAMrqD,OACNA,SACQ/uC,EAAG8qQ,UAAU1yP,GAGvB,MAAM+9C,EAAS,IAAIquM,EAAa,mDAEbpsP,EAAO0nD,OAAOl1D,yCACHg7P,EAAWqE,iEACZ5D,mJAGgB9B,EAAaqB,EAAWkC,gEACjClC,EAAWmC,0FAK/CnC,EAAWmC,sBAAwBpC,EAAgB52N,QAC7C/uC,EAAG+qQ,cAAc3yP,QACjB,CACJwwC,KAAM5oD,EAAGgrQ,QAAQ,CACfpiN,KAAAA,EACAi3F,OAAAA,EACAzmD,OAAAA,EACAjjC,OAAAA,EACAouM,WAAAA,EACAD,YAAAA,OAKRmD,GAAoBt/P,OAAS,oBA8C7B,MAAM8iQ,WAAoClH,GACxC/1P,mBACE,MAAO,4BAETlB,kBACE,MAAO,oBAETslG,mBAEE,OAAOnyG,KAAKm7B,EAAE,wBAEhBssO,+BACE,MAAO,mBAGT9nQ,qBAAoBkgE,OAClBA,IAEA,MAAM8lM,WACFA,GACE3lQ,MACJ4oQ,UACEA,EAASqC,cACTA,EAAatC,WACbA,GACEhD,IACJA,EAAWn3J,cACXm3J,EAAW+B,iBAGb,GAAI/B,EAAWn3J,cAAgBm6J,GAAcsC,EAAc15P,OAASq3P,EAAW,GAC3EjD,EAAWgD,aACXhD,EAAWiC,eAIjBjoQ,mBAAmBwY,GACjB,MAAMpY,EAAKC,MACT2lQ,WACEA,GACE5lQ,GACJ8/D,OACEA,EAAMooM,UACNA,EAASC,UACTA,EAAS1B,UACTA,EAASP,UACTA,EAASiF,aACTA,EAAY/E,sBACZA,GACEhuP,GACJkwP,UACEA,EAASE,WACTA,EAAUnC,WACVA,GACET,EACJ1rL,EAAQl6E,EAAGorQ,cAAc9C,EAAWjC,GAEtC,IAGEC,EAAc,EAAItmQ,EAAGumQ,yBAAyBzmM,GAAUA,EAAO54D,OAAS44D,EAAOi0F,YAAY18G,aAAeyoB,EAAOyjD,WAAW7rE,aAE5HiuN,EAAgB6C,EAAatuL,EAC7B2uL,EAAY/oM,EAAO+L,MAAM5nD,MACzBonP,EAAgB,EAChBC,EAAahF,EACbuB,EACF,GAAIK,EAAW,CACbvC,GAAiB3lQ,EAAG2oQ,eAAeT,EAAU,CAC3C7B,WAAAA,EACAuC,YAAa,EACbn6J,aAAc,KAGlB,GAAI05J,EAAW,CACbxC,GAAiB3lQ,EAAG2oQ,eAAeR,EAAU,CAC3C9B,WAAAA,EACAuC,YAAa,EACbn6J,aAAc,KAIlB,GAAI08J,EAAc,CAChBxF,GAAiB7lM,EAAOipM,aAAejpM,EAAOkpM,aAC9C1C,GAAexmM,EAAOipM,aAAejpM,EAAOkpM,aAE9C,GAAI9C,IAAchJ,GAAU1mK,QAAS,CACnC,MAAMsgI,EAAah3J,EAAOg3J,WACxBy0C,EAAWz0C,EAAW8X,gBACtBo7B,EAAUlzC,EAAWquC,eAEvB,IAAKiB,EAAuB,CAC1BiF,EAAgBE,EAASn2N,IAE3ByzN,EAAY7oQ,EAAG8oQ,oBAAoBhpM,GACnC,GAAIsmM,EAAuB,CACzBE,EAAcxmM,EAAOipM,aAAejpM,EAAOkpM,aAAegB,EAAQ10N,OAASi2N,EAASn2N,IACpFk2N,EAAatB,EAAQ10N,OAASi2N,EAASn2N,QAClC,CACLk2N,EAAahF,EAAcA,EAAcxmM,EAAOyjD,WAAW7rE,aAAesyN,EAAQ10N,OAASi2N,EAASn2N,IAEtGwwN,EAAWoC,aAAeuD,EAASv0C,UACnC4uC,EAAW4F,eAAiBxB,EAAQhzC,cAC/B,CACL4uC,EAAW4F,eAAiB1rM,EAAO+L,MAAM5nD,MAAQ,EAInD,GAAIwiP,IAAc0E,GAAgBjF,IAAchJ,GAAU1mK,QAAS,CAIjE,MAAMi5E,EAAY3vG,EAAOg3J,WAAW0xB,gBAClC0gB,EAAkB70P,KAAK+oB,OAAOuoO,EAAgB7lM,EAAOipM,cAAgBt5F,GACrE05F,EAAc90P,KAAK+oB,MAAMuoO,EAAgBl2F,GACzC25F,EAAgBP,EAAYK,EAC9BrB,EAAgB,EAAIxzP,KAAKuqB,KAAKwqO,EAAgBD,OACzC,CACLtB,EAAgBxzP,KAAKuqB,KAAK0sO,EAAa3F,GAEzCznQ,OAAOmZ,OAAOuuP,EAAY,CACxB1rL,MAAAA,EACAyrL,cAAAA,EACAkD,UAAAA,EACAvC,YAAAA,EACAuB,cAAAA,EACAwD,cAAAA,EACA3C,gBAAiB,EACjBE,WAAYf,IAGhBjoQ,uBAAuBwY,SACf+B,MAAMmrP,iBAAiBltP,GAC7B,MAAMpY,EAAKC,MACT2lQ,WACEA,GACE5lQ,GACJ8/D,OACEA,GACE1nD,EACJgwP,EAAcjL,GAAY/kP,EAAOgwP,aACjCC,EAAajwP,EAAOyvM,cAAgB61C,GAAYC,SAChD4G,EAAa8D,EAAaD,EAAYjhQ,MAAQihQ,EAAYlhQ,OAC1Do9P,EAAc+D,EAAaD,EAAYlhQ,OAASkhQ,EAAYjhQ,MAC5DmhQ,EAAYtoQ,EAAGuoQ,SAAShE,GACxBiE,EAAaxoQ,EAAGuoQ,SAASjE,GACzBoE,EAAkB,EACpBxqQ,OAAOmZ,OAAOuuP,EAAY,CACxBrB,WAAAA,EACAD,YAAAA,EACAgE,UAAAA,EACAE,WAAAA,EACAE,gBAAAA,EACAj6J,YAAa,EACbk5J,iBAAkB,EAClBG,mBAAoB,EACpBC,qBAAsB,EACtB3H,QAAS,EACT4H,aAAc,EACdkD,cAAe,IAAIpsP,MAErB9e,EAAGyrQ,mBAAmBrzP,GACtB,IAAKA,EAAOguP,sBAAuB,CACjCpmQ,EAAGqpQ,gBAAgBvpM,IAGvBlgE,uBAAuBwY,SACf+B,MAAMqrP,iBAAiBptP,GAC7B,IAAKA,EAAOguP,sBAAuB,CACjCnmQ,KAAKqpQ,iBAAiBlxP,EAAO0nD,SAGjClgE,kBAAkBwY,GAChB,MAAMpY,EAAKC,MACT2lQ,WACEA,GACE5lQ,GACJ8/D,OACEA,EAAM2mM,UACNA,EAAS0E,aACTA,GACE/yP,GACJgyN,SACEA,EAAQ29B,qBACRA,EAAoBJ,iBACpBA,EAAgBkB,UAChBA,EAASlD,cACTA,GACEC,EAEJ8F,EAAqBP,EAAe,EAAIrrM,EAAOipM,cAC/CjyC,WACEA,GACEh3J,GACJ6vG,KACEA,GACEmnD,EACJ2xC,EAAkBrwP,EAAO8tP,YAAchJ,GAAU1mK,QACjD+yK,EAAgBzpM,EAAO0pM,iBAAiB,cAC1C,IAAIr5P,EAAQs4P,EAAkB94F,EAAK3/E,WAAU7/D,GAAKA,EAAEmlB,OAASwqB,EAAOyjD,WAAW9+E,IAAKkrI,EAAK3/E,WAAU7/D,GAAKA,EAAEmlB,OAASyyN,EAAuB2D,EAAqB,IAC7JjC,EACF,MAAMC,EAAgBv5P,EAGpBw5P,EAAoBhC,IAAqB,EAAI,EAAIh4F,EAAKx/J,GAAOilC,IAAM2yN,EAAuB2D,EAK5FjC,EAAkB9D,EAAgBgE,EAElC,GAAIhC,IAAqB,EAAG,CAC1B8B,GAAmBiC,EAGrB,IAAI9B,EACF76N,EAAS,EACX,MAAO06N,EAAkB,EAAG,CAC1B,MAAM76F,EAAMe,EAAKx/J,GACjB,GAAIs2P,GAAagD,EAAkB76F,EAAIv3H,aAAc,CACnDtI,GAAU06N,EACVA,EAAkB,MACb,CACLzpQ,EAAG6pQ,WAAWj7F,GACd66F,GAAmB76F,EAAIv3H,aAEvB,GAAIoyN,EAAkB,EAAG,CAEvB7D,EAAWsF,cAAclsP,IAAI4vJ,EAAIooD,WAEnC4yC,EAAgBh7F,EAAIooD,UAEpB,KAAM7mN,IAAUw/J,EAAK5wK,QAAU0qQ,EAAkB,EAAG,CAClDA,EAAkB,OACb,GAAIhB,GAAmBt4P,EAAQu5P,IAAkBb,EAAW,CACjEY,EAAkB,IAKxB,GAAIF,EAAe,CACjB,IAAK,MAAMjC,KAAel9B,EAAU,CAClC,MAAMhO,EAAUgO,EAASk9B,GACvBwC,EAAchqM,EAAOsqK,SAASk9B,GAAa5wN,QAAQsZ,iBAAiB,wBACtEosK,EAAQorC,gBAAkB,GAC1B,IAAK,MAAMuC,KAAcD,EAAa,CACpC1tC,EAAQorC,gBAAgB/oQ,KAAKsrQ,EAAWtyM,aAI9C,MAAMuyM,EAAUr6F,EAAKx/J,EAAQ,GAC7B,GAAI65P,EAAS,CAEXpE,EAAWqE,gBAAkBD,EAAQ10N,OAASwqB,EAAOoqM,gBAAgB7yN,aAAeyoB,EAAO82K,gBAAgBv/L,mBAEvGr3C,EAAGmqQ,gBAAgBx6F,EAAKz9J,MAAMw3P,EAAev5P,GAAQiI,GAE3D,GAAIqwP,EAAiB,CACnB7C,EAAWwE,oBAAsBtqM,EAAOyjD,WAAW9+E,MAC9C,CAEL,MAAMhiB,EAAWq0M,EAAW1nM,GAAG,cAAc,EAC3C2f,OAAQvvC,KACJuvC,GAAUvvC,UACVQ,EAAGgzP,kBAAkBlzL,EAAQ8pM,EAAgB,GACnDnnP,IAEF,OAAOssB,EAETnvC,iBAAiBwY,GACf,MAAMpY,EAAKC,MACT2lQ,WACEA,GACE5lQ,GACJ8/D,OACEA,EAAM2mM,UACNA,EAAS0E,aACTA,GACE/yP,GACJ2vP,qBACEA,EAAoBJ,iBACpBA,EAAgBkB,UAChBA,EAASlD,cACTA,EAAaqC,aACbA,EAAYwD,eACZA,EAAc5E,QACdA,GACEhB,EAEJ8F,EAAqBP,EAAe,EAAIrrM,EAAOipM,cAC/Cl9L,MACEA,GACE/L,EACJypM,EAAgBzpM,EAAO0pM,iBAAiB,cACxCf,EAAkBrwP,EAAO8tP,YAAchJ,GAAU1mK,QACnD,IAAIrmF,EAAQ63P,GACV5H,QACEA,GACEwF,EACJ6D,EACF,MAAMC,EAAgBv5P,EAGpBw5P,EAAoBhC,IAAqB,EAAI,EAAIvH,EAAU2H,EAAuB2D,EAClF/7F,EAAO,GAKT85F,EAAkB9D,EAAgBgE,EAElC,GAAIhC,IAAqB,EAAG,CAC1B8B,GAAmBiC,EAGrB,IAAI9B,EACF+B,EACA58N,EAAS,EACX,MAAO06N,EAAkB,EAAG,CAC1B7C,EAAQ5sP,OAAO7J,EAAO07D,EAAMonB,MAAM9iF,GAAQ,KAAM,MAAO,MACvD,GAAIs2P,GAAagD,EAAkB7C,EAAQvvN,aAAc,CACvDtI,GAAU06N,EACVA,EAAkB,MACb,CACLkC,EAAcvL,EACdwJ,EAAgBz5P,EAChBiwP,EAAUwG,EAAQ/rO,UAAUulO,GAC5BqJ,GAAmB7C,EAAQvvN,aAC3Br3C,EAAG6pQ,WAAWjD,GAEdj3F,EAAKlxK,KAAK,CACR22C,IAAKwxN,EAAQxxN,IACbE,OAAQsxN,EAAQtxN,OAChB+B,aAAcuvN,EAAQvvN,aACtB2/K,UAAW4vC,EAAQ5vC,YAGrB,GAAIyyC,EAAkB,EAAG,CAEvB7D,EAAWsF,cAAclsP,IAAI7O,GAG/B,GAAIA,IAAUq7P,EAAgB,CAC5B/B,EAAkB,OACb,KAAMt5P,EAAQu5P,IAAkBb,GAAaJ,EAAiB,CACnEgB,EAAkB,IAIxB,GAAIF,EAAe,CACjBvpQ,EAAGsqQ,kBAAkBlyP,EAAQsxP,EAAev5P,EAAOw/J,GAMrDi2F,EAAWoC,aAAe4B,EAC1BhE,EAAWxF,QAAUuL,EACrB,GAAI/E,EAAS,CAGXhB,EAAWqE,gBAAkBrD,EAAQtxN,OAASwqB,EAAOoqM,gBAAgB7yN,aAAeyoB,EAAO82K,gBAAgBv/L,mBAEvGr3C,EAAGmqQ,gBAAgBx6F,EAAMv3J,GAC/B,OAAO22B,EAETnvC,gBAAgBwY,GACd,MAAMpY,EAAKC,MACT2lQ,WACEA,GACE5lQ,GACJ8/D,OACEA,EAAMooM,UACNA,EAASC,UACTA,EAAS/B,sBACTA,GACEhuP,GACJiuP,WACEA,EAAUuC,WACVA,EAAUn6J,YACVA,EAAW27H,SACXA,GACEw7B,EAEN1nQ,OAAO4N,OAAOs+N,GAAUnrO,SAAQm9N,GAAWA,EAAQzsD,KAAO,KAG1D,GAAIv3J,EAAO8tP,YAAchJ,GAAUzzP,IAAK,CACtCm8P,EAAWU,YAAcxmM,EAAOipM,aAAejpM,EAAOkpM,aAAelpM,EAAOyjD,WAAW7rE,aACvF,IAAK0uN,EAAuB,CAC1BR,EAAWU,aAAetmQ,EAAGumQ,yBAAyBzmM,IAG1D,IAAI+/E,EAAQzmD,EAAQrqD,EAEpB,GAAIm5N,EAAW,CACbroH,EAAS7/I,EAAGuqQ,YAAYrC,EAAU,CAChC7B,WAAAA,EACAuC,WAAAA,EACAn6J,YAAAA,KAGJ,GAAI05J,EAAW,CACb/uK,EAASp5F,EAAGuqQ,YAAYpC,EAAU,CAChC9B,WAAAA,EACAuC,WAAAA,EACAn6J,YAAAA,KAGJ,GAAI23J,EAAuB,CACzBr3N,QAAe/uC,EAAGysO,WAAWr0N,OACxB,CACL22B,QAAe/uC,EAAGwqQ,YAAYpyP,GAEhC,MAAMwwC,EAAO5oD,EAAGyqQ,cAAcryP,GAC9B,MAAO,CACLwwC,KAAAA,EACAi3F,OAAAA,EACAzmD,OAAAA,EACArqD,OAAAA,GAGJnvC,yBACAA,gBACE,MAAMI,EAAKC,MACTmqO,SACEA,GACEpqO,EAAG4lQ,WAET,IAAIh9M,EAAO5oD,EAAG0qQ,uBACdxsQ,OAAO4N,OAAOs+N,GAAUnrO,SAAQ,EAC9BoiF,YAAAA,EACAsuF,KAAAA,EACA63F,gBAAAA,MAEA,MAAMmD,EAAkBtpL,EAAY5pB,UACpC,IAAImzM,EAAcj7F,EAAKjkK,QAAO,CAACU,EAAQwiK,KACrCxiK,GAAUwiK,EAAI,GACd,OAAOxiK,IACN,IACH,GAAIo7P,IAAoB,MAAQA,SAAyB,GAAKA,EAAgBzoQ,OAAQ,CACpF6rQ,GAAe,8CAA8CpD,EAAgBt9P,KAAK,YAEpF0+C,EAAOA,EAAKn+C,QAAQkgQ,EAAiBC,MAEvC,OAAOhiN,GAKXqiN,GAA4Bn9P,UAAU43P,eAAiBv9O,eAAgBu9O,EAAettP,GACpF,MAAMpY,EAAKC,MACT2lQ,WACEA,EAAUpB,YACVA,GACExkQ,GACJqmQ,WACEA,EAAU9B,WACVA,EAAUD,YACVA,EAAWqB,cACXA,EAAazrL,MACbA,EAAKmxL,cACLA,GACEzF,EACN,IAAIgD,WACAA,GACEhD,EACJn3J,EACF,OAAQA,EAAcm3J,EAAWn3J,aAAem6J,EAAY,CAC1D5oQ,EAAGwtB,QAAQ,aAAc,CACvBtiB,KAAMlL,EAAGo7B,EAAE6vO,GAA4BvD,kBAAmB,CACxDj5J,YAAAA,EACAm6J,WAAAA,IAEFjgP,SAAUtU,KAAKkxB,OAAOkpE,EAAc,GAAKm6J,EAAa,MAExD,MAAMhgN,KACJA,EAAIi3F,OACJA,EAAMzmD,OACNA,EAAMrqD,OACNA,SACQ/uC,EAAG8qQ,UAAU1yP,GAGvB,MAAM+9C,EAAS,IAAIquM,EAAa,mDAEbpsP,EAAO0nD,OAAOl1D,wCACJy7P,uIAGUnsL,kKAMvC,GAAI9hE,EAAO+yP,aAAc,CACvB,MAAMS,EAAahG,EAAWqE,gBAAkB,GAAGrE,EAAWqE,gBAAkBrE,EAAWmC,yBAA2B,OACtH5xM,EAAO13D,KAAK,mDAEK2Z,EAAO0nD,OAAOl1D,yCACHghQ,4HAGA,IAAM1xL,wWAUF0rL,EAAWmC,qBAAuBsD,+EAI7D,CACL,MAAMO,EAAahG,EAAWqE,iBAAmBtE,EAAgBC,EAAWmC,qBAC5E5xM,EAAO13D,KAAK,mDAEK2Z,EAAO0nD,OAAOl1D,yCACHghQ,sOAMA,IAAM1xL,4HAGF0rL,EAAWmC,yIAGVsD,2EAMnCzF,EAAWmC,sBAAwBpC,EAAgB52N,QAC7C/uC,EAAG+qQ,cAAc3yP,KAErBwwP,WAAAA,GACEhD,QACE,CACJh9M,KAAM5oD,EAAGgrQ,QAAQ,CACfpiN,KAAAA,EACAi3F,OAAAA,EACAzmD,OAAAA,EACAjjC,OAAAA,EACAouM,WAAAA,EACAD,YAAAA,OAKR2G,GAA4B9iQ,OAAS,4BA8CrC,MAAM0jQ,WAA6B9H,GACjC/1P,mBACE,MAAO,qBAETlB,kBACE,MAAO,aAETslG,mBAEE,OAAOnyG,KAAK+5B,SAAS,iBAEvBlY,2BACE,MAAO,CAKLgqP,0BAA2B,OAG/BlsQ,uBAAuBwY,SACf+B,MAAMmrP,iBAAiBltP,GAC7Bla,OAAOmZ,OAAOpX,KAAK2lQ,WAAY,CAC7BiC,cAAe,EACfa,gBAAiB,EACjBE,WAAY,EACZn6J,YAAa,EACbk5J,iBAAkB,EAClBG,mBAAoB,IAGxBloQ,yBACAA,aAAa+vK,EAAMv3J,GACjB,GAAIA,EAAOguP,sBAAuB,CAChC,OAAOz2F,EAAK7lK,KAAIqmB,GAAKA,EAAE,SAClB,CACL,IAAI47O,EAAa,EAGjB,OAAOp8F,EAAK7lK,KAAI,EAAE8+C,EAAI,CAAG1hD,MACvB,MAAMkF,EAASw8C,EAAKn+C,QAAQ,4BAA6B,kBAAkBshQ,QAC3EA,GAAc7kQ,EACd,OAAOkF,MAIbxM,kBAAkBwY,GAChB,MAAMpY,EAAKC,MACT6/D,OACEA,GACE1nD,GACJ0+M,WACEA,EAAUjrJ,MACVA,GACE/L,EACJypM,EAAgBzpM,EAAO0pM,iBAAiB,eACxCp/B,SACEA,GACEpqO,EAAG4lQ,WACPiD,EAAYzwP,EAAO8tP,YAAchJ,GAAU1mK,SAAW3qB,EAAM5nD,MAG1DjkB,EAAG8oQ,oBAAoBhpM,GAAU+L,EAAM5nD,MAC3C,IAAIqiP,YACAA,GACEtmQ,EAAG4lQ,WACPsF,EAAgB,EAChBtB,GAAiB,EACnB,GAAI9yC,EAAWnnD,KAAK5wK,OAAS,EAAG,CAC9B,GAAIqZ,EAAO8tP,YAAchJ,GAAU1mK,QAAS,CAC1CozK,EAAgB9yC,EAAW8X,gBAAgB5X,UAAY,EAEzD,GAAIuyC,EAAe,CACjB,IAAK,MAAMntC,KAAWl+N,OAAO4N,OAAOs+N,GAAW,CAC7ChO,EAAQorC,gBAAkB,IAI9B,MAAO0D,EAAgBrC,EAAW,CAChC,MAAMl5F,EAAOmnD,EAAWnnD,KACtBq6F,EAAUr6F,EAAKA,EAAK5wK,OAAS,GAC7BitQ,EAAwBd,EAC1Bv7F,EAAK1wK,SAAQ2vK,IAIX,GAAIA,EAAIooD,UAAY4yC,GAAiBsB,EAAgBrC,EAAW,GAC5DqC,EACF5E,GAAe13F,EAAIv3H,aACnBr3C,EAAG6pQ,WAAWj7F,OAIlB,GAAI26F,EAAe,CACjB,IAAK,MAAMjC,KAAel9B,EAAU,CAClC,MAAMhO,EAAUgO,EAASk9B,GACvBwC,EAAchqM,EAAOsqK,SAASk9B,GAAa5wN,QAAQsZ,iBAAiB,wBACtE,IAAK,MAAM+5M,KAAcD,EAAa,CACpC1tC,EAAQorC,gBAAgB/oQ,KAAKsrQ,EAAWtyM,aAK9C,MAAMw0M,EAAmBt8F,EAAK3/E,WAAU7/D,GAAKA,EAAE6mM,YAAc4yC,EAAgB,IAC3EsC,EAAkBD,GAAoBf,EAAgBc,SAClDhsQ,EAAGmqQ,gBAAgBx6F,EAAKz9J,MAAM+5P,EAAkBC,GAAkB9zP,GACxE,GAAI8yP,EAAgBrC,EAAW,CAC7Be,EAAgBI,EAAQhzC,gBAClBh3N,EAAGgzP,kBAAkBlzL,EAAQ8pM,EAAgB,KAIzD,OAAOtD,EAET1mQ,iBAAiBwY,GACf,MAAMpY,EAAKC,MACT6/D,OACEA,EAAMomM,UACNA,GACE9tP,GACJ0+M,WACEA,EAAUjrJ,MACVA,GACE/L,EACJypM,EAAgBzpM,EAAO0pM,iBAAiB,cACxCf,EAAkBvC,IAAchJ,GAAU1mK,QAC5C,IAAI8vK,YACFA,GACEtmQ,EAAG4lQ,WACP,GAAI/5L,EAAM5nD,MAAO,CACf,MAAM2iP,QACFA,GACE5mQ,EAAG4lQ,YACPh3B,gBACEA,GACE9X,EACJyvB,EAAYkiB,EAAkB75B,EAAgB5X,UAAY,EAC1DwvB,EAAUiiB,EAAkB3xC,EAAWquC,eAAenuC,UAAYnrJ,EAAM5nD,MAAQ,EAChF0rJ,EAAO,GACT,IAAIv6H,EAAM,EAEV,GAAIwxN,EAAQzT,MAAMp0P,OAAQ,CACxB,IAAK,IAAIF,EAAI0nP,EAAW1nP,GAAK2nP,EAAS3nP,IAAK,CACzC+nQ,EAAQ5sP,OAAOnb,EAAGgtE,EAAMonB,MAAMp0F,GAAI,KAAM,MAAO,MAC/Cu2C,EAAMwxN,EAAQ/rO,UAAUua,GACxBp1C,EAAG6pQ,WAAWjD,GAEdj3F,EAAKlxK,KAAK,CACR22C,IAAKwxN,EAAQxxN,IACbE,OAAQsxN,EAAQtxN,OAChB+B,aAAcuvN,EAAQvvN,aACtB2/K,UAAW4vC,EAAQ5vC,kBAGjBh3N,EAAGmqQ,gBAAgBx6F,EAAMv3J,GAEjCkuP,GAAelxN,EACf,GAAIm0N,EAAe,CACjBvpQ,EAAGsqQ,kBAAkBlyP,EAAQmuO,EAAWC,EAAS72E,IAGrD,OAAO22F,EAET1mQ,cAAcwY,GACZ,MAAMpY,EAAKC,MACTmqO,SACEA,GACEpqO,EAAG4lQ,WAET,IAAIh9M,EAAO5oD,EAAG0qQ,uBACdxsQ,OAAO4N,OAAOs+N,GAAUnrO,SAAQ,EAC9BoiF,YAAAA,EACAsuF,KAAAA,EACA63F,gBAAAA,MAEA,MAAMmD,EAAkBtpL,EAAY5pB,UACpC,IAAImzM,EAAc5qQ,EAAGmsQ,aAAax8F,EAAMv3J,GAAQlO,KAAK,IACrD,GAAIs9P,IAAoB,MAAQA,SAAyB,GAAKA,EAAgBzoQ,OAAQ,CACpF6rQ,GAAe,8CAA8CpD,EAAgBt9P,KAAK,YAEpF0+C,EAAOA,EAAKn+C,QAAQkgQ,EAAiBC,MAEvC,OAAOhiN,GAKXijN,GAAqB/9P,UAAU43P,eAAiBv9O,eAAgBu9O,EAAettP,GAO7E,MAAMpY,EAAKC,MACT6/D,OACEA,GACE1nD,GACJiuP,WACEA,GACErmQ,EAAG4lQ,WACPzvM,EAASn2D,EAAGwkQ,YACZ7G,EAAWvlP,EAAOyvM,cAAgB61C,GAAYC,SAC9CyK,EAAcjL,GAAY/kP,EAAOgwP,aACjC7D,EAAa5G,EAAWyK,EAAYjhQ,MAAQihQ,EAAYlhQ,OACxDo9P,EAAc3G,EAAWyK,EAAYlhQ,OAASkhQ,EAAYjhQ,MAC5D,IAAIm/P,EAAazmH,EAAQzmD,EACzB,GAAIhhF,EAAOguP,sBAAuB,CAChCE,QAAoBtmQ,EAAGysO,WAAWr0N,GAClCkuP,GAAexmM,EAAOipM,aAAejpM,EAAOkpM,iBACvC,CACL1C,QAAoBtmQ,EAAGwqQ,YAAYpyP,GACnCkuP,GAAexmM,EAAO54D,OAAS44D,EAAOmpM,WAExC,MAAMrgN,EAAO5oD,EAAGyqQ,cAAcryP,GAC9B,MAAMg0P,EAAoB9F,EAE1B,GAAIluP,EAAO8vP,UAAW,CACpBroH,EAAS7/I,EAAGuqQ,YAAYnyP,EAAO8vP,UAAU,CACvC7B,WAAAA,KAEF,MAAMn/P,EAASlH,EAAG2oQ,eAAe9oH,GACjCymH,GAAep/P,EAEjB,GAAIkR,EAAO+vP,UAAW,CACpB/uK,EAASp5F,EAAGuqQ,YAAYnyP,EAAO+vP,UAAU,CACvC9B,WAAAA,KAEF,MAAMn/P,EAASlH,EAAG2oQ,eAAevvK,GACjCktK,GAAep/P,EAEjB,MAAMmlQ,EAAah4P,KAAKuU,IAAI,EAAG5oB,EAAGorQ,cAAcprQ,EAAGuoQ,SAAShE,GAAa8B,IACvEiG,EAAcj4P,KAAKuU,IAAI,EAAG5oB,EAAGorQ,cAAcprQ,EAAGuoQ,SAASjE,GAAcgC,IACrEpsL,EAAQ7lE,KAAKuU,IAAIyjP,EAAYC,GAE/Bn2M,EAAO13D,KAAK,6BACKqhE,EAAOl1D,qCACIwhQ,+CACD/F,gGAGPrmQ,EAAG8rQ,0BAA4B,aAAe,4CAC7B5xL,MAAUl6E,EAAG8rQ,0BAA4B,mBAAqB,qFAEvE5xL,IAAU,EAAI,UAAY,+DAGtD,GAAIv6E,EAAc4sQ,OAAQ,CACxBp2M,EAAO13D,KAAK,6EAEiB2tQ,8DAKzB,CACJxjN,KAAM5oD,EAAGgrQ,QAAQ,CACfpiN,KAAAA,EACAi3F,OAAAA,EACAzmD,OAAAA,EACAjjC,OAAAA,EACAouM,WAAAA,EACAD,YAAAA,MAINuH,GAAqB1jQ,OAAS,qBAwF9B,MAAMqkQ,WAAoB7sM,GACxB3xD,mBACE,MAAO,YAETvO,0BACE,MAAO,CACLgtQ,YAAarO,GAKbsO,aAAc7pQ,UASd8pQ,aAAc,CACZntQ,MAAO,KACPiiB,QAAS,CAAC,SAMZmrP,SAAU,KAOVC,WAAY,MAMZC,UAAW,KAOX1E,YAAa,KAObvgD,YAAa,WAMbq+C,UAAW,MAMXO,UAAW,MAOX0E,aAAc,MAYdhF,gBAAiB,KAQjB4G,gBAAiB,EAMjBC,eAAgB,KAMhBC,aAAc,aAMdtO,UAAW,CAACkN,GAAsBpE,GAAqBwD,IASvDjH,wBAAyB,KAQzBC,aAAc,KAMdiJ,gBAAiB,KAMjBC,aAAc,MAMdC,aAAc,MAwBdlF,UAAW,KAiBXC,UAAW,KAOXx7J,aAAc,KAMd0gK,WAAY,sBAMZC,mBAAoB,sCAMpBC,eAAgB,KAChBr0O,sBAAuB,CAAC,aAAc,sBAkBtCgrO,aAAc/tM,GAAUA,EAOxBiwM,sBAAuB,MAG3BxmQ,4BAA4BJ,GAC1B,IAAKA,EAAO,CACVmT,EAAcuC,UAAU,OAAQ,QAAS,qCAG7CtV,YACE,IAAI4tQ,GACHA,EAAqBvtQ,KAAK0sQ,gBAAkB,MAAQa,SAA4B,OAAS,EAAIA,EAAmBxxP,UACjH/b,KAAKwtQ,aAAaxuQ,SAAQ2/P,GAAYA,EAAS5iP,YAC/C7B,MAAM8B,YAORyxP,2BACE,OAAOztQ,KAAK0tQ,sBAEdD,yBAAyBluQ,GACvBS,KAAK0tQ,sBAAwBnuQ,EAE/BiuQ,mBACE,OAAOxtQ,KAAK2tQ,gBAAkB3tQ,KAAK2tQ,cAAgB,IAAIn8P,KAEzD7R,YAAYwY,EAAS,IACnB,MAAMpY,EAAKC,MACTwtQ,aACEA,GACEztQ,GACJ8M,KACEA,GACEsL,EACN,IAAIwmP,EACJ,GAAI6O,EAAavvP,IAAIpR,GAAO,CAC1B8xP,EAAW6O,EAAa97P,IAAI7E,GAC5B5O,OAAOmZ,OAAOunP,EAAUxmP,OACnB,CACL,MAAMy1P,EAAgB5tQ,KAAK0+P,UAAU3tO,MAAKjb,GAAOA,EAAIjJ,OAASA,IAC9D,IAAK+gQ,EAAe,CAClB,MAAM,IAAIl9P,MAAM,iBAAiB7D,kDAEnCsL,EAAS64B,GAAazhC,MAAM4I,UACrBA,EAAOtL,KACd8xP,EAAW,IAAIiP,EAAcz1P,GAC7BwmP,EAAS9vO,SAAS9uB,GAClBytQ,EAAal8P,IAAIzE,EAAM8xP,GAEzB,OAAOA,EAETh/P,aAAawlQ,EAAOhtP,GAClB,MAAO,CACLwwC,KAAM58C,KAAKK,UAAU+4P,GACrByH,WAAYz0P,EAAOy0P,WACnB9vO,OAAQ3kB,EAAOgwP,YACfvgD,YAAazvM,EAAOyvM,aAGxBjoN,kBAAkBwY,EAAS,IACzB,MAAMpY,EAAKC,MACT6/D,OACEA,EAAM4sM,aACNA,EAAYI,UACZA,EAASD,WACTA,EAAUD,SACVA,EAAQxE,YACRA,EAAWlC,UACXA,EAASO,UACTA,EAAS0E,aACTA,EAAYhF,gBACZA,EAAet+C,YACfA,EAAWm8C,wBACXA,EAAuBC,aACvBA,EAAYkJ,aACZA,EAAYjF,UACZA,EAASC,UACTA,EAASjE,aACTA,EAAYkC,sBACZA,GACEpmQ,EACN,IAAKoY,EAAO4rL,QAAS,CACnB5rL,EAAO4rL,QAAUlkI,EAAOkkI,QAAQsyB,eAAej4N,QAAO24M,GAAUA,EAAOuoD,aAAYz1P,KAAIktM,GAAUA,EAAOpsM,KAE1G,MAAMwB,EAAS6kC,GAAa55B,OAAO,CACjCyoD,OAAAA,EACA4sM,aAAAA,EACAI,UAAAA,EACAD,WAAAA,EACAzE,YAAAA,EACAlC,UAAAA,EACAO,UAAAA,EACA0E,aAAAA,EACAhF,gBAAAA,EACAt+C,YAAAA,EACAm8C,wBAAAA,EACAC,aAAAA,EACAkJ,aAAAA,EACAjF,UAAAA,EACAC,UAAAA,EACA/B,sBAAAA,EACA6G,aAAcjtQ,EAAGitQ,aACjBL,SAAUA,GAAY9sM,EAAOzjD,QAC5BjE,GAEHhM,EAAO43L,QAAU5rL,EAAO4rL,QAAQ9xL,QAEhC,GAAI9F,EAAO6gQ,eAAiB,oBAAqB,CAC/C7gQ,EAAO++P,aAAe,MAGxB,KAAM,cAAe/yP,IAAWA,EAAO+yP,aAAc,CACnD/+P,EAAOq6P,UAAY,KAGrB,KAAM,oBAAqBruP,KAAYhM,EAAO+5P,gBAAiB,CAC7D,MAAM12L,EAAY,GAChB02L,EAAkB,GAEpBrmM,EAAOylL,aAAY51O,GAAKA,EAAE8/D,WAAaA,EAAUhxE,KAAKkR,EAAEmsN,UACxD,GAAIrsJ,EAAU1wE,OAAQ,CACpB+gE,EAAOylL,aAAY51O,IACjB,IAAK8/D,EAAU5jE,SAAS8D,EAAEmsN,QAAS,CACjCqqC,EAAgBx2P,EAAEmsN,QAAU,SAGhC1vN,EAAO+5P,gBAAkBA,GAG7B/5P,EAAO4gQ,eAAiB/7N,GAAa55B,OAAO,CAC1CvK,KAAMV,EAAO6gQ,aACbjJ,wBAAyB53P,EAAO43P,wBAChCC,aAAc73P,EAAO63P,aACrBC,aAAAA,GACC93P,EAAO4gQ,gBAAkB,WACrB5gQ,EAAO6gQ,oBACP7gQ,EAAO43P,+BACP53P,EAAO63P,aACd,OAAO73P,EAmBTxM,aAAawY,EAAS,IACpB,MAAMpY,EAAKC,MACT6/D,OACEA,EAAMitM,gBACNA,GACE/sQ,EACNoY,EAASpY,EAAG8tQ,kBAAkB11P,GAC9B,IAAIhM,EAQJ,GAAI0zD,EAAOtyC,QAAQ,kBAAmB,CACpCpV,OAAAA,MACK,MAAO,CACZ0nD,EAAOiuM,YAAc,KAGrBjuM,EAAOkxD,KAAKhxH,EAAGqtQ,YACf,IACE,MAAMzO,EAAW5+P,EAAGguQ,YAAY51P,EAAO40P,gBACvC,GAAID,IAAoB,EAAG,CACzB,IAAIkB,EACJ,MAAM7I,QAAcxG,EAASsP,OAAO91P,GACpC,GAAIpY,EAAGoZ,aAAc,CACnB,QAGD60P,EAAmBjuQ,EAAG2sQ,gBAAkB,MAAQsB,SAA0B,OAAS,EAAIA,EAAiB9iJ,QAEzGrrD,EAAO80F,SAOP50J,EAAGwtB,QAAQ,aAAc,CACvB7E,SAAU,GACVzd,KAAMlL,EAAGstQ,mBACTa,iBAAkB,OAEpB,MAAMC,EAAkBpuQ,EAAGquQ,qBAAqBjJ,EAAOhtP,GAEvDpY,EAAGwsK,MAAQxsK,EAAGsuQ,iBAAiBF,GAC/B,MAAMx5O,QAAiBw5O,EACvBhiQ,EAAS,CACPwoB,SAAAA,SAEI50B,EAAGuuQ,qBAAqB35O,EAAUxc,IAE1C,MAAO6c,GACP,GAAIA,aAAiBq6E,SAAU,CAC7BljG,EAAS,CACPwoB,SAAUK,OAEP,CACL7oB,EAAS,CACP6oB,MAAAA,GAGJ,MAAMA,EACP,QACC,GAAIj1B,EAAGwsK,QAAUxsK,EAAGwsK,MAAMpzJ,aAAc,CAEtCpZ,EAAGwsK,MAAM56C,OAEX,IAAK5xH,EAAGoZ,aAAc,CACpB,IAAIo1P,GAEHA,EAAoBxuQ,EAAG2sQ,gBAAkB,MAAQ6B,SAA2B,OAAS,EAAIA,EAAkBrjJ,QAC5GrrD,EAAO80F,SACP,GAAI50J,EAAGutQ,eAAgB,CAErB,GAAInhQ,EAAO6oB,MAAO,CAChB,GAAI7oB,EAAO6oB,MAAMvwB,OAAS,aAAc,CACtC8mK,GAAMn7C,KAAK,CACTznE,KAAM5oD,EAAGo7B,EAAE,oBACXisB,YAAarnD,EAAGqnD,oBAGf,IAAKj7C,EAAOwoB,SAASe,GAAI,CAC9B61I,GAAMn7C,KAAK,CACTznE,KAAM5oD,EAAGo7B,EAAE,mBACXisB,YAAarnD,EAAGqnD,eAWtByY,EAAOtyC,QAAQ,YAAaphB,GAC5B0zD,EAAOiuM,YAAc,QAI3B,OAAO3hQ,EAiDTxM,qBAAqBwlQ,EAAOhtP,GAC1B,OAAO2b,GAAWC,MAAM5b,EAAOs0P,aAAcxuQ,OAAOmZ,OAAO,CACzD2O,OAAQ,OACRwO,YAAa,OACbL,QAAS,CACPs6O,eAAgB,oBAElBvoQ,KAAM8F,KAAKK,UAAU,CACnBu8C,KAAMw8M,EACNv9C,YAAazvM,EAAOyvM,YACpB9qL,OAAQ3kB,EAAOgwP,YACfyE,WAAYz0P,EAAOy0P,WACnBD,SAAUx0P,EAAOw0P,SACjBE,UAAW10P,EAAO00P,UAClBK,aAAc/0P,EAAO+0P,gBAEtBltQ,KAAK0sG,eAmBV/sG,2BAA2Bg1B,EAAUxc,GACnC,MAAMpY,EAAKC,KACX,GAAI20B,EAASe,IAAM31B,EAAGktQ,gBAAiB,CAErCt4O,EAAWA,EAASplB,QACpB,MAAMk/P,EAAc95O,EAAST,QAAQxiB,IAAI,gBACzC,GAAI+8P,EAAYtuQ,MAAM,6BAA8B,CAClD,MAAMuuQ,EAAW3Q,GAAa5lP,EAAOy0P,YACnC+B,QAAkB5uQ,EAAG6uQ,wBAAwBj6O,EAAU+5O,GACvDx0M,EAAOn6D,EAAG8uQ,gBAAgB12P,EAAOw0P,SAAUgC,GAC7Cz0M,EAAKh0D,aACA,GAAIuoQ,EAAYtuQ,MAAM,qBAAsB,CACjD,MAAM2uQ,QAAqBn6O,EAASE,OACpC,GAAIi6O,EAAa/nQ,QAAS,CACxB,MAAMmzD,EAAOn6D,EAAG8uQ,gBAAgB12P,EAAOw0P,SAAUmC,EAAalpQ,KAC9Ds0D,EAAKh0D,YACA,CACLqlK,GAAMn7C,KAAK,CACTznE,KAAMmmN,EAAa1hI,IACnBhmF,YAAapnD,KAAKonD,iBAa5BznD,8BAA8Bg1B,EAAUo6O,GACtC,MAAM3oQ,QAAauuB,EAASvuB,OAC5B,OAAOC,IAAIC,gBAAgBF,EAAK6L,MAAM,EAAG7L,EAAKmL,KAAMw9P,IAStDpvQ,gBAAgB8E,EAAMsB,GACpB,MAAMm0D,EAAO/4D,SAASC,cAAc,KACpC84D,EAAKp0D,SAAWrB,EAChBy1D,EAAKn0D,KAAOA,EACZ,GAAI/F,KAAKmtQ,aAAc,CACrBjzM,EAAKv7D,OAAS,SAEhB,OAAOu7D,EAET80M,gCACE,OAAOh+N,GAAauqB,eAAe,GAAIv7D,KAAM,CAAC,SAAU,YAAa,eAAgB,cAAe,aAAc,cAAe,YAAa,YAAa,iBAE7JL,mBAAmB+sQ,EAAcuC,GAC/B,MAAMlvQ,EAAKC,KACXivQ,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBlzP,UAClF,GAAI2wP,EAAc,CAChB,MAAMv0P,EAASpY,EAAGysQ,YAAYt0L,aAAa,CACzC9wB,YAAarnD,EAAGqnD,YAChByY,OAAQ9/D,EAAG8/D,OACX58C,MAAO,CACLs7O,eAAgB,CACdh/P,MAAOQ,EAAGkmQ,WAEZzH,kBAAmB,CACjBj/P,MAAOQ,EAAGitQ,cAEZ7N,iBAAkB,CAChB5/P,MAAOQ,EAAG6nN,aAEZs3C,iBAAkB,CAChB3/P,MAAOQ,EAAGooQ,aAEZtJ,kBAAmB,CACjBt/P,MAAOQ,EAAGmrQ,cAEZpM,gBAAiB,CACfv/P,MAAOQ,EAAG6sQ,YAEZhO,eAAgB,CACd5oG,QAASj2J,EAAGymQ,aAGfzmQ,EAAGivQ,0BAA2BtC,GACjCA,EAAe3sQ,EAAGysQ,YAAY37I,IAAI14G,GAClCu0P,EAAav9O,GAAG,CACd8+O,OAAQluQ,EAAGmvQ,oBACX5yP,QAASvc,IAGb,OAAO2sQ,EAKT/sQ,yBACE,OAAOK,KAAK0sQ,aAAat8I,OAE3BzwH,qBAAoBkM,OAClBA,IAEA,MAAM9L,EAAKC,KACTmvQ,EAAapvQ,EAAG2sQ,aAAa37I,KAAK,CAChCroG,SAAU,EACVqnG,YAAa,IACb9kH,KAAMlL,EAAGqtQ,aAEb,MAAM5qP,EAAWziB,EAAGovB,GAAG,CACrBxvB,YAAW+oB,SACTA,EAAQzd,KACRA,EAAIijQ,iBACJA,IAEA,GAAIA,EAAkB,CACpBnuQ,EAAG2sQ,aAAa/3G,SAChBnyI,QACK,CACL2sP,EAAWzmP,SAAWA,EACtB,GAAIzd,GAAQ,KAAM,CAChBkkQ,EAAWlkQ,KAAOA,OAK1BlL,EAAG0tQ,qBAAuB1tQ,EAAGkuQ,OAAOpiQ,GAEpC9L,EAAG0tQ,qBAAqB14O,OAAM,SAAUq6O,SAAQ,KAC9C,IAAIC,EACJ7sP,KACC6sP,EAAoBtvQ,EAAG2sQ,gBAAkB,MAAQ2C,SAA2B,OAAS,EAAIA,EAAkB16G,SAC5G50J,EAAG0tQ,qBAAuB,QAG9B9tQ,iBAAiB2vQ,GACf,MAAM/iG,EAAQhB,GAAMn7C,KAAK,CACvBq7C,QAAS,EACTE,aAAc,MACdvkH,YAAapnD,KAAKonD,YAClBuB,KAAM,4EAEA3oD,KAAKm7B,EAAE,+EACYn7B,KAAKm7B,EAAE,kCAElC2lB,GAAY3xB,GAAG,CACbsnB,QAAS81H,EAAM91H,QACf92C,QACE,IAAI4vQ,GACHA,EAAuBD,EAAcp6O,SAAW,MAAQq6O,SAA8B,OAAS,EAAIA,EAAqB1oQ,KAAKyoQ,MAGlI,OAAO/iG,GAGXggG,GAAYrkQ,OAAS,YACrBijO,GAAmB2F,gBAAgBy7B,GAAa,MAAO,QAsHvD,MAAMiD,WAAsBn0P,GAC1BwG,2BACE,MAAO,CAKLljB,OAAQ,KAMR8wQ,mBAAoB,IAMpBC,qBAAsB,KAMtBC,gBAAiB,KAoBjB5rE,QAAS,KAMT6rE,OAAQ,KAMRC,kBAAmB,QAQvBlwQ,OAAOwY,EAAS,IACd,MAAMpY,EAAKC,KACXmY,EAAS64B,GAAa55B,OAAO,GAAIrX,EAAGoY,OAAQA,GAC5CpY,EAAG+vQ,iBAAiB33P,GACpB,OAAOpY,EAAGgwQ,mBAAmB53P,GAE/BxY,mBAAmBwY,GACjB,MAAMpY,EAAKC,KACT+jM,EAAUhkM,EAAGiwQ,gBAAgB73P,GAC7Bu3J,EAAO3vK,EAAGkwQ,aAAa93P,GACzB,MAAO,CACLu3J,KAAAA,EACAq0B,QAAAA,GAGJpkM,iBAAiBwY,GAIf,MAAM4rL,EAAU5rL,EAAO4rL,SAAW/jM,KAAKrB,OAAOolM,QAAQsyB,eAAej4N,QAAOszF,GAAOA,EAAI4tK,aAAe,QACtGnnP,EAAO4rL,QAAUA,EAAQl6L,KAAI42N,IAC3B,UAAWA,IAAQ,SAAU,CAC3B,OAAOzgO,KAAKrB,OAAOolM,QAAQhzK,MAAKgmL,GAAUA,EAAOxgM,QAAUkqN,KAAQ,CACjElqN,MAAOkqN,OAEJ,CACL,OAAOA,MAIb9gO,gBAAgBwY,GACd,OAAOA,EAAO4rL,QAAQl6L,KAAI42N,GAAOzgO,KAAKkwQ,cAAczvC,EAAKtoN,KAE3DxY,aAAawY,GACX,MAAM4rL,QACJA,EAAOr0B,KACPA,GACEv3J,EACJ,GAAI4rL,EAAQjlM,SAAW,IAAM4wK,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAK5wK,UAAY,EAAG,CAC3F,MAAO,GAET,MAAMiB,EAAKC,MACTrB,OACEA,GACEoB,EACN,OAAQ2vK,GAAQ/wK,EAAOitE,OAGrB/hE,KAAI2oE,GAAUzyE,EAAG4uE,cAAc6D,EAAQuxH,EAAS5rL,KAEjD/Z,QAAO80P,GAASA,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMp0P,SAEvEa,cAAco3M,EAAQnrI,EAAQ5rE,KAAKrB,OAAOitE,OACxC,IAAIz/D,EAAS4qM,EAAOo5D,cAAgB,SACpC,GAAIp5D,EAAOo5D,eAAiBvtQ,UAAW,CACrC,GAAIm0M,EAAOxgM,MAAO,CAChB,MAAMirN,EAAkB51J,EAAM2O,WAAWtO,mBAAmB8qI,EAAOxgM,OACnE,GAAIirN,GAAmBA,EAAgB30N,OAAS,OAAQ,CACtDV,EAASq1N,EAAgB30N,OAI/B,OAAOV,EASTxM,cAAco3M,EAAQ5+L,GACpB,MAAMpY,EAAKC,MACTrB,OACEA,GACEoB,GACJ0vQ,mBACEA,GACEt3P,EACN,IAAI5B,MACFA,EACAtL,KAAM1L,EAAK2H,MACXA,EAAKoyC,SACLA,GACEy9J,EAGJ,KAAMxgM,KAAS5X,EAAOitE,MAAM2O,WAAW1gD,UAAW,CAChDtjB,EAAQ,GAGV,IAAKhX,IAAU2H,EAAO,CACpB,MAAMkpQ,EAAazxQ,EAAOolM,QAAQhzK,MAAK0vM,GAAOA,EAAIlqN,QAAUA,IAC5D,IAAKhX,EAAO,CACVA,EAAQ6wQ,GAAcA,EAAWnlQ,MAAQsL,EAG3C,GAAIrP,GAAS,KAAM,CACjBA,EAAQkpQ,GAAcA,EAAWlpQ,OAASuoQ,GAG9CvoQ,EAAQkN,KAAKC,IAAInN,GAASuoQ,EAAoBn2N,GAAYm2N,GAC1D,MAAO,CACLl5P,MAAAA,EACAhX,MAAAA,EACA2H,MAAAA,EACA2F,KAAM9M,EAAGswQ,cAAct5D,IAW3Bp3M,cAAc6yE,EAAQuxH,EAAS5rL,GAC7B,MAAMxZ,OACFA,GACEqB,MACJ2vQ,gBACEA,EAAeC,OACfA,EAAMC,kBACNA,GACE13P,EACN,IAAI+6O,EACJ,IAAK1gL,EAAQ,CACX0gL,EAAQnvD,EAAQl6L,KAAI,IAAM,UACrB,GAAI2oE,EAAO6T,aAAc,CAC9B,GAAIspL,GAAmBn9L,EAAOryD,KAAK84E,YAAa,CAC9Ci6J,EAAQnvD,EAAQl6L,KAAIktM,GACXp4M,EAAOozH,SAAS3zG,MAAMkjO,iBAAiB,CAE5ChjB,YAAarmL,GAAU72C,gBACvB60N,KAAMt3N,EACN6zE,OAAAA,EACAukI,OAAAA,WAID,CACLm8C,EAAQnvD,EAAQl6L,KAAIktM,IAClB,IAAIu5D,EACJ,IAAI/wQ,GAAS+wQ,EAAgBv5D,EAAOxgM,SAAW,MAAQ+5P,SAAuB,GAAKA,EAAc1kQ,SAAS,KAAO4mE,EAAO9gE,IAAIqlM,EAAOxgM,OAASi8D,EAAOukI,EAAOxgM,OAC1J,MAAMssP,EAAc9rD,EAAO2oB,UAAY3oB,EAAO+rD,gBAC9C,GAAID,KAAiBtjQ,GAASw3M,EAAOw5D,cAAgBp4P,EAAOu3P,sBAAuB,CACjFnwQ,EAAQsjQ,EAAYh8P,KAAKkwM,EAAQ,CAC/Bx3M,MAAAA,EACAizE,OAAAA,EACAukI,OAAAA,EACAkf,KAAMt3N,EACN+lO,SAAU,OAGd,GAAIkrC,GAAU74D,EAAOrwH,KAAM,CACzBnnF,EAAQ,GAAGswQ,EAAkB1hQ,OAAOqkE,EAAO9C,cAAcnwE,IAE3D,OAAOA,KAGX,OAAO2zP,GAGXsc,GAActnQ,OAAS,gBAEvB,MAAMsoQ,GACJ7wQ,YAAYJ,GACVS,KAAK2vD,OAASpwD,EAEhBA,YACE,OAAOS,KAAK2vD,OAEdhwD,WACE,OAAOO,QAAQF,KAAKT,OAAS,IAAM,IAGvCixQ,GAAqBtoQ,OAAS,uBAuE9B,MAAMuoQ,WAAwB/wM,GAC5B3xD,mBACE,MAAO,gBAET8T,2BACE,MAAO,CAMLlc,SAAU,KAMV4nH,WAAY,aAOZqgJ,cAAe4B,GAKfzC,eAAgB,KAKhB2D,QAAS,KAQTC,+BAAgC,MAGpChxQ,aAAaJ,GACX,GAAIA,IAAUqD,WAAarD,IAAU,MAAQ0U,OAAOC,MAAM3U,WAAiBA,IAAU,mBAAqBA,IAAU,UAAY2J,OAAO3J,KAAW,kBAAmB,CACnK,MAAO,OACF,CACL,OAAOA,GAGXI,mBAAmBwY,GACjB,MAAMpY,EAAKC,MACT0vK,KACEA,EAAIq0B,QACJA,GACEhkM,EAAG4+P,SAASsP,OAAO91P,EAAO40P,gBAChC,MAAO,CACLr9F,KAAMA,EAAK7lK,KAAI8kK,GACNA,EAAI9kK,KAAI,CAACtK,EAAO2Q,KACrB,IAAI0gQ,EACJ,GAAIrxQ,aAAiBiP,KAAM,CACzBjP,EAAQsgC,GAAW/C,OAAOv9B,EAAO4Y,EAAOo1G,iBACnC,UAAWhuH,IAAU,UAAW,CACrCA,EAAQ,IAAIixQ,GAAqBjxQ,GAEnC,GAAIQ,EAAG4wQ,+BAAgC,CACrCpxQ,EAAQQ,EAAG8wQ,aAAatxQ,GAE1B,MAAMsN,IAAS+jQ,EAAiB7sE,EAAQ7zL,MAAY,MAAQ0gQ,SAAwB,OAAS,EAAIA,EAAe/jQ,QAAU,SAAW,SAAW,SAChJ,MAAO,CACLtN,MAAAA,EACAsN,KAAAA,QAINk3L,QAASA,EAAQl6L,KAAI42N,IACnB,IAAIlqN,MACFA,EAAKhX,MACLA,EAAK2H,MACLA,EAAK2F,KACLA,GACE4zN,EAIJ5zN,EAAO,SACP,MAAO,CACL0J,MAAAA,EACAhX,MAAAA,EACA2H,MAAAA,EACA2F,KAAAA,OAcRlN,OAAOwY,EAAS,IACd,MAAMpY,EAAKC,KACT0wQ,EAAU3wQ,EAAG2wQ,SAAWtuQ,WAAWsuQ,QACrC,IAAKA,EAAS,CACZ,MAAM,IAAIhgQ,MAAM,gDAElB,GAAI3Q,EAAG6/D,SAAU,CACf,OAEFznD,EAAS64B,GAAa55B,OAAO,GAAIrX,EAAGoY,OAAQA,GAC5C,IAAKA,EAAOxS,SAAU,CACpBwS,EAAOxS,SAAW5F,EAAG8/D,OAAOzjD,OAE9B,MAAMzW,SACFA,GACEwS,GACJu3J,KACEA,EAAIq0B,QACJA,GACEhkM,EAAGgwQ,mBAAmB53P,GAC5B,OAAOu4P,EAAQ,CACb/qQ,SAAAA,EACAmrQ,MAAO,CACL52O,KAAM,CAAC6pK,GAASp9K,OAAO+oJ,GACvBqhG,KAAMhtE,KAIZpkM,UAAUs2N,EAAM99M,GACd+B,MAAMsB,UAAUy6M,EAAM99M,GACtB,IAAKnY,KAAK0wQ,QAAS,CACjB,UAAWA,UAAY,YAAa,CAClC1wQ,KAAK0wQ,QAAUtuQ,WAAWsuQ,UAIhC/R,eACE,MAAM5+P,EAAKC,KACX,OAAOD,EAAGixQ,YAAcjxQ,EAAGixQ,UAAYjxQ,EAAG6tQ,cAAc/8I,IAAI,CAC1DlyH,OAAQoB,EAAG8/D,QACV9/D,EAAGgtQ,kBAGV0D,GAAgBvoQ,OAAS,gBACzBijO,GAAmB2F,gBAAgB2/B,GAAiB,MAAO,QAY3D,MAAMQ,WAAY3kN,GAChBv+C,mBACE,MAAO,MAGTlB,kBACE,MAAO,UAETgV,2BACE,MAAO,CACLg0G,QAAS,GACTvS,WAAY,CACVj2D,UAAW,kBAKjB02I,cACE,OAAO/jM,KAAKkxQ,UAAYlxQ,KAAKm8N,QAAQp4B,QAGvCA,YAAYA,GACV/jM,KAAKkxQ,SAAWntE,EAQlBpkM,gBACE,MAAMI,EAAKC,MACTynN,QACEA,GACE1nN,EAAGgkM,QACT,IAAI/X,EAEJjsL,EAAGgkM,QAAQ7yH,UAAS6lI,IAClB,MAAMo6D,EAASpxQ,EAAGqxQ,kBAAkBr6D,EAAOpsM,IACzC0mQ,EAAWp5N,GAAUod,UAAU0hJ,EAAO7vM,OACtCoqQ,EAAcr5N,GAAUod,UAAU0hJ,EAAOz9J,UACzCi4N,EAAct5N,GAAUod,UAAU0hJ,EAAO9/E,UAC3C,GAAIk6I,EAAQ,CACVnlF,EAAYqlF,EACZF,EAAO9vQ,MAAM41H,SAAWs6I,EAExB,GAAIx6D,EAAOpnI,UAAYonI,EAAO7vM,OAAS,MAAQ6vM,EAAO3/E,MAAQ,KAAM,CAClE,MAAMA,EAAO2/E,EAAO1vJ,SAAS57C,QAAO,CAACU,EAAQ4hD,IAAU5hD,IAAW4hD,EAAMy0C,QAAUz0C,EAAMqpE,MAAQ,GAAG,GAEnG+5I,EAAO9vQ,MAAM+1H,KAAOA,EAAO,EAAI,GAAGA,WAAgB,GAElD+5I,EAAO9vQ,MAAMi4C,SAAW,KACxB,GAAI89E,EAAO,EAAG,CAGZ2/E,EAAO7lI,UAASuvJ,GAAOA,EAAIvmM,KAAKof,SAAW,YAI1C,CACH,GAAIlwC,SAAS2tM,EAAOz9J,WAAa,EAAG,CAClC63N,EAAO9vQ,MAAMi4C,SAAWg4N,EAG1BH,EAAO9vQ,MAAM+1H,KAAO+5I,EAAO9vQ,MAAM2qL,UAAYmlF,EAAO9vQ,MAAM6F,MAAQ,GAClE,GAAI6vM,EAAO3/E,KAAM,CAIf,IAAKljH,MAAM9K,SAAS2tM,EAAO3/E,QAAU2/E,EAAO1vJ,SAAU,CACpD8pN,EAAO9vQ,MAAM+1H,KAAO,GAAG2/E,EAAO3/E,kBACzB,CACL+5I,EAAO9vQ,MAAM+1H,KAAO2/E,EAAO3/E,WAExB,GAAIhuH,SAAS2tM,EAAO7vM,QAAU,EAAG,CACtC,MAAMoL,EAASykM,EAAOzkM,OAItB,GAAIvS,EAAGyxQ,WAAal/P,EAAO68D,SAAW78D,EAAOpL,MAAO,CAClDiqQ,EAAO9vQ,MAAM6F,MAAQmqQ,MAChB,CAULF,EAAO9vQ,MAAM2qL,UAAYA,IAI/B,GAAI+qB,EAAO9vM,QAAU,EAAG,CACtBkqQ,EAAO9vQ,MAAM4F,OAASgxC,GAAUod,UAAU0hJ,EAAO9vM,aAIvDlH,EAAGujH,WAAW7sE,QAAQmI,UAAU8X,OAAO,aAAc+wJ,GAEvD9nN,aAAawxQ,GACX,IAAKnxQ,KAAKyxQ,cAAe,CACvB,MAAM/hQ,EAAIyhQ,EAAOzvQ,cAAcC,YAAYC,iBAAiBuvQ,GAC5DnxQ,KAAKyxQ,cAAgBroQ,SAASsG,EAAE7N,iBAAiB,iBAAmBuH,SAASsG,EAAE7N,iBAAiB,kBAAoBuH,SAASsG,EAAE7N,iBAAiB,sBAAwBuH,SAASsG,EAAE7N,iBAAiB,uBAEtM,OAAO7B,KAAKyxQ,cAQd9xQ,kBAAkBw2N,GAChB,OAAOn2N,KAAKy2C,QAAQzuC,cAAc,oBAAoBmuN,QAI1D86C,GAAIr6L,YACJq6L,GAAI/oQ,OAAS,MAYb,MAAMwpQ,WAAeT,GACnBljQ,mBACE,MAAO,SAGTlB,kBACE,MAAO,aAETsvN,cACE,OAAOn8N,KAAKo8N,SAEdD,YAAYA,GACVn8N,KAAKo8N,SAAWp8N,KAAK2Y,MAAQwjN,EAE/Bx8N,iBACEK,KAAKy2C,QAAQkd,kBAAkBjC,UAAY1xD,KAAKyxN,kBAChDzxN,KAAK2xQ,kBAEPhyQ,SAAQipI,WACNA,IAEA,GAAIA,EAAY,CACd5oI,KAAK4xQ,kBAGTjyQ,WACE,MAAMk8N,EAAS77N,KAAKm8N,QAAQN,OAC5B,OAAO1wD,GAAeG,GAAG;wEAC2CuwD;4FACoBA,mBAAwBA;;UAIlHz5F,sBACE,OAAOpiI,KAAK6xQ,eAQdlyQ,UAAUw2N,GACR,OAAOn2N,KAAKoxQ,kBAAkBj7C,GAShCx2N,kBACE,MAAMI,EAAKC,KACX,OAAOD,EAAGgkM,QAAQsyB,eAAexsN,KAAIktM,GAC5B5rC,GAAeG,GAAG;;2CAEYyrC,EAAO1gK,MAAQ,uBAAuB0gK,EAAO1gK,QAAU,MAAM0gK,EAAOjhM,KAAO;mCACnFihM,EAAOxgM,OAAS,uBAAuBwgM,EAAOpsM,uBAAuBosM,EAAO8mB;;sBAEzF9mB,EAAO+6D,YAAc;0BAEpC7nQ,KAAK,IAMVtK,kBACEK,KAAK+xQ,iBAITL,GAAO96L,YACP86L,GAAOxpQ,OAAS,SAoBhB,MAAM8pQ,WAAmBtyM,GAGvBc,0BACE,MAAO,CACLC,MAAO,CAAC,WACRrpD,OAAQ,CAAC,YAAa,SAAU,YAAa,kBAAmB,iBAAkB,uBAAwB,sBAAuB,aAAc,kBAAmB,SAAU,YAAa,sBAG7LyK,2BACE,MAAO,CAMLgkP,iBAAkB,EAMlBC,gBAAiB,EAOjBt2F,UAAW,KAKXwhF,eAAgB,KAChB9iC,WAAY,OAGhBt2M,wBACE,MAAO,CACLizD,MAAO,GAEPi0J,SAAU,EACVmzC,cAAe,EACfC,MAAO,GAEPC,UAAW,IAAI3gQ,IAEf4gQ,iBAAkB,EAElBC,aAAc,EAEdC,iBAAkB,EAClBC,qBAAsB,KACtBC,eAAgB,CACdC,YAAa,EACbC,UAAW,IAMjB/yQ,UAAUwY,GACRA,EAAO89M,KAAK08C,YAAc3yQ,KAC1Bka,MAAMsB,UAAUrD,EAAO89M,KAAM99M,GAG/BxY,YAEEK,KAAKkyQ,MAAMlzQ,SAAQ2vK,GAAOA,EAAI5yJ,YAC9B7B,MAAM8B,YASRrc,eAAesH,EAAQ2rQ,EAAc,OACnC,MAAM7yQ,EAAKC,KAEX,GAAID,EAAGmuN,WAAY,CACjBjnN,EAASlH,EAAG6rE,MAAMw5B,SAAWrlG,EAAG8yQ,uBAElC9yQ,EAAG+yQ,WAAa7rQ,EAChBlH,EAAGgzQ,kBAAkBH,GACrB,OAAO3rQ,EAKTtH,aAAaqzQ,EAAc,OACzB,MAAMjzQ,EAAKC,KAGXD,EAAGgzQ,kBAAkB,MAAO,KAAM,MAElC,GAAIhzQ,EAAG++N,SAAW/+N,EAAGg/N,SAAW,EAAIh/N,EAAG6rE,MAAM5nD,MAAO,CAClDgvP,EAAc,KAEhB,MAAM79N,EAAMp1C,EAAG4nP,SAAWqrB,EAAcjzQ,EAAG4nP,OAAOxyM,IAAM,EACxDp1C,EAAGwyQ,qBAAuB,KAC1B,GAAIS,EAAa,CACfjzQ,EAAG++N,SAAW/+N,EAAGkyQ,cAAgB,EAEnC,MAAMtqB,OACJA,GACE5nP,EACJ,GAAI4nP,EAAQ,CAEVA,EAAO5wB,UAAYh3N,EAAG++N,SACtB6oB,EAAOjyL,OAAOvgB,EAAK,MAGrBp1C,EAAGkzQ,sBACHlzQ,EAAGoxP,cAAcxJ,GASnBhoP,cAAcmhP,EAAa,OACzB,MAAM/gP,EAAKC,MACT0vK,KACEA,EAAIumD,KACJA,GACEl2N,EACJmzQ,EAAUxjG,EAAK5wK,OACfkS,EAAQkiQ,EAAUnzQ,EAAGg/N,SACvB,GAAI/tN,EAAO,CACT,GAAIA,EAAQ,EAAG,CACb,MAAMmiQ,EAAU,GAEhB,IAAK,IAAIjjQ,EAAQgjQ,EAASn8C,EAAYm8C,EAAUxjG,EAAKwjG,EAAU,GAAGn8C,UAAY,EAAI,EAAG7mN,EAAQnQ,EAAGg/N,SAAU7uN,IAAS6mN,IAAa,CAC9Ho8C,EAAQ30Q,KAAK,IAAImhQ,GAAI,CACnB7pP,IAAKmgN,EAAK2wC,OACV/vC,WAAY92N,EACZk2N,KAAAA,EACA/lN,MAAAA,EACA6mN,UAAAA,KAGJrnD,EAAKlxK,KAAKC,MAAMixK,EAAMyjG,GAEtBpzQ,EAAGwtB,QAAQ,UAAW,CACpBmiJ,KAAMyjG,IAER,IAAKryB,EAAY,CAEf/gP,EAAGoxP,cAAczhF,EAAKt7J,KAAKC,IAAI,EAAG6+P,EAAU,UAEzC,CACL,IAAIE,EAEJ,MAAMl0C,YACFA,GACEjJ,EACJo9C,GAAan0C,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYv0N,KAAO,OAASu0N,IAAgB,MAAQA,SAAqB,OAAS,GAAKk0C,EAAoBl0C,EAAY/3B,QAAU,MAAQisE,SAA2B,OAAS,EAAIA,EAAkBr7N,SAASE,GAAUwmB,iBAAiBw3J,KAC9Sq9C,EAAc5jG,EAAKx3J,OAAOg7P,EAAUliQ,EAAOA,GAC7C,GAAIqiQ,EAAW,CACb,IAAIE,EAEJ,GAAIviQ,IAAUkiQ,EAAS,CACrBj9C,EAAKu9C,4BAGF,KAAMD,EAAgBxzQ,EAAGukO,UAAUpF,EAAY9kJ,YAAc,MAAQm5L,SAAuB,OAAS,EAAIA,EAAcrjQ,QAAUw/J,EAAK5wK,OAAQ,CACjJ4wK,EAAKA,EAAK5wK,OAAS,GAAGo0P,MAAMh0B,EAAY17C,aAAa1uH,SAIzD/0D,EAAGwtB,QAAQ,aAAc,CACvBmiJ,KAAM4jG,IAERA,EAAYt0Q,SAAQ2vK,GAAOA,EAAI5yJ,cAUrCpc,kBAAkB8zQ,EAAoB,MAAOC,EAAsB,KAAM5yB,EAAa,OACpF,IAAI3jB,EAEJ,MAAMp9N,EAAKC,MACT4rE,MACEA,GACE7rE,EACJ4zQ,EAAkBv/P,KAAKuqB,KAAK5+B,EAAG+yQ,WAAa/yQ,EAAG6zQ,oBAE/CC,EAAoBF,EAAkB5zQ,EAAG8lQ,iBAAmB9lQ,EAAG+lQ,gBAEjE,MAAO3oC,EAAmBp9N,EAAGk2N,KAAKlyB,WAAa,MAAQo5B,SAA0B,GAAKA,EAAiBn5M,QAAU9P,MAAMy/P,GAAkB,CACvI5zQ,EAAGg/N,SAAW,EACd,OAAO,EAIT,GAAI80C,EAAoB9zQ,EAAGg/N,WAAa20C,EAAqB,CAC3D,OAAO3zQ,EAAGg/N,SAEZh/N,EAAG4zQ,gBAAkBA,EACrB5zQ,EAAGg/N,SAAW3qN,KAAKuU,IAAIijD,EAAM5nD,MAAO6vP,GAEpC,IAAKJ,EAAmB,CACtB,GAAI1zQ,EAAG2vK,MAAQ3vK,EAAGg/N,WAAah/N,EAAG2vK,KAAK5wK,OAAQ,CAC7C,IAAIg1Q,EACJ/zQ,EAAGg0Q,cAAcjzB,GAGjB,KAAMgzB,EAAgB/zQ,EAAG6nP,aAAe,MAAQksB,SAAuB,OAAS,EAAIA,EAAc/8C,YAAcnrJ,EAAM5nD,OAASjkB,EAAG4nP,OAAO5wB,YAAc,EAAG,CACxJ,MAAMi9C,EAAaj0Q,EAAG6nP,UAAU7wB,UAAYnrJ,EAAM5nD,MAAQ,EAC1D,IAAK,MAAM2qJ,KAAO5uK,EAAG2vK,KAAM,CACzBf,EAAIooD,WAAai9C,EAEnBj0Q,EAAG++N,UAAYk1C,QAEZ,IAAKj0Q,EAAGg/N,SAAU,CACvBh/N,EAAGwtB,QAAQ,oBAAqB,CAC9B84O,YAAatmQ,EAAGsmQ,cAGpBtmQ,EAAGk2N,KAAKg+C,kBAEV,OAAOl0Q,EAAGg/N,SAEZp/N,gBAEE,MAAMI,EAAKC,MACT2nP,OACEA,GACE5nP,EACJoM,EAASw7O,EAAS5nP,EAAGyyQ,eAAiB,CACpCC,YAAa9qB,EAAO5wB,UACpB27C,UAAW/qB,EAAOxyM,KAChBp1C,EAAGyyQ,eACPc,EAAcvzQ,EAAG2vK,KAAKz9J,QAExBlS,EAAGwtB,QAAQ,aAAc,CACvBmiJ,KAAM4jG,IAERvzQ,EAAG2vK,KAAK1wK,SAAQ2vK,GAAOA,EAAI5yJ,YAC3Bhc,EAAG2vK,KAAK5wK,OAAS,EACjBiB,EAAG8qE,MAAQ,GAGX,OAAO1+D,EAETxM,YAAY6yQ,GAEV,MAAM7qB,OACFA,GACE3nP,MACJyyQ,YACEA,EAAWC,UACXA,GACEF,EACN7qB,EAAOjyL,OAAOg9M,GACd/qB,EAAO5wB,UAAY07C,EAIrB7mM,YACE,OAAO5rE,KAAK6/D,OAAO+L,MAQrB8jG,WACE,OAAO1vK,KAAKkyQ,MAQdvyQ,OAAOuQ,GACL,GAAIlQ,KAAK++N,SAAU,CACjB,OAAO/+N,KAAK0vK,KAAKx/J,EAAQlQ,KAAK8+N,WASlCn/N,WAAW08F,GACT,GAAIA,GAAcA,EAAW5tB,QAAS,CACpC4tB,EAAaA,EAAW1xF,GAE1B,OAAO3K,KAAK6qE,MAAMwxB,GAQpB18F,kBAAkB82C,GAChBA,EAAUA,EAAQwN,QAAQ,eAC1B,OAAOxN,GAAWz2C,KAAK24N,OAAOliL,EAAQ/f,QAAQxmB,OAQhDvQ,SAAS6kC,EAAGgjC,EAAQ,OAElB,IAAKA,EAAO,CAGVhjC,GAAK+R,GAAUvxB,KAAKhlB,KAAKi2N,KAAK4a,cAAe,KAAM,MAAM93L,QAAQ,GAAG5D,IAEpE3Q,GAAKxkC,KAAKi2N,KAAK3yG,WAAW9+E,EAE5BA,EAAIyT,GAAUc,QAAQvU,GACtB,OAAOxkC,KAAK0vK,KAAK3+I,MAAKb,GAAKsU,GAAKtU,EAAEilB,KAAO3Q,EAAItU,EAAEmlB,SAQjD11C,UAAU08F,GACR,GAAIA,aAAsB39E,YAAa,CACrC,OAAO1e,KAAKk0Q,kBAAkB73K,GAEhC,OAAOr8F,KAAK04N,WAAWr8H,GAQzB18F,WAAWw0Q,GACT,MAAMjkQ,SAAeikQ,IAAe,SAAWA,EAAaA,EAAWjkQ,MACvE,OAAOlQ,KAAK24N,QAAQzoN,EAAQ,GAAKlQ,KAAK++N,UAQxC4oB,aACE,OAAO3nP,KAAK0vK,KAAK,GAQnBk4E,gBAEE,MAAM7oB,EAAW3qN,KAAKuU,IAAI3oB,KAAK++N,SAAU/+N,KAAK4rE,MAAM5nD,OACpD,OAAOhkB,KAAK0vK,KAAKqvD,EAAW,GAQ9B4P,sBAEE,OAAO3uO,KAAK0vK,KAAK3+I,MAAKb,GAAKA,EAAEmlB,OAASjhC,KAAKuqB,KAAK3+B,KAAKi2N,KAAK3yG,WAAW9+E,KAEvEwzL,2BAEE,OAAOh4N,KAAK0vK,KAAK3+I,MAAKb,GAAKA,EAAEilB,KAAO/gC,KAAKuqB,KAAK3+B,KAAKi2N,KAAK3yG,WAAW9+E,KAQrE0gO,qBACE,MAAMjvC,KACJA,GACEj2N,KAEJ,OAAO8iB,GAAYsxP,SAASp0Q,KAAK0vK,MAAMx/I,GAAKA,EAAEilB,IAAM8gL,EAAK3yG,WAAW9+E,EAAIyxL,EAAK+yC,aAE/EqL,0BACE,MAAMp+C,KACJA,GACEj2N,KAEJ,OAAO8iB,GAAYsxP,SAASp0Q,KAAK0vK,MAAMx/I,GAAKA,EAAEmlB,OAAS4gL,EAAK3yG,WAAW9+E,EAAIyxL,EAAK+yC,aAQlFrpQ,WAAWmvC,GACT,GAAIA,IAAW,EAAG,CAChB,MAAM4gI,KACFA,GACE1vK,MACJlB,OACEA,GACE4wK,EACN,IAAK,IAAI9wK,EAAI,EAAGA,EAAIE,EAAQF,IAAK,CAC/B8wK,EAAK9wK,GAAGkwC,OAAOA,IAGnB9uC,KAAKutB,QAAQ,aAAc,CACzBuhB,OAAAA,IAKJwlO,0BACE,OAAOt0Q,KAAK6lQ,iBAAmB7lQ,KAAKuoP,gBAEtCgsB,yBACE,OAAOv0Q,KAAK8lQ,gBAAkB9lQ,KAAKuoP,gBASrC/4E,gBACE,OAAOxvK,KAAKuhQ,WAEd/xF,cAAcvoK,GACZ,MAAMlH,EAAKC,MACTi2N,KACEA,EAAI+6B,eACJA,GACEjxP,EACJutI,EAAYvtI,EAAGyvK,UAEjB,GAAIliC,IAAcrmI,EAAQ,CACxB,OAEF+pC,GAAamI,aAAalyC,EAAQ,aAClC,GAAIA,EAAS,GAAI,CACfA,EAAS,GAEXlH,EAAGwtB,QAAQ,kBAAmB,CAC5BtmB,OAAAA,IAEFlH,EAAGqlM,aAAerlM,EAAGwhQ,WAAat6P,EAClC,GAAI+pP,EAAgB,CAClBjxP,EAAGuyQ,iBAAmBrrQ,EAExB,GAAIlH,EAAG2vK,KAAK5wK,OAAQ,CAClB,MAAM01Q,EAAOv+C,EAAK3yG,WAAW9+E,EAC3BmjN,EAAS5nP,EAAG+mP,SAAS0tB,EAAM,MAE3Bx3N,EAAa2qM,EAASA,EAAOxyM,IAAMq/N,EAAO,EAC5C,IAAI7xB,EAAS8xB,EAEb,GAAIzjB,EAAgB,CAClBrO,EAAU17O,EACVwtQ,EAAannI,MACR,CACLmnI,EAAa9xB,EAAU5iP,EAAGuyQ,iBAC1BvyQ,EAAG20Q,oBAEH/xB,GAAW17O,EAASqmI,EAGtBvtI,EAAGgzQ,kBAAkB,MAAO,KAAM,MAElChzQ,EAAG4nP,OAAOjyL,OAAO31D,EAAG4nP,OAAO5wB,WAAa4rB,EAAU1sB,EAAK2qC,kBAAmB,MAC1E7gQ,EAAG+4L,UACH,MAAMhvD,EAAO0qI,GAAQ7xB,EAAU8xB,GAE/B,GAAI3qI,IAAS0qI,EAAM,CACjBv+C,EAAK88B,kBAAkBpL,EAAOh9O,GAAI,CAChCi1C,MAAO,QACP5C,WAAAA,KAwBNj9C,EAAGwtB,QAAQ,YAAa,CACtBtmB,OAAAA,EACAqmI,UAAAA,IAOJi7G,sBACE,OAAOn0O,KAAK+oB,MAAMn9B,KAAK6yQ,wBAEzBA,6BACE,OAAQ7yQ,KAAKsyQ,kBAAoBtyQ,KAAKuhQ,YAAcvhQ,KAAKi2N,KAAK2qC,iBAEhEgT,yBACE,OAAQ5zQ,KAAKolM,cAAgBplM,KAAKuhQ,YAAcvhQ,KAAKi2N,KAAK2qC,iBA2B5D+T,sBACE,OAAO30Q,KAAKgxP,gBAAkBhxP,KAAKmyQ,UAAU5gQ,MAAQvR,KAAK4rE,MAAM5nD,MASlErkB,iBAAiBgL,EAAI1D,GACnB,MAAMlH,EAAKC,MACTmyQ,UACEA,GACEpyQ,EACN,IAAKA,EAAGixP,eAAgB,CAEtB,GAAImhB,EAAUl0P,IAAItT,GAAK,CACrB5K,EAAGqyQ,kBAAoBD,EAAUzgQ,IAAI/G,GAGvCwnQ,EAAU7gQ,IAAI3G,EAAI1D,GAElBlH,EAAGqyQ,kBAAoBnrQ,EACvB,GAAIA,EAASlH,EAAGqlM,aAAc,CAC5BrlM,EAAGqlM,aAAen+L,EAEpBlH,EAAGuyQ,iBAAmBvyQ,EAAGqyQ,iBAAmBD,EAAU5gQ,MAS1D5R,gBAAgB6yE,GACd,MAAMzyE,EAAKC,KAEX,OAAQwyE,GAAUzyE,EAAGoyQ,UAAUzgQ,IAAI8gE,EAAO7nE,KAAO6nE,GAAUzyE,EAAGk2N,KAAK6rC,aAAatvL,IAAWzyE,EAAGuyQ,kBAAoBvyQ,EAAGyvK,WAAazvK,EAAGk2N,KAAK2qC,iBAO5IjhQ,sBAAsBsyE,GACpB,MAAMlyE,EAAKC,KACX,IAAKD,EAAGixP,eAAgB,CACtB,MAAMmhB,UACJA,GACEpyQ,EACJkyE,EAAUnvD,GAAYm7B,QAAQg0B,GAC9BA,EAAQjzE,SAAQwzE,IACd,GAAIA,EAAQ,CACV,GAAI2/L,EAAUl0P,IAAIu0D,EAAO7nE,IAAK,CAE5B5K,EAAGqyQ,kBAAoBD,EAAUzgQ,IAAI8gE,EAAO7nE,IAC5CwnQ,EAAU74P,OAAOk5D,EAAO7nE,SAI9B5K,EAAGuyQ,iBAAmBvyQ,EAAGqyQ,iBAAmBD,EAAU5gQ,MAM1D5R,oBACEK,KAAKmyQ,UAAU1zN,QACfz+C,KAAKsyQ,iBAAmBtyQ,KAAKoyQ,iBAAmB,EAQlDzyQ,aAAauQ,GAEX,GAAIlQ,KAAKgxP,eAAgB,CACvB,OAAO9gP,EAAQlQ,KAAKuoP,gBAEtB,MAAM38K,MACJA,GACE5rE,KACJ,IAAIm1C,EAAM,EAGV,IAAK,IAAIv2C,EAAI,EAAGA,EAAIsR,EAAOtR,IAAK,CAC9B,MAAM4zE,EAAS5G,EAAMonB,MAAMp0F,GAC3Bu2C,GAAOn1C,KAAK40Q,gBAAgBpiM,GAE9B,OAAOp+D,KAAK+oB,MAAMgY,GAYpBx1C,gBAAgB08F,EAAY70B,EAAQ,MAAOqtM,EAAU,OACnD,MAAM90Q,EAAKC,KACT2uK,EAAM5uK,EAAG24N,WAAWr8H,GACtB,IAAIy4K,EAAoB/0Q,EAAG8/D,OAAO+0L,eAIlC,IAAKptL,EAAO,CACVstM,EAAoB/0Q,EAAG8/D,OAAOk1M,uBAGhC,GAAIpmG,EAAK,CACP,OAAO,IAAIp4H,GAAUu+N,EAAkB3wQ,EAAGqjE,EAAQpzD,KAAKkxB,MAAMqpI,EAAIx5H,KAAO/gC,KAAKkxB,MAAMqpI,EAAIx5H,IAAM2/N,EAAkBtwO,EAAIzkC,EAAG8/D,OAAOyjD,WAAW9+E,GAAIswO,EAAkB5tQ,MAAOynK,EAAIv3H,cAE3K,OAAOr3C,EAAGi1Q,uBAAuBj1Q,EAAG6rE,MAAMnmE,QAAQ42F,GAAa70B,EAAOqtM,GASxEl1Q,uBAAuBwhQ,EAAa35L,EAAQ,MAAOqtM,EAAU,OAC3D,MAAM90Q,EAAKC,MACT2nP,OACEA,EAAMC,UACNA,GACE7nP,EACJ+0Q,EAAoB/0Q,EAAG8/D,OAAO+0L,gBAC9BjqP,GACEA,GACE5K,EAAG6rE,MAAMonB,MAAMmuK,GAEnBl6P,EAASlH,EAAG8yQ,uBACZoC,EAAkBttB,EAAO5wB,UACzBm+C,EAAqBttB,EAAU7wB,UAI/Bo+C,EAEAhU,EAAc+T,EAAqB,CACjChlQ,MAAOixP,EAAc+T,EAAqB,EAC1C1wO,EAAGojN,EAAUvyM,OACbrwB,KAAM,aAGNm8O,EAAc8T,EAAkB,EAAI,CACpC/kQ,MAAOixP,EAAc8T,EACrBzwO,EAAGmjN,EAAOxyM,IACVnwB,KAAM,UAGN,CACA9U,MAAOixP,EACP38N,EAAG,EACHxf,KAAM,OAERmwB,EAAMp1C,EAAG40Q,kBAAoBE,EAE3B90Q,EAAGq1Q,aAAajU,GAEhB/sP,KAAK+oB,MAAMg4O,EAAc3wO,EAAI2wO,EAAcjlQ,MAAQjJ,GACrDkF,EAAS,IAAIoqC,GAAUu+N,EAAkB3wQ,EAAGqjE,EAAQryB,EAAMA,EAAM2/N,EAAkBtwO,EAAIzkC,EAAG8/D,OAAOyjD,WAAW9+E,EAAGswO,EAAkB5tQ,MAEhIkN,KAAK+oB,MAAMp9B,EAAGoyQ,UAAUzgQ,IAAI/G,IAAO1D,IAGrCkF,EAAOkpQ,QAAU,KAGjBlpQ,EAAOyzC,MAAQzzC,EAAOkpC,OAASy/N,EAAkBtwO,EAAI,QAAUr4B,EAAOq4B,EAAIswO,EAAkBz/N,OAAS,MAAQ,UAC7G,OAAOlpC,EAQTk6P,kBACE,OAAOrmQ,KAAKqyQ,aASd1yQ,QAAQqY,GACNhY,KAAK0vK,KAAK1wK,QAAQgZ,GAMpBrY,CAAC6V,OAAOy3E,YACN,OAAOjtF,KAAK0vK,KAAKl6J,OAAOy3E,YAU1BttF,YAAY6yE,EAAQ2jJ,GAClB,MAAM4E,EAAc,IAAIhF,GAAS,CAC/BE,KAAMj2N,KAAKi2N,KACXzjJ,OAAAA,EACA2jJ,SAAAA,IAEF,OAAOj2N,QAAQ66N,EAAY5zB,MAAQ4zB,EAAYpsD,IAAIqwD,WAAWjE,IAMhEp7N,cACE,MAAMI,EAAKC,KACXD,EAAG++N,SAAW,EACd/+N,EAAGkyQ,cAAgB,EACnB,GAAIlyQ,EAAG4nP,OAAQ,CACb5nP,EAAG4nP,OAAO5wB,UAAY,EAEtBh3N,EAAG4nP,OAAOjyL,OAAO,EAAG,MAEtB31D,EAAG+4L,UAEH/4L,EAAGk2N,KAAK3yG,WAAW9+E,EAAI,EAOzB7kC,iBAAiB6yE,GACf,MAAMm8F,EAAM3uK,KAAK04N,WAAWlmJ,EAAO7nE,IACnC,GAAIgkK,EAAK,CACP3uK,KAAKmxP,cAAcxiF,IAQvBhvK,cAAc21Q,EAAU,MACtB,MAAMv1Q,EAAKC,MACT0vK,KACEA,EAAI9jG,MACJA,GACE7rE,EACJw1Q,EAAa3pM,EAAM5nD,MAGrB,GAAIjkB,EAAGgzQ,kBAAkB,MAAOwC,EAAa7lG,EAAK5wK,OAAQ,QAAU,EAAG,CAErEiB,EAAGkzQ,oBAAoB,MACvB,OAGF,MAAMuC,EAAeF,EAAU5lG,EAAKjqK,QAAQ6vQ,GAAW,EAEvD,IAAIv+C,EAAYu+C,EAAUA,EAAQv+C,UAAYrnD,EAAK,GAAGqnD,UACtD,MAEE0+C,EAAeF,EAAax+C,EAAY,EAExC2+C,EAAathQ,KAAKuU,IAAI+mJ,EAAK5wK,OAAS,EAAG02Q,EAAeC,GACxD,IAEEE,EAAgBjmG,EAAK5wK,OAAS42Q,EAAa,EAE3CvgO,EAAMqgO,EAAe,EAAI9lG,EAAK8lG,EAAe,GAAGngO,OAASq6H,EAAK8lG,GAAcrgO,IAC5Ew5H,EAEF,IAAK,IAAI/vK,EAAI42Q,EAAc52Q,GAAK82Q,EAAY92Q,IAAK,CAC/C+vK,EAAMe,EAAK9wK,GAEX+vK,EAAIooD,UAAYA,EAEhBpoD,EAAIj5G,OAAOvgB,EAAK,MAChBw5H,EAAI50J,OAAOg9M,EAAWnrJ,EAAMonB,MAAM+jI,KAAc,OAChD5hL,GAAOw5H,EAAIv3H,aAIb,MAAOu+N,KAAkB,EAAG,CAC1B51Q,EAAG61Q,qBAGL,GAAI71Q,EAAG6nP,UAAUvyM,OAASt1C,EAAG+yQ,WAAY,CACvC/yQ,EAAGgzQ,oBAGLhzQ,EAAGkzQ,oBAAoB,MACvBlzQ,EAAGwtB,QAAQ,cAOb5tB,WAAW+vK,GACT,IAAIpiC,EACF24G,EAAgB,MAClBv2E,EAAOnoK,MAAMyd,KAAK0qJ,GAElBA,EAAKz3J,MAAK,CAACpS,EAAGye,IAAMze,EAAEkxN,UAAYzyM,EAAEyyM,YAEpC,IAAK,MAAMpoD,KAAOe,EAAM,CACtBpiC,EAAYqhC,EAAI1nK,OAGhB0nK,EAAI50J,OAAO,KAAM,KAAM,OACvBksO,GAAiBt3E,EAAI1nK,SAAWqmI,EAGlC,GAAI24G,EAAe,CACjBjmP,KAAKsiQ,iBAAiB5yF,EAAK,IAE7B1vK,KAAKutB,QAAQ,cASf5tB,iBAAiB21Q,EAAShtK,EAAQ,OAChC,MAAMvoG,EAAKC,KACX,IAAIm1C,EAAMmgO,EAAQjgO,OAChBs5H,EACAz+J,EACF,IAAKA,EAAQolQ,EAAQv+C,UAAY,EAAGpoD,EAAM5uK,EAAG44N,OAAOzoN,GAAQy+J,EAAKA,EAAM5uK,EAAG44N,SAASzoN,GAAQ,CACzFilC,EAAMw5H,EAAI/zI,UAAUua,GAGtB,IAAKmzD,EAAO,CACVvoG,EAAGkzQ,oBAAoB,OAO3BtzQ,UACE,MAAMI,EAAKC,MACT2nP,OACEA,GACE5nP,EAEN,IAAK4nP,GAAU5nP,EAAGk2N,KAAKkyB,iBAAkB,CACvC,OAEFpoP,EAAG8qE,MAAQ,GACX9qE,EAAGoxP,cAAcxJ,GACjB5nP,EAAGwtB,QAAQ,WASb5tB,eAAeymL,EAAcyvF,GAQ3B,MAAM91Q,EAAKC,MACT4rE,MACEA,EAAKumM,UACLA,GACEpyQ,EACJw1Q,EAAa3pM,EAAM5nD,MACrB,GAAIjkB,EAAG40Q,kBAAoB50Q,EAAGixP,eAAgB,CAC5C,MAAM77M,EAAMixI,EAAermL,EAAGu0Q,oBAC5BwB,EAAS/1Q,EAAGk2N,KAAK2qC,iBACnB,IAAImV,EAAc,EAChBC,EAAc,EAChB,MAAOD,EAAc5gO,EAAK,CACxB,MAAMq9B,EAAS5G,EAAMonB,MAAMgjL,GAC3BD,GAAe5D,EAAUzgQ,IAAI8gE,EAAO7nE,IAAMmrQ,EAC1CE,IAEF,MAAMC,EAAa7hQ,KAAKC,IAAID,KAAKuU,IAAIqtP,EAAaT,EAAax1Q,EAAGg/N,UAAW,GAC7Eh/N,EAAGkyQ,cAAgB7rF,EACnBrmL,EAAG4nP,OAAO5wB,UAAYh3N,EAAG++N,SAAWm3C,EACpCl2Q,EAAG4nP,OAAOjyL,OAAO31D,EAAGq1Q,aAAaa,GAAa,OAE9Cl2Q,EAAG+4L,cACE,CACL,MAAMtpB,EAAYzvK,EAAG8yQ,uBAInBmD,EAAcH,GAAoB,KAAOzhQ,KAAK+oB,MAAMipJ,EAAe5W,GAAazvK,EAAG8lQ,iBAAmBgQ,EAAmBzhQ,KAAK+oB,MAAMp9B,EAAGg/N,SAAW,GAClJk3C,EAAa7hQ,KAAKC,IAAID,KAAKuU,IAAIqtP,EAAaT,EAAax1Q,EAAGg/N,UAAW,GACvEm3C,EAAcn2Q,EAAG8/D,OAAOyjD,WAAW9+E,EACnC2xO,EAAiB/hQ,KAAKuU,IAAI5oB,EAAG8/D,OAAO+0L,eAAe3tP,OAASivQ,EAAcn2Q,EAAGw0Q,mBAAoBx0Q,EAAGsmQ,aACtGtmQ,EAAGkyQ,cAAgB7rF,EACnBrmL,EAAG4nP,OAAO5wB,UAAYh3N,EAAG++N,SAAWm3C,EACpCl2Q,EAAG4nP,OAAOjyL,OAAOthD,KAAK+oB,MAAM84O,EAAazmG,GAAY,OAErDzvK,EAAG+4L,UAIH,GAAI/4L,EAAG6nP,UAAUvyM,OAAS8gO,EAAgB,CAGxCp2Q,EAAGgzQ,kBAAkB,MAAO,MAAO,OAEnC,MAAOhzQ,EAAG6nP,UAAUvyM,OAAS8gO,GAAkBp2Q,EAAGmyQ,MAAMnyQ,EAAG8lQ,kBAAkB1wN,IAAM+gO,GAAen2Q,EAAG6nP,UAAU7wB,UAAYw+C,EAAa,EAAG,CACzIx1Q,EAAGyuO,yBAaPzuO,EAAGkzQ,sBAGL,GAAI4C,GAAoB,KAAM,CAC5B,MAAMvyJ,WACFA,GACEvjH,EAAGk2N,KACPmgD,EAAYr2Q,EAAG44N,OAAOk9C,GAGtBQ,EAAYD,GAAa7/N,GAAUvxB,KAAKoxP,EAAUrW,eAAe,IAAInmN,OAAOpV,EAC5E8xO,EAAiBhzJ,EAAW/1D,SAAS3T,OAAOpV,EAE9C,GAAI4xO,EAAW,CACb9yJ,EAAW9+E,EAAI4hJ,EAAehyK,KAAK+oB,MAAMmmF,EAAW9+E,GAAK6xO,EAAYC,KAGzE,OAAOlwF,EAOTzmL,aAAaymL,GACX,MAAMrmL,EAAKC,KACTmM,EAAS,CACPi6K,aAAAA,EACAmwF,SAAUnwF,EAAermL,EAAGkyQ,eAGhC,GAAI79P,KAAK41B,IAAI79B,EAAOoqQ,UAAYx2Q,EAAGg/N,SAAWh/N,EAAGwoP,gBAAkB,EAAG,CAEpE,IAAIr4O,EAEJ,GAAInQ,EAAGwyQ,qBAAsB,CAC3BriQ,EAAQnQ,EAAG6rE,MAAMnmE,QAAQ1F,EAAGwyQ,sBAK9BxyQ,EAAGk2N,KAAKu9C,uBAERrnQ,EAAOi6K,aAAermL,EAAGimQ,eAAe5/E,EAAcl2K,GACtD/D,EAAOoqQ,SAAW,EAGpB,OAAOpqQ,EAUTxM,mBAAmBymL,EAAc3vH,EAAOz+B,EAAc,OACpD,MAAMj4B,EAAKC,KACTw2Q,EAAaz2Q,EAAG8/D,OAAO+0L,eAEzB,GAAI70P,EAAGg/N,WAAa,EAAG,CACrB,OAAO,EAET,IAAI5yN,EAASpM,EAAGsmQ,YAChB,GAAI5vM,GAEJriD,KAAK41B,IAAIo8I,EAAermL,EAAGkyQ,gBAAkBlyQ,EAAGwoP,iBAEhDxoP,EAAG4nP,OAAOxyM,IAAMixI,GAAgBrmL,EAAG6nP,UAAUvyM,OAAS+wI,EAAeowF,EAAWvvQ,OAAQ,CAEtF,MAAMwvQ,EAAU12Q,EAAG22Q,aAAatwF,GAChCrmL,EAAGwyQ,qBAAuB,KAG1BxyQ,EAAGkyQ,cAAgBwE,EAAQrwF,aAC3B,GAAIqwF,EAAQF,SAAW,EAAG,CAExBx2Q,EAAG42Q,UAAUF,EAAQrwF,mBAChB,GAAIqwF,EAAQF,SAAW,EAAG,CAE/Bx2Q,EAAG62Q,UAAUH,EAAQrwF,cAEvB,IAAKrmL,EAAGixP,iBAAmBh5N,EAAa,CACtCj4B,EAAG82Q,aAAaJ,EAASD,EAAYpwF,GAGvCj6K,EAASpM,EAAGkzQ,sBAEd,OAAO9mQ,EAETxM,aAAa82Q,EAASD,EAAYpwF,GAChC,MAAMrmL,EAAKC,KACX,IAAIg1B,EAAQ,EAIZ,GAAIj1B,EAAG40Q,gBAAiB,CACtB3/O,EAAQj1B,EAAG4nP,OAAOxyM,IAAMp1C,EAAGq1Q,aAAar1Q,EAAG4nP,OAAO5wB,eAM/C,CAGH,GAEA0/C,EAAQF,SAAW,GAAKnwF,EAAeowF,EAAWvvQ,OAAS,GAE3DwvQ,EAAQF,SAAW,GAAKnwF,EAAermL,EAAGsmQ,YAAcmQ,EAAWvvQ,OAAS,EAAI,EAAG,CAEjF+tB,EAAQj1B,EAAG4nP,OAAOxyM,IAAMp1C,EAAGq1Q,aAAar1Q,EAAG4nP,OAAO5wB,YAItD,GAAI/hM,EAAO,CAITj1B,EAAG+2Q,YAAY9hP,GACfj1B,EAAGk2N,KAAK3yG,WAAW9+E,EAAIzkC,EAAGkyQ,cAAgBlyQ,EAAGk2N,KAAK3yG,WAAW9+E,EAAIxP,GASrEr1B,UAAUuhQ,GACR,MAAMnhQ,EAAKC,KACT+2Q,EAAa7V,EAASnhQ,EAAG4nP,OAAOxyM,IAAMp1C,EAAGu0Q,oBAC3C,IAAI0C,EAAoB,EACxB,MAAOA,EAAoBD,GAAch3Q,EAAG++N,SAAW,EAAG,CAExDk4C,GAAqBj3Q,EAAG61Q,qBAE1B71Q,EAAGwtB,QAAQ,cAQb5tB,UAAUuhQ,GACR,MAAMnhQ,EAAKC,KACT+2Q,EAAa7V,EAASnhQ,EAAG4nP,OAAOxyM,IAAMp1C,EAAGu0Q,oBACzC2C,EAAcl3Q,EAAG6rE,MAAM5nD,MACvB+6M,EAAWh/N,EAAGg/N,SAChB,IAAIi4C,EAAoB,EAExB,MAAOA,EAAoBD,GAE3Bh3Q,EAAG++N,SAAWC,EAAWk4C,GAEzBl3Q,EAAG4nP,OAAOxyM,IAAMp1C,EAAG4nP,OAAOvwM,aAAe8pN,EACvC,CAEA8V,GAAqBj3Q,EAAGyuO,wBAE1BzuO,EAAGwtB,QAAQ,cAWb5tB,oBAAoBokE,EAAY,OAC9B,MAAMhkE,EAAKC,KACX,GAAID,EAAGk2N,KAAKihD,cAAe,CACzB,OAEF,MAAMD,EAAcl3Q,EAAG6rE,MAAM5nD,MAC3BmzP,EAAeF,EAAcl3Q,EAAGoyQ,UAAU5gQ,MAC1Cq2O,UACEA,GACE7nP,EACN,IAAIq3Q,EAEJ,GAAIr3Q,EAAGixP,eAAgB,CACrBomB,EAAWH,EAAcl3Q,EAAGwoP,oBACvB,CACL6uB,EAEAr3Q,EAAGqyQ,iBAEHryQ,EAAGoyQ,UAAU5gQ,KAAOxR,EAAGk2N,KAAK2qC,iBAE5BuW,EAAep3Q,EAAG8yQ,uBAElB,GAAIjrB,GAAauvB,EAAc,CAC7B,MAAM9hO,EAASuyM,EAAUvyM,OAEzB,GAAIA,EAAS+hO,GAAYr3Q,EAAG++N,SAAW/+N,EAAGg/N,UAAYk4C,GAAeG,EAAW/hO,GAAUA,EAAS,EAAG,CACpG+hO,EAAW/hO,EAEX,GAAIuyM,EAAU7wB,UAAYkgD,EAAc,EAAG,CACzCG,IAAaH,EAAc,EAAIrvB,EAAU7wB,WAAah3N,EAAG8yQ,yBAI/DuE,EAAWhjQ,KAAK+oB,MAAMi6O,GAExB,GAAIA,IAAar3Q,EAAGsmQ,YAAa,CAC/B,GAAItmQ,EAAGwtB,QAAQ,oBAAqB,CAClC84O,YAAa+Q,EACbrzM,UAAAA,MACK,MAAO,CACZhkE,EAAGsyQ,aAAe+E,GAGtB,OAAOA,EAQTz3Q,qBACE,IAAI+uO,EACJ,MAAM3uO,EAAKC,MACTi2N,KACEA,GACEl2N,EACJohQ,EAAcphQ,EAAG++N,SAAW,EAC5BtsJ,EAASzyE,EAAG6rE,MAAMonB,MAAMmuK,GAExBvZ,EAAY7nP,EAAG6nP,UACfyvB,EAAezvB,EAAUzyM,IAC3Bp1C,EAAGwtB,QAAQ,qBAAsB,CAC/BohJ,IAAKi5E,EACL70K,UAAWP,IAGb,GAAIo1K,EAAU7wB,cAAgB2X,EAAoBzY,EAAKiJ,eAAiB,MAAQwP,SAA2B,OAAS,EAAIA,EAAkBpnC,UAAW,CACnJ2uB,EAAKu9C,uBAGP5rB,EAAUyY,KAAOtgQ,EAAG4nP,OAAOxyM,IAAMp1C,EAAG60Q,gBAAgBpiM,GAEpDo1K,EAAU0vB,cAAgBv3Q,EAAGixP,eAE7BpJ,EAAU7tO,OAAOonP,EAAa3uL,EAAQ,OAGtCo1K,EAAUyY,KAAOgX,EACjBzvB,EAAU2vB,UAAUx3Q,EAAG4nP,OAAOxyM,KAC9ByyM,EAAU0vB,aAAe,MAEzBv3Q,EAAG++N,WAEH/+N,EAAGmyQ,MAAM/jL,QAAQpuF,EAAGmyQ,MAAMtgQ,OAC1B,OAAOg2O,EAAUxwM,aAQnBz3C,wBACE,IAAI63Q,EACJ,MAAMz3Q,EAAKC,MACTi2N,KACEA,GACEl2N,EACJohQ,EAAcphQ,EAAG++N,SAAW/+N,EAAGg/N,SAC/BvsJ,EAASzyE,EAAG6rE,MAAMonB,MAAMmuK,GAExBxZ,EAAS5nP,EAAG4nP,OACd5nP,EAAGwtB,QAAQ,qBAAsB,CAC/BohJ,IAAKg5E,EACL50K,UAAWP,IAGb,GAAIm1K,EAAO5wB,cAAgBygD,EAAqBvhD,EAAKiJ,eAAiB,MAAQs4C,SAA4B,OAAS,EAAIA,EAAmBlwE,UAAW,CACnJ2uB,EAAKu9C,uBAEP7rB,EAAO5wB,UAAYoqC,EAEnBxZ,EAAOjyL,OAAO31D,EAAG6nP,UAAUvyM,QAE3BsyM,EAAO5tO,OAAOonP,EAAa3uL,EAAQ,OAEnCzyE,EAAG++N,WAEH/+N,EAAGmyQ,MAAM1zQ,KAAKuB,EAAGmyQ,MAAMx5M,SACvB,OAAOivL,EAAOvwM,cAKlB46N,GAAWpwM,aAAe,GAC1BowM,GAAW9pQ,OAAS,aAKpB,MAAMuvQ,GAAQ,CACZtzQ,EAAG,GAYL,MAAMuzQ,WAAqBj2J,GACzB9hH,YAAYijH,IACT5iH,KAAK23Q,aAAe33Q,KAAK23Q,WAAa,KAAKn5Q,KAAKokH,GAEnDjjH,WAAW8iH,EAAeC,EAAO+0J,IAC/B,UAAW/0J,IAAS,SAAU,CAC5BA,EAAO,CACL/iH,CAAC+iH,GAAO,GAIZ,GAAIA,EAAKv+G,EAAG,CAGVs+G,EAAc9pG,MAAMi/P,aACpB53Q,KAAK23Q,WAAW34Q,SAAQ,CAAC4jH,EAAUhkH,IAAMgkH,EAASE,WAAWL,EAAck1J,WAAW/4Q,GAAI,OAG5F,GAAI8jH,EAAKl+E,EAAG,CACVtqB,MAAM4oG,WAAWL,EAAe,MAGpC9iH,cAAc8iH,GACZziH,KAAK23Q,WAAW34Q,SAAQ,CAAC4jH,EAAUhkH,KACjC,IAAKgkH,EAAS1mG,YAAa,CACzB0mG,EAASG,cAAcN,EAAck1J,WAAW/4Q,QAGpDsb,MAAM6oG,cAAcN,GAEtB9iH,gBAAgB0tD,GACd,IAAIwqN,EACJ,MAAMC,EAAazqN,IAAc,OAChCwqN,EAAmB73Q,KAAK23Q,cAAgB,MAAQE,SAA0B,OAAS,EAAIA,EAAiB74Q,SAAQ0Q,GAAKA,EAAE29C,UAAYyqN,EAAa,SAAW,kBAC5J93Q,KAAK0hH,OAAOq2J,iBAAiBn5N,UAAU8X,OAAO,iBAAkBohN,GAElEn4Q,eAAe82C,EAAS7pC,GAItB,GAAI6pC,EAAQI,WAAauH,QAAQC,cAAgBr+C,KAAKy2C,QAAQsB,SAAStB,GAAU,CAC/E,IAAK,MAAMuhO,KAAmBh4Q,KAAK23Q,WAAY,CAC7C,GAAIK,EAAgBvhO,QAAQsB,SAAStB,GAAU,CAC7C,OAAOuhO,EAAgB/rI,eAAex1F,EAAS7pC,SAG9C,CACL,OAAOsN,MAAM+xH,eAAex1F,EAAS7pC,IAGzCjN,YAAYsiH,EAAO,KACjB,OAAOA,IAAS,IAAMjiH,KAAKy3C,aAAez3C,KAAKu4C,aAAe,MAEhEp0C,MAAMA,GACJ,GAAInE,KAAK23Q,WAAY,CACnB33Q,KAAK23Q,WAAW,GAAGxzQ,EAAIA,GAG3BA,QAEE,OAAOnE,KAAK23Q,WAAa33Q,KAAK23Q,WAAW,GAAGxzQ,EAAI,GAGpDuzQ,GAAaxvQ,OAAS,eAetB,MAAM+vQ,WAAiBhH,GACrBljQ,mBACE,MAAO,SAGTlB,kBACE,MAAO,aAETsvN,cACE,OAAOn8N,KAAKo8N,SAEdD,YAAYA,GACVn8N,KAAKo8N,SAAWp8N,KAAK2Y,MAAQwjN,EAE/BN,aACE,IAAIiC,EACJ,OAAQA,EAAgB99N,KAAKm8N,WAAa,MAAQ2B,SAAuB,OAAS,EAAIA,EAAcjC,OAEtGl8N,cAAc82C,EAASn+B,GACrB,MAAMujN,OACJA,GACE77N,KAEJA,KAAKme,UAAU,WACf,OAAOjE,MAAMg+P,cAAc,CACzBx5N,UAAW,CACTy5N,yBAA0B,EAC1Bx4Q,CAAC,0BAA0Bk8N,KAAWA,GAExCx0K,SAAU,CAAC,CACT0B,UAAW,iBACXrK,UAAW,CACT05N,iBAAkB,EAClBz4Q,CAAC,kBAAkBk8N,KAAWA,GAEhCnlM,QAAS,CACPmlM,OAAAA,EACA9yK,UAAW,iBACXsvN,SAAUr4Q,KAAKq4Q,aAGlB//P,GAEL8pH,sBACE,OAAOpiI,KAAKs4Q,eAQd34Q,gBAAgBo3M,GACd,MAAMpsM,GACFA,EAAE0rC,MACFA,EAAKisL,UACLA,EAASpzJ,OACTA,EAAMS,SACNA,EAAQ+sJ,gBACRA,EAAe5mN,IACfA,EAAG45D,WACHA,EAAUn5D,MACVA,EAAKqyC,QACLA,EAAOvB,SACPA,EAAQ6K,YACRA,EAAW+jK,KACXA,GACElf,EAEJmoB,EAAcjJ,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKiJ,YAC/DzD,GAAayD,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY53B,aAAe,IAAM43B,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYnoB,UAAYA,EAC5L,GAAIA,EAAOnsJ,UAAW,CACpB,MAAO,CACLlM,UAAW,CACT65N,gBAAiB,EACjBC,uBAAwB7oM,EACxBhwE,CAAC,WAAW+vE,KAAe,EAC3B/vE,CAAC,WAAWo3M,EAAO52L,KAAKrB,SAAU,EAClCnf,CAAC,uBAAuB02C,KAAUA,EAClCoiO,0BAA2Bn2C,GAAapzJ,EACxCvvE,CAACmW,GAAMA,EACP4iQ,gBAAiB3hE,EAAOt5D,YACxBk7H,gBAAiBhpM,GAAY+sJ,EAC7Bk8C,cAAe1pM,GAAUwtJ,GAE3BzqK,KAAMC,EAAc,eAAiB,eACrC8lM,YAAa,OACbl7H,aAAci6E,EAAOn/E,UACrBj4H,CAACuyD,EAAc,WAAa,IAAKupK,EAAY,GAAK,EAClD/kM,QAASh4B,EAAeA,EAAe,GAAI66H,GAAQ6pG,aAAax6K,IAAW,GAAI,CAC7EutK,SAAUxrN,EACVhL,CAAC4W,EAAQ,SAAW,IAAKA,IAE3B8wC,SAAU,CAAC,CACT3I,UAAW,qBACX2I,SAAU,CAAC,CACT1nD,CAACs2N,GAAQ/jK,EAAc,KAAO,IAAK,GAAG+jK,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKtrN,aAAaosM,EAAOpsM,KAC3G+zC,UAAW,gCAEZ2I,EAAW,CACZ3I,UAAW,yBACX2I,SAAUA,EAASx9C,KAAIkkD,GAAS/tD,KAAK64Q,gBAAgB9qN,MACnD,KAAM,CACRrP,UAAW,kCAMnB/+C,6BACE,IAAI25C,EAAW,EACft5C,KAAK+jM,QAAQsyB,eAAer3N,SAAQ+3M,IAClCz9J,GAAYy9J,EAAOknB,uBAErB,OAAO3kL,EAMT35C,kBACEK,KAAK+xQ,gBAEPpyQ,iBACE,MAAMI,EAAKC,KAEXD,EAAGgkM,QAAQ7yH,UAAS6lI,IAClB,MAAMn6D,EAAgB78I,EAAGqxQ,kBAAkBr6D,EAAOpsM,IAClD,GAAIiyI,EAAe,CACjB,IAAIj0F,EAAOouJ,EAAO6lB,WAClB,GAAI7lB,EAAOxS,eAAgB,CACzB57I,EAAOouJ,EAAOxS,eAAe19L,KAAKkwM,EAAOz6L,SAAWvc,EAAI,CACtDg3M,OAAAA,EACAn6D,cAAAA,IAGJ,GAAIm6D,EAAO6jB,gBAAiB,CAC1B38N,OAAO4N,OAAOkrM,EAAO6jB,iBAAiB57N,SAAQ0iH,IAC5CA,EAAO3nG,OAAOg9L,EAAO4lB,gBAGzB,GAAI5lB,EAAOnnF,KAAM,CACfjnE,EAAO,aAAav+C,EAAaY,WAAW+rM,EAAOnnF,eAAiBjnE,GAAQ,IAE9E,MAAMmwN,EAAUl8H,EAAc50I,cAAc,+BAC5C,GAAI8wQ,EAAS,CACXA,EAAQpnN,UAAY/I,GAAQ,QAIlC5oD,EAAGg5Q,kBAELh1E,cACE,MAAMhkM,EAAKC,KACTmM,EAAS+N,MAAM6pL,QACjB,IAAKhkM,EAAGi5Q,gBAAiB,CAGvBj5Q,EAAGi5Q,gBAAkB7sQ,EAAOgjB,GAAG,CAC7BxvB,SACEI,EAAGk5Q,cAEL38P,QAASvc,IAEXA,EAAGk5Q,aAEL,OAAO9sQ,EAET43L,YAAYA,GACV7pL,MAAM6pL,QAAUA,EAMlBpkM,WAAWokM,EAAU/jM,KAAK+jM,QAAQ68B,WAAYtuN,EAAS,MACrD,MAAMvS,EAAKC,KACX,IAAIq4Q,EAAW,EACf,GAAI/lQ,IAAW,MAAQA,SAAgB,GAAKA,EAAO6N,KAAM,CACvD7N,EAAO6N,KAAKrB,QAEd,IAAK,MAAMi4L,KAAUhT,EAAS,CAC5B,MAAM5jL,KACJA,GACE42L,EAEJ52L,EAAKrB,MAAQ,EACb,GAAIi4L,EAAO1vJ,SAAU,CACnBtnD,EAAGk5Q,WAAWliE,EAAO1vJ,SAASjpD,OAAO2B,EAAGgkM,QAAQ7kG,iBAAkB63G,GAClE,GAAI52L,EAAKrB,OAASxM,EAAQ,CACxBA,EAAO6N,KAAKrB,OAASqB,EAAKrB,OAG9B,GAAIqB,EAAKrB,MAAQu5P,EAAU,CACzBA,EAAWl4P,EAAKrB,OAGpB,IAAKxM,EAAQ,CACXvS,EAAGs4Q,SAAWA,EAEhB,OAAOA,EAST14Q,UAAUw2N,GACR,OAAOn2N,KAAKoxQ,kBAAkBj7C,GAGhCx0G,qBACE,OAAO3hH,KAAKy2C,QAAQkd,kBAEtBh0D,iBACE,MAAMI,EAAKC,KACXu6G,GAAQ+K,KAAK,CACXloE,UAAW,CACTiK,SAAUtnD,EAAGgkM,QAAQ68B,WAAW/2N,KAAI42N,GAAO1gO,EAAG84Q,gBAAgBp4C,KAC9Dx3K,aAAc,KACdrvC,OAAQ,KACR03C,YAAa,WACb6qD,iBAAkB,GAEpBv6D,cAAe7hD,EAAG4hH,iBAEpB5hH,EAAG09O,iBAEL99O,SAAQipI,WACNA,IAEA,GAAIA,EAAY,CACd5oI,KAAK4xQ,mBAKXqG,GAASrhM,YACTqhM,GAAS/vQ,OAAS,SAGlB,MAAMgxQ,GAA+B,CACnCtzN,WAAY,sBACZN,UAAW,qBACXC,SAAU,oBACViB,UAAW,qBACXC,SAAU,oBACVL,UAAW,qBACX80F,UAAW,qBACX70F,QAAS,mBACTngD,MAAO,uBACPogD,SAAU,oBACVI,MAAO,iBACPE,SAAU,oBACVL,YAAa,uBACbd,UAAW,sBAab,IAAI0zN,GAAqBjsP,GAAU,MAAMisP,UAA2BjsP,GAAU7R,IAC5EtN,mBACE,MAAO,oBAGTvO,0BACE,MAAO,CAOL0lD,cAAe,IAQfk0N,mBAAoB,KACpBt5M,OAAQ,CACNu5M,SAAU,mBACVC,eAAgB,mBAChBx+G,IAAK,CACHjrJ,QAAS,iBACT4jH,OAAQ,OAgEhB9zH,qBACE,MAAM45Q,EAAgBt7Q,OAAOD,KAAKk7Q,IAChC71P,EAAMk2P,EAAcz6Q,OACpBuuB,EAAY,CACVopB,QAASz2C,KAAK8zJ,YACdx3I,QAAStc,MAIb,IAAK,IAAIpB,EAAI,EAAGA,EAAIykB,EAAKzkB,IAAK,CAC5ByuB,EAAUksP,EAAc36Q,IAAM,cAEhCkiD,GAAY3xB,GAAG9B,GACfyzB,GAAY3xB,GAAG,CACbyuC,QAAS,oBACTnnB,QAASz2C,KAAK8zJ,YACdx3I,QAAStc,KACTw/C,QAAS,OAeb7/C,qBAAqBwwB,GACnB,MAAMpwB,EAAKC,KACTs+N,EAAcnuM,EAAMxxB,OAAOslD,QAAQ,gBAErC,GAAIq6K,EAAa,CACf,MAAM4S,EAAW1gI,GAAa9+F,IAAI4sN,IAChC3zN,GACEA,EAAEwrN,SACFA,GACE+a,EACJ1+J,EAASzyE,EAAG6rE,MAAMiB,QAAQliE,GAC1BosM,EAASh3M,EAAGgkM,QAAQl3H,QAAQspJ,GAG9B,OAAO3jJ,EAAS,CACd8rJ,YAAAA,EACA4S,SAAAA,EACA/a,SAAAA,EACAxrN,GAAAA,EACA6nE,OAAAA,EACAukI,OAAAA,EACAw4B,aAAc,CACZ5kO,GAAAA,EACAwrN,SAAAA,IAEA,MAaRx2N,uBAAuBwwB,GACrB,MAAMysH,EAAgBzsH,EAAMxxB,OAAOslD,QAAQ,kBAE3C,GAAI24F,EAAe,CACjB,MAAM48H,EAAaxoO,GAAa55B,OAAO,GAAIwlI,EAAclmH,UACvDy/L,SACEA,GACEqjD,EACJziE,EAAS/2M,KAAK+jM,QAAQl3H,QAAQspJ,GAChC,OAAOpf,EAAS,CACdn6D,cAAAA,EACA48H,WAAAA,EACArjD,SAAAA,EACApf,OAAAA,GACE,MASRp3M,YAAYwwB,GACV,IAAKnwB,KAAK4/D,UAAYs5M,GAA6B/oP,EAAMtjB,MAAO,CAC9D7M,KAAKk5Q,GAA6B/oP,EAAMtjB,OAAOsjB,IAWnDxwB,oBAAoBwwB,GAClB,MAAMpwB,EAAKC,KACTkxO,EAAWnxO,EAAGoxO,qBAAqBhhN,GACrC8nB,GAAU4O,aAAe,KACzB,GAAI12B,EAAM6wB,QAAQliD,SAAW,EAAG,CAC9BiB,EAAG05Q,iBAAmB15Q,EAAGgd,YAAW,KAClChd,EAAG25Q,mBAAmBvpP,GACtBA,EAAM21B,iBACN/lD,EAAG45Q,mBAAqB,OACvB55Q,EAAGmlD,eAER,GAAIgsL,IAAa/gN,EAAM0nK,iBAAkB,CACvC93L,EAAGkzK,eAAe9iJ,IAStBxwB,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,KACX,GAAID,EAAG05Q,iBAAkB,CACvB15Q,EAAG2nB,aAAa3nB,EAAG05Q,kBACnB15Q,EAAG05Q,iBAAmB,MAS1B95Q,kBAAkBwwB,GAChB,MAAMpwB,EAAKC,KACX,GAAID,EAAG45Q,mBAAoB,CACzB,GAAIxpP,EAAMypP,WAAY,CACpBzpP,EAAM21B,iBAER/lD,EAAG45Q,mBAAqB,MAE1B,GAAI55Q,EAAG05Q,iBAAkB,CACvB15Q,EAAG2nB,aAAa3nB,EAAG05Q,kBACnB15Q,EAAG05Q,iBAAmB,MAG1B95Q,mBAAmBwwB,IAInBxwB,sBAAsB8E,EAAM0rB,EAAO+gN,EAAWlxO,KAAKmxO,qBAAqBhhN,IACtE,MAAMpwB,EAAKC,KAEX,GAAIkxO,EAAU,CACZ,MAAMn6B,EAASh3M,EAAGgkM,QAAQl3H,QAAQqkK,EAAS/a,UACzC0wB,EAAY,CACV5wB,KAAMl2N,EACNyyE,OAAQ0+J,EAAS1+J,OACjBukI,OAAAA,EACAw4B,aAAc2B,EAAS3B,aACvBjR,YAAa4S,EAAS5S,YACtB3/N,OAAQwxB,EAAMxxB,OACdwxB,MAAAA,GAEJpwB,EAAGwtB,QAAQ,OAASnjB,EAAaK,WAAWhG,GAAOoiP,GACnD,GAAIpiP,IAAS,QAAS,CACpB,IAAIo1Q,GACHA,EAAsB9iE,EAAO24B,eAAiB,MAAQmqC,SAA6B,OAAS,EAAIA,EAAoBhzQ,KAAKkwM,EAAQ8vC,KAUxIlnP,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,KACTkxO,EAAWnxO,EAAGoxO,qBAAqBhhN,GACrCpwB,EAAG+5Q,mBAAqB,KAExB,GAAI/5Q,EAAG2wO,sCAAsCvgN,GAAQ,CACnDA,EAAM21B,qBACD,CACL/lD,EAAGg6Q,sBAAsB,YAAa5pP,EAAO+gN,GAE7C,GAAIA,IAAa/gN,EAAM0nK,iBAAkB,CACvC93L,EAAGkzK,eAAe9iJ,KAIxBxwB,uCAAsChB,OACpCA,EAAMwF,EACNA,EAACqgC,EACDA,IAIA,GAAI7lC,EAAOslD,QAAQ,qBAAuBtlD,EAAO2D,QAAQ,iCAAkC,CACzF,OAAO,KAET,GAAI3D,EAAO2D,QAAQ,wBAAyB,CAC1C,MAAMq8H,EAAOhgI,EAAO24C,wBACpB,OAAOnzC,EAAIw6H,EAAKvpF,MAAQ6C,GAAUK,oBAC7B,GAAI35C,EAAO2D,QAAQ,0BAA2B,CACnD,MAAMq8H,EAAOhgI,EAAO24C,wBACpB,OAAO9S,EAAIm6F,EAAKtpF,OAAS4C,GAAUK,eAAiB,GASxD34C,mBAAmBwwB,GAKjBnwB,KAAKg6Q,eAAiB7pP,EAQxBxwB,iBAAiBwwB,IAOjBxwB,mBAAmBwwB,IASnBxwB,qBAAqBwwB,GACnB,GAAInwB,KAAKutB,QAAQ,qBAAsB,CACrC4C,MAAAA,MACK,MAAO,CACZnwB,KAAKi6Q,eAAe9pP,IAWxBxwB,eAAewwB,GACb,MAAMpwB,EAAKC,KACTkxO,EAAWnxO,EAAGoxO,qBAAqBhhN,GAErC,GAAI+gN,EAAU,CACZnxO,EAAGg6Q,sBAAsB,QAAS5pP,EAAO+gN,GACzC,MAAMviE,EAAMn+D,GAAa9+F,IAAIw/N,EAAS5S,aAAa3vD,IAInD,IAAKA,EAAIzyJ,YAAa,CACpByyJ,EAAI+P,UAAU,aAIpB/+K,eAAewwB,GACb,MAAMpwB,EAAKC,KACTk6Q,EAAgB/pP,EAAM+yH,SAAW,EAEjCi3H,GAAkBD,GAAiB/pP,EAAMxxB,OAAO2D,QAAQ,8CAGxD83Q,GAAyBj5Q,SAASk5Q,YAAc36Q,EAAcqD,OAASm3Q,EAEzE,GAAIC,GAAkBC,EAAuB,CAC3CjqP,EAAM21B,qBACD,CACL,IAAIw0N,EAIJv6Q,EAAGwxK,gBAAkBphJ,EAIrB,GAAI+pP,IAAkBI,EAAkBv6Q,EAAGm/N,eAAiB,MAAQo7C,SAAyB,GAAKA,EAAgB5uJ,OAAO,IAAIqqG,GAAS5lM,EAAMxxB,SAAU,CACpJoB,EAAGgvO,UAAU,IAAIhZ,GAAS5lM,EAAMxxB,WAYtCgB,kBAAkBwwB,GAChB,MAAMxxB,OACJA,GACEwxB,EACJnwB,KAAK+5Q,sBAAsB,WAAY5pP,GACvC,GAAIxxB,EAAOigD,UAAU7G,SAAS,+BAAgC,CAC5D,MAAM6nG,EAASjhJ,EAAOslD,QAAQ,kBAC5B8yJ,EAAS/2M,KAAK+jM,QAAQl3H,QAAQ+yE,EAAOlpH,QAAQy/L,UAC/Cpf,EAAOgxB,sBAUXpoO,mBAAmBwwB,GAEjB,IAAKnwB,KAAKulL,UAAW,CACnB,MAAM+4C,EAAcnuM,EAAMxxB,OAAOslD,QAAQ,gBACzC,GAAIq6K,EAAa,CACf,MAAM3vD,EAAMn+D,GAAa9+F,IAAI4sN,GAAa3vD,IAG1C,GAAIA,WAAex+I,EAAMkrH,UAAY,UAAYlrH,EAAMkrH,UAAY,GAAI,CACrEr7I,KAAKu6Q,cAAc5rG,GAErB3uK,KAAK+5Q,sBAAsB,YAAa5pP,GAO1CnwB,KAAKutB,QAAQ,YAAa,CACxB4C,MAAAA,KAWNxwB,kBAAkBwwB,GAChBnwB,KAAKu6Q,cAAc,MAEnB,IAAKv6Q,KAAKulL,UAAW,CACnB,MAAM+4C,EAAcnuM,EAAMxxB,OAAOslD,QAAQ,gBACzC,GAAIq6K,EAAa,CACft+N,KAAK+5Q,sBAAsB,WAAY5pP,GAOzCnwB,KAAKutB,QAAQ,WAAY,CACvB4C,MAAAA,KAKNxwB,cAAcgvK,GACZ,MAAM5uK,EAAKC,KAEX,GAAID,EAAGy6Q,cAAgBz6Q,EAAGy6Q,YAAYt+P,YAAa,CACjDnc,EAAGy6Q,YAAY97F,UAAU,WACzB3+K,EAAGy6Q,YAAc,KAGnB,GAAI7rG,IAAQ5uK,EAAGwlL,UAAW,CACxBxlL,EAAGy6Q,YAAc7rG,EACjBA,EAAIsgE,OAAO,YAMftvO,gBAAgBwwB,GACdnwB,KAAKy6Q,iBAAiBtqP,GACtBjW,MAAMwgQ,gBAAgBvqP,GAQxBxwB,iBAAiBwwB,GAEf,GAAIA,EAAM+hG,QAAS,CACjB,OAEF,MAAMnyH,EAAKC,KAETk/N,EAAcn/N,EAAGm/N,YACnB,GAAIA,IAAgB,MAAQA,SAAqB,GAAKA,EAAYlG,SAAWkG,EAAYpG,aAAc,CACrG,IAAI6hD,EAAuBC,EAC3B,MAAMt8C,EAAcY,EAAY/3B,MAE/BwzE,GAAyBC,EAAsB76Q,EAAGgkM,QAAQl3H,QAAQyxJ,EAAY5nM,QAAQy/L,WAAW0kD,iBAAmB,MAAQF,SAA+B,OAAS,EAAIA,EAAsB9zQ,KAAK+zQ,EAAqB,CACvNzqP,MAAAA,EACAmuM,YAAAA,KAIN3+N,iBAAiBwwB,GACf,IAAI2qP,EACJ,MAAMnvM,IACJA,GACE3rE,KAAK4rE,MACT,GAAID,GAAO3rE,KAAKo5Q,uBAAyB0B,EAAwB96Q,KAAK+xH,SAASq0G,YAAc,MAAQ00C,SAA+B,GAAKA,EAAsBz/C,WAAY,CACzK1vJ,EAAIovM,eAAe5qP,GACnB,OAAO,KAET,OAAO,MAGTxwB,eAAewwB,GACb,MAAMpwB,EAAKC,KAETk/N,EAAcn/N,EAAGm/N,YACjBZ,EAAcY,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY/3B,KACpF4P,EAASh3M,EAAGgkM,QAAQl3H,QAAQyxJ,EAAY5nM,QAAQy/L,UAClD,GAAI+I,IAAgB,MAAQA,SAAqB,GAAKA,EAAYlG,SAAWkG,EAAYpG,aAAc,CACrG,GAAI/hB,EAAO24B,YAAa,CACtB34B,EAAO24B,YAAY,CACjBzZ,KAAMl2N,EACNg3M,OAAAA,EACAvkI,OAAQzyE,EAAG6rE,MAAMiB,QAAQqyJ,EAAYv0N,IACrC2zN,YAAAA,EACA3/N,OAAQwxB,EAAMxxB,OACdwxB,MAAAA,IAEF,OAAO,MAGX,OAAO,MAQTxwB,kBAAkBwwB,IAOlBxwB,eAAewwB,IAUfxwB,qBAAqBwwB,GACnB,MAAMpwB,EAAKC,KACTkxO,EAAWnxO,EAAGoxO,qBAAqBhhN,GAErC,GAAI+gN,EAAU,CACZnxO,EAAGg6Q,sBAAsB,cAAe5pP,EAAO+gN,GAG/C,GAAIj5L,GAAU4O,aAAc,CAC1B9mD,EAAGkzK,eAAe9iJ,KAexBxwB,iBAAiB82C,EAASvvC,EAAOD,EAAQomI,EAAUC,GACjD,MAAMvtI,EAAKC,KACX,GAAID,EAAGi7Q,mBAAqBj7Q,EAAGi7Q,oBAAsB54Q,WAAWy2C,iBAAkB,CAEhFZ,GAAUgjO,sBAEZl7Q,EAAGi7Q,kBAAoB54Q,WAAWy2C,iBAElC94C,EAAG60P,eAAiBr+M,GAAUspB,OAAO9/D,EAAG8wO,eACxC32N,MAAMyzH,oBAAoB9uI,WAC1B,GAAIoI,IAAWqmI,EAAW,CACxBvtI,EAAGm7Q,YAAcn7Q,EAAG8wO,cAAcz5L,aAClC,GAAIr3C,EAAG8oI,UAAW,CAGhB9oI,EAAG82N,WAAWskD,eAAep7Q,EAAGm7Q,cAGpCn7Q,EAAGq7Q,2BACH,GAAIl0Q,IAAUmmI,EAAU,CAEtBttI,EAAGgd,YAAW,KACZ,IAAKhd,EAAGmc,YAAa,CACnBnc,EAAGs7Q,iBAAiBn0Q,EAAOmmI,MAE5B,IAOP7qE,qBAMF,MAAM84M,GAAmB,CACvBjxQ,OAAQ,EACRvM,OAAQ,EACRi8G,SAAU,GAqFZ,IAAIwhK,GAAgBruP,GAAU,MAAMquP,UAAsBruP,GAAU7R,IAClEtN,mBACE,MAAO,eA+BTgkH,aAAaA,GACX,MAAMhyH,EAAKC,KACTw7Q,EAAkBrwC,GAAmBswC,2BAA2Bz7Q,MAClE+xH,EAAWhyH,EAAG27Q,UAAY1qO,GAAa55B,OAAO,GAAI26G,GAElD,GAAIypJ,EAAiB,CACnBv9Q,OAAOD,KAAKw9Q,GAAiBx8Q,SAAQg9J,IACnC,KAAMA,KAAWjqC,GAAW,CAC1BA,EAASiqC,GAAW,SAM1B,MAAM2/G,EAA6BxwC,GAAmBywC,oBAAoB57Q,MAC1E,IAAK,MAAM67Q,KAAe59Q,OAAOD,KAAK+zH,GAAW,CAC/C,MAAM55G,EAAS45G,EAAS8pJ,GAGxB,GAAI1jQ,EAAQ,CACV,MAAM2jQ,GAAgB15Q,WAAW25Q,8BAEjC,GAAI3xQ,EAAa41D,aAAa67M,KAAiBA,EAAa,CAC1D,MAAMG,EAAe,yBAAyBH,yCAC9C,GAAIC,EAAc,CAChB,MAAM,IAAIprQ,MAAMsrQ,GAElBpnQ,QAAQogB,MAAMgnP,GACdj8Q,EAAGk8Q,0BAA4BD,EAEjC,MAAMp6M,EAAe+5M,EAA2BE,GAChD,IAAKj6M,EAAc,CACjB,MAAMo6M,EAAe,YAAYH,mDACjC,GAAIC,EAAc,CAChB,MAAM,IAAIprQ,MAAMsrQ,GAElBpnQ,QAAQogB,MAAMgnP,GACdj8Q,EAAGk8Q,0BAA4BD,EAC/B,OAMF5mQ,QAAQ/V,eAAe0yH,EAAU8pJ,EAAa97Q,EAAGm8Q,yBAAyBnqJ,EAAU8pJ,EAAaj6M,EAAczpD,MAIrH45G,eACE,OAAO/xH,KAAK07Q,UAEd/7Q,yBAAyBoyH,EAAU8pJ,EAAaj6M,EAAczpD,GAC5D,MAAMgkQ,EAAkB,CAACn8Q,MACvBwb,EAAYomD,EAAa/zD,UAAU2N,UAGrC,GAAIrD,IAAW,KAAM,CACnBA,EAAS,GAIX,GAAImjQ,UAAwBnjQ,GAAS,CACnCgkQ,EAAgB,GAAKhkQ,EAEvB,MAAO,CACL3Y,aAAc,KACdG,aAESoyH,EAAS8pJ,GAGhBj6M,EAAa/zD,UAAU2N,UAAY,YAAaD,GAC9Cw2G,EAAS8pJ,GAAe77Q,KACxBwb,EAAU/c,MAAMuB,KAAMub,GACtBqmD,EAAa/zD,UAAU2N,UAAYA,GAGrC,OAAO,IAAIomD,KAAgBu6M,KAYjCx8Q,WAAW8E,GACT,MAAMstH,SACJA,GACE/xH,KACJ,GAAI+xH,EAAU,CACZ,MAAMqqJ,EAAcn+Q,OAAOK,yBAAyB0B,KAAK+xH,SAAUttH,GACnE,GAAI23Q,EAAa,CAEf,OAAOl8Q,QAAQk8Q,EAAY78Q,OAAS68Q,EAAY1qQ,MAGpD,OAAO,MAET/R,iBAAiB8E,GACf,IAAI43Q,EAAgBC,EACpB,OAAOp8Q,UAAUm8Q,EAAiBr8Q,KAAK+xH,YAAc,MAAQsqJ,SAAwB,OAAS,EAAIA,EAAe53Q,QAAa63Q,EAAkBt8Q,KAAK+xH,YAAc,MAAQuqJ,SAAyB,GAAKA,EAAgB73Q,GAAMm7D,WAMjOjgE,eAAe8E,EAAMmI,GACnB,GAAInI,IAAS,WAAY,CACvB,MAAM0H,EAAS,GACf,IAAK,MAAM6vJ,KAAWh8J,KAAK+xH,SAAU,CACnC,IAAIwqJ,EAAuBC,EAAwBC,EAEnD,MAAMC,GAAiBH,EAAwBv8Q,KAAK+xH,SAASiqC,MAAc,MAAQugH,SAA+B,OAAS,GAAKC,GAA0BC,EAAyBF,GAAuB99P,oBAAsB,MAAQ+9P,SAAgC,OAAS,EAAIA,EAAuB31Q,KAAK41Q,EAAwB7vQ,GACzU,GAAI8vQ,EAAe,CAEjB,GAAI1rO,GAAagN,QAAQ0+N,GAAgB,CAEvC,IAAKvxC,GAAmBwxC,4BAA4B38Q,KAAK+xH,SAASiqC,GAAS3rJ,YAAarQ,MAAO,CAC7FmM,EAAO6vJ,GAAW,UAEf,CACL7vJ,EAAO6vJ,GAAW0gH,OAEf,CACLvwQ,EAAO6vJ,GAAW,OAGtB,OAAO7vJ,EAET,OAAO+N,MAAM+E,eAAexa,EAAMmI,GAMpC41D,qBAMF,MAAMo6M,GAAsB3+Q,OAAOmR,OAAO,IACxCytQ,GAAmB5+Q,OAAOmR,OAAO,CAC/BjL,EAAG,MACHqgC,EAAG,QAELs4O,GAAqB,SAAU94Q,GAG7B,IAAKhE,KAAK64N,oBAAoB9gL,SAAS/zC,GAAI,CACzC,OAAOi0C,GAAUkkB,WAAW4gN,cAE9B,GAAI9kO,GAAUia,YAAYluD,KAAOA,EAAE47D,SAAU,CAC3C,OAAO3nB,GAAUkkB,WAAWkyF,cAE9B,OAAOp2G,GAAUkkB,WAAWmyF,aAShC,IAAI0uH,GAAkB9vP,GAAU,MAAM8vP,UAAwB9vP,GAAU7R,IACtEtN,mBACE,MAAO,iBAETvO,0BACE,MAAO,CACLmwJ,UAAW,MACXumE,kBAAmB,wCAEnBp2J,OAAQ,CACN+3F,QAAS,CACPhoJ,QAAS,kBACT4jH,OAAQ,IAEVskC,WAAY,CACVloJ,QAAS,qBACT4jH,OAAQ,IAEVqkC,UAAW,CACTjoJ,QAAS,oBACT4jH,OAAQ,IAEVukC,UAAW,CACTnoJ,QAAS,oBACT4jH,OAAQ,IAKVwpJ,gBAAiB,kBACjBC,kBAAmB,oBACnBC,YAAa,oBACbC,KAAM,sBACNC,WAAY,mBACZC,IAAK,qBACLC,OAAQ,mBACRC,SAAU,mBACVvlH,MAAO,iBAEPC,OAAQ,WACRulH,YAAa,CACX5tQ,QAAS,aACTi2C,eAAgB,OAElBkkK,IAAK,CACHn6M,QAAS,QACTi2C,eAAgB,OAElBg1G,IAAK,CACHjrJ,QAAS,UACTi2C,eAAgB,SAKxBnmD,sBAAsBwwB,GACpB,IAAIutP,GACHA,EAAwBxjQ,MAAMyjQ,yBAA2B,MAAQD,SAA+B,OAAS,EAAIA,EAAsB72Q,KAAK7G,KAAMmwB,GAC/I,MAAM+uM,YACFA,GACEl/N,MACJ6Z,SACEA,EAAQta,MACRA,GACE4wB,EAEN,GAAI+uM,GAAeA,EAAYv0N,KAAOkP,EAAU,CAC9CqlN,EAAY72I,IAAM9oF,GAGtBI,mBAAmBwwB,GAIjBnwB,KAAKsxP,mBAAqBnhO,EAC1BjW,MAAM0jQ,mBAAmBztP,GAQ3BxwB,uBACE,MAAMI,EAAKC,MACTk/N,YACEA,GACEn/N,EACN,IAAKm/N,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYv0N,KAAO,MAAQu0N,EAAY/3B,KAAM,CAC1G,MAAM7zB,EAAW4rD,EAAY/3B,KAAKpvJ,SAASE,GAAUwmB,iBAAiB1+D,IACtE,GAAIA,EAAG02N,YAAa,CAClB,GAAInjD,EAAU,CACZvzK,EAAG85H,mBAEA,CACL,MAAMgkJ,EAAgB99Q,EAAG0uO,qBAAqB,CAC5CnnC,UAAW,EACX9jB,YAAalQ,EAAW4rD,EAAY17C,YAAc,IAGpD,GAAIlQ,EAAU,CACZvzK,EAAGgvO,UAAU8uC,OACR,CACLA,EAAc12E,KAAKn3C,SAAW,GAGlCkvE,EAAY/3B,KAAKn3C,UAAY,GAGjCrwJ,gBAAgBqyH,GACdhyH,KAAKuxK,gBAAkBv/C,EACvBhyH,KAAK+uO,UAAUhZ,GAAS+B,IAE1Bn4N,kBAAkBqyH,GAChBhyH,KAAKuxK,gBAAkBv/C,EACvBhyH,KAAK+uO,UAAUhZ,GAASgC,MAE1Bp4N,kBAAkBqyH,GAChBhyH,KAAKuxK,gBAAkBv/C,EACvBhyH,KAAK+uO,UAAU/uO,KAAKy1C,IAAMsgL,GAAS8B,UAAY9B,GAAS6B,WAE1Dj4N,mBAAmBqyH,GACjBhyH,KAAKuxK,gBAAkBv/C,EACvBhyH,KAAK+uO,UAAU/uO,KAAKy1C,IAAMsgL,GAAS6B,UAAY7B,GAAS8B,WAE1Dl4N,kBAAkBqyH,GAChBhyH,KAAKuxK,gBAAkBv/C,EACvBhyH,KAAK+uO,UAAUhZ,GAASoC,YAE1Bx4N,oBAAoBqyH,GAClBhyH,KAAKuxK,gBAAkBv/C,EACvBhyH,KAAK+uO,UAAUhZ,GAASkC,cAE1Bt4N,iBAAiBqyH,GACfhyH,KAAKuxK,gBAAkBv/C,EACvBhyH,KAAK+uO,UAAUhZ,GAASqC,WAE1Bz4N,mBAAmBqyH,GACjBhyH,KAAKuxK,gBAAkBv/C,EACvBhyH,KAAK+uO,UAAUhZ,GAASmC,aAE1Bv4N,iBAAiBqyH,GACfhyH,KAAKuxK,gBAAkBv/C,EACvBhyH,KAAK+uO,UAAUhZ,GAASsC,WAE1B14N,iBAAiBqyH,GACfhyH,KAAKuxK,gBAAkBv/C,EACvBhyH,KAAK+uO,UAAUhZ,GAASuC,WAE1B34N,eAAeqyH,GACbhyH,KAAKuxK,gBAAkBv/C,EACvB,GAAIA,EAASrzH,OAAOigD,UAAU7G,SAAS,kBAAoB/3C,KAAKk/N,YAAYnG,eAAgB,CAC1F,IAAI+kD,EACJ,MAAM/mE,OACJA,GACE/2M,KAAKk/N,aACR4+C,EAAoB/mE,EAAO7U,aAAe,MAAQ47E,SAA2B,OAAS,EAAIA,EAAkBj3Q,KAAKkwM,EAAQ/kF,GAC1HhyH,KAAKw8N,iBAAiBzlB,EAAOpsM,IAAIzE,QAEnC,OAAO,MAETvG,SAASqyH,GACP,MAAMktG,YACJA,GACEl/N,KACJA,KAAKuxK,gBAAkBv/C,EACvB,IAAKA,EAASrzH,OAAOslD,QAAQ,gBAAkBi7K,IAAgB,MAAQA,SAAqB,GAAKA,EAAYpG,aAAc,CAGzH9mG,EAASt0D,2BAET19D,KAAKo/N,aAAe,KAEpBp/N,KAAK+uO,UAAU,CACbznC,SAAU43B,EAAY53B,SACtByP,OAAQmoB,EAAYnoB,QACnB,CACDgnE,kBAAmB,QAIzBp+Q,MAAMqyH,GACJ,MAAMrzH,OACFA,GACEqzH,GACJktG,YACEA,EAAWprE,YACXA,GACE9zJ,MACJ84N,aACEA,EAAYxC,cACZA,GACE4I,EACJ9jE,EAAa09D,GAAgB7gL,GAAUmjH,WAAWz8J,KAAYA,EAAOk6E,SACvE74E,KAAKuxK,gBAAkBv/C,EAEvB,GAAIopC,GAAcz8J,IAAW23N,EAAcA,EAAcx3N,OAAS,GAAI,CACpEkzH,EAASlsE,iBACT9lD,KAAKg+Q,mBAAmBhsJ,QAIrB,IAAK8mG,GAAgBn6N,IAAW23N,EAAcA,EAAcx3N,OAAS,GAAI,CAC5Eg1J,EAAYzyJ,MAAME,QAAU,OAC5BvB,KAAK8oB,uBAAsB,IAAMgrI,EAAYzyJ,MAAME,QAAU,KAE7D,OAAO,OAGX5B,WAAWqyH,GACT,MAAMjyH,EAAKC,MACTrB,OACEA,GACEqzH,GACJktG,YACEA,EAAWprE,YACXA,GACE/zJ,GACJonM,KACEA,EAAI2xB,aACJA,EAAYxC,cACZA,GACE4I,EACJ9jE,EAAa09D,GAAgB7gL,GAAUmjH,WAAWz8J,KAAYA,EAAOk6E,SACrEolM,EAAc/+C,EAAY17C,cAAgB,GAAK07C,EAAY53B,YAAcvnM,EAAG02N,YAAc,GAAK,GACjG12N,EAAGwxK,gBAAkBv/C,EAErB,IAAKisJ,GAAe7iH,GAAcz8J,IAAW23N,EAAc,GAAI,CAC7DtkG,EAASlsE,iBACT/lD,EAAGm+Q,kBAAkBlsJ,QAGlB,IAAK8mG,GAAgBn6N,IAAW23N,EAAc,GAAI,CAErD,MAAMnuM,GAAK81P,IAAgBl+Q,EAAG02N,aAAe12N,EAAGgvO,UAAU,CACxDznC,UAAW,EACXyP,OAAQ,GACP,CACDgnE,kBAAmB,OAGrB,GAAI51P,EAAG,CACLA,EAAEg/K,KAAKn3C,UAAY,EACnBm3C,EAAKn3C,SAAW,EAChBjwJ,EAAGq/N,aAAeF,MAGf,CACHprE,EAAYzyJ,MAAME,QAAU,OAC5BxB,EAAG+oB,uBAAsB,IAAMgrI,EAAYzyJ,MAAME,QAAU,KAG7D,OAAO,OAGX5B,QAAQqyH,GAEN,IAAKhyH,KAAKk/N,YAAYpG,aAAc,CAClC9mG,EAASlsE,iBAGX,OAAO,MAgBTo5K,kBACE,OAAOl/N,KAAKo/N,aAOd++C,2BACE,IAAIC,EACJ,OAAQA,EAAqBp+Q,KAAKo/N,gBAAkB,MAAQg/C,SAA4B,OAAS,EAAIA,EAAmBtlD,aAE1HoG,gBAAgBqQ,GACdvvO,KAAK+uO,UAAUQ,GAEjB8uC,oBACE,IAAIC,EACJ,OAAQA,EAAsBt+Q,KAAKo/N,gBAAkB,MAAQk/C,SAA6B,OAAS,EAAIA,EAAoB9rM,OAO7H+rM,sBACE,MAAMp3E,EAAOnnM,KAAKo/N,aAClB,OAAOj4B,EAAO,eAAeA,EAAKG,6BAA6BH,EAAKgvB,YAAc,GAEpFx2N,YACEua,MAAMwvH,aAAa7qI,WAEnBmB,KAAKkrP,gBAAkBlrP,KAAKg6Q,eAAiB,KAO/Cr6Q,UAAU4vO,GACR,IAAIivC,EACJ,OAAOt+Q,SAASs+Q,EAAsBx+Q,KAAKo/N,gBAAkB,MAAQo/C,SAA6B,OAAS,EAAIA,EAAoB9yJ,OAAO1rH,KAAKyuO,qBAAqBc,KAEtKxwK,mBACE,IAAK/+D,KAAKmZ,aAAc,CACtB,IAAI41N,EAEJ,GAAI/uO,KAAK4rE,MAAM5nD,OAAShkB,KAAKo/N,aAAc,CACzC2P,EAAY/uO,KAAKo/N,aAAazgO,WAG3B,CACH,IAAI8/Q,EACJ1vC,EAAY/uO,KAAKyuO,qBAAqB,CACpCnnC,UAAW,EACX9jB,cAAei7F,EAAsBz+Q,KAAKo/N,gBAAkB,MAAQq/C,SAA6B,OAAS,EAAIA,EAAoBj7F,cAAgB,IACjJ7kL,OAEL,MAAM+/Q,EAAexkQ,MAAM6kD,aAI3B,GAAI2/M,KAAkB3vC,GAAaA,EAAU3wK,wBAAwBsgN,KAAkB5nO,KAAK6nO,6BAA8B,CACxH,OAAOD,EAET,OAAO3vC,GAGXpvO,SAAQipI,WACNA,IAEA,IAAIgN,EACJ,MAAM71I,EAAKC,MACV41I,EAAiB17H,MAAM27H,WAAa,MAAQD,SAAwB,OAAS,EAAIA,EAAe/uI,KAAK7G,QAASnB,WAG/G,MAAM+zI,EAAe5yI,KAAKyuO,qBAAqB,CAC7CnnC,SAAUvnM,EAAG02N,YAAc,GAAK,EAChC1f,OAAQh3M,EAAG02N,YAAc,EAAI12N,EAAGgkM,QAAQhzK,MAAK0vM,GAAOA,EAAIvuK,gBAE1D,GAAI0gF,EAAau0D,KAAM,CACrBpnM,EAAGq/N,aAAexsF,EAClB,MAAMj0I,OACJA,GACEi0I,EAEJ,GAAIj0I,IAAWi0I,EAAau0D,KAAM,CAChCv0D,EAAau0D,KAAKn3C,SAAW,IASnCrwJ,kBAAkBi/Q,GAChB,MAAM7+Q,EAAKC,MACT8zJ,YACEA,EAAWw9F,mBACXA,EAAkB//E,gBAClBA,GACExxK,EACJowB,EAAQohJ,GAAmBqtG,EAC3B1zB,EAAkBnrP,EAAGm/N,YACrBp7K,EAAaonM,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBvsP,QAC/FA,OACEA,EAAM0kD,cACNA,GACEu7N,EACJC,EAAalgR,EAAOslD,QAAQlkD,EAAGm2N,mBACjCn2N,EAAGwxK,gBAAkBxxK,EAAGuxP,mBAAqB,KAE7C,GAAIutB,EAAY,CACd,IAAIC,EACJ,MAAMvvC,EAAe,IAAIxZ,GAASp3N,IAChCwoM,KACEA,GACEooC,EACJwvC,EAAW7zB,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgB/jD,KAC7FmvB,EAAgBiZ,EAAajZ,cAAgBv2N,EAAGi/Q,eAAeH,GAE/D7tC,GAAY9wO,QAAQqxK,IAAoBxxK,EAAGk/Q,gBAAkBtgR,IAAWwoM,EAG1E,IAAKpnM,EAAG6rE,MAAMiB,QAAQgyM,EAAWp0N,WAAW/zB,QAAQ/rB,KAAOw8L,IAAS03E,EAAY,CAC9E13E,EAAKryI,MAAM,CACTC,cAAe,OAEjB,OAEF,GAAIp2D,EAAO2D,QAAQvC,EAAGm2N,mBAAoB,CACxC,GAAIn2N,EAAGg+Q,kBAAmB,CACxBxuC,EAAapwK,QAAUgoI,OAGpB,GAAImvB,EAAcx3N,OAAQ,CAC7BiB,EAAGwxK,gBAAkBphJ,EACrBmmM,EAAc,GAAGxhK,QACjB,YAEG,CAGL,GAAIo2L,IAAoB,MAAQA,SAAyB,GAAKA,EAAgBvsP,QAAU0kD,KAAmBiuM,IAAuBx9F,EAAY/7G,SAASu5M,EAAmB3yP,WAAam1J,EAAY/7G,SAASsL,KAAmBksL,EAAa7jH,OAAOw/H,GAAkB,CACnQpnM,EAAWgR,QACX,OAEFy6K,EAAapwK,QAAUxgE,EAEzB,GAAIogR,EAAU,CACZA,EAASngO,UAAU98C,OAAO,aAC1Bi9Q,EAAS/uH,UAAY,EAEvB,GAAIm3C,EAAM,CACRA,EAAKvoJ,UAAU7/B,IAAI,aAEnBwwN,EAAax4B,OAAOmoE,YAAY3vC,GAEhC,GAAIpoC,IAASxoM,EAAQ,CACnBwoM,EAAKn3C,SAAW,EAGlB,GAAIm3C,EAAKpvJ,SAAS6mO,EAAWv7N,eAAgB,CAC3C,GAAIS,IAAenlD,EAAQ,CACzB,SAKNoB,EAAGq/N,aAAemQ,GACjBuvC,EAAqB/+Q,EAAGo/Q,kBAAoB,MAAQL,SAA4B,OAAS,EAAIA,EAAmBj4Q,KAAK9G,EAAIA,EAAImrP,EAAiB3b,EAAcp/M,EAAO6gN,GACpKjxO,EAAGwtB,QAAQ,WAAY,CACrB29N,gBAAAA,EACAhsB,YAAaqQ,EACbp/M,MAAAA,QAMC,CACH2zB,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWgR,SAGvEn1D,eAAewnM,GACb,MAAMyxB,gBACFA,GACE54N,KACJmM,EAAS,GACXysN,EAAgBhlE,YAAc5zJ,KAAK64N,oBAAsB1xB,EACzD,IAAK,IAAIx3C,EAAYipE,EAAgBv8G,WAAYszC,EAAWA,EAAYipE,EAAgBv8G,WAAY,CAClGlwG,EAAO3N,KAAKmxJ,GAEd,OAAOxjJ,EAETysN,sBACE,MAAM74N,EAAKC,KACX,IAAKD,EAAGq/Q,iBAAkB,CACxBr/Q,EAAGq/Q,iBAAmBr/Q,EAAGyzJ,gBAAgBzzJ,EAAG+zJ,YAAa77G,GAAUkkB,WAAWs3F,aAAc,CAC1FrF,WAAY0uH,GAAmB9nQ,KAAKjV,KAGxC,OAAOA,EAAGq/Q,iBAQZz/Q,kBAAkBgS,EAAO3R,KAAKo/N,cAC5B,GAAIp/N,KAAK62N,WAAW7yM,MAAO,CAEzB,IAAK9P,MAAMvC,GAAO,CAChBA,EAAO3R,KAAK4rE,MAAMonB,MAAMrhF,QAGrB,IAAKA,EAAK88D,QAAS,CACtB98D,EAAO3R,KAAK4rE,MAAMiB,QAAQl7D,GAE5B,OAAO3R,KAAK+uO,UAAUp9N,IAa1BhS,UAAU4vO,EAAc3iO,EAAUgwQ,IAChC,IAAIyC,EAAeC,EACnB,MAAMv/Q,EAAKC,MACTo/N,aACEA,GACEr/N,GACJghH,OACEA,EAAMiwH,SACNA,EAAQ+sC,kBACRA,GACEnxQ,EAEN,KAAMyyQ,EAAgB9vC,KAAkB,MAAQ8vC,SAAuB,OAAS,EAAIA,EAAc/3E,aAAe,GAAKvnM,EAAG02N,YAAa,CACpI12N,EAAG85H,cACH,OAKF01G,SAAsBA,IAAiB,UAAYnQ,IAAiB,MAAQA,SAAsB,GAAKA,EAAapJ,WAAaoJ,EAAa9rI,KAAKi8I,GAAgBxvO,EAAG0uO,qBAAqBc,GAE3L,GAAIA,EAAa7jH,OAAO0zG,GAAe,CACrC,IAAImgD,GACHA,EAAsBx/Q,EAAGo/Q,kBAAoB,MAAQI,SAA6B,OAAS,EAAIA,EAAoB14Q,KAAK9G,EAAIA,EAAIq/N,EAAcmQ,EAAcxvO,EAAGwxK,gBAAiB,aAAc3kK,EAAUokO,EAAW,MACpN,OAAO5R,EAET,MAAMjD,EAAUp8N,EAAGu8N,qBAAqBiT,EAAapZ,WACnDhvB,KACEA,GACEooC,EACJiwC,EAAWr4E,GAAQpnM,EAAGgnM,QAAQ,CAC5BO,SAAUvnM,EAAG82N,WAAWiI,SACxB3I,SAAUoZ,EAAapZ,WAEzBspD,EAAclpO,GAAUvxB,KAAKm3M,EAAQ1lL,SACrCipO,EAAWnpO,GAAUvxB,KAAKjlB,EAAG+zJ,aAC7B6rH,EAAWppO,GAAUvxB,KAAKw6P,GAAU5jO,OAAO,KAAM6jO,EAAYj7O,GAE/D,GAAIu8E,IAAW,OAASwuH,EAAajoC,YAAc,EAAG,CACpD16L,EAAU3O,OAAOmZ,OAAO,GAAIxK,EAASiwQ,QAChC,CACLjwQ,EAAU3O,OAAOmZ,OAAO,GAAIxK,EAASm0G,GAErC,GAAI4+J,EAASz4Q,MAAQu4Q,EAAYv4Q,OAASy4Q,EAAS14Q,OAASy4Q,EAASz4Q,OAAQ,CAC3E2F,EAAQzI,EAAIyI,EAAQ43B,EAAI,UAGrB,CACH53B,EAAQmqM,OAASw4B,EAAapZ,SAEhCp2N,EAAGgzP,kBAAkBxjB,EAAa5kO,GAAIiC,GAGxC7M,EAAGg+Q,kBAAoBA,EAEvBh+Q,EAAGk/Q,cAAgBjuC,GAGlBsuC,EAAiB/vC,EAAawuC,EAAoB,OAAS,aAAe,MAAQuB,SAAwB,OAAS,EAAIA,EAAexqN,QACvI/0D,EAAGg+Q,kBAAoBh+Q,EAAGk/Q,cAAgB,MAC1C,OAAO1vC,EAET5vO,SAAS4vO,GACP,MAAMxvO,EAAKC,KACTmnM,EAAOpnM,EAAGgnM,QAAQwoC,GACpB,GAAIpoC,EAAM,CACRA,EAAKvoJ,UAAU98C,OAAO,cAG1BnC,WAAWigR,GACT,MAAM7/Q,EAAKC,KACX,GAAID,EAAGq/N,aAAc,CAEnBr/N,EAAGmrP,gBAAkB00B,EAAY,KAAO7/Q,EAAGq/N,aAC3Cr/N,EAAG8/Q,SAAS9/Q,EAAGq/N,cACfr/N,EAAGq/N,aAAe,MAUtBz/N,qBAAqB4lB,EAAO,KAAM4K,GAChC,MAAMpwB,EAAKC,KACTuvO,EAAexvO,EAAGq/N,aACpB,GAAImQ,EAAc,CAChBxvO,EAAGwxK,gBAAkBphJ,EACrB,OAAOpwB,EAAGgvO,UAAU,CAClBpkO,GAAI4kO,EAAa5kO,GACjBwrN,SAAUp2N,EAAGgkM,QAAQs7B,6BAA6BkQ,EAAapZ,SAAU5wM,EAAM,MAAM5a,IACpF,CACDqmO,SAAU,KACV7gN,MAAAA,IAGJ,OAAO,KAOTxwB,cAAcwwB,GACZ,OAAOnwB,KAAK8/Q,sBAAsB9/Q,KAAKy1C,IAAKtlB,GAO9CxwB,aAAawwB,GACX,OAAOnwB,KAAK8/Q,qBAAqB5/Q,QAAQF,KAAKy1C,KAAMtlB,GAYtDxwB,oBAAoB4lB,EAAM2mF,EAAkB,KAAM/7E,EAAO4vP,EAAe,MACtE,MAAMhgR,EAAKC,KACTmnM,EAAOpnM,EAAGq/N,aACZ,IAAKj4B,EAAM,OAAO,MAClB,MAAM30H,EAASzyE,EAAG6rE,MAAM,MAAMrmD,EAAO,OAAS,UAAU4hL,EAAKx8L,GAAI,MAAOuhG,GACxE,GAAI15B,EAAQ,CACV,OAAOzyE,EAAGgvO,UAAU,CAClBpkO,GAAI6nE,EAAO7nE,GACXwrN,SAAUhvB,EAAKgvB,SACfp1G,OAAQ,CACN58G,EAAG,QAEJ,CACD6sO,SAAU,KACV7gN,MAAAA,SAEG,IAAK5K,GAAQw6P,EAAc,CAChC//Q,KAAKggR,aACL,OAAOhgR,KAAKw8N,iBAAiBr1B,EAAKgvB,UAAUrhK,SAQhDn1D,aAAawwB,GACX,OAAOnwB,KAAKqwO,oBAAoB,KAAM,MAAOlgN,GAO/CxwB,WAAWwwB,GACT,OAAOnwB,KAAKqwO,oBAAoB,MAAO,KAAMlgN,GAM/CqyC,qBAkEF,IAAIy9M,GAAkB/yP,GAAU,MAAM+yP,UAAwB/yP,GAAU7R,IACtEtN,mBACE,MAAO,iBAET8T,2BACE,MAAO,CAOLq+P,iBAAkBjiR,OAAOmR,OAAO,CAC9B+wQ,MAAO,IACPC,OAAQ,IACRC,MAAO,OASb1gR,sBAAsBuH,GACpB,MAAMnH,EAAKC,KACTq8P,EAASp+P,OAAOD,KAAKgzC,GAAa55B,OAAO,GAAIrX,EAAGmgR,mBAClD,IAAII,EAAW,KACbC,EAAW,MACXC,EAAe,KACjBnkB,EAAOr9P,SAAQiP,IACb,IAAIwyQ,EAAY1gR,EAAGmgR,iBAAiBjyQ,GAEpC,IAAK,CAAC,SAAU,UAAUrC,gBAAgB60Q,GAAY,CACpDA,EAAYA,EAAUC,WAExB,GAAID,IAAc,IAAK,CACrBD,EAAevyQ,OACV,GAAI/G,EAAQu5Q,EAAW,CAC5B,MAAMzvQ,EAAQyvQ,EAAYv5Q,EAC1B,GAAI8J,EAAQuvQ,EAAU,CACpBA,EAAWvvQ,EACXsvQ,EAAWryQ,OAIjB,OAAOqyQ,GAAYE,EAQrBG,sBACE,OAAO3gR,KAAK4gR,sBAAsB5gR,KAAKkH,OAUzCvH,iBAAiBuH,EAAOmmI,GACtB,MAAMttI,EAAKC,KACT6gR,EAAW9gR,EAAG6gR,sBAAsBvzI,GACpCp/H,EAAQlO,EAAG6gR,sBAAsB15Q,GAEnC,GAAImmI,IAAa,GAAKwzI,IAAa5yQ,EAAO,CAExC,MAAM6yQ,EAAc/gR,EAAGmgR,iBAAiBjyQ,GACxC,IAAK,CAAC,SAAU,UAAUrC,gBAAgBk1Q,GAAc,CACtD/gR,EAAGupE,WAAWw3M,GAGhB/gR,EAAGgkM,QAAQ/kM,SAAQ+3M,IACjB,MAAMslD,EAAStlD,EAAOmpE,iBACtB,GAAI7jB,EAAQ,CACV,GAAIA,EAAOpuP,GAAQ,CAEjB8oM,EAAOztI,WAAW+yL,EAAOpuP,SACpB,GAAIouP,EAAO,KAAM,CACtBtlD,EAAOztI,WAAW+yL,EAAO,WAI/Bt8P,EAAG02C,QAAQmI,UAAU98C,OAAO,gBAAkB++Q,GAC9C9gR,EAAG02C,QAAQmI,UAAU7/B,IAAI,gBAAkB9Q,GAU3ClO,EAAGwtB,QAAQ,aAAc,CACvBtf,MAAAA,EACA/G,MAAAA,EACA25Q,SAAAA,EACAxzI,SAAAA,KAON7qE,qBAGF,MAAMu+M,GAAe,CACjB12Q,OAAQ,EACR0xB,OAAQ,GAEVilP,GAAmB,CACjBtqP,QAAS,EACT4xE,MAAO,GAuBX,IAAI24K,GAAiB/zP,GAAU,MAAM+zP,UAAuB/zP,GAAU7R,IACpEtN,mBACE,MAAO,gBAETvO,0BACE,MAAO,CAuBL0hR,cAAe,CACbvyG,IAAK,KACLw4B,KAAM,KACNg6E,qBAAsB,MACtBjpF,YAAa,KACbouC,SAAU,MACVd,aAAc,MACd47C,2BAA4B,MAC5B3mL,gBAAiB,MACjB4mL,8BAA+B,MAC/BC,iCAAkC,KAClCC,gBAAiB,QAIvB1/P,2BACE,MAAO,CACL2/P,yBAA0B,IAI9B7hR,iBACE,MAAMI,EAAKC,KAEX,GAAID,EAAGmhR,cAAc56C,SAAU,CAC7B,MAAMm7C,EAAmB1hD,GAAYuB,eAAe,SAClDnpN,EAASpY,EAAGmhR,cAAc56C,WAAa,KAAO,KAAOvmO,EAAGmhR,cAAc56C,SACxE,IAAKm7C,EAAkB,CACrB,MAAM,IAAI/wQ,MAAM,oEAElB,MAAM+vN,EAAM1gO,EAAG2hR,wBAA0B,IAAID,EAAiBzwO,GAAa55B,OAAO,CAChFzM,GAAI,GAAG5K,EAAG4K,sBACVzD,MAAO,MACPoyC,SAAU,MAEV/iC,MAAO,KACP0kN,QAAS,uBAETY,OAAQ97N,EAAGkjB,MAAM,GAAG44M,OACpB2J,aAAczlO,EAAGmhR,cAAc17C,aAC/Bt6F,QAAS,CAAC,CACRr+H,KAAM,WACNw4N,cAAe,UACfztG,UAAW,iCAEZz/G,GAASpY,EAAGgkM,QAAS,CACtBohC,kBAAmB,OAErB1E,EAAItgN,KAAKrB,MAAQ,EAEjB2hN,EAAInH,MAAQv5N,EAEZ,MAAM4hR,EAAmBlhD,EAAIf,SAC7Be,EAAIf,SAAW1M,IACbA,EAAWzzN,MAAQQ,EAAG85L,WAAWm5B,EAAWxgJ,QAC5CmvM,EAAiB96Q,KAAK45N,EAAKzN,IAE7ByN,EAAItxM,GAAG,CACLunC,OAAQ,gBACRkrN,UAAW,mBACXtlQ,QAASvc,IAGX,MAAMs1G,EAAct1G,EAAGgkM,QAAQt+L,QAAQ1F,EAAGgkM,QAAQm9B,WAAW,OAAQ,cAAgB,EACrFnhO,EAAGgkM,QAAQnxG,OAAOyiB,EAAaorH,GAEjCvmN,MAAM2B,iBAERlc,UAAUisE,GACR,IAAIi2M,EACJ7hR,KAAKupE,gBAAgB,wBACrBqC,EAAMz8C,GAAG,CACP1qB,KAAM,uBACNrG,OAAQ,gBACRke,QAAStc,QAEV6hR,EAAmB3nQ,MAAM0tN,aAAe,MAAQi6C,SAA0B,OAAS,EAAIA,EAAiBh7Q,KAAK7G,KAAM4rE,GAEtHjsE,YAAYsgM,GACVjgM,KAAKupE,gBAAgB,wBACrBrvD,MAAMm4N,YAAYpyC,GAIpBtgM,eAAcsyE,QACZA,IAEA,GAAIjyE,KAAKkhR,cAAcE,2BAA4B,CACjD,MAAM3rL,gBACFA,GACEz1F,KAAK4rE,MACTk2M,EAAqB9hR,KAAKwhR,yBAAyB31Q,OAAOzN,QAAOszF,IAAQ+D,EAAgB/D,KAC3F1xF,KAAKwhR,yBAAyB1/Q,OAAOggR,IASzCniR,uBAAsB6yE,OACpBA,EAAM34D,SACNA,IAGAK,MAAMyjQ,uBAAyBzjQ,MAAMyjQ,yBAAyB9+Q,WAC9D,MAAM8S,EAAO3R,KAAKwhR,yBAAyB9vQ,IAAImI,GAE/C,GAAIlI,IAAS6gE,EAAQ,CACnBxyE,KAAKwhR,yBAAyBxxL,kBAkBlCrwF,wCAAuC6kB,MACrCA,EAAKC,SACLA,EAAQvU,MACRA,IAEA,MAAMnQ,EAAKC,KACT04L,EAAWl0K,EACXy3I,EAAYl8J,EAAGyhR,yBAAyB31Q,OACxCk2Q,EAAat9P,EAAW,EAAIw3I,EAAUhqJ,MAAM/B,EAAOuU,EAAWvU,GAAS,GACvEkiD,EAASsmI,EAAS55L,OAAS,EAAI,SAAW,WAW5C,GAAIiB,EAAGwtB,QAAQ,wBAAyB,CACtC42B,KAAM,MACNiO,OAAAA,EACAsmI,SAAAA,EACAqpF,WAAAA,EACA9lH,UAAAA,MACK,MAAO,CACZ,OAAO,OAGXt8J,kCACEZ,OAAQyiR,EAAwBpvN,OAChCA,EAAMyiB,MACNA,EAAQ,GAAE3xD,QACVA,IAEA,MAAMnjB,EAAKC,KACX,GAAID,EAAGiiR,gBAAkBjiR,EAAGkiR,aAAahrD,aAAc,CACrDl3N,EAAGmiR,aAAaniR,EAAGiiR,eAGrBntM,EAAQA,EAAMz2E,QAAOuwK,GAAO5uK,EAAGk3N,aAAatoD,KAC5C5uK,EAAGoiR,mBAAmB,CACpBh+N,KAAM,MACNiO,OAAQyiB,EAAM/1E,OAAS,SAAW,WAClCm9J,UAAWl8J,EAAGm8J,gBACdw8B,SAAU7jH,EACVktM,WAAY7+P,GACXnjB,EAAGm2B,QAERv2B,eACEZ,OAAQg4M,EAAM/gD,QACdA,EAAOxjF,OACPA,IAEA,MAAMzyE,EAAKC,MACTkhR,cACEA,EAAat1M,MACbA,GACE7rE,EACJsnD,EAAW65N,EAAczmL,iBAAmBymL,EAAchpF,cAAgB,QAAU1lH,EAAOtD,QAAUsD,EAAOvC,YAC5GgC,EAAU,CAACO,KAAYnrB,GAAY,IACrC,GAAI2uG,EAAS,CACXj2J,EAAGqiR,WAAWnwM,EAASivM,EAAchpF,cAAgB,OACrD,GAAI6e,EAAOgvB,gBAAkBhmO,EAAGm8J,gBAAgBp9J,SAAW8sE,EAAM5nD,OAAS4nD,EAAM+rB,aAAe/rB,EAAM+rB,aAAa74F,OAAS,GAAI,CAC7Hi4M,EAAOpiI,gBACPoiI,EAAOgvB,eAAe/vE,QAAU,KAChC+gD,EAAOniI,oBAEJ,CACL70E,EAAGsiR,aAAapwM,GAChB,GAAI8kI,EAAOgvB,eAAgB,CACzBhvB,EAAOpiI,gBACPoiI,EAAOgvB,eAAe/vE,QAAU,MAChC+gD,EAAOniI,iBAIbj1E,kBAAiBq2J,QACfA,IAEAh2J,KAAKg2J,EAAU,YAAc,eAAeh2J,KAAK4rE,MAAMsiC,SAAWluG,KAAKkhR,cAAcG,+BAIvFG,6BAA6BA,GAC3B,KAAMA,aAAoC31L,IAAa,CACrD21L,EAA2B,IAAI31L,GAAW21L,GAE5CxhR,KAAKsiR,0BAA4Bd,EAEjCA,EAAyBryP,GAAG,CAC1Bi2D,OAAQ,mCACRm9L,aAAc,yCACdjmQ,QAAStc,OAGbwhR,+BACE,OAAOxhR,KAAKsiR,0BAiBd3iR,sBAAsBuQ,EAAOuU,EAAUD,GACrCxkB,KAAKsiR,0BAA0BpqQ,OAAOhI,EAAOuU,EAAUD,GAUzD7kB,WAAW6iR,GACT,IAAIC,EACJ,MAAM1iR,EAAKC,KAEX,IAAKyiR,EAAoBD,KAAsB,MAAQC,SAA2B,GAAKA,EAAkBh0M,QAAS,CAChH+zM,EAAmBA,EAAiB73Q,GAEtC,GAAIo2Q,UAAoByB,GAAmB,CACzC,OAAOziR,EAAGyhR,yBAAyB51Q,SAAS42Q,OACvC,CACL,OAAOziR,EAAGiiR,eAAiBjiR,EAAGiiR,cAAcr3Q,IAAM63Q,EAAiB73Q,IAAM5K,EAAGiiR,cAAc7rD,WAAaqsD,EAAiBrsD,UAS5Hx2N,aAAa+iR,GACX,OAAO1iR,KAAKyuO,qBAAqB,CAC/B9jO,GAAI+3Q,EAAe/3Q,IAAM+3Q,IACxBzrD,aAOLgrD,mBACE,OAAOjiR,KAAKgiR,cAEdC,iBAAiB1yC,GACfvvO,KAAK2iR,WAAWpzC,GAElB5vO,oBAAoBwkD,GAClB,GAAIA,IAAS,MAAQA,SAAc,GAAKA,EAAKg9N,qBAAsB,CACjEh9N,EAAKwqH,IAAM,KACXxqH,EAAKmiL,SAAWniL,EAAKmiL,UAAY,KACjCniL,EAAKgjJ,KAAO,MAEd,OAAOhjJ,EAQTorM,qBACE,OAAOvvP,KAAKwhR,yBAAyBp7O,MAAQ,KAE/CmpN,mBAAmB/8K,GACjBxyE,KAAKk0P,UAAU,CACb1hL,OAAAA,IAgBJ0pF,sBACE,OAAOl8J,KAAKwhR,yBAAyB31Q,OAEvCqwJ,oBAAoBA,GAClBl8J,KAAKoiR,WAAWlmH,GAQlB0mH,8BACE,MAAM7iR,EAAKC,KACTmnM,EAAOpnM,EAAGiiR,cACVrzG,EAAMw4B,GAAQpnM,EAAG24N,WAAWvxB,EAAKx8L,IACnC,IAAKw8L,IAASx4B,EAAK,MAAO,GAC1B,MAAO,eAAeA,EAAIooD,8BAA8B5vB,EAAKgvB,YAY/Dx2N,WAAU6yE,OACRA,EAAMukI,OACNA,EAAS/2M,KAAK+jM,QAAQsyB,eAAe,GAAEpqF,eACvCA,EAAiB,KAAIkoH,eACrBA,EAAiB,QAEjB,MAAMp0P,EAAKC,KACX,GAAInB,UAAU,GAAG4vE,QAAS,CACxB+D,EAAS3zE,UAAU,OACd,CACL2zE,EAASzyE,EAAG6rE,MAAMiB,QAAQ2F,GAE5B,GAAIA,EAAQ,CACVzyE,EAAG4iR,WAAW,CACZh4Q,GAAI6nE,EAAO7nE,GACXosM,OAAAA,GACC9qE,EAAgBkoH,OACd,CACLp0P,EAAGk6L,eAaPt6L,WAAW4vO,EAActjG,EAAiB,MAAOkoH,EAAiB,MAAOj+N,EAAS,OAChF,MAAMn2B,EAAKC,MACTwhR,yBACEA,EAAwBN,cACxBA,GACEnhR,EACJ8vD,EAAW9vD,EAAG0uO,qBAAqBc,GACnC/8J,EAAS3iB,EAAS2iB,QAAUzyE,EAAG6rE,MAAMiB,QAAQhd,EAASllD,IAExD,IAAK6nE,EAAQ,CACX,GAAI,OAAQ3iB,EAAU,CACpB9vD,EAAG8iR,YAAYhzN,EAASllD,IAE1B,YAGG,IAAK5K,EAAGk3N,aAAazkJ,GAAS,CACjCzyE,EAAG8iR,YAAYrwM,GACf,OAEF,GAAIy5D,EAAgB,CAClBlsI,EAAGgzP,kBAAkBljM,EAASllD,GAAI,CAChCosM,OAAQlnJ,EAASsmK,WAIrB,GAAI+qD,EAAcvyG,IAAK,CACrB,GAAIz4I,EAAQ,CACVn2B,EAAGm2B,QAAUn2B,EAAGm2B,QAAU,GAAK,EAEjC,GAAIi+N,EAAgB,CAClBqtB,EAAyBziQ,IAAIyzD,OAG1B,CACHgvM,EAAyBtpQ,OAAO,EAAGspQ,EAAyBx9P,MAAOwuD,GAErE,GAAIt8C,EAAQ,CACVn2B,EAAGm2B,SAGL,GAAIn2B,EAAGyhR,yBAAyBx9P,QAAU,EAAG,CAC3CjkB,EAAG+iR,UAAYjzN,EACf9vD,EAAGgjR,UAAY,MAInB,GAAI7B,EAAc/5E,OAASt3I,EAASsmK,UAAYtmK,EAASknJ,UAAYh3M,EAAG85L,WAAWhqI,GAAW,CAC5F,MAAMkyN,EAAahiR,EAAGiiR,cAAgB,CAACjiR,EAAGiiR,eAAiB,GAE3DjiR,EAAGiiR,cAAgBnyN,EACnB9vD,EAAGoiR,mBAAmB,CACpBh+N,KAAM,OACNiO,OAAQ,SACRsmI,SAAU,CAAC7oI,GACXkyN,WAAAA,EACA9lH,UAAW,CAACpsG,IACX35B,GAEL,OAAO25B,EAMTlwD,YACE,MAAMI,EAAKC,MACT4rE,MACEA,GACE7rE,EACN,GAAI6rE,EAAMwgB,aAAersF,EAAGmhR,cAAcE,2BAA4B,CACpErhR,EAAGyhR,yBAAyBziQ,QAAQ6sD,EAAM2lB,UAAY3lB,EAAMmP,WAAanP,EAAMqG,SAAS7zE,QAAO8xB,IAAMA,EAAEm2D,oBAClG,CACLtmF,EAAGqiR,WAAWx2M,EAAMmP,WAAW38E,QAAO8xB,IAAMA,EAAEm2D,eAAe,OAUjE1mF,YAAYqjR,EAA2B,OACrC,MAAMjjR,EAAKC,KACX,GAAIgjR,EAA0B,CAC5BjjR,EAAGyhR,yBAAyB1/Q,UAAU/B,EAAG6rE,MAAMqG,aAC1C,CACLlyE,EAAGyhR,yBAAyB/iO,QAE9B,GAAI1+C,EAAGiiR,cAAe,CACpBjiR,EAAGmiR,aAAaniR,EAAGiiR,gBAQvBriR,YAAY6yE,GACVxyE,KAAKqiR,aAAa7vM,GAQpB7yE,WAAWymG,EAAc+tJ,EAAiB,OACxC,MAAMvoL,MACFA,GACE5rE,KACJg8L,EAAW,GACb51F,EAAetjF,GAAYm7B,QAAQmoD,IAAiB,GACpD,IAAK,IAAI5zB,KAAU4zB,EAAc,CAC/B5zB,EAAS5G,EAAMiB,QAAQ2F,GACvB,GAAIA,EAAQ,CACVwpH,EAASx9L,KAAKg0E,IAGlB,GAAI2hL,EAAgB,CAClBn0P,KAAKwhR,yBAAyBziQ,IAAIi9K,OAC7B,CACLh8L,KAAKwhR,yBAAyBtpQ,OAAO,EAAGlY,KAAKwhR,yBAAyBx9P,MAAOg4K,IAQjFr8L,aAAaymG,GACXA,EAAetjF,GAAYm7B,QAAQmoD,GAEnC,MAAMn0B,EAAUm0B,EAAav8F,KAAIwyF,GAAcr8F,KAAK4rE,MAAMiB,QAAQwvB,KAAaj+F,QAAOszF,GAAOA,IAC7F1xF,KAAKwhR,yBAAyB1/Q,OAAOmwE,GAQvCtyE,aAAa4vO,GACX,MAAMxvO,EAAKC,KACT6vD,EAAW9vD,EAAG0uO,qBAAqBc,GACnC0zC,EAAUljR,EAAGmhR,cACb1uM,EAAS3iB,EAAS2iB,QAAUzyE,EAAG6rE,MAAMiB,QAAQhd,EAASllD,IACtDs3Q,EAAeliR,EAAGiiR,cAEpB,GAAIiB,EAAQt0G,IAAK,CACf5uK,EAAGyhR,yBAAyB1/Q,OAAO0wE,GAGrC,GAAIywM,EAAQ97E,MAAQt3I,EAASsmK,UAAY8rD,EAAc,CACrD,GAAIA,EAAat3Q,KAAOklD,EAASllD,IAAMs3Q,EAAa9rD,WAAatmK,EAASsmK,SAAU,CAClFp2N,EAAGiiR,cAAgB,KACnBjiR,EAAGoiR,mBAAmB,CACpBh+N,KAAM,OACNiO,OAAQ,WACRsmI,SAAU,GACVqpF,WAAY,CAAClyN,GACbosG,UAAW,MAIjB,OAAOpsG,EAUTlwD,YAAYujR,EAAQC,GAClB,MAAMv3M,MACFA,EAAK41M,yBACLA,GACExhR,KACJsmP,EAAY16K,EAAMnmE,QAAQy9Q,GAC1B38B,EAAU36K,EAAMnmE,QAAQ09Q,GACxBlN,EAAa7hQ,KAAKuU,IAAI29N,EAAWC,GACjC68B,EAAWhvQ,KAAKC,IAAIiyO,EAAWC,GACjC,GAAI0vB,KAAgB,GAAKmN,KAAc,EAAG,CACxC,MAAM,IAAI1yQ,MAAM,mCAElB8wQ,EAAyBtpQ,OAAO,EAAGspQ,EAAyBx9P,MAAO4nD,EAAMk0B,SAASm2K,EAAYmN,EAAW,EAAG,QAQ9GzjR,cAAcwwB,GAEZjW,MAAMmpQ,eAAiBnpQ,MAAMmpQ,cAAclzP,GAC3C,IAAKA,EAAMmyE,WAAY,CACrBtiG,KAAKwhR,yBAAyB1/Q,OAAOquB,EAAM8hD,UAU/CtyE,mBAAkByyD,OAChBA,EACArzD,OAAQ6sE,IAER,MAAM7rE,EAAKC,MACTkhR,cACEA,EAAaQ,wBACbA,EAAuBF,yBACvBA,GACEzhR,EAENma,MAAMopQ,mBAAqBppQ,MAAMopQ,qBAAqBzkR,WACtD,GAAIuzD,IAAW,WAAY,CACzB,IAAK8uN,EAAcG,8BAA+B,CAGhDthR,EAAGk6L,cAELynF,IAA4B,MAAQA,SAAiC,OAAS,EAAIA,EAAwBr7C,qBAAqBz6J,EAAM76C,MAAKyhD,IAAWgvM,EAAyB51Q,SAAS4mE,WAClL,GAAIwuM,GAAiB5uN,GAAS,CACnC,MAAM3tC,EAAW,GACjB,GAAIy8P,EAAcI,mCAAqC,MAAO,CAC5DvhR,EAAGk6L,kBACE,CAELunF,EAAyBxiR,SAAQwzE,IAC/B,MAAMO,EAAYnH,EAAMiB,QAAQ2F,EAAO7nE,IAEvC,GAAIooE,EAAW,CACb,MAAM7iE,EAAQsxQ,EAAyB/7Q,QAAQ+sE,GAC/CgvM,EAAyBtpQ,OAAOhI,EAAO,EAAG6iE,OACrC,CACLtuD,EAASjmB,KAAKg0E,OAIlBgvM,EAAyB1/Q,OAAO2iB,KAUtC9kB,mBAEEua,MAAMwsF,kBAAoBxsF,MAAMwsF,mBAChC1mG,KAAKi6L,cAYPt6L,uBAAuBuxO,EAAU/gN,GAC/B,MAAMpwB,EAAKC,KACT2K,EAAKumO,EAASvmO,IACdu2Q,cACEA,GACEnhR,EACN,SAASwjR,EAAWL,EAAQC,GAC1B,MAAMv3M,MACFA,EAAK41M,yBACLA,GACEzhR,EACJumP,EAAY16K,EAAMnmE,QAAQy9Q,GAC1B38B,EAAU36K,EAAMnmE,QAAQ09Q,GACxBlN,EAAa7hQ,KAAKuU,IAAI29N,EAAWC,GACjC68B,EAAWhvQ,KAAKC,IAAIiyO,EAAWC,GACjC,GAAI0vB,KAAgB,GAAKmN,KAAc,EAAG,CACxC,MAAM,IAAI1yQ,MAAM,mCAElB,MAAM8yQ,EAAW53M,EAAMk0B,SAASm2K,EAAYmN,EAAW,EAAG,OAAOhlR,QAAOuwK,GAAO5uK,EAAGk3N,aAAatoD,KAC/F6yG,EAAyBtpQ,OAAO,EAAGnY,EAAGgjR,WAAa,EAAGS,GACtDzjR,EAAGgjR,UAAYS,EAEjB,IAAKrzP,EAAM0yB,SAAW1yB,EAAM2yB,SAAWo+N,EAAcK,kBAAoBxhR,EAAG85L,WAAWlvL,GAAK,CAE1F5K,EAAG8iR,YAAYl4Q,QACV,GAAIu2Q,EAAchpF,YAAa,CACpC,GAAI/nK,EAAMipF,UAAYr5G,EAAG+iR,UAAW,CAElCS,EAAWxjR,EAAG+iR,UAAUn4Q,GAAIA,QACvB,GAAIwlB,EAAM2yB,SAAW3yB,EAAM0yB,QAAS,CAEzC9iD,EAAGm0P,UAAU,CACX1hL,OAAQ7nE,EACRshI,eAAgB,MAChBkoH,eAAgB,SAaxBx0P,eAAeI,EAAImsP,EAAkBC,EAAgBh8N,EAAO6gN,EAAW,MACrE,MAAMkwC,cACJA,GACEnhR,EAEJ,GAAIA,EAAGgkM,QAAQl3H,QAAQs/K,EAAeh2B,YAAcp2N,EAAG2hR,yBAA2BR,EAAcC,qBAAsB,CACpH,OAGF,GAAIh1B,EAAe7kD,YAAc,IAAM0pC,EAAU,CAC/C,OAEF,MAAMyyC,EAAev3B,GAAoBC,EAAexhP,KAAOuhP,EAAiBvhP,GAC9E+4Q,GAAWvzP,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMtjB,QAAU,YACzE82Q,EAAcD,GAAWvzP,EAAM2yB,QAC/B8gO,EAAe7jR,EAAG85L,WAAWsyD,EAAexhP,IAE9C,GAAIwlB,KAAWA,EAAM+yH,QAAU/yH,EAAM+yH,SAAW,KAAO/yH,EAAMipF,UAAYuqK,GAAc,CACrF5jR,EAAG8jR,uBAAuB13B,EAAgBh8N,QACrC,GAAI+wP,EAAcK,iBAAmBqC,EAAc,CACxD7jR,EAAGmiR,aAAa/1B,OACX,CACL,MAAM23B,EAAmCL,KAAkBtzP,GAASA,EAAMipF,UAAYjpF,EAAM2yB,SAC1FihO,EAA+B5zP,GAASyzP,EACxCI,EAAyBL,EAG3B5jR,EAAG4iR,WAAWx2B,EAAgB,MAAO23B,GAAoCE,GAA0BD,GAGrG,IAAKhkR,EAAG+iR,WAAaa,EAAa,CAChC5jR,EAAG+iR,UAAY32B,EACfpsP,EAAGgjR,UAAY,MAWnBpjR,mBAAmBskR,EAAsB/tP,GACvC,MAAMn2B,EAAKC,MACTmkD,KACEA,EAAIu0I,SACJA,EAAQqpF,WACRA,GACEkC,GACJvC,wBACEA,GACE3hR,EACN,IAAInB,EAAGykB,EAAKsrJ,EAAKw4B,EAGjB,GAAIhjJ,IAAS,MAAO,CAClB,IAAKvlD,EAAI,EAAGykB,EAAMq1K,EAAS55L,OAAQF,EAAIykB,EAAKzkB,IAAK,CAC/C+vK,EAAM5uK,EAAGukO,UAAU5rC,EAAS95L,IAC5B,GAAI+vK,EAAK,CACPA,EAAIsgE,OAAO,cACXtgE,EAAIl/G,aAAa,gBAAiB,MAClC,GAAIiyN,IAA4BA,EAAwBl/K,SAAWk2F,EAAS95L,GAAGynF,aAAc,CAC3FsoF,EAAIo4B,QAAQ26E,EAAwB/2Q,IAAI+2G,OAAOs0C,QAAU,OAI/D,IAAKp3J,EAAI,EAAGykB,EAAM0+P,EAAWjjR,OAAQF,EAAIykB,EAAKzkB,IAAK,CACjD+vK,EAAM5uK,EAAGukO,UAAUy9C,EAAWnjR,IAC9B,GAAI+vK,EAAK,CACPA,EAAI+P,UAAU,cACd/P,EAAIl/G,aAAa,gBAAiB,OAClC,GAAIiyN,IAA4BA,EAAwBl/K,SAAWu/K,EAAWnjR,GAAGynF,aAAc,CAC7FsoF,EAAIo4B,QAAQ26E,EAAwB/2Q,IAAI+2G,OAAOs0C,QAAU,cAO5D,GAAI7xG,IAAS,OAAQ,CACxB,IAAKvlD,EAAI,EAAGykB,EAAMq1K,EAAS55L,OAAQF,EAAIykB,EAAKzkB,IAAK,CAC/CuoM,EAAOpnM,EAAGgnM,QAAQrO,EAAS95L,IAC3B,GAAIuoM,EAAM,CACRA,EAAK13I,aAAa,gBAAiB,MACnC03I,EAAKvoJ,UAAU7/B,IAAI,eAGvB,IAAKngB,EAAI,EAAGykB,EAAM0+P,EAAWjjR,OAAQF,EAAIykB,EAAKzkB,IAAK,CACjDuoM,EAAOpnM,EAAGgnM,QAAQg7E,EAAWnjR,IAC7B,GAAIuoM,EAAM,CACRA,EAAKvoJ,UAAU98C,OAAO,cACtBqlM,EAAK13I,aAAa,gBAAiB,SAIzC,IAAKv5B,EAAQ,CACXn2B,EAAGwtB,QAAQ,kBAAmB02P,IAGlCtkR,aAAYwwB,MACVA,EAAKqiD,OACLA,IAEA,MAAMzyE,EAAKC,KACX,IAAKD,EAAGmhR,cAAc56C,UAAYvmO,EAAGmhR,cAAchpF,cAAgB/nK,EAAMipF,WAAajpF,EAAM0yB,UAAY1yB,EAAM2yB,QAAS,CACrH/iD,EAAGsiR,aAAatiR,EAAGm8J,gBAAgB99J,QAAOszF,GAAOA,IAAQlf,MAK7D7yE,YACE,IAAIukR,GACHA,EAAwBlkR,KAAKwhR,4BAA8B,MAAQ0C,SAA+B,OAAS,EAAIA,EAAsBnoQ,UACtI7B,MAAM8B,YAKRwmD,qBAQF,MAAM2hN,GAAqBhoD,GAAWA,EAAQp4B,QAAQpvH,gBACpDyvM,GAAoBjoD,GAAWA,EAAQp4B,QAAQnvH,eAC/CyvM,GAAqBloD,IACnBA,EAAQp4B,QAAQ+8B,cAChB3E,EAAQp4B,QAAQ7jG,kBAElBokL,GAAwB,CAACz+Q,EAAGye,IAAMze,EAAE0+Q,eAAiBjgQ,EAAEigQ,eAiBzD,IAAIC,GAAat3P,GAAU,MAAMs3P,UAAmBt3P,GAAU7R,IAC5DtN,mBACE,MAAO,YAETvO,0BACE,MAAO,CACLgrE,eAAgB,CAAC,kBAAmB,gBAAiB,mBAAoB,gBAqB7E7qE,YAAYisE,EAAOtzD,GACjB,IAAImsQ,GACHA,EAAqBvqQ,MAAM2iM,eAAiB,MAAQ4nE,SAA4B,OAAS,EAAIA,EAAmB59Q,KAAK7G,KAAM4rE,EAAOtzD,GACnItY,KAAKupE,gBAAgB,uBACrBqC,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMz8C,GAAG,CACrD1qB,KAAM,sBACNrG,OAAQ,gBACR6Z,KAAM,gBACNqE,QAAStc,OAGbL,cAAcokM,EAASzrL,GACrB,IAAIosQ,GACHA,EAAuBxqQ,MAAMyqQ,iBAAmB,MAAQD,SAA8B,OAAS,EAAIA,EAAqB79Q,KAAK7G,KAAM+jM,EAASzrL,GAC7ItY,KAAKupE,gBAAgB,wBACrBw6H,EAAQ50K,GAAG,CACT1qB,KAAM,uBACN2gF,OAAQ,gBACR9oE,QAAStc,OAGbL,iBAAiBmmJ,EAASxtI,GACxB,IAAIssQ,GACHA,EAAwB1qQ,MAAM2qQ,oBAAsB,MAAQD,SAA+B,OAAS,EAAIA,EAAsB/9Q,KAAK7G,KAAM8lJ,EAASxtI,GACnJtY,KAAKupE,gBAAgB,4BACrBu8E,EAAQ32H,GAAG,CACT1qB,KAAM,2BACN+qK,UAAW,gBACXlzJ,QAAStc,OAGbL,gBACEK,KAAKutB,QAAQ,eAEf5tB,eACEua,MAAM2uD,eACN7oE,KAAKmvB,GAAG,CACNorO,gBAAiB,kBASrB56P,WACE,MAAMI,EAAKC,KACTqB,EAAQtB,EAAG02C,QAAQp1C,MAAM2E,QACzBmjE,EAAQ,CACNqmG,UAAWzvK,EAAGyvK,WAElB,GAAInuK,EAAO,CACT8nE,EAAM9nE,MAAQA,EAEhB,GAAItB,EAAGkiR,aAAc,CAEnB,MAAMt3Q,GACJA,EAAEwrN,SACFA,GACEp2N,EAAGkiR,aACP94M,EAAM84M,aAAe,CACnBt3Q,GAAAA,EACAwrN,SAAAA,GAGJhtJ,EAAM+yF,gBAAkBn8J,EAAGm8J,gBAAgBryJ,KAAI4hD,GAASA,EAAM9gD,KAC9Dw+D,EAAM46H,QAAUhkM,EAAGgkM,QAAQhpH,WAAWlxE,KAAIktM,GAAUA,EAAO1tI,aAC3DF,EAAMyC,MAAQ7rE,EAAG6rE,MAAMzC,MACvBA,EAAM43C,OAAShhH,EAAG+kR,cAClB37M,EAAMghK,SAAW,GACjBpqO,EAAGulP,aAAYnpB,IACb,IAAI4oD,EACJ,MAAM5sQ,EAASgxD,EAAMghK,SAAShO,EAAQN,QAAU1yJ,EAAMghK,SAAShO,EAAQN,SAAW,GAClF,GAAIM,EAAQtzF,UAAW,CACrB,GAAIszF,EAAQ/kG,MAAQ,KAAM,CACxBj/G,EAAOjR,MAAQi1N,EAAQj1N,WAEpB,CACL,GAAIi1N,EAAQhkN,OAAOjR,OAAS,KAAM,CAChCiR,EAAOjR,MAAQi1N,EAAQhkN,OAAOjR,UACzB,CACLiR,EAAOi/G,KAAO+kG,EAAQhkN,OAAOi/G,MAGjCj/G,EAAOq3D,WAAau1M,EAAqB5oD,EAAQ3sJ,aAAe,MAAQu1M,SAA4B,EAAIA,EAAqB,MAE7H,GAAI5sQ,EAAOq3D,UAAW,CACpBr3D,EAAO6sQ,qBAAuB7oD,EAAQ6oD,yBAG1C,OAAO77M,EAOTxpE,WAAWwpE,GACT,MAAMppE,EAAKC,KAGXD,EAAGy8P,iBAEH,GAAI,YAAarzL,EAAO,CACtB,IAAI87M,EAAiB,MACnBC,EAAW,MAEbnlR,EAAGgkM,QAAQpvH,gBACX50E,EAAGulP,YAAY6+B,IAEfh7M,EAAM46H,QAAQ/kM,SAAQ,CAACmmR,EAAaj1Q,KAClC,MAAM6mM,EAASh3M,EAAGgkM,QAAQl3H,QAAQs4M,EAAYx6Q,IAC9C,GAAIosM,EAAQ,CACV,MAAMquE,EAAmBruE,EAAO15H,WAChC05H,EAAOztI,WAAW67M,GAClBF,EAAiBA,GAAkBluE,EAAO15H,aAAe+nM,EAEzDruE,EAAOwtE,eAAiBr0Q,EAExB,GAAI6mM,EAAO8mB,WAAa3tN,EAAO,CAC7Bg1Q,EAAWD,EAAiB,UAIlC,GAAIA,EAAgB,CAClBllR,EAAGulP,YAAY++B,IAEjB,GAAIa,EAAU,CACZnlR,EAAGulP,aAAYnpB,IACbA,EAAQp4B,QAAQ9xH,QAAQh6D,KAAKqsQ,IAC7BnoD,EAAQp4B,QAAQhpH,WAAW9iE,KAAKqsQ,OAElCvkR,EAAGgkM,QAAQ9rL,KAAK,CACdD,GAAIssQ,GAEJ9qL,UAAW,OAIf,GAAIz5F,EAAG8oI,WAAao8I,EAAgB,CAClCllR,EAAGslR,iBAGLtlR,EAAGgkM,QAAQnvH,eACX70E,EAAGulP,YAAY8+B,IAEjB,GAAI,aAAcj7M,EAAO,CACvBppE,EAAGulP,aAAYnpB,IACb,GAAIA,EAAQN,UAAU1yJ,EAAMghK,SAAU,CACpC,MAAMm7C,EAAen8M,EAAMghK,SAAShO,EAAQN,QAC5C,GAAI,UAAWypD,EAAc,CAC3BnpD,EAAQj1N,MAAQo+Q,EAAap+Q,WACxB,GAAI,SAAUo+Q,EAAc,CACjCnpD,EAAQ/kG,KAAOkuJ,EAAaluJ,KAE9B,GAAI,cAAekuJ,EAAc,CAC/BnpD,EAAQ3sJ,UAAY81M,EAAa91M,UACjC2sJ,EAAQ6oD,qBAAuBM,EAAaN,0BAKpD,GAAI,cAAe77M,EAAO,CACxBppE,EAAGyvK,UAAYrmG,EAAMqmG,UAEvB,GAAI,UAAWrmG,EAAO,CACpBppE,EAAGsB,MAAQ8nE,EAAM9nE,MAEnB,GAAI,iBAAkB8nE,EAAO,CAC3BppE,EAAGkiR,aAAe94M,EAAM84M,aAE1B,GAAI,UAAW94M,EAAO,CACpBppE,EAAG6rE,MAAMzC,MAAQA,EAAMyC,MAEzB,GAAI,oBAAqBzC,EAAO,CAC9BppE,EAAGm8J,gBAAkB/yF,EAAM+yF,gBAE7Bn8J,EAAG88P,cAAc,MAEjB98P,EAAGulP,aAAY51O,GAAKA,EAAE61Q,sBACtB,GAAI,WAAYp8M,EAAO,CACrBppE,EAAGylR,cAAcr8M,EAAM43C,QAMvB,GAAI53C,EAAM43C,OAAO9pE,UAAW,CAC1Bl3C,EAAG02C,QAAQsZ,iBAAiB,uBAAuB/wD,SAAQy3C,IACzD,MAAMirE,EAAS8qD,GAAajgH,YAAY9V,GACxC,GAAIirE,EAAQ,CACVA,EAAOjD,gBAAgBhoE,SASjC+rB,qBAMF,MAAMijN,GAAqBl1Q,QAAQC,UACjCk1Q,GAAyB,CACvB9lO,MAAO,WAQX,MAAM+lO,WAAwBlkK,GAG5BjiH,0BACE,MAAO,CACL6lH,UAAW,MACXh4D,UAAW,iBAGf1tD,eAAe82C,EAAS7pC,EAAU84Q,IAChC,MAAM3lR,EAAKC,MACT85C,OACEA,EAAMC,OACNA,GACEh6C,EAAGmjH,WAAWzsE,EAAS7pC,GAC3BT,EAAS2tC,GAAUC,EAASh6C,EAAGojH,SAASrpE,EAAQC,EAAQntC,GAAW64Q,GACrE,GAAI74Q,EAAQswC,WAAatwC,EAAQkoD,MAAO,CACtC3oD,EAAOsE,MAAK,KACV,GAAI7D,EAAQswC,UAAW,CACrB,GAAIzG,aAAmBF,GAAW,CAChCE,EAAQ7b,WAAWkf,GAASC,GAAQmD,gBAC/B,CACLjF,GAAUiF,UAAUzG,IAGxB7pC,EAAQkoD,OAASre,EAAQqe,OAASre,EAAQqe,WAG9C,OAAO3oD,EAETxM,SAASm6C,EAAQC,EAAQntC,GACvB,MAAMg5Q,EAAW7rO,GAAU/5C,KAAK6lR,UAAU1iK,SAAS,EAAGppE,EAAQntC,GAC5Dk5Q,EAAWhsO,GAAU5/B,MAAMipG,SAASrpE,EAAQ,EAAGltC,GACjD,GAAIk5Q,GAAYA,EAASn+P,QAAUi+P,GAAYA,EAASj+P,OAAQ,CAC9D,MAAMo+P,EAAUD,EAASn+P,OACvBq+P,EAAUJ,EAASj+P,OAErBm+P,EAASn+P,OAASi+P,EAASj+P,OAAS,KAClCo+P,IACAC,KAEF,OAAOz1Q,QAAQ/G,IAAI,CAACs8Q,EAAUF,IAEhC,OAAOE,GAAYF,GAAYH,GAEjC9lR,SAAS2kH,EAAKC,EAAK33G,GACjB,MAAMg5Q,EAAWrhK,GAAO,MAAQvkH,KAAK6lR,UAAUI,SAAS,KAAM1hK,EAAK33G,GACjEk5Q,EAAWxhK,GAAO,MAAQpqG,MAAM+rQ,SAAS3hK,EAAK,KAAM13G,GAItD,KAAMA,GAAWA,EAAQy2G,SAAU,CACjCrjH,KAAKmlH,eAEP,GAAI2gK,GAAYA,EAASn+P,QAAUi+P,GAAYA,EAASj+P,OAAQ,CAC9D,MAAMo+P,EAAUD,EAASn+P,OACvBq+P,EAAUJ,EAASj+P,OAErBm+P,EAASn+P,OAASi+P,EAASj+P,OAAS,KAClCo+P,IACAC,KAEF,OAAOz1Q,QAAQ/G,IAAI,CAACs8Q,EAAUF,IAEhC,OAAOE,GAAYF,GAAYH,GAEjCl4N,eACE,MAAM24N,EAAgB3vO,GAAUvxB,KAAKhlB,KAAKy2C,SACxC8W,EAAW24N,EAAcxsO,UAAUnD,GAAUvxB,KAAKhlB,KAAK6lR,UAAUpvO,UAEnE,OAAO8W,GAAY,IAAIhX,GAAU2vO,EAAc/hR,EAAG+hR,EAAc1hP,EAAG0hP,EAAch/Q,MAAO,GAE1Fs9B,MAAMA,GACJ,GAAIxkC,KAAK6lR,UAAW,CAClB7lR,KAAK6lR,UAAUrhP,EAAIA,GAGvBA,QACE,OAAOxkC,KAAK6lR,UAAY7lR,KAAK6lR,UAAUrhP,EAAI,EAE7CqhF,WACE,OAAO7lH,KAAK6lR,UAAY7lR,KAAK6lR,UAAUhgK,KAAO,EAEhDpuE,mBACE,OAAOz3C,KAAK6lR,UAAY7lR,KAAK6lR,UAAUpuO,aAAe,EAExDc,mBACE,OAAOv4C,KAAK6lR,UAAY7lR,KAAK6lR,UAAUttO,aAAe,GAG1DotO,GAAgBz9Q,OAAS,kBAKzB,MAAMi+Q,GAAY,CAACl+P,EAAGjkB,IAAMikB,EAAIjkB,EAAEszC,wBAAwBpwC,MAW1D,MAAMk/Q,WAAgB95N,GAEpBv+C,mBACE,MAAO,UAGTlB,kBACE,MAAO,UAUTgV,2BACE,MAAO,CACLoX,sBAAuB,CAAC,aACxBotP,iBAAkB,KAClBpwJ,SAAU,KACVG,cAAe,KACfkwJ,YAAa,KACbC,YAAa,KAOb/2M,UAAW,KACX8zC,WAAY,CAGVj2D,UAAW,iBAEbupE,cAAe+uJ,GAGfa,mBAAoB,KAOpBrvC,cAAe,KACfz5C,UAAW,MAGfl+L,0BACE,MAAO,CACLi3C,QAAS,KACTmpG,OAAQ,GACRzmD,OAAQ,GACRstL,uBAAwB,KACxB55B,gBAAiB,KACjB65B,eAAgB,KAChBC,iBAAkB,KAClBC,eAAgB,KAMhBtkD,UAAW,KACXrwK,KAAM,gBAUVtyD,UAAUwY,GACR,MAAMpY,EAAKC,KACXka,MAAMsB,UAAUrD,GAChBnY,KAAK62N,WAAW1nM,GAAG,UAAWnvB,KAAKgnQ,SAAUhnQ,MAC7C,GAAIN,EAAc4D,UAAW,CAC3B,MAAMmzC,QACFA,GACE12C,EACJ8mR,EAAmB9mR,EAAGk2N,KAAK3yG,WAK7B,IAAI2uJ,EAAgB,EACpBx7N,EAAQ0L,iBAAiB,SAAS,EAChCW,QAAAA,EACAuC,OAAAA,EACAD,OAAAA,MAEA,MAAM0hO,EAAmB1yQ,KAAK41B,IAAIqb,GAAUjxC,KAAK41B,IAAIob,GAGrD,IAAKtC,GAAWgkO,IAAqB/mR,EAAGgnR,mBAAqBF,EAAiBriP,IAAMytO,EAAe,CACjGx7N,EAAQp1C,MAAM0/H,cAAgB,OAC9BkxI,EAAgB4U,EAAiBriP,EACjCzkC,EAAGgnR,kBAAoBF,EAAiB13P,GAAG,CACzC63P,UAAW9+P,UACT+pP,EAAgB4U,EAAiBriP,EACjCiS,EAAQp1C,MAAM0/H,cAAgB,GAC9BhhI,EAAGgnR,kBAAoB,MAEzBn6P,KAAM,YAMhBjtB,YACE,IAAIsnR,EACJ,MAAMlnR,EAAKC,KACXD,EAAG6/I,OAAO7jI,UACVhc,EAAGo5F,OAAOp9E,WACTkrQ,EAAmBlnR,EAAGmnR,gBAAkB,MAAQD,SAA0B,OAAS,EAAIA,EAAiBlrQ,UACzGhc,EAAG0mR,uBAAuB3kR,SAC1B/B,EAAG8sP,gBAAgB/qP,SACnB/B,EAAG2mR,eAAe5kR,SAClB/B,EAAG4mR,iBAAiB7kR,SACpB/B,EAAG6mR,eAAe9kR,SAClBoY,MAAM8B,YAERmrQ,gBACE,MAAMpnR,EAAKC,MACTkH,MACEA,EAAKkwH,KACLA,GACEr3H,EAAG02C,QAAQp1C,MACf8W,EAAS,CACPgkN,QAASp8N,EACTuS,OAAQvS,EAERk3H,SAAUl3H,EAAGk3H,UAAYr0H,UACzB02C,SAAUv5C,EAAGu5C,UAAY12C,WAG7B,GAAIw0H,EAAM,CACRj/G,EAAOi/G,KAAOA,OACT,GAAIlwH,EAAO,CAChBiR,EAAOjR,MAAQA,EAEjB,OAAOiR,EAETxY,aAAaigJ,GACX,OAAO,IAAI5/I,KAAKsmR,YAAYt1O,GAAa55B,OAAO,CAC9CzM,GAAI3K,KAAK2K,GAAK,WACb3K,KAAKmnR,UAAWvnI,IAErBjgJ,aAAaw5F,GACX,OAAO,IAAIn5F,KAAKumR,YAAYv1O,GAAa55B,OAAO,CAC9CzM,GAAI3K,KAAK2K,GAAK,WACb3K,KAAKmnR,UAAWhuL,IAUrBx5F,kBAAkBmW,EAAKiJ,EAAM,MAC3B,MAAMhf,EAAKC,KACTonR,EAAY,CAACrnR,EAAG8sP,gBAAiB9sP,EAAG2mR,eAAgB3mR,EAAG6mR,eAAgB7mR,EAAG4mR,kBAC5ES,EAAUpoR,SAAQ0rD,GAAMA,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG9L,UAAU7/B,EAAM,MAAQ,UAAUjJ,KAIvGnW,cAAc82C,EAASn+B,GACrB,MAAMujN,OACJA,GACE77N,KACJ,OAAOka,MAAMg+P,cAAc,CACzBp7I,aAAc++F,EACdn9K,UAAW,CACT2oO,iBAAkB,EAClB1nR,CAAC,kBAAkBk8N,KAAWA,EAC9ByrD,2BAA4BtnR,KAAKwvE,WAEnC94C,QAAS,CACPmlM,OAAAA,IAEDvjN,GAELivQ,uBACE,MAAMtxD,KACJA,GACEj2N,KACJ,MAAO,CACLiyD,KAAM,MACNvT,UAAWu3K,EAAK2wC,OAChBv/M,SAAUrnD,KAAK+jM,QAAQsyB,eAAexsN,KAAI,CAACktM,EAAQvzB,KAAW,CAC5DvxH,KAAM,WACNu1N,gBAAiBhkG,EAAc,EAC/BxzB,SAAUimE,EAAKwxD,aACf/oO,UAAW,cACXhoB,QAAS,CACPqgL,OAAQA,EAAOxgM,OAAS,GACxB4/M,SAAUpf,EAAOpsM,SAMzBhL,+BACE,MAAM+nR,EAAazvO,GAAU72C,cAAc,CACzC6wD,KAAM,eACNlJ,UAAW,yBACXrK,UAAW,qBACXsxG,UAAW,EACXt5H,QAAS,CACPmlM,OAAQ77N,KAAK67N,QAEfx0K,SAAU,CAAC,CACT0B,UAAW,uBACXrK,UAAW,sBAGf1+C,KAAK2nR,qBAAuBD,EAAWC,qBACvC,OAAOD,EAAWjB,uBAEpB9mR,wBACE,MAAM+nR,EAAazvO,GAAU72C,cAAc,CACzC2nD,UAAW,kBACXrK,UAAW,CACTkpO,kBAAmB,EACnBC,4BAA6B7nR,KAAKwvE,UAClCs4M,iBAAkB,GAGpBpxP,QAAS,CACPmlM,OAAQ77N,KAAK67N,QAEfx0K,SAAU,CAAC3nD,EAAcwC,cAAgB,CACvCw8C,UAAW,yBACT,KAAM,CACRA,UAAW,6CACX2I,SAAU,CAAC,CACT3I,UAAW,0BACXqK,UAAW,kBACX1B,SAAU,CAAC,CACT3I,UAAW,kCACX2I,SAAU,CAAC3nD,EAAcwC,cAAgB,CACvCw8C,UAAW,gCACT,KAAM,CACRj+B,IAAK,MACLqoC,GAAI,6BACJl2C,QAAS,MACT8rC,UAAW,0DACXgyF,QAAS,cACTrpF,SAAU,CAAC,CACT5mC,IAAK,OACL0e,EAAG,6DAA+D,+DAAiE,+DAAiE,gDAGvM,CACDuf,UAAW,gCACX2I,SAAU,CAAC3nD,EAAcwC,cAAgB,CACvCw8C,UAAW,gCACT,KAAM,CACRj+B,IAAK,MACLqoC,GAAI,6BACJl2C,QAAS,MACT8rC,UAAW,wDACXgyF,QAAS,cACTrpF,SAAU,CAAC,CACT5mC,IAAK,OACL0e,EAAG,6DAA+D,+DAAiE,+DAAiE,sDAOhNn/B,KAAK+nR,gBAAkBL,EAAWK,gBAClC,OAAOL,EAAW76B,gBAEpBm7B,qBACE,MAAO,CACLtpO,UAAW1+C,KAAK6sP,gBAAgBnuM,UAAUlyC,OAC1C66C,SAAU,CAAC3nD,EAAcwC,cAAgB,CACvCw8C,UAAW,yBACT,KAAM,CACRA,UAAW,0BAEbhoB,QAAS,CACPmlM,OAAQ77N,KAAK67N,SAInBl8N,uBACE,OAAOs4C,GAAU72C,cAAcpB,KAAKgoR,gBAEtCroR,yBACE,OAAOs4C,GAAU72C,cAAcpB,KAAKgoR,gBAEtCroR,uBACE,OAAOs4C,GAAU72C,cAAcpB,KAAKgoR,gBAEtCroR,eACE,MAAMI,EAAKC,KACXD,EAAG8sP,gBAAgBjuM,UAAU7/B,IAAI,kBACjChf,EAAG2mR,eAAe9nO,UAAU7/B,IAAI,kBAChChf,EAAG4mR,iBAAiB/nO,UAAU7/B,IAAI,kBAClChf,EAAG6mR,eAAehoO,UAAU7/B,IAAI,kBAChChf,EAAGkoR,iBAAmB,MAExBtoR,eACE,MAAMI,EAAKC,KACXD,EAAG8sP,gBAAgBjuM,UAAU98C,OAAO,kBACpC/B,EAAG2mR,eAAe9nO,UAAU98C,OAAO,kBACnC/B,EAAG4mR,iBAAiB/nO,UAAU98C,OAAO,kBACrC/B,EAAG6mR,eAAehoO,UAAU98C,OAAO,kBACnC/B,EAAGkoR,iBAAmB,KAIxBtoR,UAAU4b,GACR,MAAMxb,EAAKC,KACXka,MAAMH,UAAUwB,GAEhB,GAAIxb,EAAGk2N,KAAM,CACXl2N,EAAGmoR,gBACHnoR,EAAG02C,QAAQgU,WAAWiJ,aAAa3zD,EAAG8sP,gBAAiB9sP,EAAG02C,QAAQmoF,oBAClE99E,GAAY3xB,GAAG,CACbsnB,QAAS12C,EAAGk2N,KAAKx/K,QACjB8I,SAAU,gCAAgCx/C,EAAG87N,UAC7Cr1K,UAAW,sBACXC,SAAU,qBACVnqC,QAASvc,IAEXA,EAAG6gJ,YAAc7gJ,EAAG+3F,YAGxBn4F,gBACEK,KAAK4/I,OAAOgyH,iBAEdjyQ,gBACE,IAAIwoR,GACHA,EAAenoR,KAAKm5F,UAAY,MAAQgvL,SAAsB,OAAS,EAAIA,EAAavW,iBAG3FjyQ,WAAWqY,EAAI86B,EAAO,MACpB,MAAM/yC,EAAKC,KACTkrI,EAAU,CAACnrI,EAAG6/I,OAAQ7/I,EAAGo5F,QAC3B,IAAK,IAAIv6F,EAAI,EAAGA,EAAIssI,EAAQpsI,OAAQF,IAAK,CACvC,MAAM8iH,EAASwpB,EAAQtsI,GACvB,GAAIoZ,EAAG0pG,KAAY,MAAO,CACxB,OAEF,GAAI5uE,GAAQ4uE,EAAOgZ,WAAY,CAC7BhZ,EAAOgZ,WAAW1iH,EAAI86B,KAU5BnzC,cAAc0+N,GACZ,MAAMhI,eACJA,GACEr2N,KAAK+jM,QAET,IAAIoD,EAAOk3B,EAAW1qK,kBACpB/0D,EAAI,EACN,MAAOuoM,EAAM,CACX,MAAM4P,EAASsf,EAAez3N,IAC5B63C,QACEA,GACEsgK,EACN,GAAIA,EAAOz9J,SAAU,CACnB6tJ,EAAK9lM,MAAMi4C,SAAWrB,GAAUod,UAAU0hJ,EAAOz9J,UAEnD,GAAIy9J,EAAO9/E,SAAU,CACnBkwE,EAAK9lM,MAAM41H,SAAWh/E,GAAUod,UAAU0hJ,EAAO9/E,UAGnD,GAAI8/E,EAAO3/E,KAAM,CAGf,GAAI2/E,EAAOrnI,YAAcj5B,EAAS,CAChC0wJ,EAAK9lM,MAAM+1H,KAAO,OAAO3gF,EAAQa,wBAAwBpwC,UACzDigM,EAAK9lM,MAAM6F,MAAQ,OACd,CACLigM,EAAK9lM,MAAM+1H,KAAO2/E,EAAO3/E,KACzB+vE,EAAK9lM,MAAM6F,MAAQ,SAEhB,GAAI6vM,EAAO7vM,MAAO,CAMvBigM,EAAK9lM,MAAM6F,MAAQ+wC,GAAUod,UAAU0hJ,EAAO7vM,WACzC,CACLigM,EAAK9lM,MAAM+1H,KAAO+vE,EAAK9lM,MAAM6F,MAAQigM,EAAK9lM,MAAMi4C,SAAW,GAE7D6tJ,EAAOA,EAAKvoE,mBACZhgI,KAGJ4hO,sBACE,OAAOxgO,KAAK+jM,QAAQy8B,gBAOtB7gO,YACE,MAAMI,EAAKC,MACTy2C,QACEA,EAAOmpG,OACPA,EAAMzmD,OACNA,GACEp5F,EACN,IAAKA,EAAGyvE,UAAW,CACjB,GAAIzvE,EAAGq3H,KAAM,CACXwoB,EAAOxoB,KAAOr3H,EAAGq3H,KACjB,GAAIj+B,EAAQ,CACVA,EAAOi+B,KAAOr3H,EAAGq3H,KAEnB3gF,EAAQp1C,MAAM+1H,KAAOr3H,EAAGq3H,SACnB,CAGL,GAAIr3H,EAAGymR,qBAAuBzmR,EAAGgkM,QAAQp8L,MAAK84N,IAAQA,EAAIj+H,QAAUi+H,EAAIrpG,QAASr3H,EAAGygO,kBAAoBzgO,EAAGmH,MAAO,CAChHnH,EAAGmH,MAAQnH,EAAGygO,gBAGdzgO,EAAGymR,mBAAqB,KACxB,OAEF,IAAIpgB,EAAarmQ,EAAGmH,MACpB,IAAKk/P,EAAY,CACfA,EAAa,EAEb,IAAK,MAAM3lC,KAAO1gO,EAAGgkM,QAAS,CAC5B,IAAK08B,EAAIrpG,OAASqpG,EAAIj+H,OAAQ4jK,GAAc3lC,EAAIv5N,OAKpDuvC,EAAQp1C,MAAM6F,MAAQ,GAAGk/P,MACzBxmH,EAAO14I,MAAQk/P,EACf,GAAIjtK,EAAQ,CACVA,EAAOjyF,MAAQk/P,GAGnBrmQ,EAAGqoR,sBAAsB,QAI7BzoR,2BACE,GAAID,EAAc8D,SAAU,CAC1B,MAAMzD,EAAKC,MACT67N,OACEA,EAAMj8E,OACNA,GACE7/I,EACJu5C,EAAWsmG,EAAOyoI,6BAGpBtoR,EAAG82N,WAAW73N,SAAQ2vK,IAGpB,MAAMl4H,EAAUk4H,EAAIp/G,WAAWssK,GAG/B,GAAIplL,EAAS,CACXA,EAAQp1C,MAAM6F,MAAQ,GAAGoyC,UAG7BsmG,EAAO04H,eAAej3Q,MAAM6F,MAAQ,GAAGoyC,OAO3CpyC,UAAUA,GACR,MAAMnH,EAAKC,KAEXD,EAAGymR,mBAAqB,MACxBtsQ,MAAMhT,MAAQA,EACdnH,EAAG6/I,OAAO14I,MAAQA,EAClBnH,EAAGo5F,OAAOjyF,MAAQA,EAElB,GAAInH,EAAG8oI,UAAW,CAChB9oI,EAAG0+G,mBAGPv3G,YACE,OAAOgT,MAAMhT,MAMfkwH,SAASA,GACP,MAAMr3H,EAAKC,KAEXD,EAAGymR,mBAAqB,MACxBzmR,EAAG6/I,OAAOxoB,KAAOA,EACjBr3H,EAAGo5F,OAAOi+B,KAAOA,EACjBl9G,MAAMk9G,KAAOA,EAEb,GAAIr3H,EAAG8oI,UAAW,CAChB9oI,EAAG0+G,mBAGP2Y,WACE,OAAOl9G,MAAMk9G,KAOfz3H,iBAAiB82C,EAAS82F,EAAUC,EAAWH,EAAUC,GACvD,MAAMvtI,EAAKC,MACTi2N,KACEA,GACEl2N,EAENma,MAAMyzH,iBAAiBl3F,EAAS82F,EAAUC,EAAWH,EAAUC,GAE/D,GAAI2oF,IAAS,MAAQA,SAAc,GAAKA,EAAKptF,UAAW,CACtD9oI,EAAGuoR,6BACH,GAAI/6I,IAAaF,EAAU,CAEzB4oF,EAAK1oM,QAAQ,mBAAoB,CAC/B0oM,KAAAA,EACAkG,QAASp8N,EACTi3C,WAAYj3C,EAAGujH,WAAW7sE,QAAQO,WAClC+pH,QAAShhK,EAAGujH,WAAWn/G,IAGzBpE,EAAGmnR,cAAgBnnR,EAAGwlR,oBAItBtvD,EAAKsyD,oBACLxoR,EAAGyoR,2BAELzoR,EAAGwtB,QAAQ,sBAAuBxtB,IAQtCJ,sBAAsB6vE,GACpB,MAAMzvE,EAAKC,MACTi2N,KACEA,GACEl2N,EACN,GAAIA,EAAG8sP,iBAAmB9sP,EAAGkoR,iBAAkB,CAC7CloR,EAAGwtP,kBAAkB,4BAA6B/9K,OAC7C,CAEL,MAAMi5M,EAAWxyD,EAAKoe,WAAWpe,EAAKyyD,kBAAkB3oR,EAAG87N,SAE3D,GAAI4sD,GAAYA,EAAS57B,gBAAiB,CACxC47B,EAASE,sBAAsBn5M,KAIrC7vE,sBACE,MAAMI,EAAKC,MACT6oD,YACEA,GACE9oD,EAEN,IAAKA,EAAGyvE,aAAe3mB,IAAgBA,EAAY2mB,WAAY,CAC7DzvE,EAAGwtP,kBAAkB,WAEvBxtP,EAAGouP,6BAELxuP,qBACE,MAAMI,EAAKC,MACT6oD,YACEA,GACE9oD,EACNA,EAAGwtP,kBAAkB,UAAW,OAChC,IAAKxtP,EAAGyvE,aAAe3mB,IAAgBA,EAAY2mB,WAAY,CAC7DzvE,EAAGquP,6BAGPzuP,6BACE,MAAMI,EAAKC,KACX,GAAID,EAAG8sP,gBAAiB,CACtB9sP,EAAGuoR,6BACH,IAAKvoR,EAAG6oR,2BAA4B,CAClC7oR,EAAG6oR,2BAA6B7oR,EAAGk2N,KAAK3yG,WAAWn0F,GAAG,CACpD4xF,OAAQ,6BACRzkG,QAASvc,MAKjBJ,4BACE,GAAIK,KAAK4oR,2BAA4B,CACnC5oR,KAAK4oR,6BACL5oR,KAAK4oR,2BAA6B,MAGtCjpR,6BACE,MAAMI,EAAKC,KACXD,EAAGgoR,gBAAgB1mR,MAAM8zC,IAAM,GAAGp1C,EAAGk2N,KAAK3yG,WAAW9+E,GAAKzkC,EAAGk2N,KAAK+yC,YAAcjpQ,EAAG2mR,eAAiB3mR,EAAGk2N,KAAK6yC,aAAe,IAAM,MAOnI+f,oBACE,MAAMvlK,WACJA,GACEtjH,KACJ,OAAO,IAAIu2C,GAAU+sE,EAAWn/G,EAAGm/G,EAAW9+E,EAAGxkC,KAAKkH,OAAS,EAAGlH,KAAK62N,WAAWi8C,YAMpFnzQ,gBACEK,KAAKsjH,WAAW7sE,QAAQmI,UAAU8X,OAAO,aAAc12D,KAAK+jM,QAAQ0jB,SAEtE9nN,gBAAgB2iO,GACd,MAAMviO,EAAKC,KACX,CAACD,EAAG8sP,gBAAiB9sP,EAAG2mR,eAAgB3mR,EAAG4mR,iBAAkB5mR,EAAG6mR,gBAAgB5nR,SAAQsnC,GAAY2R,GAAU28G,cAActuH,EAAU,CAAC,eAAgBg8L,KAMzJ3iO,4BACEK,KAAKi2N,KAAKsI,qBACVv+N,KAAK+jM,QAAQsyB,eAAer3N,SAAQ+3M,IAClCA,EAAOgxB,mBAAmB,KAAM,KAAM,SAExC/nO,KAAKi2N,KAAKgJ,mBAIZ8lC,8BAEE,OAAQ/kQ,KAAKwvE,WAAaxvE,KAAKsjH,WAAWwlK,YAAY,KAExDC,4BAGE,OAAO,MAMTppR,oBACE,MAAMI,EAAKC,MACTy2C,QACEA,EAAOgwO,uBACPA,EAAsBkB,qBACtBA,EAAoB/nI,OACpBA,EAAMzmD,OACNA,EAAMmqB,WACNA,GACEvjH,EAEJygO,EAAkB,IAAI5gF,EAAOj+B,eAAet6D,UAAU57C,OAAO06Q,GAAW,GAK1E7iK,EAAW9qE,YAAcgoL,EAGzBimD,EAAuBplR,MAAM6F,MAAQuvC,EAAQp1C,MAAM6F,MACnDu/Q,EAAuBplR,MAAM+1H,KAAO3gF,EAAQp1C,MAAM+1H,KAClDwoB,EAAOt8B,WAAW0B,oBAClB7rB,EAAOmqB,WAAW0B,oBAClB,IAAKjlH,EAAGyvE,UAAW,CACjB,GAAIzvE,EAAGglQ,wBAAyB,CAC9B4iB,EAAqBtmR,MAAM6F,MAAQ,GAAGo8G,EAAW9qE,aAAe,MAGhEz4C,EAAGk2N,KAAK8hD,iBAAiBn5N,UAAU98C,OAAO,sBACrC,CACL6lR,EAAqBtmR,MAAM6F,MAAQ,IAQzCvH,aACE,MAAMI,EAAKC,MACTsjH,WACEA,EAAUmjK,uBACVA,GACE1mR,EACNA,EAAGipR,oBAAsBjpR,EAAGoxN,cAAcpxN,EAAGqoR,uBAC7C,GAAI1oR,EAAc4D,UAAW,CAC3BggH,EAAW7sE,QAAQ0L,iBAAiB,SAAShyB,IAC3C,GAAIA,EAAMi1B,OAAQ,CAChBk+D,EAAWn/G,GAAKgsB,EAAMi1B,OACtBj1B,EAAM21B,qBAIZw9D,EAAWuiK,UAAY9lR,EAAGk2N,KAAK3yG,WAE/BA,EAAWuiK,UAAUoD,YAAY3lK,GAEjCvjH,EAAGmnR,aAAe,IAAIzlK,GAAS,CAC7BhrE,QAASgwO,EACTp5N,UAAW,OAIbi2D,EAAWn0F,GAAG,CACZ4xF,OAAQ,kBACRmoK,UAAW,qBACX5sQ,QAASvc,IAEXujH,EAAWR,WAAW/iH,EAAGmnR,aAAc,KACvC5jK,EAAWR,WAAW/iH,EAAG6/I,OAAOt8B,WAAY,KAC5CA,EAAWR,WAAW/iH,EAAGo5F,OAAOmqB,WAAY,KAE5CvjH,EAAGwlR,oBAEL5lR,qBACE,MAAMI,EAAKC,KAIX,IAAKD,EAAGopR,kBAAmB,CACzBppR,EAAGqoR,wBAELroR,EAAGwlL,UAAY,MACf,IAAKttI,GAAUK,eAAgB,CAC7Bv4C,EAAGk2N,KAAK8hD,iBAAiBn5N,UAAU98C,OAAO,eAE1C/B,EAAGqpR,uBAGPzpR,kBAGE,GAAIK,KAAKmpR,kBAAmB,CAC1BnpR,KAAKooR,wBACLpoR,KAAKmpR,kBAAoB,UACpB,CACLnpR,KAAKgpR,uBAGTrpR,sBACEK,KAAKopR,oBAAoBzhQ,SACzB3nB,KAAKymR,uBAAuB7nO,UAAU7/B,IAAI,2BAG5Cpf,sBACEK,KAAKymR,uBAAuB7nO,UAAU98C,OAAO,2BAE/CyjL,cAAcA,GACZvlL,KAAKqpR,WAAa9jG,EAEpBA,gBACE,OAAOvlL,KAAKqpR,WASd1pR,sBAAsBsvO,EAAS,MAC7B,MAAM9S,EAAUn8N,MACdi2N,KACEA,GACEkG,EACN,IAAKA,EAAQ52C,WAAa0pD,EAAQ,CAChC9S,EAAQ52C,UAAY,KAEpB,IAAKttI,GAAUK,eAAgB,CAE7B29K,EAAK8hD,iBAAiBn5N,UAAU7/B,IAAI,eAGpCo9M,EAAQmtD,uBAGZrzD,EAAK1oM,QAAQ,mBAAoB,CAC/B4uM,QAAAA,EACAlG,KAAAA,EACAj/K,WAAYmlL,EAAQ74G,WAAW7sE,QAAQO,WACvC+pH,QAASo7D,EAAQ74G,WAAWn/G,IAmBhCxE,qBAAqBo3M,EAAQnqM,GAC3B,MAAMm3L,QACFA,EAAOnkD,OACPA,GACE5/I,KACJ4iH,EAAWg9B,EAAOt8B,WAEpByzF,EAASA,aAAkBmiB,GAASniB,EAAShT,EAAQryL,IAAIqlM,IAAWhT,EAAQl3H,QAAQkqI,IAAWhT,EAAQ/wG,MAAM+jH,GAC7G,GAAIA,EAAQ,CAEV,MAAMwyE,EAAsB3pI,EAAO4pI,UAAUzyE,EAAOpsM,IACpD,GAAI4+Q,EAAqB,CACvB,OAAO3mK,EAASqpB,eAAe11F,GAAUvxB,KAAKukQ,EAAqB,KAAM,MAAO38Q,KAUtFjN,UAAS+vK,KACPA,EAAIg1D,SACJA,IAEA,MAAM3kO,EAAKC,KACTmY,EAASpY,EAAGwnR,iBACZkC,EAAOtoR,SAASoyD,yBAClBm8G,EAAK1wK,SAAQ2vK,IACX,MAAM0vD,EAAapmL,GAAU72C,cAAc+W,GAC3CsxQ,EAAKhoR,YAAY48N,GACjB1vD,EAAI+6G,WAAW3pR,EAAG87N,OAAQwC,GAE1Bt+N,EAAGgyQ,cAAc1zC,MAGnB,IAAKqG,EAAU,CACb3kO,EAAGyoR,2BAGHzoR,EAAG02C,QAAQid,aAAa+1N,EAAM1pR,EAAGsmR,mBAQrCsD,kBACE,OAAO3pR,KAAK4pR,UAAU,cAAe,MAMvCjqR,YACEK,KAAK09H,aACL,MAAMl0H,EAAMxJ,KAAKy2C,QAAQsZ,iBAAiB,eACxCgiI,EAAQ5wL,SAAS4gI,cACnB,GAAIv4H,EAAI1K,OAAQ,CACdizL,EAAM/vD,eAAex4H,EAAI,IACzBuoL,EAAM9vD,YAAYz4H,EAAIA,EAAI1K,OAAS,IACnCizL,EAAMnvD,kBAIVjjI,mBACE,MAAM0+N,EAAapmL,GAAU+b,OAAOh0D,KAAKy2C,QAASz2C,KAAKunR,kBACvDvnR,KAAK+xQ,cAAc1zC,GACnB,OAAOA,EAET3gC,gBACE,OAAO19L,KAAK6pR,WAEdnsF,cAAczyL,GACZjL,KAAK6pR,WAAa5+Q,EAClBjL,KAAKy2C,QAAQ/f,QAAQgnK,UAAYzyL,EAEnC2gE,YACE,OAAO5rE,KAAKi2N,KAAKrqJ,MAEnBirJ,iBACE,IAAIwF,EACJ,OAAQA,EAAar8N,KAAKi2N,QAAU,MAAQoG,SAAoB,OAAS,EAAIA,EAAWxF,WAK1Fl3N,wBAAwBmqR,EAAW,OACjC,MAAM/pR,EAAKC,KACTi2N,EAAOl2N,EAAGk2N,KACV62B,EAAa72B,EAAKoe,WAAWpe,EAAK8zD,cAAchqR,EAAG87N,SACnDv1L,EAAW2vL,EAAK+3B,gBAAgBlB,GAClCA,EAAWr2M,QAAQmI,UAAUkrO,EAAW,SAAW,OAAO,mCAC1Dh9B,EAAWltG,OAAOnpG,QAAQmI,UAAUkrO,EAAW,SAAW,OAAO,mCACjE/pR,EAAG02C,QAAQmI,UAAUkrO,EAAW,SAAW,OAAO,mCAClD/pR,EAAG6/I,OAAOnpG,QAAQmI,UAAUkrO,EAAW,SAAW,OAAO,mCACzDxjP,EAASsY,UAAUkrO,EAAW,SAAW,OAAO,2BAMlDt6M,gBACE,OAAOxvE,KAAK4gJ,WAEdpxE,cAAcA,GACZ,GAAIxvE,KAAKwd,cAAe,CACtBxd,KAAK4gJ,WAAapxE,MACb,CACL,GAAIA,EAAW,CACbxvE,KAAK83F,eACA,CACL93F,KAAK63F,WAsBXl4F,iBACE,MAAMI,EAAKC,MACTi2N,KACEA,EAAIx/K,QACJA,GACE12C,EACJ+sP,EAAa72B,EAAKoe,WAAWpe,EAAK8zD,cAAchqR,EAAG87N,SACnDmuD,EAAgBjqR,EAAG8sP,gBAAkB9sP,EAAKA,EAAGswE,gBAC/C,IAAI20M,qBACAA,GACEjlR,EAEJkqR,EAAkB,EACpBh0D,EAAKqvB,aAAYnpB,IACfA,IAAYp8N,IAAOo8N,EAAQv7E,cAAgBqpI,KAG7C,GAAIA,IAAoB,EAAG,OAEnBn9B,EAAWj1J,SAEnB,OAAO,IAAItnF,SAAQC,IACjB,IAAKw0Q,EAAsB,CACzBA,EAAuBjlR,EAAGilR,qBAAuB,GACjD,IAAIkF,EAAe,MAEnB,GAAInqR,EAAGmH,MAAO,CACZgjR,EAAe,KAKfnqR,EAAGovB,GAAG,CACJg7P,oBAAqB,KAEnB35Q,EAAQzQ,IAEVuc,QAASvc,EACT6sB,KAAM,OAeVo4P,EAAqB99Q,MAAQnH,EAAGmH,MAChC89Q,EAAqB18G,aAAe7xH,EAAQp1C,MAAM6F,MAElD,GAAI4lP,EAAWr2M,QAAQp1C,MAAM+1H,OAAS,GAAI,CACxC4tJ,EAAqBoF,gBAAkBt9B,EAAW5lP,MAClD4lP,EAAW5lP,MAAQ,GACnB4lP,EAAW11H,KAAO,IAGpB,GAAI3gF,EAAQp1C,MAAM+1H,OAAS,GAAI,CAC7B4tJ,EAAqB5tJ,KAAO3gF,EAAQp1C,MAAM+1H,KAE1Cr3H,EAAG6/I,OAAOnpG,QAAQp1C,MAAM+1H,KAAO3gF,EAAQp1C,MAAM+1H,KAAO,GAGtD3gF,EAAQmI,UAAU7/B,IAAI,4BAEtBhf,EAAG0mR,uBAAuB7nO,UAAU7/B,IAAI,eACxChf,EAAG6/I,OAAOnpG,QAAQmI,UAAU7/B,IAAI,eAChChf,EAAGo5F,OAAO1iD,QAAQmI,UAAU7/B,IAAI,eAChChf,EAAG6gJ,WAAa,KAChB7gJ,EAAGmH,MAAQ,GACX,IAAKgjR,EAAc,CAEjBnqR,EAAG4oR,sBAAsB,MACzBn4Q,EAAQ,YAGXC,MAAKlR,IACN,IAAKQ,EAAGmc,YAAa,CACnB,GAAI3c,IAAU,MAAO,CACnB,IAAI8qR,EACJtqR,EAAG4oR,sBAAsB,OAIxB0B,EAAwBL,EAAc77B,8BAAgC,MAAQk8B,SAA+B,OAAS,EAAIA,EAAsBxjR,KAAKmjR,GAExJ/zD,EAAK1oM,QAAQ,kBAAmB,CAC9B4uM,QAASp8N,IAEXk2N,EAAKq0D,mBAAmB,CACtBnuD,QAASp8N,EACTyvE,UAAW,WAanB7vE,eACE,MAAMI,EAAKC,MACTi2N,KACEA,EAAI+uD,qBACJA,GACEjlR,EACJ+sP,EAAa72B,EAAKoe,WAAWpe,EAAK8zD,cAAchqR,EAAG87N,SACnDmuD,EAAgBjqR,EAAG8sP,gBAAkB9sP,EAAKA,EAAGswE,gBAC/C,OAAO,IAAI9/D,SAAQC,IACjB,GAAIw0Q,GAAwB,KAAM,CAGhC,IAAIkF,EAAe,MAEnB,GAAInqR,EAAGmH,QAAU89Q,EAAqB18G,aAAc,CAClD4hH,EAAe,KAGfnqR,EAAGovB,GAAG,CACJxvB,sBAKEI,EAAGgd,YAAW,IAAMvM,EAAQzQ,IAAK,KAEnCuc,QAASvc,EACT6sB,KAAM,OAIV,GAAIo4P,EAAqBoF,gBAAiB,CACxCt9B,EAAW5lP,MAAQ89Q,EAAqBoF,gBACxCt9B,EAAW11H,KAAO,KAEpBr3H,EAAG02C,QAAQmI,UAAU98C,OAAO,4BAC5B/B,EAAG6gJ,WAAa,MAEhB7gJ,EAAG0mR,uBAAuB7nO,UAAU98C,OAAO,eAC3C/B,EAAG6/I,OAAOnpG,QAAQmI,UAAU98C,OAAO,eACnC/B,EAAGo5F,OAAO1iD,QAAQmI,UAAU98C,OAAO,eAEnC,GAAIkjR,EAAqB5tJ,KAAM,CAE7Br3H,EAAGmH,MAAQ89Q,EAAqB99Q,MAEhCnH,EAAG6/I,OAAOxoB,KAAOr3H,EAAGq3H,KAAO4tJ,EAAqB5tJ,KAChDr3H,EAAGo5F,OAAOi+B,KAAO4tJ,EAAqB5tJ,KACtCr3H,EAAGk5C,OAAS,SACP,CACLl5C,EAAGmH,MAAQ89Q,EAAqB18G,aAElCvoK,EAAG02C,QAAQmI,UAAU98C,OAAO,4BAC5B/B,EAAG6gJ,WAAa,MAChB,IAAKspI,EAAc,CACjB15Q,EAAQ,WACH,CAGLw5Q,EAAc57B,4BACdruP,EAAG4oR,sBAAsB,cAEpB5oR,EAAGilR,yBAEXv0Q,MAAKlR,IACN,GAAIA,IAAU,MAAO,CACnB02N,EAAK1oM,QAAQ,gBAAiB,CAC5B4uM,QAASp8N,IAEXk2N,EAAKq0D,mBAAmB,CACtBnuD,QAASp8N,EACTyvE,UAAW,aAQrBtwE,EAAgBknR,GAAS,YAAa,CACpCgD,oBAAqB,MAEvBhD,GAAQxvM,YACRwvM,GAAQl+Q,OAAS,UAuDjB,IAAIqiR,GAAgBr9P,GAAU,MAAMq9P,UAAsBr9P,GAAU7R,IAClEtN,mBACE,MAAO,eAET6J,wBACE,MAAO,CAOLuyN,SAAU,IAIdxqO,qBAAqBgc,GACnB,MAAM5b,EAAKC,KACTwqR,EAAc,IAAI3rQ,IACpB,IAAK,MAAMk4L,KAAUh3M,EAAGgkM,QAAS,CAC/B,MAAM83B,OACJA,GACE9kB,EAEJ,GAAI8kB,EAAQ,CACV,IAAKlgN,EAAQkgN,GAAS,CACpBlgN,EAAQkgN,GAAU,GAEpB2uD,EAAYzrQ,IAAI88M,IAIpB,GAAIlgN,EAAQ8uQ,QAAUz5O,GAAagN,QAAQriC,EAAQ8uQ,QAAS,CAC1D9uQ,EAAQ8uQ,OAASrgK,GAASvoG,cAAc6oQ,eAAeD,OAEzD,IAAK,MAAM5uD,KAAU2uD,EAAa,CAChCzqR,EAAG4qR,cAAc9uD,EAAQlgN,EAAQkgN,IAGnC97N,EAAGkjB,MAAQljB,EAAGoqO,SACd,OAAOxuN,EAEThc,cAAck8N,EAAQ1jN,EAAS,MAC7B,MAAMpY,EAAKC,KACT4qR,EAAiB7qR,EAAGgkM,QAAQhjG,aAAYg2G,GAAUA,EAAO8kB,SAAWA,GAAQ,CAAC,WAC7EgvD,EAAgB75O,GAAa55B,OAAO,CAClCvK,KAAM,UACNlC,GAAI,GAAG5K,EAAG4K,MAAMkxN,WAChB5F,KAAMl2N,EACN87N,OAAQA,EACRyqD,YAAavmR,EAAGumR,YAChBC,YAAaxmR,EAAGwmR,YAChBxiF,QAAS6mF,EAETn3J,OAAQooG,GACP1jN,GAAUpY,EAAG2qR,eAAe7uD,IACjC,IAAI2qD,EAAqB,MACzB,IAAKqE,EAAczzJ,OAASyzJ,EAAc3jR,MAAO,CAC/C2jR,EAAc3jR,MAAQ0jR,EAAepqD,gBACrCgmD,EAAqB,KAGvB,MAAMrqD,EAAUp8N,EAAGoqO,SAAStO,GAAUuqD,GAAQ/uQ,OAAOwzQ,GAErD1uD,EAAQqqD,mBAAqBA,EAC7B,GAAI3qD,IAAW97N,EAAGq0O,QAAQ,GAAI,CAE5BjY,EAAQ2uD,cAAgB,KAE1B,OAAO3uD,EAGTx8N,WAAWw8N,GACT,GAAIA,EAAQ4uD,UAAW,CACrB,MAAMhrR,EAAKC,MACTijB,MACEA,EAAK0zN,gBACLA,EAAeohC,iBACfA,EAAgB9N,gBAChBA,GACElqQ,EAEJmQ,EAAQ+S,EAAMxd,QAAQ02N,GAAW,EACnC,IAAKp8N,EAAG02N,YAAa,CACnBx+K,GAAU66B,SAAS6jK,EAAiBxa,EAAQuqD,eAAgBx2Q,GAC5D+nC,GAAU66B,SAAS6jK,EAAiBxa,EAAQv8E,OAAOnpG,QAASvmC,GAE9D+nC,GAAU66B,SAASilM,EAAkB57C,EAAQwqD,iBAAkBz2Q,GAC/D+nC,GAAU66B,SAASilM,EAAkB57C,EAAQsqD,uBAAwBv2Q,GACrE+nC,GAAU66B,SAASm3L,EAAiB9tC,EAAQyqD,eAAgB12Q,GAC5D+nC,GAAU66B,SAASm3L,EAAiB9tC,EAAQhjI,OAAO1iD,QAASvmC,GAE5D+S,EAAMjkB,SAAQ,CAACm9N,EAASv9N,KACtB,GAAIA,EAAIqkB,EAAMnkB,OAAS,EAAG,CACxBq9N,EAAQ6uD,mBAId,OAAO9wQ,MAAMw5H,WAAWyoF,GAG1Bx8N,cAAcw8N,GACZjiN,MAAMo5H,cAAc6oF,GACpB,GAAIA,EAAQ4uD,UAAW,CACrB,MAAM9nQ,MACJA,GACEjjB,YACGA,KAAKmqO,SAAShO,EAAQN,QAC7B/4M,GAAYhhB,OAAO9B,KAAKo0O,QAASjY,EAAQN,QACzCM,EAAQpgN,UAER,GAAIkH,EAAMnkB,OAAQ,CAChBmkB,EAAMA,EAAMnkB,OAAS,GAAGmsR,iBAI9BtrR,YACEK,KAAKslP,aAAYnpB,GAAWA,EAAQpgN,YACpC7B,MAAM8B,YAWRrc,YAAYqY,EAAIsE,EAAU,MACxBtc,KAAKijB,MAAMjkB,SAAQ,CAACm9N,EAASv9N,KAC3Bu9N,EAAQ4uD,WAAa/yQ,EAAGnR,KAAKyV,GAAW6/M,EAASA,EAASv9N,QAW9De,gBAAgBwyB,KAAWzrB,GAEzB,IAAIg7D,EAAc,KAClB1hE,KAAKijB,MAAMjkB,SAAQ,CAACm9N,EAASv9N,KAC3B,GAAIu9N,EAAQ4uD,WAAa5uD,EAAQhqM,GAAS,CACxC,MAAM+4P,EAAqB/uD,EAAQhqM,MAAWzrB,GAC9C,GAAI9H,IAAM,EAAG8iE,EAAcwpN,MAG/B,OAAOxpN,EAIT0yK,cACE,OAAOp0O,KAAKijB,MAAMpZ,KAAI8H,GAAQA,EAAKkqN,SAUrCl8N,iBACE,MAAMwM,EAASnM,KAAKo0O,QAAQniO,OAAO,GAEnC,OAAO9F,EAAOrN,SAAW,EAAIqN,EAAS,CAACA,EAAO,GAAIA,EAAO,IAU3DxM,cAAck8N,GACZ,MAAMuY,EAAUp0O,KAAKo0O,QAErB,OAAOA,EAAQA,EAAQ3uO,QAAQo2N,GAAU,IAAMuY,EAAQA,EAAQt1O,OAAS,GAE1Ea,kBAAkBk8N,GAChB,OAAO77N,KAAKo0O,QAAQp0O,KAAKo0O,QAAQ3uO,QAAQo2N,GAAU,GAQrDl8N,WAAWk8N,GACT,OAAO77N,KAAKmqO,SAAStO,GAQvBl8N,qBAAqBo3M,GACnBA,EAASA,aAAkBmiB,GAASniB,EAAS/2M,KAAK+jM,QAAQl3H,QAAQkqI,IAAW/2M,KAAK+jM,QAAQryL,IAAIqlM,GAC9F,OAAO/2M,KAAKq0O,WAAWt9B,EAAO8kB,QAUhCl8N,gBAAgBw8N,GACd,MAAMiY,EAAUp0O,KAAK4sP,iBACrB,IAAI/wB,EAASM,aAAmBiqD,GAAUjqD,EAAQN,OAASM,EAC3D,GAAIiY,EAAQ,KAAOvY,EAAQ,CACzBA,EAASuY,EAAQ,GAEnB,OAAOp0O,KAAKmqO,SAAStO,GAAQgxB,gBAK/BrqL,qBAGF,MAEE2oN,GAAc,IAAIjiR,OAElBkiR,GAAWt1P,GAAaO,aAAaqxF,GAAU,CAE7CusH,aAAc,CACZl9B,OAAQ,SACRs0E,YAAa,UACb71C,WAAY,cACZ81C,gBAAiB,OACjBC,WAAY,eAEdpyC,OAAQ,CACN6B,YAAa,eACb58O,OAAQ,SACRk/O,WAAY,cACZnuN,GAAI,KACJgsC,OAAQ,SACRzd,MAAO,QACPguE,OAAQ,SACR8/J,SAAU,YACVC,SAAU,YACVtuE,aAAc,gBACdpc,cAAe,kBAEjB68C,UAAW,CACT8tC,gBAAiB,kBACjBC,iBAAkB,mBAEpBnrC,MAAO,CACLpiO,MAAO,QACPwtQ,eAAgB,kBAChBC,gBAAiB,mBACjBC,oBAAqB,YACrBC,qBAAsB,aACtBC,aAAc,gBACdC,kBAAmB,QAErB5nC,WAAY,CACV6nC,WAAYjhR,GAAQ,gBAAgBA,KACpCkhR,UAAWlhR,GAAQ,eAAeA,KAClCmhR,eAAgB,kBAChBC,aAAc,iBAEhBp2C,aAAc,CACZE,OAAQ,UAEVkP,WAAY,CACVS,WAAY,cACZwmC,YAAa,0DAEfv2B,OAAQ,CACNw2B,eAAgB,oBAElBt1B,KAAM,CACJh/O,KAAM,OACNu0Q,cAAe,iBACfC,eAAgB,kBAChBv1B,UAAW,aACXqB,aAAc,gBACdm0B,iBAAkB,uBAClBC,kBAAmB,wBACnBC,oBAAqB,sBACrBC,qBAAsB,uBACtBC,mBAAoB,YACpBC,oBAAqB,aACrBC,kBAAmB,SACnBC,sBAAuB,cACvBC,uBAAwB,gBAI1Bh0D,OAAQ,CACNi0D,YAAap2E,GAAU,GAAGA,EAAO9rM,KAAO,GAAG8rM,EAAO9rM,gBAAkB,2BAA2B8rM,EAAO+kB,SAAW,kBAAoB,KACrIsxD,UAAWjC,IAEb5iF,SAAU,CACR8kF,gBAAiB,uBACjBC,gBAAiB,sCAEnBrmD,aAAc,CACZmmD,UAAWr2E,IACT,IAAIw2E,EACJ,MAAO,GAAGx2E,EAAO9rM,KAAO8rM,EAAO9rM,KAAO,OAAOsiR,EAAmBx2E,EAAOjyM,YAAc,MAAQyoR,SAA0B,GAAKA,EAAiB/6M,OAAS,YAAYukI,EAAOjyM,SAAS0tE,OAAOukI,EAAOxgM,QAAU,IAAM,OAGpN6zG,SAAU,CACRojK,kBAAmB,uBACnBC,kBAAmB,+BACnBC,mBAAoB,sBACpBC,eAAgB,gBAChBC,aAAc,kCACdC,eAAgB,mBAChBC,OAAQ,wBACRC,eAAgB,uBAChBC,gBAAiB,wBACjBC,aAAcpyD,GAAU,kBAAkBA,KAE5CkV,SAAU,CACRK,UAAW,UAEbid,aAAc,CACZ6/B,WAAY,OACZC,UAAW,MACXC,YAAa,SAIfC,UAAW,CACTC,mCAAoC,sCACpCC,gBAAiB,gBACjBC,eAAgB,eAChBC,mBAAoB,sBACpBC,iBAAkB,SAEpBvwB,aAAc,CACZj3P,MAAO,OACPwkL,WAAY,OACZijG,eAAgB,kBAChB1gB,OAAQ,SACRjB,aAAc,qBACdrlP,OAAQ,SACRilP,WAAY,cACZl9F,KAAM,OACN82F,UAAW,aACXziE,QAAS,UACTokE,YAAa,eACbvgD,YAAa,cACbsjD,aAAc,iBAEhBlN,gBAAiB,CACfx0P,IAAK,WACL+sF,QAAS,gBAEX0nK,uBAAwB,CACtBP,SAAU,WACVC,UAAW,aAEbixB,mBAAoB,CAClBC,WAAY,eAEdC,kBAAmB,CACjBC,UAAW,iBACXC,cAAe,EACbxgL,YAAAA,EACAm6J,WAAAA,KACI,kBAAkBn6J,KAAem6J,KAEzCsmB,0BAA2B,CACzBC,kBAAmB,4BACnBF,cAAe,EACbxgL,YAAAA,EACAm6J,WAAAA,KACI,kBAAkBn6J,KAAem6J,KAEzCjY,YAAa,CACX12L,QAAS,aAKf3hC,GAAuBvB,eAAe,KAAM,CAC1CC,KAAM,UACNf,OAAQo1P,KAOV,MAAM+D,GAAkB,IAAI5+Q,SAAQC,GAAWA,MAC7C4+Q,GAAoB,iBACpBC,GAAyB,CACvBzvO,MAAO,UACPoW,OAAQ,WAEVs5N,GAAwB,CACtB54P,QAAS,EACT64P,SAAU,EACVnxR,OAAQ,GAwDZ,MAAMgsH,WAAiB8kC,GAAM1uI,MAAM0hD,GAAWwG,GAAOywM,GAAmBoC,GAAcyB,GAAgBiD,GAAgBgB,GAAeuD,GAAW+F,GAAc5rG,KAE5J5wK,mBACE,MAAO,WAGTlB,kBACE,MAAO,WAET+b,uBACE,MAAO,CACL4mQ,qBAAsB,CACpB3iR,KAAM,OAER4iR,4BAA6B,IAC7BC,sBAAuB,KAG3BlwR,0BACE,MAAO,CA4BL0uN,WAAY,KAsBZyhE,aAAc,KAQdC,oBAAqB,KASrBC,eAAgB,KAOhB5uB,aAAc,YASd6uB,UAAW,KAsFXpF,eAAgB,CACdD,OAAQ,CACNrzJ,KAAM,IAiCVxrD,MAAO,CACLrsE,MAAO,GACPiiB,QAAS,WAEXq1M,WAAY,CACVt3N,MAAO,GACPiiB,QAAS,CAAC,UAAW,SAWvBqhJ,cAAe,CACbtjK,MAAO,GACPiiB,QAAS,CAAC,UAAW,SA+CvBuiL,QAAS,CACPxkM,MAAO,GACPiiB,QAAS,WAaX63B,UAAW,OACX8gN,YAAa,KACbxnH,0BAA2B,MAC3B0c,UAAW,MACXv3B,YAAa,cACb2vJ,cAAe,EACf7gB,OAAQ,CACNrnQ,MAAO,aACPiiB,QAAS,CACPhS,MAAOxP,KAAK+vR,WAGhB90D,QAAS,CACP17N,MAAO,cACPiiB,QAAS,CACPhS,MAAOxP,KAAK+vR,YAMpBluQ,2BACE,MAAO,CAYL2tJ,UAAW,KAYXwhF,eAAgB,KAoChBg/B,iBAAkB,GAOlBtyF,UAAW,YAaXuyF,eAAgB,KAOhBx5D,YAAa,KAQby5D,8BAA+B,KAO/BC,6BAA8B,KAuC9Bj2P,KAAM,KAONqnM,cAAe,SAOf1jC,aAAc,KAMdvnE,aAAc,CACZ3G,MAAO,OACPhxH,OAAQ,WAYVyxR,YAAa,KAObzxD,0BAA2B,KAO3B0xD,oBAAqB,KASrBC,2BAA4B,KAC5BhK,YAAarO,GACbsO,YAAa7U,GACb6e,gBAAiB,MACjBC,cAAe,OAQfp6J,cAAe,KAOfrE,SAAU,KAOVzO,WAAY,CAGVh2D,UAAW,MAQbspE,cAAe8gJ,GACfvvB,iBAAkB,EAOlBtxL,mBAAoB,IAQpBkmG,wBAAyB,cACzB9jI,sBAAuB,CAAC,aACxB6uM,iBAAkB,GAClB7lN,WAAY,CACV40C,mBAAoB,KAI1Bl3D,iBACE,MAAO,uCAETiY,wBACE,MAAO,CACL64Q,iBAAkB,GAClBC,sBAAuB,EACvBC,oBAAqB,EACrBC,WAAY,MAehBjxR,gBAAgBwY,GACd,MAAMpY,EAAKC,MACT43Q,WACEA,GACE73Q,EAENA,EAAG63Q,WAAa,KAAO73Q,EAAG8wR,mBAAqBjZ,EAAW/wQ,KAAK9G,GAC/Dma,MAAM4D,gBAAgB3F,GAKtBkgB,GAAuBlJ,GAAG,CACxB6G,OAAQ,uBACRnJ,KAAM,EACNvQ,QAASvc,IAEXs4B,GAAuBlJ,GAAG,CACxB6G,OAAQ,iBACRnJ,MAAO,EACPvQ,QAASvc,IAEXo6D,GAAehrC,GAAG,CAChBwqC,MAAO,gBACPr9C,QAASvc,IAEXA,EAAGovB,GAAG,CACJgxM,cAAe,kBACftzM,MAAO,EACPvQ,QAASvc,IAGXA,EAAG+wR,0BAA4B/wR,EAAGinB,OAAO,oBAAqB,IAAKjnB,GAEnEA,EAAGgxR,iBAAiBhxR,EAAG02C,QAAQmI,WAEjCj/C,kBAGEK,KAAKqlR,iBAEP1lR,uBACEK,KAAKgxR,uCAAyC,KAEhDrxR,iBACEK,KAAKgxR,uCAAyC,MAC9C,GAAIhxR,KAAK6oI,UAAW,CAClB7oI,KAAKqlR,kBAGT1lR,eACEua,MAAM2uD,eACN,GAAI7oE,KAAK4rE,MAAMyG,UAAW,CAExBryE,KAAK+iN,wBAGTpjN,oBAAoBkjK,EAAeouH,GACjCA,IAAqB,MAAQA,SAA0B,OAAS,EAAIA,EAAiBl1Q,UACrF,GAAI8mJ,EAAe,CACjB,OAAOqhB,GAAcrzD,IAAI,CACvBp6E,QAASz2C,KAAKy2C,QACd99B,MAAO3Y,MACN6iK,OACE,CACL,OAAO,MAOXljK,YACE,IAAIgjK,EACJ,MAAM5iK,EAAKC,KACXD,EAAGwpE,gBAAgB6lN,KAClBzsH,EAAoB5iK,EAAG8iK,iBAAmB,MAAQF,SAA2B,OAAS,EAAIA,EAAkB5mJ,UAC7G,IAAK,MAAMigJ,KAAW/9J,OAAO4N,OAAO9L,EAAGgyH,UAAW,CAChD,IAAIm/J,GACHA,EAAmBl1H,EAAQjgJ,WAAa,MAAQm1Q,SAA0B,OAAS,EAAIA,EAAiBrqR,KAAKm1J,GAEhHj8J,EAAGq/N,aAAe,KAClBr/N,EAAGgkM,QAAQhoL,UACX7B,MAAM8B,YAORrc,iBAAiBi/C,GACf,MAAM7+C,EAAKC,KACX/B,OAAO4N,OAAO9L,EAAGgyH,UAAU/yH,SAAQg9J,IACjC,GAAIA,EAAQp8F,SAAU,CACpB,OAEF,IAAIgC,EACJ,GAAI3jE,OAAO4P,UAAUC,eAAejH,KAAKm1J,EAAQ3rJ,YAAa,gBAAiB,CAC7EuxD,EAAeo6F,EAAQ3rJ,YAAYuxD,iBAC9B,CACLA,EAAe,KAAKo6F,aAAmB3gJ,GAAS2gJ,EAAQ5/I,OAAS4/I,EAAQ3rJ,YAAY5L,OAEvF,GAAIm9D,EAAc,CAChBhjB,EAAU7/B,IAAI6iD,EAAa34D,mBAqCjCtJ,UACE,MAAMuuN,WACJA,EAAUyhE,aACVA,EAAYC,oBACZA,EAAmBC,eACnBA,EAAc5uB,aACdA,EAAY6uB,UACZA,GACE9vR,KACJ,MAAO,CACLkgB,MAAO,CACLvgB,CAAC,UAAUshQ,KAAiB,EAC5BkwB,kBAAmBxB,EACnByB,0BAA2BxB,EAC3ByB,eAAgBnjE,EAChBojE,qBAAsBzB,EACtB0B,eAAgBzB,IAItB70D,cACE,MAAMu2D,SACJA,GACExxR,KAEJ,OAAOwxR,EAASjyR,OAASiyR,EAE3BhhI,iBACE,MAAM09D,WACJA,EAAUisC,YACVA,EAAW1jC,YACXA,GACEz2N,KACJ,MAAO,CACL+oD,UAAW,cACXrK,UAAW,CACT2yO,eAAgBnjE,EAChBujE,oBAAqB,GAGvB9xR,CAACK,KAAKygJ,UAAY,iBAAmB,IAAK,GAAGzgJ,KAAK2K,iBAClD08C,SAAU,CACRsvL,gBAAiB,CACfl2N,IAAK,SACLwxC,KAAM,MACNy/N,gBAAiB,EACjBhzO,UAAW,CACTizO,0BAA2B,EAC3BC,WAAYn7D,IAGhBoa,cAAe,CACbnyL,UAAW,wBACXsxG,UAAW,EAGX/9F,KAAM,eACN5K,SAAU,CACRw/N,iBAAkB,CAChBnoO,UAAW,8BAIjBq5N,iBAAkB,CAChBr5N,UAAW,qCACXr9C,MAAO3B,EAAc4D,UAAY,CAC/B2D,OAAQ,GAAGgxC,GAAUK,oBACnB11C,WAENqnQ,gBAAiB,CACfxpP,IAAK,SACLi+B,UAAW,CACTmzO,0BAA2B,EAC3BD,WAAYz3B,MAMtBx4I,qBACE,OAAO3hH,KAAK6mR,iBAEdzkJ,sBACE,OAAOpiI,KAAK6wO,cAEdlxO,kBAAkBgyH,GAChB,IAAImgK,GACHA,EAAwB9xR,KAAKiqQ,mBAAqB,MAAQ6nB,SAA+B,OAAS,EAAIA,EAAsBlzO,UAAU+yE,EAAO,MAAQ,UAAU,YAIlKhyH,cAAcokM,EAASguF,GACrB,MAAMhyR,EAAKC,KAGX,IAAK+jM,GAAWguF,EAAc,CAE5B,GAAIhyR,EAAGoZ,aAAc,CACnB44Q,EAAap5Q,QAAU5Y,GAAMgyR,EAAah2Q,cAGvC,CACHg2Q,EAAalyL,YAEf,OAAOkyL,EAGT,GAAIhuF,EAAQ5oH,QAAS,EAClB42M,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAap5Q,SAAW5Y,GAAMgyR,EAAah2Q,UACxGgoL,EAAQkyB,KAAOl2N,EACf,OAAOgkM,EAGT,GAAIx8L,MAAMC,QAAQu8L,GAAU,CAE1B,GAAIguF,EAAc,CAGhBhyR,EAAGixR,uCAAyC,KAC5C,MAAMgB,EAAmBD,EAAah3M,WAAW38E,QAAO24M,IAAWhT,EAAQn4L,SAASmrM,IAAWA,IAAWh3M,EAAG2hR,0BAC7GqQ,EAAajwR,OAAOiwR,EAAah3M,WAAY,MAC7Ci3M,EAAiBhzR,SAAQ+3M,IACvB,IAAIk7E,EACJ,OAAQA,EAAkBl7E,EAAOh7L,WAAa,MAAQk2Q,SAAyB,OAAS,EAAIA,EAAgBprR,KAAKkwM,MAEnHg7E,EAAa73P,KAAO6pK,EACpBhkM,EAAGixR,uCAAyC,MAC5C,OAAOe,EAGThuF,EAAU,CACR7pK,KAAM6pK,GAGV,GAAIguF,EAAc,CAChB,MAAM,IAAIrhR,MAAM,0CAGlB,OAAOqvN,GAAYlvG,IAAI,CACrBolG,KAAMl2N,EACN4Y,MAAO5Y,GACNgkM,GAELpkM,cAAcokM,EAASzrL,GACrB,IAAIosQ,EACJ,MAAM3kR,EAAKC,MACV0kR,EAAuBxqQ,MAAMyqQ,iBAAmB,MAAQD,SAA8B,OAAS,EAAIA,EAAqB79Q,KAAK7G,KAAM+jM,EAASzrL,GAI7IyrL,EAAQ50K,GAAG,CACT2pK,QAAS/4L,EAAGmyR,iBACZ9sM,OAAQrlF,EAAGmyR,iBACXj6Q,KAAMlY,EAAGmyR,iBACT51Q,QAASvc,IAEXgkM,EAAQ50K,GAAG6yM,GAAkBjiO,EAAGoyR,iBAAkBpyR,IAElD,GAAIL,EAAcwC,cAAe,CAC/BnC,EAAG4+J,MAAQ,KAEXolC,EAAQ/kM,SAAQ+3M,IACd,MAAMq7E,YACJA,GACEr7E,EACJ,GAAIq7E,EAAa,CACfr7E,EAAOztI,WAAW8oN,OAIxBryR,EAAG+zJ,YAAYrkG,aAAa,gBAAiBs0I,EAAQsyB,eAAev3N,QAEtEa,kBAAiBkN,KACfA,EAAIulD,OACJA,EAAMmgB,QACNA,EACAC,OAAQukI,EACR9kI,QAASogN,EAAYzkN,OACrBA,IAEA,MAAM0kN,EAAsB//M,GAAWt0E,OAAOD,KAAKu0E,GAASzzE,SAAW,EACvE,GAAI+N,IAAS,WAAaulD,IAAW,SAErCA,IAAW,UAAYkgO,GAAuB,gBAAiB//M,EAAS,CACtE,OAEF,MAAMxyE,EAAKC,MACT+jM,QACEA,EAAO29E,wBACPA,GACE3hR,EAEN,IAAKA,EAAG8oI,WAAaj7D,GAAUxb,IAAW,SAAU,CAClD,OAGF,GAAIA,IAAW,MAAO,CACpB,IAAK,MAAM2kJ,KAAUs7E,EAAc,CACjC,MAAMx2D,OACJA,GACE9kB,EAEJ,IAAKh3M,EAAGoqO,SAAStO,GAAS,CACxB97N,EAAGgf,IAAIhf,EAAG4qR,cAAc9uD,EAAQ97N,EAAG2qR,eAAe7uD,OAIxD,GAAIzpK,IAAW,SAAU,CAEvB,GAAI,UAAWmgB,GAAW,aAAcA,GAAW,aAAcA,GAAW,SAAUA,EAAS,CAE7F,MAAMspJ,EAAS9kB,EAAO8kB,OAItB93B,EAAQsyB,eAAer3N,SAAQyhO,IAC7B,GAAIA,EAAI5E,SAAWA,GAAU4E,EAAI8xD,gBAAiB,CAChDxyR,EAAGqkP,cAAc3jB,OAGrB1gO,EAAGyyR,mBAAmB,CACpBpgO,OAAAA,EACAmgB,QAAAA,EACAwkI,OAAAA,IAEF,OAGF,GAAI,SAAUxkI,GAAW+/M,EAAqB,CAC5Cv7E,EAAOolB,QAAQs2D,gBACf,OAGF,GAAI,WAAYlgN,EAAS,CACvB,MAAM4pJ,EAAUp8N,EAAGu8N,qBAAqBvlB,EAAOpsM,IAC/CwxN,EAAQv8E,OAAOm5H,kBACf58C,EAAQhjI,OAAOw4K,kBACfx1C,EAAQ+rD,iBAIZ,GAAI91N,IAAW,WAAaA,IAAW,SAAWA,IAAW,UAAY,WAAYmgB,EAAS,CAC5F,MAAM6hK,EAAUrwC,EAAQzpG,kBAAkB,WACxC71E,SACEA,EAAQD,MACRA,GACE1B,GAAY9R,MAAMojO,EAASr0O,EAAGq0O,QAAS,MAC7Cr0O,EAAG+B,OAAO2iB,EAAS5a,KAAIgyN,GAAU97N,EAAGs0O,WAAWxY,MAC/C97N,EAAGgf,IAAIyF,EAAM3a,KAAIgyN,GAAU97N,EAAG4qR,cAAc9uD,MAG9C,GAAI6lD,IAA4B39E,EAAQn4L,SAAS81Q,GAA0B,CAEzE,MAAMrsK,EAAc0uF,EAAQt+L,QAAQs+L,EAAQm9B,WAAW,OAAQ,cAAgB,EAC/En9B,EAAQnxG,OAAOyiB,EAAaqsK,EAAyB,MAEvD,IAAK3hR,EAAGixR,uCAAwC,CAC9CjxR,EAAGslR,iBAKLtlR,EAAGwoR,oBAIHxoR,EAAG+zJ,YAAYrkG,aAAa,gBAAiBs0I,EAAQsyB,eAAev3N,QACpEiB,EAAGyyR,mBAAmB,CACpBpgO,OAAAA,EACAmgB,QAAAA,EACAwkI,OAAAA,IAGJp3M,kBAAiB4yE,QACfA,EACAC,OAAQukI,IAER,MAAMh3M,EAAKC,KACX,GAAID,EAAGyd,cAAe,CACpB,OAEF,MAAM6zP,EAAWp5N,GAAUod,UAAU0hJ,EAAO7vM,OAC1CoqQ,EAAcr5N,GAAUod,UAAU0hJ,EAAOz9J,UACzCi4N,EAAct5N,GAAUod,UAAU0hJ,EAAO9/E,UACzCklG,EAAUp8N,EAAGu8N,qBAAqBvlB,EAAOpsM,IAE3CwxN,EAAQv8E,OAAOm5H,kBACf58C,EAAQhjI,OAAOw4K,kBACfx1C,EAAQ+rD,gBAER,KAAMnxE,EAAO3/E,MAAQ2/E,EAAOrnI,YAAa,CACvC,IAAK3vE,EAAG2yR,SAAW37E,IAAWh3M,EAAG4yR,kBAAmB,CAClD5yR,EAAG2yR,QAAUz6O,GAAUoP,SAAStnD,EAAG02C,QAAS,gCAAgCsgK,EAAOpsM,QACnF5K,EAAG4yR,kBAAoB57E,EAEzB,IAAK,MAAM5P,KAAQpnM,EAAG2yR,QAAS,CAC7B,GAAI,UAAWngN,EAAS,CAMtB40H,EAAK9lM,MAAM6F,MAAQmqQ,EAErB,GAAI,aAAc9+L,EAAS,CACzB40H,EAAK9lM,MAAMi4C,SAAWg4N,EAExB,GAAI,aAAc/+L,EAAS,CACzB40H,EAAK9lM,MAAM41H,SAAWs6I,EAExB,GAAI,SAAUh/L,EAAS,CACrB,IAAIqgN,EACJzrF,EAAK9lM,MAAM+1H,MAAQw7J,EAAe77E,EAAO3/E,QAAU,MAAQw7J,SAAsB,EAAIA,EAAe,OAM1G,IAAK7yR,EAAG6yO,gBAAiB,CACvB7yO,EAAG8yO,sBAKL9yO,EAAGwoR,oBAEL5oR,sBACE,MAAMI,EAAKC,KACXD,EAAGulP,aAAYnpB,IACb,IAAKA,EAAQ3sJ,UAAW,CACtB2sJ,EAAQ02D,YACR12D,EAAQqsD,+BAGZzoR,EAAG4yR,kBAAoB5yR,EAAG2yR,QAAU,KAEpC3yR,EAAG0vR,8BAEH1vR,EAAG+yR,iBAELnzR,oBACE,MAAMozR,EAAgB/yR,KAAK+jM,QAAQzlI,OAAMh5D,GAAKA,EAAE8xH,MAAQ9xH,EAAEoqE,YAAcpqE,EAAEmxC,UAI1E,GAAIs8O,EAAe,CACjB,IAAK,MAAMh8E,KAAUg8E,EAAe,CAClC,MAAM7rR,EAAQ6vM,EAAOtgK,QAAQa,wBAAwBpwC,MACnDwrR,EAAUz6O,GAAUoP,SAASrnD,KAAKy2C,QAAS,gCAAgCsgK,EAAOpsM,QACpF,IAAK,MAAMw8L,KAAQurF,EAAS,CAC1BvrF,EAAK9lM,MAAM+1H,KAAO,OAAOlwH,SAKjCvH,8BAEE,GAAIK,KAAK+jM,QAAQ09B,eAAgB,CAC/BzhO,KAAKs6O,cAEPt6O,KAAKo7Q,2BACLp7Q,KAAKslP,aAAYnpB,IACf,IAAKA,EAAQ3sJ,UAAW,CACtB2sJ,EAAQopD,wBAId5lR,wBACEK,KAAKs6O,cAEP36O,iBAAiB82C,EAAS82F,EAAUC,EAAWH,EAAUC,GAQvD,GAAIr1F,GAAUK,gBAAkBi1F,EAAWF,EAAU,CACnDrtI,KAAKslP,aAAYnpB,IACf,GAAIA,EAAQ/kG,KAAM,CAChB+kG,EAAQ19G,gBAAgB09G,EAAQ1lL,aAItCv8B,MAAMyzH,oBAAoB9uI,WAE1B,GAAImB,KAAK6oI,WAAa0E,IAAaF,GAAYrtI,KAAK+jM,QAAQ29B,mBAAoB,CAC9E1hO,KAAK0vR,yBAsET/vR,iBAAiBk3N,EAAYm8D,GAC3B,MAAMjzR,EAAKC,KAIX,IAAKD,EAAGkzR,eAAgB,CACtBlzR,EAAGmzR,mBAELF,IAAkB,MAAQA,SAAuB,OAAS,EAAIA,EAAcj3Q,UAC5E,GAAI86M,EAAY,CAGd,MAAM1qN,EAAS6lQ,GAAWnhJ,IAAI,CAC5BolG,KAAMl2N,EACNyvK,UAAWzvK,EAAGyvK,UACdghH,cAAezwR,EAAGywR,eAAiB,OACnCtiE,WAAYnuN,EAAGmuN,WACf8iC,eAAgBjxP,EAAGixP,eACnB3jO,UAAW,CACTq/M,kBAAmB,gCACnBymD,oBAAqB,kCACrB72Q,QAASvc,IAEV82N,GAEH92N,EAAGikM,YAAY73L,EAAQ,CAAC,kBAAmB,cAI3CpM,EAAG4yQ,YAAc,KACjB,OAAOxmQ,GAIXxM,aAAa6yE,GACX,OAAOA,EAAOg9F,UAGhB7vK,iBAAiB6yE,EAAQvrE,IAQzBtH,UAAUisE,GACR,MAAM1vC,EAASl8B,KAAK8nO,iBACpBl8J,EAAMz8C,GAAG,CACP1qB,KAAM2qR,GACNzvR,CAAC,UAAUu8B,KAAW,oBACtBv8B,CAAC,MAAMu8B,KAAW,aAClBv8B,CAAC,SAASu8B,KAAW,gBACrBv8B,CAAC,UAAUu8B,KAAW,iBACtBv8B,CAAC,YAAYu8B,KAAW,mBACxBv8B,CAAC,OAAOu8B,KAAW0vC,EAAM8a,KAAO,KAAO,kBACvCtB,OAAQ,uBACRguM,SAAU,wBACVzlL,OAAQ,sBACR0lL,cAAe,uBACfj4F,aAAc,sBACdt4F,UAAW,mBACXjP,OAAQ,gBACRv3E,QAAStc,OAEXka,MAAM0tN,UAAUh8J,GAElBjsE,YAAYsgM,GACVjgM,KAAKupE,gBAAgB6lN,IACrB,GAAIpvR,KAAK69L,aAAc,CACrBoC,EAASlkL,WAGbpc,YAAYisE,GACV,GAAIA,GAAS,KAAM,CACjB,OAAO,KAET,UAAWA,IAAU,SAAU,CAC7BA,EAAQg7B,GAAMM,SAASt7B,GAEzB,IAAKA,EAAMuP,QAAS,CAClB,IAAIm4M,EACJ1nN,EAAQ56B,GAAa55B,OAAO,CAC1B8iB,KAAMl6B,KAAKk6B,KACXwsD,KAAMxmF,SAASozR,EAAwBtzR,KAAKud,cAAcw0G,YAAc,MAAQuhK,SAA+B,OAAS,EAAIA,EAAsB5sM,OACjJ9a,GACH,IAAKA,EAAM1xC,KAAM,QACR0xC,EAAM1xC,KAEf,IAAK0xC,EAAM2O,WAAY,CACrB3O,EAAM2O,WAAakwJ,GAErB7+J,EAAQ,IAAKA,EAAM6iC,QAAUhC,GAAY7F,IAAOh7B,GAElD,OAAOA,EAETjsE,YAAYisE,EAAOtzD,GACjB,IAAImsQ,EACJ,MAAM1kR,EAAKC,MACVykR,EAAqBvqQ,MAAM2iM,eAAiB,MAAQ4nE,SAA4B,OAAS,EAAIA,EAAmB59Q,KAAK7G,KAAM4rE,EAAOtzD,GACnI,GAAIA,EAAK,CACPvY,EAAGsyO,YAAY/5N,GAEjB,GAAIszD,EAAO,CAET,GAAItzD,EAAK,CACPvY,EAAGk6L,cAELl6L,EAAG6nO,UAAUh8J,GAEf7rE,EAAGwtB,QAAQ,YAAa,CACtBq+C,MAAAA,EACAq0H,SAAU3nL,IAGZ,IAAKvY,EAAGoZ,cAAgBpZ,EAAG8oI,YAAc9oI,EAAGooP,iBAAkB,CAC5D,IAAIorC,GACHA,EAAkBxzR,EAAG4yQ,eAAiB,MAAQ4gB,SAAyB,OAAS,EAAIA,EAAgBz2B,gBAQzGn9P,qBACEZ,OAAQ6sE,EAAK4G,OACbA,EAAMD,QACNA,IAEA,MAAMxyE,EAAKC,KACX,GAAID,EAAGooP,iBAAkB,CACvB,OAEF,GAAIpoP,EAAGmkP,iBAAkB,CAEvBnkP,EAAG82N,WAAW/9B,UACd/4L,EAAGmkP,iBAAmB,UACjB,CACL,IAAIv1E,EAEJ,GAAIn8F,EAAO+oJ,gBAAgB,MAAO,CAChC5sD,EAAM5uK,EAAGukO,UAAU9xJ,EAAOryD,KAAKqzD,SAAS7oE,IAE1CgkK,EAAMA,GAAO5uK,EAAGukO,UAAU9xJ,GAE1B,IAAKm8F,EAAK,CACR,OAIF,GAAI5uK,EAAGkwR,gBAAkBz9M,EAAO6T,aAAc,CAC5C,MAAMn2E,EAAQ07D,EAAMnmE,QAAQ+sE,GAC5B,GAAItiE,KAAW,EAAG,CAChBy+J,EAAI50J,OAAO7J,EAAOsiE,QAEf,CACLzyE,EAAGgkM,QAAQsyB,eAAer3N,SAAQ+3M,IAChC,MAAMxgM,EAAQwgM,EAAOxgM,MACnBi9Q,EAASz8E,EAAO1mM,YAAYsxN,iBAAmB1jO,OAAO4P,UAAUC,eAAejH,KAAKkwM,EAAO78K,KAAM,YAInG,IAAKs5P,GAAUjhN,EAAQh8D,GAAQ,CAC7B,MAAM+nN,EAAc3vD,EAAIo4B,QAAQxwL,GAChC,GAAI+nN,EAAa,CACf3vD,EAAIqwD,WAAWV,UAO3B3+N,yBAAyBgvK,EAAKlhG,GAC5B,MAAM1tE,EAAKC,MACT62N,WACEA,GACE92N,EACN82N,EAAWs6B,cAAcxiF,GACzBkoD,EAAWtpM,QAAQ,oBAAqB,CACtC84O,YAAaxvC,EAAWwvC,cAI1B,GAAItmQ,EAAG6rE,MAAM5nD,QAAU,EAAG,CACxBjkB,EAAG0zR,gBAAgB,sBAGvB9zR,gBAAgBoxH,GACd72G,MAAMq3G,gBAAgBR,GACtB/wH,KAAKi0Q,kBAOPt0Q,YACEZ,OAAQ6sE,EAAKqG,QACbA,EAAO/hE,MACPA,EAAKsgF,SACLA,EAAQ0B,QACRA,EAAOlf,UACPA,EAAS1gE,OACTA,EAAMs7D,OACNA,EAAMwtL,YACNA,IAGA,IAAKp7P,KAAK6oI,WAAauyH,EAAa,CAClC,OAGF,MAAMs4B,EAAuB9lN,GAAUqE,EAAQtqE,MAAK6qE,IAClD,GAAI5E,EAAO4E,EAAO7nE,IAAK,CAErB,MAAMqoE,EAAYpH,EAAMiB,QAAQ2F,EAAOryD,KAAKqzD,SAASjD,UACrD,OAAQyC,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU5D,WAAWxD,MAAYoH,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU3D,kBAAkBzD,QAIrL,GAAIsmB,IAAYjgB,EAAQ,GAAG5C,kBAAkBzD,KAAW8nN,EAAsB,CAE5E,IAAKphR,EAAO48D,OAAQ,CAClB,MAAMykN,EAAY3zR,KAAK62N,WAAW6B,WAAWpmN,GAC7C,GAAIqhR,EAAW,CACb3zR,KAAK62N,WAAW2V,WAAW,CAACmnD,KAGhC,OAEF3zR,KAAK62N,WAAWk8C,kBAAkB,MAAO,KAAM,MAE/C,GAAInnM,EAAMwgB,WAAY,CACpBl8E,EAAQ07D,EAAMnmE,QAAQwsE,EAAQ,IAEhC,MAAMlyE,EAAKC,MACT62N,WACEA,GACE92N,GACJ++N,SACEA,EAAQpvD,KACRA,EAAIqvD,SACJA,GACElI,EACJ+8D,EAAc/8D,EAAWiI,SAAWjI,EAAWkI,SAAW,EAC1D80D,EAAY3jR,EACZ4jR,EAAU5jR,EAAQ+hE,EAAQnzE,OAAS,EACnCi1R,EAAQH,GAAehoN,EAAM5nD,MAAQiuD,EAAQnzE,OAAS,EAKxD,GAAIk0E,GAAawd,GAAY,GAAK0B,GAAWtkB,EAAQ,CACnDipJ,EAAW/9B,eAGR,GAAI+6F,GAAa/0D,GAAY+0D,EAAY/0D,EAAWC,EAAU,CACjEh/N,EAAGi0R,yBAAyBtkH,EAAKmkH,EAAY/0D,MAAcjgO,gBAGxD,GAAIi1R,GAAWh1D,GAAYg1D,EAAUh1D,EAAWC,EAAU,CAC7DlI,EAAW/9B,cAIR,CAGH,GAAIi7F,GAAS7jR,EAAQ0jR,EAAa,CAChC/8D,EAAW8/C,UAAU52Q,EAAG6wR,YAAc,GAExC/5D,EAAWo8C,oBAAoB,OAQnCtzQ,kBAAiByyD,OACfA,EAAMvlD,KACNA,EAAI8nB,SACJA,EAAQw6E,cACRA,EAAan6E,MACbA,IAEA,IAAIi/P,EACJ,MAAMl0R,EAAKC,KACX,IAAIyU,EACJ,OAAQ5H,GACN,IAAK,SACH4H,EAAUkgB,EAASlgB,SAAW1U,EAAGo7B,EAAE,yBACnC,MACF,IAAK,YACH1mB,EAAU06F,IAAkB,UAAYpvG,EAAGo7B,EAAE,sBAAwBnG,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMvgB,WAAakgB,IAAa,MAAQA,SAAkB,OAAS,GAAKs/P,EAAuBt/P,EAASG,cAAgB,MAAQm/P,SAA8B,OAAS,EAAIA,EAAqBx/Q,UAAY1U,EAAGo7B,EAAE,mBACpU,MAGJp7B,EAAGm0R,eAAe,oFAC0Bn0R,EAAGo7B,EAAEi3B,IAAW,OAAS,uBAAyB,kDAChFz9B,IAAa,MAAQA,SAAkB,GAAKA,EAAS/uB,IAAM,iCAAiC+uB,EAAS/uB,YAAc,qDACrF7F,EAAGo7B,EAAE,6EACL1mB,+BAQ9C9U,mBAAkByyD,OAChBA,EAAMmgB,QACNA,EACAxzE,OAAQ6sE,IAER,GAAI5rE,KAAKmoP,mBAAqBnoP,KAAK62N,WAAY,CAC7C,OAEF,MAAM92N,EAAKC,KACTm0R,EAAqBvoN,EAAM2lB,WAAahf,GAAW3G,EAAMwrB,SAASzvF,MAAKqyF,GAAWA,EAAQzjF,SAASg8D,IAErGr4D,MAAMopQ,mBAAqBppQ,MAAMopQ,qBAAqBzkR,WAEtD,GAAIuzD,IAAW,UAAW,CACxBryD,EAAG82N,WAAW69C,oBAIhB,GAAI30Q,EAAG8oI,YAAcsrJ,EAAoB,CAEvCp0R,EAAGysO,WAAWtsO,UAAUkyD,KAAUk9N,KAA0BvvR,EAAGmwR,gCAEjEnwR,EAAGk0Q,kBAOLt0Q,wBAEEua,MAAMyjQ,uBAAyBzjQ,MAAMyjQ,yBAAyB9+Q,WAOhEc,uBACEK,KAAKo0R,gBAOPz0R,oBAAoBwwB,GAClB,GAAInwB,KAAKqqH,WAAal6F,EAAM2yE,UAAW,CACrC9iG,KAAKq2H,OAAS,KACdr2H,KAAKi0Q,mBAGTt0Q,+BAA8B2iG,WAC5BA,IAEA,MAAMyvB,EAAW/xH,KAAK07Q,UACtB,OAAQ3pJ,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAAS3zG,SAAW2zG,EAAS3zG,MAAMwhD,WAAamyD,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAAS2uH,gBAAkB3uH,EAAS2uH,aAAa9gL,UAEjN5/D,KAAK4rE,MAAM8a,OAAS4b,GAActiG,KAAK4rE,MAAM2O,WAAWrM,yBAO1DvuE,eAAcsyE,QACZA,EAAOqwB,WACPA,EAAUpQ,QACVA,EAAOtkB,OACPA,EAAMutL,cACNA,IAIA,IAAKn7P,KAAK6oI,WAAaj7D,GAAUutL,EAAe,CAC9C,OAGFjhP,MAAMmpQ,eAAiBnpQ,MAAMmpQ,iBAAiBxkR,WAC9C,MAAMkB,EAAKC,MACT62N,WACEA,GACE92N,EAEN82N,EAAWw9D,sBAAsBpiN,GACjC,GAAIlyE,EAAGswR,sBAAwB/tL,IAAepQ,EAAS,CAErD,MAAMoiM,EAAeriN,EAAQxmE,QAAO,CAACU,EAAQqmE,KAC3C,MAAMm8F,EAAMkoD,EAAW6B,WAAWlmJ,EAAO7nE,IACzCgkK,GAAOxiK,EAAO3N,KAAKmwK,GACnB,OAAOxiK,IACN,IACH,GAAImoR,EAAax1R,OAAQ,CACvB,MAAM6oP,EAAS2sC,EAAa,GAC5Bv0R,EAAGglH,YAAc,KAEjBjkE,GAAY2D,gBAAgB,CAC1BhO,QAASkxM,EAAOoY,eAAe,GAC/B5tP,SAAU,OAEVmW,SAAUvoB,EAAG82D,mBACbv6C,QAASvc,EACT8P,QAAS,KACP9P,EAAGglH,YAAc,MACjBuvK,EAAat1R,SAAQ2vK,IAAQA,EAAIzyJ,aAAeyyJ,EAAI+P,UAAU,gBAC9Dm4C,EAAW/9B,UAEX/4L,EAAGwtB,QAAQ,aACXxtB,EAAGw0R,YAAY11R,UAAU,OAG7By1R,EAAat1R,SAAQ2vK,GAAOA,EAAIsgE,OAAO,gBACvC,QAKJ,GAAIlvO,EAAGy0R,iCAAiC31R,WAAY,CAClDg4N,EAAW/9B,UACX/4L,EAAGw0R,YAAY11R,UAAU,QACpB,CACL,MAAM41R,EAAc59D,EAAWiI,SAE/BjI,EAAWk8C,kBAAkB,MAAO,KAAM,MAE1C,GAAIl8C,EAAWiI,WAAa21D,EAAa,CACvC59D,EAAWs6B,cAAct6B,EAAW8wB,YAC/B,CACL,MAAMj4E,KACFA,GACEmnD,EACJ47C,EAAcxgM,EAAQxmE,QAAO,CAACU,EAAQqmE,KACpC,MAAMm8F,EAAMkoD,EAAW6B,WAAWlmJ,EAAO7nE,IACzC,GAAIgkK,EAAK,CAEPxiK,EAASiI,KAAKuU,IAAIxc,EAAQujK,EAAKjqK,QAAQkpK,IAEzC,OAAOxiK,IACNujK,EAAK5wK,QAGV,GAAI4wK,EAAK+iG,GAAc,EACpB1yQ,EAAGooP,kBAAoBtxB,EAAWs6B,cAAczhF,EAAK+iG,QAGnD,CACH57C,EAAWtpM,QAAQ,oBAAqB,CACtC84O,YAAaxvC,EAAWwvC,eAI9BtmQ,EAAGwtB,QAAQ,YAAa,CACtB+0E,WAAAA,IAEFviG,EAAGw0R,YAAY11R,UAAU,KAG7Bc,iBAAgBqlB,KACdA,EAAIutB,GACJA,IAEA,MAAMskL,WACFA,GACE72N,MACJ8+N,SACEA,EAAQC,SACRA,GACElI,GACHg9D,EAAWC,GAAW,CAAC9uQ,EAAMutB,GAAIt6B,MAAK,CAACpS,EAAGye,IAAMze,EAAIye,IAEvD,GAAIuvQ,GAAa/0D,GAAY+0D,EAAY/0D,EAAWC,EAAU,CAC5DlI,EAAWs6B,cAAct6B,EAAWnnD,KAAKmkH,EAAY/0D,SAGlD,GAAIg1D,GAAWh1D,GAAYg1D,EAAUh1D,EAAWC,EAAU,CAC7DlI,EAAW/9B,WAKfn5L,gBAAesyE,QACbA,EAAOzoE,IACPA,IAEA,MAAMqtN,WACJA,GACE72N,KACJ,GAAIwJ,EAAK,CACPqtN,EAAW69C,oBACX79C,EAAW/9B,cACN,CACL,MAAMppB,EAAOz9F,EAAQxmE,QAAO,CAACikK,GAAM,CAAGl9F,MACpC,MAAMm8F,EAAM3uK,KAAKskO,UAAU9xJ,GAC3B,GAAIm8F,EAAK,CACPe,EAAKlxK,KAAKmwK,GAEZ,OAAOe,IACN,IAEHmnD,EAAWw9D,sBAAsBpiN,GACjC4kJ,EAAW2V,WAAW98D,IAG1B/vK,qBAAqBwwB,GACnBnwB,KAAK83H,YAAYroE,aAAa,gBAAiBzvD,KAAK4rE,MAAM5nD,MAAQ,GAyBlE,IAAKhkB,KAAKurG,QAAS,CACjB,OAAOvrG,KAAKutB,QAAQ,aAAc7uB,EAAeA,EAAe,GAAIyxB,GAAQ,GAAI,CAC9Ey7C,MAAOz7C,EAAMpxB,OACbA,OAAQiB,SASdL,mBAEEua,MAAMwsF,kBAAoBxsF,MAAMwsF,oBAAoB7nG,WACpD,GAAImB,KAAK6oI,UAAW,CAClB7oI,KAAK62N,WAAW69C,oBAChB10Q,KAAKwsO,WAAW,OAChBxsO,KAAKi0Q,mBAITt0Q,eAAc4yE,QACZA,IAEA,GAAIvyE,KAAK8vR,WAAav9M,EAAQiB,SAAS10E,OAAQ,CAC7C,MAAM4wK,EAAO,GACbn9F,EAAQiB,SAASx0E,SAAQwzE,IACvB,MAAMm8F,EAAM3uK,KAAK62N,WAAWyN,UAAU9xJ,GACtCm8F,GAAOe,EAAKlxK,KAAKmwK,MAEnB3uK,KAAK62N,WAAW2V,WAAW98D,IAI/Bx1I,WACE,GAAIl6B,KAAKi7L,OAAQ,CACf,OAAOj7L,KAAKi7L,OAAOhpH,YACd,CACL,OAAOjyE,KAAKqnE,OAGhBntC,SAASA,GACP,GAAIl6B,KAAKi7L,OAAQ,CACfj7L,KAAKi7L,OAAO/gK,KAAOA,MACd,CACLl6B,KAAKqnE,MAAQntC,GAGjBwjK,gBACE,OAAO19L,KAAK6pR,WAEdnsF,cAAczyL,GACZjL,KAAK6pR,WAAa5+Q,EAClBjL,KAAKslP,aAAYnpB,GAAWA,EAAQz+B,UAAYzyL,IAWlDtL,oBAAmBo3M,OACjBA,EAAM9zL,MACNA,IAEA,MAAMljB,EAAKC,MACTmqO,SACEA,EAAQiK,QACRA,GACEr0O,EACN,IAAIurC,EAAQ,KACZrtC,OAAO6I,QAAQqjO,GAAUnrO,SAAQ,EAAE68N,EAAQM,MAEzC,GAAIA,EAAQgb,cAAe,CACzB,OAEF,GAAIpgC,EAAOxgF,WAAaslG,IAAW9kB,EAAO8kB,UAAY9kB,EAAOzkM,QAAU63N,EAASpzB,EAAO8kB,QAAQ93B,QAAQ//K,MAAQ,GAAK+yL,EAAOzkM,QAAUykM,EAAOzkM,OAAO+0C,SAASvoD,OAAS,GAAI,CACvK,MAAM41R,EAAYv4D,EAAQ1lL,QAAQ2nB,wBAAwB+rK,EAASpzB,EAAO8kB,QAAQplL,WAAat1C,SAASw9Q,4BAEtG1zQ,EAAOmpO,EAAQt1O,OAAS,EAAIiB,EAAGo7B,EAAE,kBAAmBp7B,EAAGq6B,UAAUyhM,IAAW97N,EAAGo7B,EAAEu5P,EAAY,qBAAuB,qBACtHzxQ,EAAM,GAAG44M,WAAkB,CACzBk4B,cAAel4B,EACf5wN,KAAAA,EACA2kH,KAAM,cAAgB8kK,EAAY,2BAA6B,2BAC/D5+Q,IAAKw1B,EAAQ,cAAgB,GAC7BgmM,OAAQ,EACN3/N,KAAAA,MAEAolM,EAAO7lI,UAASuvJ,GAAOA,EAAI5E,OAASA,IAEpC97N,EAAGgkM,QAAQnxG,OAAO7yF,EAAGgkM,QAAQt+L,QAAQ0kO,EAASx4N,EAAKoiP,eAAehwD,QAAQ39J,MAAQ,EAAG2wK,GACrFh3M,EAAG40R,qBAAqB59E,KAG5BzrK,EAAQ,UAYd3rC,kBAAiB6yE,OACfA,EAAMvvD,MACNA,KAEFtjB,0BAA0Bo3M,EAAQ9zL,GAChC,OAAOA,EAITtjB,qBAAqBo7N,GACnB,MAAM9E,EAAOj2N,MACX+jM,QACEA,GACEkyB,EAEN,GAAI8E,EAAY/E,WAAY,CAC1B,OAAO+E,EAGT,GAAIA,EAAYtsJ,QAAS,CACvB,OAAO,IAAIsnJ,GAAS,CAClBE,KAAAA,EACAtrN,GAAIowN,EAAYpwN,GAChBwrN,SAAUpyB,EAAQsyB,eAAe,GAAG1rN,KAGxC,OAAO,IAAIorN,GAAS93N,OAAOmZ,OAAO,CAChC6+M,KAAAA,GACC8E,IAeLp7N,QAAQo7N,GACN,MAAMnvJ,MACFA,EAAKm4H,QACLA,GACE/jM,MACJq2N,eACEA,GACEr2N,KAAK+jM,QACTuD,GAAYpzL,MAAM6mN,EAAYpsD,KAAOosD,EAAYpsD,KAAOz6J,MAAM6mN,EAAYzzB,UAAYyzB,EAAYzzB,SAAW17H,EAAMnmE,QAAQs1N,EAAYvoJ,QAAUuoJ,EAAYpwN,IAC7J64K,GAAetvK,MAAM6mN,EAAYhkB,QAAUgkB,EAAYhkB,QAAU7iM,MAAM6mN,EAAYv3C,aAAeu3C,EAAYv3C,YAAc6yC,EAAe5wN,QAAQs1N,EAAYhkB,QAAUhT,EAAQl3H,QAAQkuJ,EAAY5E,WAAapyB,EAAQryL,IAAIqpN,EAAYxkN,QAAU8/M,EAAe,IAIrQ,OAAO/uB,GAAY,GAAKA,EAAW17H,EAAM5nD,OAASw/J,GAAe,GAAKA,EAAc6yC,EAAev3N,QAAUkB,KAAKyuO,qBAAqB1T,GAAa5zB,KAStJxnM,iBAAiBw2N,GACf,GAAIA,EAAS1nJ,QAAS,CACpB0nJ,EAAWA,EAASxrN,GAEtB,OAAO3K,KAAK4pR,UAAU,kCAAkCzzD,OAE1Dx2N,wBAAwB4W,GACtB,MAAMwgM,EAAS/2M,KAAK+jM,QAAQryL,IAAI6E,GAChC,OAAOwgM,EAAS/2M,KAAKw8N,iBAAiBzlB,GAAU,KAQlDiyD,iBACE,OAAOhpQ,KAAKk7Q,YAQdpS,mBACE,MAAM/oQ,EAAKC,KAEX,GAAID,EAAG8oI,YAAc9oI,EAAG60R,cAAe,CACrC70R,EAAG60R,cAAgB70R,EAAG42O,gBAAgBv/L,aAExC,OAAOr3C,EAAG60R,cAQZ7rB,mBACE,MAAMhpQ,EAAKC,KAEX,GAAID,EAAG8oI,YAAc9oI,EAAG80R,cAAe,CACrC90R,EAAG80R,cAAgB90R,EAAGkqQ,gBAAgB7yN,aAExC,OAAOr3C,EAAG80R,cAEZrlC,oBACE,IAAIslC,EACJ,OAAO50R,SAAS40R,EAAwB90R,KAAK+xH,SAASgjK,aAAe,MAAQD,SAA+B,OAAS,EAAIA,EAAsBvjM,WAQjJ5xF,qBAAqB82C,GACnB,MAAMiU,EAAKjU,EAAQwN,QAAQ,eAC3B,IAAKyG,EAAI,OAAO,KAChB,OAAO1qD,KAAK4rE,MAAMonB,MAAMtoC,EAAGh0B,QAAQxmB,OAQrCvQ,qBAAqB82C,GACnB,MAAM0wJ,EAAO1wJ,EAAQwN,QAAQ,gCAC7B,IAAKkjJ,EAAM,OAAO,KAClB,GAAIA,EAAK7kM,QAAQ,kBAAmB,CAClC,OAAOtC,KAAK+jM,QAAQl3H,QAAQs6H,EAAKzwK,QAAQy/L,UAE3C,MAAM+a,EAAW1gI,GAAa9+F,IAAIy1L,GAClC,OAAOnnM,KAAK+jM,QAAQl3H,QAAQqkK,EAAS/a,UAGvCx2N,iBAAiBuuN,GACfl9K,GAAaqyM,cAAcn1B,EAAY,cAGzCkiE,kBACE,OAAOpwR,KAAKg1R,aAEd5E,gBAAgBA,GACdp/O,GAAaqyM,cAAc+sC,EAAa,eACxCn4O,GAAU28G,cAAc50J,KAAKy2C,QAAS,qBAAsB25O,GAC5DpwR,KAAKg1R,aAAe5E,EAEtBv+J,oBACE,OAAO7xH,KAAK8zJ,YASdn0J,WAEEK,KAAKyzR,gBAAgB,aAErB,MAAMwB,EAAaj1R,KAAK22O,gBAAgB5mL,iBAAiB,4BAEzD,IAAK,IAAInxD,EAAI,GAAGE,OACZA,GACEm2R,EAAYr2R,EAAIE,EAAQF,IAAK,CACjCq2R,EAAWr2R,GAAG6wD,aAAa,gBAAiB7wD,EAAI,IAGpDe,+BAA8B0mQ,YAC5BA,EAAWtiM,UACXA,IAEA,OAAO/jE,KAAKk1R,mBAAmB7uB,EAAatiM,GAU9CpkE,mBAAmBsH,EAASjH,KAAK62N,WAAWwvC,YAAatiM,EAAY,OACnE,MAAMhkE,EAAKC,KAEX,GAAID,EAAGm3Q,gBAAkBn3Q,EAAG6qD,UAAW,CACrC,OAAO,MAET,MAAMg4D,EAAW7iH,EAAGujH,WAClBtyG,EAAQoD,KAAK41B,IAAIjqC,EAAG4wR,oBAAsB1pR,GAC1CsxC,EAAex4C,EAAG60P,eAAe3tP,OACjCkuR,EAAUluR,EAASsxC,EACrB,GAAIvnC,EAAO,CACT,MAEAokR,EAAaD,EAAUp1R,EAAG6wR,WAAar4O,EAAe,GAEtDx4C,EAAG2wR,uBAAyB3wR,EAAG2wR,sBAAwBn4O,EAAex4C,EAAG6wR,WAEzEhuK,EAASnrE,aAAe13C,EAAG4wR,oBAAsB1pR,EAIjD,GAAIlH,EAAG8oI,YAAc9oI,EAAGwlL,YAAc6vG,GAAcpkR,EAAQ,OAAS+yD,EAAW,CAC9EhkE,EAAG+wR,gCACE,CACL/wR,EAAGs1R,0BAA4Bt1R,EAAGs1R,2BAClCt1R,EAAG+wR,0BAA0BnpQ,SAC7B5nB,EAAGu1R,sBAIT31R,oBACE,MAAMI,EAAKC,KACTiH,EAASlH,EAAG4wR,oBACZ4E,EAAa,GAAGtuR,MAClBlH,EAAG2wR,sBAAwBzpR,EAC3BlH,EAAG8mR,iBAAiBxlR,MAAM4F,OAASsuR,EACnCx1R,EAAGs1R,yBAA2B,MAC9B,GAAIt1R,EAAGmuN,WAAY,CACjBnuN,EAAG8wO,cAAcxvO,MAAM4F,OAASsuR,EAChCx1R,EAAGm7Q,YAAcj0Q,EACjBlH,EAAGg1Q,uBAELh1Q,EAAGq7Q,2BAELz7Q,uBACE,OAAOK,KAAK40P,eAAiBr+M,GAAUspB,OAAO7/D,KAAK6wO,eAIrDtrD,cAAcA,GACZvlL,KAAKqpR,WAAa9jG,EAEpBA,gBACE,OAAOvlL,KAAKqpR,WAQd1pR,4BAA4Bw8N,GAC1B,UAAWA,IAAY,SAAU,CAC/BA,EAAUn8N,KAAKmqO,SAAShO,GAE1Bn8N,KAAK6iK,cAAcyC,gBAAgB,CACjCC,YAAa,CAAC,CACZ9uH,QAAS0lL,EAAQ74G,WAAW7sE,QAC5B0V,UAAW,cACV,CACD1V,QAASz2C,KAAKsjH,WAAW7sE,QACzB0V,UAAW,eASjBxsD,6BAA6Bw8N,GAC3B,UAAWA,IAAY,SAAU,CAC/BA,EAAUn8N,KAAKmqO,SAAShO,GAE1Bn8N,KAAK6iK,cAAcC,eAAe,CAACq5D,EAAQ1lL,QAASz2C,KAAKsjH,WAAW7sE,UAStE92C,iCAAgC01C,OAC9BA,IAEAr1C,KAAKsjH,WAAW9+E,EAAI6Q,EAASr1C,KAAKgpQ,WAQpCrpQ,aACE,MAAMI,EAAKC,MACTsjH,WACEA,GACEvjH,EAGN,IAAKA,EAAG8wR,kBAAmB,CACzB9wR,EAAG8wR,kBAAoB,KAGvBvtK,EAAW3B,eAAiB5hH,EAAG4hH,eAC/B2B,EAAWn0F,GAAG,CACZ4xF,OAAQ,uBACRmoK,UAAW,0BACX5sQ,QAASvc,IAEXA,EAAG0zR,gBAAgB,cAEnB,GAAI/zR,EAAcgE,eAAgB,CAChC4/G,EAAW7sE,QAAQp1C,MAAM8yD,UAAY,yBAI3Cx0D,sBACEZ,OAAQukH,IAER,MAAMvjH,EAAKC,MAEPwkC,EAAGyS,GACDqsE,EAEN,GAAIrsE,IAAcl3C,EAAG6wR,WAAY,CAC/B7wR,EAAG6wR,WAAa35O,EAChB,IAAKl3C,EAAGwlL,UAAW,CACjBxlL,EAAGwlL,UAAY,KAEfxlL,EAAGulP,aAAY51O,GAAKA,EAAEg+H,qBAAuB,OAE/C3tI,EAAG82N,WAAW2+D,mBAAmBv+O,GAEjCl3C,EAAG01R,YAAY,CACbx+O,UAAAA,IAQFl3C,EAAGwtB,QAAQ,SAAU,CACnB0pB,UAAAA,KAINt3C,0BACEK,KAAKulL,UAAY,MACjBvlL,KAAKslP,aAAY51O,GAAKA,EAAEg+H,qBAAuB,QAejD/tI,wBAAwB08F,EAAYzvF,EAAUyiR,IAC5C,MAAMtvR,EAAKC,KACT01R,EAAgB9oR,EAAQgzC,OAAS,WACjCi3K,WACEA,GACE92N,EACJyyE,EAASzyE,EAAG6rE,MAAMiB,QAAQwvB,GAC5B,GAAI7pB,EAAQ,CACV,IAAIsuC,EAEJ,GAAI/gH,EAAG6rE,MAAMnmE,QAAQ+sE,MAAa,EAAG,CACnC,OAAO28M,GAET,IAAIvsK,EAAW7iH,EAAGujH,WAChBqyK,EAAa51R,EAAG61R,gBAAgBpjN,GAClC,MAAMgzC,EAAejvE,GAAUvxB,KAAK49F,EAASnsE,SAO7C,GAAIk/O,EAAWtgB,QAAS,CACtB,MAAMwgB,EAAeF,EAAW/1O,MAC9Bk2O,EAAeJ,IAAkB,UAAY9oR,EAAU,CACrDgzC,MAAOi2O,GAKX/0K,EAAgB8B,EAASqpB,eAAe0pJ,EAAY,CAClD/1O,MAAO,WAETi3K,EAAW07C,qBAAuB//L,EAClCqkJ,EAAW2+D,mBAAmB5yK,EAASp+E,EAAG,MAC1CmxP,EAAa51R,EAAG61R,gBAAgBpjN,GAChCqkJ,EAAWo7C,cAAgBrvJ,EAASp+E,EACpC,GAAImxP,EAAWtgB,QAAS,CAGtB,OAAO8Z,GAGT,GAAIviR,EAAQy2G,QAAS,CAGnBT,EAASjuC,gBAET,GAAI+gN,IAAkB,OAASA,IAAkB,WAAaG,IAAiB,MAAO,CACpFjzK,EAASp+E,GAAKghF,EAAanwE,OAASsgP,EAAWtgP,YAC1C,GAAIqgP,IAAkB,SAAWA,IAAkB,WAAaG,IAAiB,QAAS,CAC/FjzK,EAASp+E,GAAKmxP,EAAWnxP,EAAIghF,EAAahhF,EAG5CqyL,EAAW2+D,mBAAmB5yK,EAASp+E,EAAG,MAAO,MAEjD,GAAIqxP,IAAiB,MAAO,CAC1BjzK,EAASp+E,GAAKqyL,EAAWivC,gBAAkBjvC,EAAWrnD,UAAY,MAC7D,CACL5sD,EAASp+E,GAAKqyL,EAAWgvC,iBAAmBhvC,EAAWrnD,UAAY,EAGrE5sD,EAASqpB,eAAelsI,EAAG61R,gBAAgBpjN,GAASv0E,OAAOmZ,OAAO,GAAIxK,EAASkpR,IAE/ElzK,EAAShuC,mBACJ,CACL,IAAImhN,EACJ,IAAKnpR,EAAQopR,UAAW,OAChBl1K,SAGAi1K,EAAwBh2R,EAAGgzP,qBAAuB,MAAQgjC,SAA+B,OAAS,EAAIA,EAAsBlvR,KAAK9G,EAAIyyE,EAAQv0E,OAAOmZ,OAAO,CACjK4+Q,UAAW,MACVppR,EAASkpR,UAET,CACL,IAAI/+E,OACFA,GACEnqM,EACJ,GAAImqM,EAAQ,CACV,IAAKA,EAAOtoI,QAAS,CACnBsoI,EAASh3M,EAAGgkM,QAAQl3H,QAAQkqI,IAAWh3M,EAAGgkM,QAAQryL,IAAIqlM,GAGxD,GAAIA,EAAQ,CACVn0F,EAAW7iH,EAAGu8N,qBAAqBvlB,GAAQzzF,WAC3C,MAAMq8J,EAAWppO,GAAUvxB,KAAK6xM,EAAWyN,UAAU9xJ,GAAQu0H,QAAQgQ,EAAOpsM,KAC5EgrR,EAAWxxR,EAAIw7Q,EAASx7Q,EACxBwxR,EAAWzuR,MAAQy4Q,EAASz4Q,WAI3B,CACH0F,EAAQzI,EAAI,MAEd,OAAOy+G,EAASqpB,eAAe0pJ,EAAY/oR,KAoBjDjN,qBAAqBo3M,EAAQnqM,GAC3BmqM,EAASA,aAAkBmiB,GAASniB,EAAS/2M,KAAK+jM,QAAQryL,IAAIqlM,IAAW/2M,KAAK+jM,QAAQl3H,QAAQkqI,IAAW/2M,KAAK+jM,QAAQ/wG,MAAM+jH,GAC5H,OAAO/2M,KAAKs8N,qBAAqBvlB,GAAQ49E,qBAAqB59E,EAAQnqM,GAQxEjN,mBAAmBo7N,EAAanuN,GAC9B,OAAO5M,KAAK+yP,kBAAkBh4B,EAAYpwN,GAAI1M,OAAOmZ,OAAO,CAC1D2/L,OAAQgkB,EAAY5E,iBACZvpN,IAAY,UAAY,CAChCy2G,QAASz2G,GACPA,IAONjN,eAAeiN,GAEb,OAAO5M,KAAK+yP,kBAAkB/yP,KAAK4rE,MAAMxlC,KAAMx5B,GAOjDjN,YAAYiN,GACV,OAAO5M,KAAKsjH,WAAWH,SAAS,GAAInjH,KAAKsjH,WAAW9+E,EAAG53B,GAQzDjN,cACE,MAAMI,EAAKC,KACTmpE,EAAQppE,EAAGk2R,kBAAoB,CAC7Bh/O,UAAWl3C,EAAGujH,WAAW9+E,EACzBwS,WAAY,IAIhBj3C,EAAGulP,aAAYnpB,IACbhzJ,EAAMnyB,WAAWmlL,EAAQN,QAAUM,EAAQ74G,WAAWn/G,KAExD,OAAOglE,EAOTxpE,cAAcwpE,EAAQnpE,KAAKi2R,mBACzB,MAAMl2R,EAAKC,KAGXD,EAAGulP,aAAYnpB,IACb,MAAMh4N,EAAIglE,EAAMnyB,WAAWmlL,EAAQN,QAGnC,GAAI13N,GAAK,KAAM,CACb,IAAI+xR,EACJ/5D,EAAQ74G,WAAWkD,QAAQriH,GAC3Bg4N,EAAQv8E,OAAOt8B,WAAWkD,QAAQriH,GAClCg4N,EAAQhjI,OAAOmqB,WAAWkD,QAAQriH,IACjC+xR,EAAwB/5D,EAAQ+qD,gBAAkB,MAAQgP,SAA+B,OAAS,EAAIA,EAAsB1vK,QAAQriH,OAGzIpE,EAAGujH,WAAWmD,QAAQt9C,EAAMlyB,WAI9Bt3C,qBACE,MAAMI,EAAKC,KACX,IAAKD,EAAGo2R,qBAAsB,CAC5Bp2R,EAAGo2R,qBAAuBl+O,GAAU72C,cAAc,CAGhDs9C,UAAW,oBAAsB3+C,EAAGkzR,gBAAkBlzR,EAAG87P,WAAW,UAAY,WAAa,IAC7F9yM,UAAW,iBACX1nD,MAAO,CACL+5C,SAAU,WACVjG,IAAK,WACLG,KAAM,YACN+/M,WAAY,SACZ+gC,QAAS,UAEX/uO,SAAU,CAAC,CACT3I,UAAW,aACXqK,UAAW,aACX1B,SAAU,CAAC,CACT3I,UAAW,cACXqK,UAAW,cACX1nD,MAAO,CACL6F,MAAO,OACPkvR,QAAS12R,EAAc4D,UAAY,eAAiB,4BAO9DvD,EAAGoe,UAAU,WAEbpe,EAAG8mR,iBAAiBplR,YAAY1B,EAAGo2R,qBAAqB55D,gBAExD,IAAKx8N,EAAG89H,SAAU,CAChB,MAAM64E,EAAW32M,EAAGk2H,UAAYl2H,EAAG2zD,cAAgBvyD,SAAS8E,KAC1DmhD,EAAcnP,GAAU+O,sBAAsB0vJ,IAAa,SAAWv1M,SAASowD,eAAemlJ,GAAYA,GAC5G,IAAK32M,EAAGi2H,QAAU5uE,EAAYrP,SAASh4C,EAAG02C,SAAU,CAClD2Q,EAAY3lD,YAAY1B,EAAG02C,SAC3B12C,EAAGs2R,sBAAwB,MAG/B,OAAOt2R,EAAGo2R,qBAEZx2R,mBAEE,GAAIK,KAAKq2R,sBAAuB,CAC9Br2R,KAAKy2C,QAAQ30C,SACb9B,KAAKq2R,sBAAwB,MAG/Br2R,KAAKm2R,qBAAqB55D,eAAez6N,SAM3CnC,mBACE,MAAMI,EAAKC,MAETq+N,WACEA,GACEt+N,EAAGw+N,qBAGProK,EAASje,GAAUC,cAAcmmL,EAAY,CAAC,SAAU,mBAAoB,wBAC5Ei4D,EAAcltR,SAAS8sD,EAAOjvD,QAG9BsnD,EAAa7uD,EAAc4D,UAAYu1C,iBAAmBzkC,KAAKmyB,MAAMsS,kBAAoB,EACzF09O,EAAYrgO,EAAO,oBAAsB9hD,KAAKkxB,MAAMipB,EAAatsD,WAAWi0D,EAAO,sBAAwB,EAC3GsgO,EAAetgO,EAAO,uBAAyB9hD,KAAKkxB,MAAMipB,EAAatsD,WAAWi0D,EAAO,yBAA2B,EAGtH,GAAIn2D,EAAGyvK,WAAa,MAAQzvK,EAAGyvK,YAAczvK,EAAG02R,oBAAqB,CACnE12R,EAAGyvK,WAAat7J,MAAMoiR,IAAgBA,EAAcA,EAAcv2R,EAAGiwR,iBACrEjwR,EAAG02R,oBAAsB12R,EAAGyvK,UAG9BzvK,EAAG6gQ,iBAAmB21B,EAAYC,EAClCz2R,EAAGkzR,eAAiB,KACpBlzR,EAAGk/N,mBAQLt/N,eAAcg6D,MACZA,IAGA35D,KAAK02R,YAAY,oBACjB12R,KAAKutB,QAAQ,QAAS,CACpBosC,MAAAA,IAUJh6D,YAAYqzQ,EAAc,OACxB,MAAMv8N,QACJA,EAAOogL,WACPA,GACE72N,KACJy2C,EAAQmI,UAAU7/B,IAAI,kBACtB,GAAIi0P,EAAa,CACfn8C,EAAWm8C,kBACN,CACLn8C,EAAW/9B,UAEbriJ,EAAQmI,UAAU98C,OAAO,kBAO3BnC,cAAco3M,GACZ,GAAIA,EAAOnsJ,UAAW,CACpB,GAAImsJ,EAAO7nI,OAAQ,CACjBlvE,KAAK62N,WAAW73N,SAAQ2vK,GAAOA,EAAIqwD,WAAWrwD,EAAIo4B,QAAQgQ,EAAOpsM,WAC5D,CACLosM,EAAO1vJ,SAASroD,SAAQ+uD,GAAS/tD,KAAKokP,cAAcr2L,OAU1DpuD,2BAGE,MAAMI,EAAKC,MACT22O,gBACEA,EAAeszB,gBACfA,EAAe8N,iBACfA,EAAgBz0J,WAChBA,EAAUqzK,oBACVA,GACE52R,GACJ6+C,UACEA,GACEm5N,EACJ6e,GAAyBh4O,EAAU7G,SAAS,kBAG5C8+O,EAAwB54R,OAAO4N,OAAO9L,EAAGoqO,UAAUxiO,MAAKw0N,GAAWA,EAAQ4oC,0BAC3E+xB,EAA4BD,IAA0BD,EAGxD,GAAIE,EAA2B,CAC7B/e,EAAiBn5N,UAAU8X,OAAO,kBAAmBmgO,GAGvD,GAAI5+O,GAAUK,eAAgB,CAE5B,MAAMy+O,EAAeJ,GAAuBrzK,EAAWh2D,YAAc,SACrEqpL,EAAgB/3L,UAAU8X,OAAO,yBAA0BqgO,GAC3D9sB,EAAgBrrN,UAAU8X,OAAO,yBAA0BqgO,GAC3Dhf,EAAiBn5N,UAAU8X,OAAO,yBAA0BqgO,GAG5D,GAAID,EAA2B,CAI7B,GAAID,EAAuB,CACzB92R,EAAG0zR,gBAAgB,qBAErB1zR,EAAG+yR,mBAIT6D,0BACE,OAAO32R,KAAKsjH,WAAWwlK,YAAY,KAMrCpjB,oBACE,MAAM7uC,EAAa72N,KAAK62N,WACxB,OAAOziN,KAAKC,IAAIwiN,EAAWwvC,YAAaxvC,EAAW+wB,UAAY/wB,EAAW+wB,UAAUvyM,OAAS,GAE/F11C,kBACE,MAAMI,EAAKC,KACT62N,EAAa92N,EAAG82N,WAClB,GAAI92N,EAAG6qD,UAAW,CAChBisK,EAAWo8C,sBACXlzQ,EAAGu6L,cAAgB,KACnBv6L,EAAGm1R,mBAAmBn1R,EAAG2lQ,eACzB3lQ,EAAG0zR,gBAAgB,qBACnB1zR,EAAG+yR,sBAOA,IAAK/yR,EAAGu6L,cAAe,CAC1Bv6L,EAAGu6L,cAAgBv6L,EAAGovB,GAAG,CACvBwrK,MAAO,kBACP/tK,KAAM,KACNtQ,QAASvc,KAIfJ,eACE,IAAKK,KAAK6oI,UAAW,CACnB7oI,KAAK+0Q,uBAEP76P,MAAMs6G,eAER70H,iBACE,MAAMI,EAAKC,KAEXD,EAAGg1Q,uBACHh1Q,EAAGm7Q,YAAcn7Q,EAAGmuN,WAAanuN,EAAG2lQ,cAAgB3lQ,EAAG8wO,cAAcz5L,aAEvEz3C,iBACEK,KAAKmoP,mBAEPxoP,cAAc4tB,GACZ,GAAIvtB,KAAKmoP,qBAAwBnoP,KAAKmoP,iBAAkB,CACtD,GAAI56N,EAAS,CACXvtB,KAAKs6O,cAEPt6O,KAAKutB,QAAQ,gBAAiB,CAC5BA,QAAAA,KAQN5tB,WAAWq3R,EAAa,MACtB,MAAMj3R,EAAKC,KACTi3R,EAAcD,GAAcj3R,EAAG+kR,cACjC,GAAI/kR,EAAGooP,iBAAkB,CACvB,OAOFpoP,EAAGwtB,QAAQ,oBACXxtB,EAAGm3Q,cAAgB,KAEnBn3Q,EAAG02C,QAAQmI,UAAU7/B,IAAI,qBACzB,IAAKi4Q,EAAY,CACfj3R,EAAGujH,WAAW9+E,EAAIzkC,EAAG6wR,WAAa,EAEpC7wR,EAAG82N,WAAWimC,cAAck6B,GAM5Bj3R,EAAGwtB,QAAQ,cACXxtB,EAAGm3Q,cAAgB,MACnBn3Q,EAAGm3R,kBACH,GAAIF,EAAY,CACdj3R,EAAGylR,cAAcyR,GAEnBl3R,EAAG02C,QAAQmI,UAAU98C,OAAO,qBAM9BnC,iBACE,MAAMI,EAAKC,MACTy2C,QACEA,EAAOkgM,gBACPA,EAAeszB,gBACfA,EAAepzC,WACfA,GACE92N,EACNA,EAAG29H,aAEH,GAAI39H,EAAG8oI,UAAW,CAEhB9oI,EAAG60R,cAAgB,KACnB70R,EAAG0zR,gBAAgB,gBAAiB98C,GACpC52O,EAAG0zR,gBAAgB,gBAAiBxpB,GAEpClqQ,EAAGo3R,aAAaxgD,EAAiBlgM,GACjC12C,EAAGq3R,aAAantB,EAAiBxzN,GACjC12C,EAAGs3R,WAGH,MAAMC,EAAiBzgE,EAAW0gE,gBAClC1gE,EAAWk8C,kBAAkB,MAAO,KAAM,MAC1C,GAAIl8C,EAAWkI,SAAU,CAGvBlI,EAAW2gE,YAAYF,GACvBv3R,EAAGysO,eAIT7sO,mBAKAA,SAAQipI,WACNA,IAEA,IAAIgN,EACJ,MAAM71I,EAAKC,KACXD,EAAG+3H,YAAYroE,aAAa,gBAAiB1vD,EAAG6rE,MAAM5nD,MAAQ,IAC7D4xH,EAAiB17H,MAAM27H,WAAa,MAAQD,SAAwB,OAAS,EAAIA,EAAe/uI,KAAK7G,QAASnB,WAC/G,GAAIkB,EAAG03R,oBAAsB7uJ,EAAY,CACvC,OAEF,MAAMiuF,WACFA,EAAUjrJ,MACVA,EAAKn1B,QACLA,EAAOkgM,gBACPA,EAAe9F,cACfA,EAAao5B,gBACbA,GACElqQ,EACJ23R,EAAYz/O,GAAU6e,oBACxB,IAAImuN,EACF5M,EAAW,EAGbt4Q,EAAGkyD,KAAO2Z,IAAU,MAAQA,SAAe,GAAKA,EAAMynB,OAAS,WAAa,OAE5EtzF,EAAGgkM,QAAQ50K,GAAG,CACZi2D,OAAQ,IAAM6/L,EAAiB,KAC/Br4P,KAAM,OAGR7sB,EAAGs7Q,iBAAiBt7Q,EAAGmH,MAAO,GAE9B,GAAI+9Q,EAAgB,CAClBllR,EAAG0zR,gBAAgB,gBAAiB98C,GACpC52O,EAAG0zR,gBAAgB,gBAAiBxpB,GAItClqQ,EAAGo3R,aAAaxgD,EAAiBlgM,GACjC12C,EAAGq3R,aAAantB,EAAiBxzN,GAIjCwB,GAAU+b,OAAO2iL,EAAiB+gD,GAClCz/O,GAAU+b,OAAOi2M,EAAiBytB,GAClCz/O,GAAU+b,OAAOj0D,EAAGg4Q,iBAAkB2f,GAGtC33R,EAAGg1Q,uBACH,MAAM4iB,EAAmB53R,EAAG8wO,cAAcz5L,aAC1C,GAAIr3C,EAAGmuN,WAAY,CACjBnuN,EAAGm7Q,YAAcrkD,EAAWskD,eAAe1kO,EAAQW,aAAeu/L,EAAgBv/L,aAAe6yN,EAAgB7yN,aAAc,MAC/Hy5L,EAAcxvO,MAAM4F,OAASlH,EAAGipQ,WAAa,SACxC,CACLjpQ,EAAGm7Q,YAAcyc,EACjB9gE,EAAWskD,eAAep7Q,EAAGm7Q,YAAa,MAE5Cn7Q,EAAGulP,aAAYnpB,IACb,GAAIA,EAAQv8E,OAAOy4H,SAAWA,EAAU,CACtCA,EAAWl8C,EAAQv8E,OAAOy4H,aAG9B1hC,EAAgBjgN,QAAQ2hP,SAAWA,EACnCt4Q,EAAGs3R,WACH,GAAIzrN,EAAM5nD,QAAU4nD,EAAMyG,UAAW,CACnCtyE,EAAGysO,aAGL,GAAIzsO,EAAGgkM,QAAQ09B,eAAgB,CAC7B,MAAMm2D,MACJA,GACEz2R,SACJ,IAAKy2R,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMniQ,UAAY,SAAU,CAC7EmiQ,EAAMC,MAAMpnR,MAAK,KAAO1Q,EAAGmc,aAAenc,EAAGu6O,iBAGjDv6O,EAAG63Q,aACH73Q,EAAG+3R,qBAELn4R,SACE,MAAMI,EAAKC,KAGXD,EAAGw3H,YAAcr3H,QAAQH,EAAG4Y,OAE5BuB,MAAMH,UAAUlb,WAChB,IAAKkB,EAAGmuN,WAAY,CAGlB,GAAInuN,EAAG42O,gBAAgBv/L,eAAiBr3C,EAAG8wO,cAAcz5L,aAAc,CACrExiC,QAAQC,KAAK,qGAGf,KAAM,cAAe9U,EAAGwd,kBAAoB,WAAYxd,EAAGwd,gBAAkBnU,SAAShH,WAAWR,iBAAiB7B,EAAG02C,SAAS4C,aAAet5C,EAAGkH,OAAQ,CACtJ2N,QAAQC,KAAK,OAAO9U,EAAGqc,6EAA+E,qGAAuG,gFAcnNzc,aAAag3O,EAAiBlgM,IAS9B92C,aAAasqQ,EAAiBxzN,IAE9B92C,oBAEAA,mBACAA,kBAEAA,eAEAA,kBAAkBo4R,IAElBp4R,sBAEAA,YAAYq4R,IAEZr4R,oBAEAA,sBAGAA,cAAcoxH,EAAO/wH,KAAKq2H,QACxB,GAAItF,EAAM,CACR,MAAM2uJ,EAAW3uJ,EAAKpB,QAAU,QAAU3vH,KAAK6hI,YAAY,iBACzDrc,EAAek6J,GAAY1/Q,KAAK6hI,YAAY,qBAC5CxgI,MACEA,GACE0vH,EAAKt6E,QAEXp1C,EAAMupQ,UAAY8U,EAAW,GAAGA,EAASl7O,MAAQ,GACjDnjC,EAAM4F,OAASy4Q,EAAW,GAAGA,EAASz4Q,SAAWu+G,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAav+G,SAAW,OAAS,IAuBlJtH,SAAS0qH,GACP,IAAIv/G,EACJ,GAAI9K,KAAK6wO,cAAe,CACtB7wO,KAAKq2H,OAAS5G,GAAKv3C,aAAal4E,KAAK4+K,iBAAkBv0D,GACvDv/G,EAAM9K,KAAKq2H,OAGb,OAAOvrH,EAMTnL,aACEK,KAAKq2H,OAAS,KAEhB12H,kBACE,GAAIK,KAAK6wO,cAAe,CACtB54L,GAAU28G,cAAc50J,KAAK6wO,cAAe,iBAAkB7wO,KAAK62N,WAAWkI,SAAW,GAAK/+N,KAAK4rE,MAAMyG,WAAaryE,KAAK4rE,MAAMyY,gBAIrI1kF,eAAek5E,EAAUyjB,GACvBpiF,MAAM6tI,eAAelvE,EAAUyjB,GAC/B,IAAKt8F,KAAKwd,cAAe,CACvB,IAAK,MAAMu5L,KAAU/2M,KAAK+jM,QAAQk9B,cAAe,CAC/C,IAAIg3D,GACHA,EAAwBlhF,EAAOhvD,kBAAoB,MAAQkwI,SAA+B,OAAS,EAAIA,EAAsBpxR,KAAKkwM,EAAQl+H,KAQjJl5E,iBAAiBiN,GACf,MAAMT,EAAS+N,MAAMuE,iBAAiB7R,IACpCg/D,MACEA,GACE5rE,KAEJk6B,EAAO0xC,EAAM8/B,cAAc9+F,GAE3BsrR,EAAatsN,EAAMntD,iBAAiB7R,IAAYT,EAAOy/D,MACzD,GAAI1xC,EAAKp7B,OAAQ,CACfqN,EAAO+tB,KAAOA,EAGhB,GAAIg+P,GAActsN,EAAMs9B,qBAAuBuhI,GAAc,QACpDytD,EAAW39M,WAEpB,IAAKvpC,GAAagN,QAAQk6O,GAAa,CACrC/rR,EAAOy/D,MAAQssN,EAEjB,GAAI/rR,EAAOy/D,MAAO,QACTz/D,EAAOy/D,MAAM1xC,KAEtB,OAAO/tB,GAKXi+G,GAASxzC,YACTlkE,EAAcmQ,WAAW,OAAQ,SACjCunG,GAASliH,OAAS,WAsblB,MAAM4iO,WAAa1gH,GACjBr8G,mBACE,MAAO,OAGTlB,kBACE,MAAO,QAIXi+N,GAAKl0J,YACLk0J,GAAK5iO,OAAS,OAcd,MAAMiwR,WAAiBrtD,GACrB/8N,mBACE,MAAO,WAGTlB,kBACE,MAAO,WAETrN,0BACE,MAAO,CASLosE,MAAO,CACL8a,KAAM,OA0CZ/mF,YAAYisE,EAAOtzD,GACjB,GAAIszD,IAAUA,EAAM8a,KAAM,CACxB,MAAM,IAAIh2E,MAAM,yDAElBwJ,MAAM2iM,YAAYjxI,EAAOtzD,IAK7B6/Q,GAASvhN,YACTuhN,GAASjwR,OAAS,WAQlB,MAAMkwR,GAAQ,WAEZ,IAAIA,EAAQ,CACVxlR,QAAS,SAEX,IAAKrL,MAAMsG,UAAUpI,QAAS,CAC5B8B,MAAMsG,UAAUpI,QAAU,SAAU4yR,GAElC,GAAIr4R,MAAQ,KAAM,CAChB,MAAM,IAAIs4R,UAEZ,IAAIrwQ,EAAIhqB,OAAO+B,MACf,IAAIqjB,EAAM4E,EAAEnpB,SAAW,EACvB,GAAIukB,IAAQ,EAAG,CACb,OAAQ,EAEV,IAAI4Y,EAAI,EACR,GAAIp9B,UAAUC,OAAS,EAAG,CACxBm9B,EAAIhoB,OAAOpV,UAAU,IACrB,GAAIo9B,GAAKA,EAAG,CACVA,EAAI,OACC,GAAIA,GAAK,GAAKA,GAAK+yE,UAAY/yE,IAAM+yE,SAAU,CACpD/yE,GAAKA,EAAI,IAAM,GAAK7nB,KAAK+oB,MAAM/oB,KAAK41B,IAAI/N,KAG5C,GAAIA,GAAK5Y,EAAK,CACZ,OAAQ,EAEV,IAAI5R,EAAIwqB,GAAK,EAAIA,EAAI7nB,KAAKC,IAAIgP,EAAMjP,KAAK41B,IAAI/N,GAAI,GACjD,KAAOxqB,EAAI4R,EAAK5R,IAAK,CACnB,GAAIA,KAAKwW,GAAKA,EAAExW,KAAO4mR,EAAe,CACpC,OAAO5mR,GAGX,OAAQ,GAGZ,IAAKvI,OAAO2E,UAAUrB,KAAM,CAC1BtD,OAAO2E,UAAUrB,KAAO,WACtB,OAAOxM,KAAKwK,QAAQ,aAAc,KAGtC4tR,EAAMvmR,MAAQ,GACdumR,EAAMvmR,MAAMoG,KAAO,SAAUpE,EAAK0kR,GAChC1kR,EAAIoE,MAAK,SAAUpS,EAAGye,GACpB,OAAQze,GAAKye,KAEf,GAAIi0Q,GAAc1kR,EAAI,KAAO,EAAG,CAC9BA,EAAIrV,KAAKqV,EAAI6kD,WAGjB0/N,EAAMvmR,MAAM0T,KAAO,SAAU5Z,EAAKE,EAAQ2sR,GACxC,IAAIC,EACFC,EAAgBF,EAAO,KAAO,EAC9BG,EAAU,EACZ,IAAK,IAAI/5R,EAAIiN,EAAO/M,OAAS,EAAGF,GAAK,IAAKA,EAAG,CAC3C65R,EAAM5sR,EAAOjN,GACb,GAAI65R,IAAQ9sR,EAAK,CACf,OAAO8sR,EAET,GAAIA,EAAM9sR,GAAO8sR,IAAQ,GAAKC,GAAiBF,EAAO,GAAK7sR,EAAK,CAC9DgtR,EAAU/5R,EACV,SAEF,MAEF,OAAOiN,EAAO8sR,IAEhBP,EAAMvmR,MAAM+mR,YAAc,SAAUjtR,EAAKE,EAAQ2sR,GAC/C,IAAI7vQ,EAAM6vQ,EAAO,GACfnkR,EAAMmkR,EAAO,GACbn1Q,EAAMxX,EAAO/M,OACb+5R,EAAUhtR,EAAOwX,EAAM,KAAO,GAAKsF,IAAQ,EAAItU,EAAM,EACrDkR,EAAO5Z,EACP/M,EAAIiN,EAAOpG,QAAQkG,GACnB6c,EAAQjD,EACV,MAAOA,KAAU1Z,EAAOjN,IAAMi6R,GAAU,CACtCtzQ,IACA,GAAIA,EAAOlR,EAAK,CACdkR,EAAOoD,EAET/pB,IACA,GAAIA,IAAMykB,EAAK,CACbzkB,EAAI,EAEN,GAAI2mB,IAASiD,EAAO,CAClB,OAAO5lB,WAGX,OAAO2iB,GAET6yQ,EAAMvmR,MAAMnG,KAAO,SAAUC,EAAKE,EAAQ2sR,GACxC,IAAIC,EACFp1Q,EAAMxX,EAAO/M,OACb45R,EAAgBF,EAAO,KAAO,EAC9BM,EAAUz1Q,EAAM,EAClB,IAAK,IAAIzkB,EAAI,EAAGA,EAAIykB,EAAKzkB,IAAK,CAC5B65R,EAAM5sR,EAAOjN,GACb,GAAI65R,IAAQ9sR,EAAK,CACf,OAAO8sR,EAET,GAAIA,EAAM9sR,GAAO8sR,IAAQ,GAAKC,GAAiBF,EAAO,GAAK7sR,EAAK,CAC9DmtR,EAAUl6R,EACV,SAEF,MAEF,OAAOiN,EAAOitR,IAEhBV,EAAMvmR,MAAMknR,YAAc,SAAUptR,EAAKE,EAAQ2sR,GAC/C,IAAI7vQ,EAAM6vQ,EAAO,GACfnkR,EAAMmkR,EAAO,GACbn1Q,EAAMxX,EAAO/M,OACb+5R,EAAUhtR,EAAOwX,EAAM,KAAO,GAAKsF,IAAQ,EAAItU,EAAM,EACrDkR,EAAO5Z,EACP/M,EAAIiN,EAAOpG,QAAQkG,GACnB6c,EAAQjD,EACV,MAAOA,KAAU1Z,EAAOjN,IAAMi6R,GAAU,CACtCtzQ,IACA,GAAIA,EAAOoD,EAAK,CACdpD,EAAOlR,EAETzV,IACA,GAAIA,KAAO,EAAG,CACZA,EAAIykB,EAAM,EAEZ,GAAIkC,IAASiD,EAAO,CAClB,OAAO5lB,WAGX,OAAO2iB,GAET6yQ,EAAM56P,IAAM46P,EAAMv5P,EAAI,CACpBp6B,KAAM,MACNstL,MAAO,MACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAEN,IAAMM,EAAEN,EAAIu5P,EAAM57P,KAAKrvB,QAAQtG,KAAKs4B,KAE/CsnD,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAMv5P,EAAElzB,IAAIwzB,MAAQxzB,GAAOysR,EAAMv5P,EAAE25P,OAAOr5P,GAAG,KAEtDq5P,OAAQ,SAAUr5P,GAChB,GAAIA,EAAE65P,QAAS,OAAO75P,EAAE65P,QACxB,IAAIx6P,EAAQ45P,EAAMj6P,EAAExyB,IAAIwzB,GACtB9qB,EAAM+jR,EAAMa,cAAcz6P,EAAQ,GACpC,GAAIA,IAAU,GAAK45P,EAAMz0J,GAAG60J,OAAOr5P,GAAG,KAAO,IAAK,CAChD9qB,EAAMA,EAAM,EAEd,OAAO8qB,EAAE65P,QAAU,CAAC,EAAG3kR,IAEzBmU,MAAO,SAAU2W,GACf,OAAOA,EAAE+5P,SAAW/5P,EAAE+5P,OAASd,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,MAE7Fzb,IAAK,SAAUyb,GACb,OAAOA,EAAEg6P,OAASh6P,EAAEg6P,KAAOf,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,MAEzF5Z,KAAM,SAAU4Z,EAAGxzB,GACjBA,EAAMA,EAAMysR,EAAMv5P,EAAE25P,OAAOr5P,GAAG,GAAK,EAAIxzB,EACvC,IAAI6yB,EAAQ45P,EAAM57P,KAAK48P,aAAaj6P,EAAGxzB,EAAKysR,EAAMv5P,EAAGu5P,EAAMj6P,GACzDk7P,EAAOjB,EAAMv5P,EAAE25P,OAAOh6P,GAAO,GAC/B7yB,EAAMA,EAAM0tR,EAAO,EAAI1tR,GAAO0tR,EAC9B,OAAOjB,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAI6yB,GAAQ45P,EAAMj6P,EAAExyB,IAAI6yB,GAAQ7yB,IAEjED,KAAM,SAAUyzB,EAAGxzB,GACjB,IAAI6yB,EAAQ45P,EAAM57P,KAAK88P,aAAan6P,EAAGxzB,EAAKysR,EAAMv5P,EAAGu5P,EAAMj6P,GACzDk7P,EAAOjB,EAAMv5P,EAAE25P,OAAOh6P,GAAO,GAC/B,OAAO45P,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAI6yB,GAAQ45P,EAAMj6P,EAAExyB,IAAI6yB,GAAQ7yB,EAAM0tR,EAAOA,EAAO1tR,GAAO0tR,KAG9FjB,EAAMmB,eAAiBnB,EAAMoB,GAAK,CAChC/0R,KAAM,oBACNstL,MAAO,OACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAEq6P,KAAOr6P,EAAEq6P,GAAKplR,KAAK+oB,OAAOi7P,EAAMv5P,EAAElzB,IAAIwzB,GAAK,GAAK,GAAK,IAEhEsnD,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAMoB,GAAG7tR,IAAIwzB,KAAOxzB,GAAOA,IAAQ,GAAKysR,EAAMv5P,EAAElzB,IAAIwzB,GAAKi5P,EAAMv5P,EAAE25P,OAAOr5P,GAAG,GAAK,GAEzFq5P,OAAQ,SAAUr5P,GAChB,OAAOA,EAAEs6P,WAAat6P,EAAEs6P,SAAW,CAAC,EAAGrlR,KAAKuqB,KAAKy5P,EAAMv5P,EAAE25P,OAAOr5P,GAAG,GAAK,MAE1E3W,MAAO,SAAU2W,GACf,OAAOA,EAAEu6P,UAAYv6P,EAAEu6P,QAAUtB,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAI/qB,KAAKC,IAAI,GAAI+jR,EAAMoB,GAAG7tR,IAAIwzB,GAAK,GAAK,EAAI,GAAK,MAEhIzb,IAAK,SAAUyb,GACb,OAAOA,EAAEw6P,QAAUx6P,EAAEw6P,MAAQvB,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAI/qB,KAAKuU,IAAIyvQ,EAAMoB,GAAG7tR,IAAIwzB,GAAK,EAAGi5P,EAAMv5P,EAAE25P,OAAOr5P,GAAG,OAE/H5Z,KAAM,SAAU4Z,EAAGxzB,GACjBA,EAAMA,EAAMysR,EAAMoB,GAAGhB,OAAOr5P,GAAG,GAAK,EAAIxzB,EACxC,IAAI6yB,EAAQ45P,EAAM57P,KAAK48P,aAAaj6P,EAAGxzB,EAAKysR,EAAMoB,GAAIpB,EAAMj6P,GAC1Dy7P,EAAQxB,EAAMoB,GAAGhB,OAAOh6P,GAAO,GACjC7yB,EAAMA,EAAMiuR,EAAQ,EAAIjuR,EACxB,IAAI4Z,EAAO6yQ,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAI6yB,GAAQ45P,EAAMj6P,EAAExyB,IAAI6yB,GAAQ7yB,IAAQ,EAAIysR,EAAMv5P,EAAE25P,OAAOh6P,GAAO,GAAK,EAAI,EAAI,GAAK7yB,EAAM,IAC7H,GAAI4Z,EAAKvV,WAAamvB,EAAEnvB,UAAW,CACjCwuB,EAAQ45P,EAAMj6P,EAAE5Y,KAAK4Z,EAAGi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAK,GACzC,OAAOi5P,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAI6yB,GAAQ45P,EAAMj6P,EAAExyB,IAAI6yB,GAAQ7yB,IAAQ,EAAIysR,EAAMv5P,EAAE25P,OAAOh6P,GAAO,GAAK,EAAI,EAAI,GAAK7yB,EAAM,IAE3H,OAAO4Z,GAET7Z,KAAM,SAAUyzB,EAAGxzB,GACjB,IAAI6yB,EAAQ45P,EAAM57P,KAAK88P,aAAan6P,EAAGxzB,EAAKysR,EAAMoB,GAAIpB,EAAMj6P,GAC1Dy7P,EAAQxB,EAAMoB,GAAGhB,OAAOh6P,GAAO,GACjC7yB,EAAMA,EAAMiuR,EAAQA,EAAQjuR,GAAOiuR,EACnC,OAAOxB,EAAMoB,GAAG91Q,IAAI00Q,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAI6yB,GAAQ45P,EAAMj6P,EAAExyB,IAAI6yB,GAAQ,EAAI,GAAK7yB,EAAM,OAG/FysR,EAAMyB,UAAYzB,EAAM0B,GAAK1B,EAAMj5P,EAAI,CACrC16B,KAAM,cACNstL,MAAO,MACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAE26P,KAAO36P,EAAE26P,GAAK1B,EAAM57P,KAAK4C,OAAOv4B,KAAKs4B,GAAK,IAErDsnD,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAM0B,GAAGnuR,IAAIwzB,MAAQxzB,GAAO,IAErC6sR,OAAQ,WACN,MAAO,CAAC,EAAG,IAEbhwQ,MAAO,SAAU2W,GACf,OAAOi5P,EAAMv5P,EAAErW,MAAM2W,IAEvBzb,IAAK,SAAUyb,GACb,OAAOi5P,EAAMv5P,EAAEnb,IAAIyb,IAErB5Z,KAAM,SAAU4Z,EAAGxzB,GACjBA,EAAMA,EAAM,EAAI,EAAIA,GAAO,EAC3B,OAAOysR,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,IAAMxzB,EAAMysR,EAAM0B,GAAGnuR,IAAIwzB,KAAOxzB,GAAOysR,EAAM0B,GAAGnuR,IAAIwzB,GAAK,EAAI,KAElIzzB,KAAM,SAAUyzB,EAAGxzB,GACjBA,EAAMA,EAAM,EAAI,EAAIA,GAAO,EAC3B,OAAOysR,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,IAAMxzB,EAAMysR,EAAM0B,GAAGnuR,IAAIwzB,KAAOxzB,GAAOysR,EAAM0B,GAAGnuR,IAAIwzB,IAAM,EAAI,MAGrIi5P,EAAM2B,UAAY3B,EAAMz0J,GAAK,CAC3Bl/H,KAAM,cACNstL,MAAO,MACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAEwkG,KAAOxkG,EAAEwkG,GAAKvvH,KAAKuqB,KAAK,GAAKy5P,EAAMv5P,EAAErW,MAAM2W,GAAGnvB,UAAYooR,EAAM/3P,EAAE7X,MAAM2W,GAAGnvB,WAAaooR,EAAM4B,OAEzGvzM,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAMz0J,GAAGh4H,IAAIwzB,MAAQxzB,GAAOysR,EAAMz0J,GAAG60J,OAAOr5P,GAAG,KAExDq5P,OAAQ,SAAUr5P,GAChB,IAAI6C,EAAOo2P,EAAM/3P,EAAE10B,IAAIwzB,GACvB,OAAOA,EAAE86P,WAAa96P,EAAE86P,SAAW,CAAC,EAAGj4P,EAAO,EAAI,IAAM,OAE1DxZ,MAAO,SAAU2W,GACf,OAAOi5P,EAAMv5P,EAAErW,MAAM2W,IAEvBzb,IAAK,SAAUyb,GACb,OAAOi5P,EAAMv5P,EAAEnb,IAAIyb,IAErB5Z,KAAM,SAAU4Z,EAAGxzB,GACjBA,EAAMA,EAAMysR,EAAMz0J,GAAG60J,OAAOr5P,GAAG,GAAK,EAAIxzB,EACxC,IAAIq2B,EAAOo2P,EAAM57P,KAAK48P,aAAaj6P,EAAGxzB,EAAKysR,EAAMz0J,GAAIy0J,EAAM/3P,GACzD65P,EAAQ9B,EAAMz0J,GAAG60J,OAAOx2P,GAAM,GAChCr2B,EAAMA,EAAMuuR,EAAQ,EAAIvuR,GAAOuuR,EAC/B,OAAO9B,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIq2B,GAAOo2P,EAAMj6P,EAAExyB,IAAIq2B,GAAOr2B,IAE/DD,KAAM,SAAUyzB,EAAGxzB,GACjB,IAAIq2B,EAAOo2P,EAAM57P,KAAK88P,aAAan6P,EAAGxzB,EAAKysR,EAAMz0J,GAAIy0J,EAAM/3P,GACzD65P,EAAQ9B,EAAMz0J,GAAG60J,OAAOx2P,GAAM,GAChCr2B,EAAMA,EAAMuuR,EAAQA,EAAQvuR,GAAOuuR,EACnC,OAAO9B,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIq2B,GAAOo2P,EAAMj6P,EAAExyB,IAAIq2B,GAAOr2B,KAGjEysR,EAAMr3P,KAAOq3P,EAAMz3P,EAAI,CACrBl8B,KAAM,OACNstL,MAAO,KACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAEwB,IAAMxB,EAAEwB,EAAIy3P,EAAM57P,KAAK29P,QAAQtzR,KAAKs4B,KAE/CsnD,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAMz3P,EAAEh1B,IAAIwzB,KAAOxzB,GAE5B6sR,OAAQ,WACN,MAAO,CAAC,EAAG,KAEbhwQ,MAAO,SAAU2W,GACf,OAAOA,EAAEi7P,SAAWj7P,EAAEi7P,OAAShC,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,GAAIi5P,EAAMz3P,EAAEh1B,IAAIwzB,MAE7Gzb,IAAK,SAAUyb,GACb,OAAOA,EAAEk7P,OAASl7P,EAAEk7P,KAAOjC,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,GAAIi5P,EAAMz3P,EAAEh1B,IAAIwzB,MAEzG5Z,KAAM,SAAU4Z,EAAGxzB,GACjBA,EAAMA,EAAM,GAAK,EAAIA,EACrB,IAAI4Z,EAAO6yQ,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,IAAMxzB,GAAOysR,EAAMz3P,EAAEh1B,IAAIwzB,GAAK,EAAI,GAAIxzB,GAC7G,IAAKysR,EAAM57P,KAAK89P,OAAS/0Q,EAAKvV,WAAamvB,EAAEnvB,UAAW,CACtDuV,EAAO6yQ,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAI4Z,GAAO6yQ,EAAMj6P,EAAExyB,IAAI4Z,GAAO6yQ,EAAMv5P,EAAElzB,IAAI4Z,GAAO5Z,EAAM,GAExF,OAAO4Z,GAET7Z,KAAM,SAAUyzB,EAAGxzB,GACjBA,EAAMA,EAAM,GAAK,GAAKA,EACtB,OAAOysR,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,IAAMxzB,GAAOysR,EAAMz3P,EAAEh1B,IAAIwzB,IAAM,EAAI,GAAIxzB,KAG9GysR,EAAM96P,OAAS86P,EAAMrvR,EAAI,CACvBtE,KAAM,SACNstL,MAAO,GACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAEp2B,IAAMo2B,EAAEp2B,EAAIqvR,EAAM57P,KAAK+9P,OAAO1zR,KAAKs4B,KAE9CsnD,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAMrvR,EAAE4C,IAAIwzB,KAAOxzB,GAE5B6sR,OAAQ,SAAUr5P,GAChB,MAAO,CAAC,EAAG,KAEb3W,MAAO,SAAU2W,GACf,OAAOA,EAAEq7P,SAAWr7P,EAAEq7P,OAASpC,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,GAAIi5P,EAAMz3P,EAAEh1B,IAAIwzB,GAAIi5P,EAAMrvR,EAAE4C,IAAIwzB,MAE7Hzb,IAAK,SAAUyb,GACb,OAAOA,EAAEs7P,OAASt7P,EAAEs7P,KAAOrC,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,GAAIi5P,EAAMz3P,EAAEh1B,IAAIwzB,GAAIi5P,EAAMrvR,EAAE4C,IAAIwzB,MAEzH5Z,KAAM,SAAU4Z,EAAGxzB,GACjB,IAAI5C,EAAIqvR,EAAMrvR,EAAE4C,IAAIwzB,GAClBzvB,EAAI0oR,EAAM1oR,EAAE/D,IAAIwzB,GAChBu7P,EAAM/uR,EAAM,GAAK,GAAK5C,EAAI4C,GAAO5C,EAAI,GAAKA,EAAI4C,EAAMA,EAAM5C,EAC1Dwc,EAAO,IAAI/W,KAAK2wB,EAAEnvB,UAAY0qR,EAAMtC,EAAMuC,IAAMjrR,EAAI0oR,EAAMwC,KAC5D,IAAKxC,EAAM57P,KAAK89P,OAAS/0Q,EAAKvV,WAAamvB,EAAEnvB,UAAW,CACtDuV,EAAO,IAAI/W,KAAK2wB,EAAEnvB,WAAa0qR,EAAM,KAAOtC,EAAMuC,IAAMjrR,EAAI0oR,EAAMwC,KAEpE,OAAOr1Q,GAET7Z,KAAM,SAAUyzB,EAAGxzB,GACjBA,EAAMA,EAAM,GAAK,GAAKA,EACtB,OAAOysR,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,GAAIi5P,EAAMz3P,EAAEh1B,IAAIwzB,IAAMxzB,GAAOysR,EAAMrvR,EAAE4C,IAAIwzB,IAAM,EAAI,GAAIxzB,KAG9HysR,EAAM55P,MAAQ45P,EAAMj6P,EAAI,CACtB15B,KAAM,QACNstL,MAAO,QACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAEhB,IAAMgB,EAAEhB,EAAIi6P,EAAM57P,KAAKtvB,SAASrG,KAAKs4B,GAAK,IAErDsnD,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAMj6P,EAAExyB,IAAIwzB,MAAQxzB,GAAO,KAEpC6sR,OAAQ,WACN,MAAO,CAAC,EAAG,KAEbhwQ,MAAO,SAAU2W,GACf,OAAOA,EAAE07P,SAAW17P,EAAE07P,OAASzC,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,MAE7Ezb,IAAK,SAAUyb,GACb,OAAOA,EAAE27P,OAAS37P,EAAE27P,KAAO1C,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,MAEzE5Z,KAAM,SAAU4Z,EAAGxzB,GACjBA,EAAMA,EAAM,GAAK,EAAIA,GAAO,GAC5B,OAAOysR,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,IAAMxzB,EAAMysR,EAAMj6P,EAAExyB,IAAIwzB,GAAK,EAAI,GAAIxzB,IAE1ED,KAAM,SAAUyzB,EAAGxzB,GACjBA,EAAMA,EAAM,GAAK,GAAKA,GAAO,GAC7B,OAAOysR,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,IAAMxzB,GAAOysR,EAAMj6P,EAAExyB,IAAIwzB,GAAK,EAAI,GAAIxzB,KAG7EysR,EAAMr2P,OAASq2P,EAAM1oR,EAAI,CACvBjL,KAAM,SACNstL,MAAO,EACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAEzvB,IAAMyvB,EAAEzvB,EAAI0oR,EAAM57P,KAAKu+P,OAAOl0R,KAAKs4B,KAE9CsnD,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAM1oR,EAAE/D,IAAIwzB,KAAOxzB,GAE5B6sR,OAAQ,WACN,MAAO,CAAC,EAAG,KAEbhwQ,MAAO,SAAU2W,GACf,OAAOA,GAETzb,IAAK,SAAUyb,GACb,OAAOA,GAET5Z,KAAM,SAAU4Z,EAAGxzB,GACjB,IAAI+D,EAAI0oR,EAAM1oR,EAAE/D,IAAIwzB,GAClBu7P,EAAM/uR,EAAM,GAAK,GAAK+D,EAAI/D,GAAO+D,EAAI,GAAKA,EAAI/D,EAAMA,EAAM+D,EAC1D6V,EAAO,IAAI/W,KAAK2wB,EAAEnvB,UAAY0qR,EAAMtC,EAAMwC,KAC5C,IAAKxC,EAAM57P,KAAK89P,OAAS/0Q,EAAKvV,WAAamvB,EAAEnvB,UAAW,CACtDuV,EAAO,IAAI/W,KAAK2wB,EAAEnvB,WAAa0qR,EAAM,MAAQtC,EAAMwC,KAErD,OAAOr1Q,GAET7Z,KAAM,SAAUyzB,EAAGxzB,EAAKqK,GACtBrK,EAAMA,EAAM,GAAK,GAAKA,EACtB,OAAOysR,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,GAAIi5P,EAAMz3P,EAAEh1B,IAAIwzB,GAAIi5P,EAAMrvR,EAAE4C,IAAIwzB,IAAMxzB,GAAOysR,EAAM1oR,EAAE/D,IAAIwzB,IAAM,EAAI,GAAIxzB,KAG9IysR,EAAMjwP,KAAOiwP,EAAMnwQ,EAAI,CACrBxjB,KAAM,OACNstL,MAAO,EACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAElX,IAAMkX,EAAElX,EAAImwQ,EAAMz3P,EAAEh1B,IAAIwzB,GAAK,KAAOi5P,EAAMrvR,EAAE4C,IAAIwzB,GAAK,GAAKi5P,EAAM1oR,EAAE/D,IAAIwzB,KAEjFsnD,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAMnwQ,EAAEtc,IAAIwzB,KAAOxzB,GAE5B6sR,OAAQ,WACN,MAAO,CAAC,EAAG,QAEbhwQ,MAAO,SAAU2W,GACf,OAAOA,GAETzb,IAAK,SAAUyb,GACb,OAAOA,GAET5Z,KAAM,SAAU4Z,EAAGxzB,GACjBA,EAAMA,EAAM,MAAQ,EAAIA,EACxB,IAAI4Z,EAAO6yQ,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,IAAMxzB,GAAOysR,EAAMnwQ,EAAEtc,IAAIwzB,GAAK,EAAI,GAAI,EAAG,EAAGxzB,GACnH,IAAKysR,EAAM57P,KAAK89P,OAAS/0Q,EAAKvV,UAAYmvB,EAAEnvB,UAAW,CACrDuV,EAAO6yQ,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAI4Z,GAAO6yQ,EAAMj6P,EAAExyB,IAAI4Z,GAAO6yQ,EAAMv5P,EAAElzB,IAAI4Z,GAAO6yQ,EAAMz3P,EAAEh1B,IAAI4Z,GAAO6yQ,EAAMrvR,EAAE4C,IAAI4Z,GAAO5Z,EAAM,MAE9H,OAAO4Z,GAET7Z,KAAM,SAAUyzB,EAAGxzB,GACjBA,EAAMA,EAAM,MAAQ,MAAQA,EAC5B,OAAOysR,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,IAAMxzB,GAAOysR,EAAMnwQ,EAAEtc,IAAIwzB,IAAM,EAAI,GAAI,EAAG,EAAGxzB,KAGpHysR,EAAM4C,YAAc5C,EAAM6C,GAAK,CAC7Bx2R,KAAM,gBACNstL,MAAO,OACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAE87P,KAAO97P,EAAE87P,IAAM7C,EAAMv5P,EAAElzB,IAAIwzB,IAAMi5P,EAAM0B,GAAGnuR,IAAIysR,EAAMj6P,EAAE3V,MAAM2W,IAAM,IAAM,EAAIi5P,EAAM0B,GAAGnuR,IAAIwzB,KAAO,IAE3GsnD,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAM6C,GAAGtvR,IAAIwzB,MAAQxzB,GAAOysR,EAAM6C,GAAGzC,OAAOr5P,GAAG,KAExDq5P,OAAQ,SAAUr5P,GAChB,OAAOA,EAAE+7P,WAAa/7P,EAAE+7P,SAAW,CAAC,GAAI9C,EAAMv5P,EAAE25P,OAAOr5P,GAAG,IAAMi5P,EAAM0B,GAAGnuR,IAAIysR,EAAMj6P,EAAE3V,MAAM2W,IAAM,IAAM,EAAIi5P,EAAM0B,GAAGnuR,IAAIysR,EAAMj6P,EAAEza,IAAIyb,MAAQ,KAE9I3W,MAAO,SAAU2W,GACf,OAAOA,EAAEg8P,UAAYh8P,EAAEg8P,QAAU/C,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAI/qB,KAAKC,IAAI+jR,EAAMv5P,EAAElzB,IAAIwzB,GAAKi5P,EAAM0B,GAAGnuR,IAAIwzB,GAAK,EAAG,MAElIzb,IAAK,SAAUyb,GACb,OAAOA,EAAEi8P,QAAUj8P,EAAEi8P,MAAQhD,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAI/qB,KAAKuU,IAAIyvQ,EAAMv5P,EAAElzB,IAAIwzB,IAAM,EAAIi5P,EAAM0B,GAAGnuR,IAAIwzB,IAAKi5P,EAAMv5P,EAAE25P,OAAOr5P,GAAG,OAElJ5Z,KAAM,SAAU4Z,EAAGxzB,GACjBA,EAAMA,EAAMysR,EAAM6C,GAAGzC,OAAOr5P,GAAG,GAAK,EAAIxzB,EACxC,IAAI6yB,EAAQ45P,EAAM57P,KAAK48P,aAAaj6P,EAAGxzB,EAAKysR,EAAM6C,GAAI7C,EAAMj6P,GAC1Dk9P,EAAQjD,EAAM6C,GAAGzC,OAAOh6P,GAAO,GACjC7yB,EAAMA,EAAM0vR,EAAQ,EAAI1vR,GAAO0vR,EAC/B,OAAOjD,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAI6yB,GAAQ45P,EAAMj6P,EAAExyB,IAAI6yB,GAAQpqB,KAAKC,IAAI,GAAI1I,EAAM,GAAK,GAAKysR,EAAM0B,GAAGnuR,IAAI6yB,GAAS,MAEpH9yB,KAAM,SAAUyzB,EAAGxzB,GACjB,IAAI6yB,EAAQ45P,EAAM57P,KAAK88P,aAAan6P,EAAGxzB,EAAKysR,EAAM6C,GAAI7C,EAAMj6P,GAC1Dk9P,EAAQjD,EAAM6C,GAAGzC,OAAOh6P,GAAO,GACjC7yB,EAAMA,EAAM0vR,EAAQA,EAAQ1vR,GAAO0vR,EACnC,OAAOjD,EAAM6C,GAAGv3Q,IAAI00Q,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAI6yB,GAAQ45P,EAAMj6P,EAAExyB,IAAI6yB,GAAQpqB,KAAKC,IAAI,GAAI1I,EAAM,GAAK,GAAKysR,EAAM0B,GAAGnuR,IAAI6yB,GAAS,QAGnI45P,EAAM31G,WAAa21G,EAAMkD,GAAK,CAC5B72R,KAAM,qBACNstL,MAAO,OACPpmL,IAAK,SAAUwzB,GACb,GAAIA,EAAEm8P,GAAI,OAAOn8P,EAAEm8P,GACnB,IAAIC,EAAQnD,EAAM0B,GAAGv0Q,KAAK6yQ,EAAMkD,GAAG9yQ,MAAM2W,GAAI,GAC3Cq8P,EAAQpD,EAAM0B,GAAGv0Q,KAAK6yQ,EAAM/3P,EAAE30B,KAAK6vR,EAAOnD,EAAM/3P,EAAE10B,IAAI4vR,GAAS,GAAI,GACrE,OAAOp8P,EAAEm8P,GAAK,EAAIlnR,KAAKuqB,MAAM48P,EAAMvrR,UAAYwrR,EAAMxrR,WAAaooR,EAAMqD,OAE1Eh1M,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAMkD,GAAG3vR,IAAIwzB,MAAQxzB,GAAOysR,EAAMkD,GAAG9C,OAAOr5P,GAAG,KAExDq5P,OAAQ,SAAUr5P,GAChB,GAAIA,EAAEu8P,SAAU,OAAOv8P,EAAEu8P,SACzB,IAAI15P,EAAOo2P,EAAM0B,GAAGv0Q,KAAK6yQ,EAAMkD,GAAG9yQ,MAAM2W,GAAI,GAC1Cw8P,EAAUvD,EAAM0B,GAAGnuR,IAAIysR,EAAM/3P,EAAE7X,MAAMwZ,IACrC45P,EAASxD,EAAM0B,GAAGnuR,IAAIysR,EAAM/3P,EAAE3c,IAAIse,IACpC,OAAO7C,EAAEu8P,SAAW,CAAC,EAAGC,IAAY,GAAKC,IAAW,EAAI,GAAK,KAE/DpzQ,MAAO,SAAU2W,GACf,OAAOA,EAAE08P,UAAY18P,EAAE08P,QAAUzD,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,IAAMi5P,EAAM0B,GAAGnuR,IAAIwzB,GAAK,EAAIi5P,EAAM0B,GAAGnuR,IAAIwzB,GAAK,EAAI,MAEjJzb,IAAK,SAAUyb,GACb,OAAOA,EAAE28P,QAAU38P,EAAE28P,MAAQ1D,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,GAAIi5P,EAAMj6P,EAAExyB,IAAIwzB,GAAIi5P,EAAMv5P,EAAElzB,IAAIwzB,IAAMi5P,EAAM0B,GAAGnuR,IAAIwzB,GAAK,EAAI,EAAIi5P,EAAM0B,GAAGnuR,IAAIwzB,GAAK,MAE7I5Z,KAAM,SAAU4Z,EAAGxzB,GACjBA,EAAMA,EAAMysR,EAAMkD,GAAG9C,OAAOr5P,GAAG,GAAK,EAAIxzB,EACxC,IAAIowR,EAAS3D,EAAM0B,GAAGv0Q,KAAK6yQ,EAAMkD,GAAG9yQ,MAAM2W,GAAI,GAC5C6C,EAAOo2P,EAAM57P,KAAK48P,aAAa2C,EAAQpwR,EAAKysR,EAAMkD,GAAIlD,EAAM/3P,GAC9D,GAAI+3P,EAAMkD,GAAG3vR,IAAIq2B,KAAU,EAAG,CAC5BA,EAAOo2P,EAAM0B,GAAGv0Q,KAAKyc,EAAM,GAE7B,IAAIg6P,EAAQ5D,EAAMkD,GAAG9C,OAAOx2P,GAAM,GAChC65P,EAAUzD,EAAMkD,GAAG9yQ,MAAMwZ,GAC3Br2B,EAAMA,EAAMqwR,EAAQ,EAAIrwR,GAAOqwR,EAC/B,OAAO5D,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIkwR,GAAUzD,EAAMj6P,EAAExyB,IAAIkwR,GAAUzD,EAAMv5P,EAAElzB,IAAIkwR,GAAW,GAAKlwR,EAAM,KAEvGD,KAAM,SAAUyzB,EAAGxzB,GACjB,IAAIowR,EAAS3D,EAAM0B,GAAGv0Q,KAAK6yQ,EAAMkD,GAAG9yQ,MAAM2W,GAAI,GAC5C6C,EAAOo2P,EAAM57P,KAAK88P,aAAayC,EAAQpwR,EAAKysR,EAAMkD,GAAIlD,EAAM/3P,GAC9D,GAAI+3P,EAAMkD,GAAG3vR,IAAIq2B,KAAU,EAAG,CAC5BA,EAAOo2P,EAAM0B,GAAGv0Q,KAAKyc,EAAM,GAE7B,IAAIg6P,EAAQ5D,EAAMkD,GAAG9C,OAAOx2P,GAAM,GAChC85P,EAAQ1D,EAAMkD,GAAG53Q,IAAIse,GACvBr2B,EAAMA,EAAMqwR,EAAQA,EAAQrwR,GAAOqwR,EACnC,OAAO5D,EAAMkD,GAAG53Q,IAAI00Q,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAImwR,GAAQ1D,EAAMj6P,EAAExyB,IAAImwR,GAAQ1D,EAAMv5P,EAAElzB,IAAImwR,GAAS,GAAKnwR,EAAM,OAGhHysR,EAAMp2P,KAAOo2P,EAAM/3P,EAAI,CACrB57B,KAAM,OACNstL,MAAO,SACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAEkB,IAAMlB,EAAEkB,EAAI+3P,EAAM57P,KAAKiM,QAAQ5hC,KAAKs4B,KAE/CsnD,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAM/3P,EAAE10B,IAAIwzB,KAAOxzB,GAE5B6sR,OAAQ,WACN,MAAO,CAAC,KAAM,OAEhBhwQ,MAAO,SAAU2W,GACf,OAAOA,EAAE88P,SAAW98P,EAAE88P,OAAS7D,EAAM57P,KAAKjX,KAAK6yQ,EAAM/3P,EAAE10B,IAAIwzB,MAE7Dzb,IAAK,SAAUyb,GACb,OAAOA,EAAE+8P,OAAS/8P,EAAE+8P,KAAO9D,EAAM57P,KAAK9wB,KAAK0sR,EAAM/3P,EAAE10B,IAAIwzB,MAEzD5Z,KAAM,SAAU4Z,EAAGxzB,GACjB,OAAOA,EAAMysR,EAAM/3P,EAAE10B,IAAIwzB,IAAMxzB,GAAOysR,EAAM/3P,EAAEm4P,SAAS,GAAKJ,EAAM57P,KAAKjX,KAAK5Z,GAAOysR,EAAM+D,OAE3FzwR,KAAM,SAAUyzB,EAAGxzB,GACjB,OAAOA,EAAMysR,EAAM/3P,EAAE10B,IAAIwzB,IAAMxzB,GAAOysR,EAAM/3P,EAAEm4P,SAAS,GAAKJ,EAAM57P,KAAK9wB,KAAKC,GAAOysR,EAAM+D,QAG7F/D,EAAMgE,SAAWhE,EAAMiE,GAAK,CAC1B53R,KAAM,YACNstL,MAAO,EACPpmL,IAAK,SAAUwzB,GACb,OAAOA,EAAEk9P,KAAOl9P,EAAEk9P,GAAKl9P,EAAEnvB,YAE3By2E,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAOysR,EAAMiE,GAAG1wR,IAAIwzB,KAAOxzB,GAE7B6sR,OAAQ,WACN,MAAO,CAAC,EAAG,YAEbhwQ,MAAO,SAAU2W,GACf,OAAOA,GAETzb,IAAK,SAAUyb,GACb,OAAOA,GAET5Z,KAAM,SAAU4Z,EAAGxzB,GACjB,OAAOysR,EAAMiE,GAAG1wR,IAAIwzB,GAAKxzB,EAAM,IAAI6C,KAAK7C,GAAOysR,EAAM+D,OAEvDzwR,KAAM,SAAUyzB,EAAGxzB,GACjB,OAAOysR,EAAMiE,GAAG1wR,IAAIwzB,GAAKxzB,EAAM,IAAI6C,KAAK7C,GAAOysR,EAAM+D,QAGzD/D,EAAMkE,SAAW,GACjBlE,EAAMkE,SAAS5+O,MAAQ06O,EAAMkE,SAASz2R,EAAI,SAAU02R,EAAY1wR,GAC9D,IAAItM,EAAQsM,EAAO,GACnB,MAAO,CACLpH,KAAM,SAAW83R,EAAW93R,KAC5BstL,OAAQwqG,EAAW/D,OAAO,IAAIhqR,MAAQ,GAAKjP,GAASg9R,EAAWxqG,MAC/DpmL,IAAK4wR,EAAW5wR,IAChB86E,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAO3L,KAAK2L,IAAIwzB,IAAM5/B,GAExBi5R,OAAQ+D,EAAW/D,OACnBhwQ,MAAO+zQ,EAAW/zQ,MAClB9E,IAAK64Q,EAAW74Q,IAChB6B,KAAM,SAAU4nB,EAAWxhC,GACzB,GAAIA,GAAOpM,EAAOoM,EAAM4wR,EAAW/D,OAAOrrP,GAAW,GACrD,OAAOovP,EAAWh3Q,KAAK4nB,EAAWxhC,IAEpCD,KAAM,SAAUyhC,EAAWxhC,GACzBA,EAAMA,IAAQpM,EAAQg9R,EAAW/D,OAAOrrP,GAAW,GAAK5tC,EAAQ,EAChE,OAAOg9R,EAAW7wR,KAAKyhC,EAAWxhC,MAIxCysR,EAAMkE,SAASnhO,OAASi9N,EAAMkE,SAASh4Q,EAAI,SAAUi4Q,EAAY1wR,GAC/D,IAAItM,EAAQsM,EAAOA,EAAO/M,OAAS,GACnC,MAAO,CACL2F,KAAM,UAAY83R,EAAW93R,KAC7BstL,MAAOwqG,EAAWxqG,OAASxyL,EAAQ,GACnCoM,IAAK4wR,EAAW5wR,IAChB86E,QAAS,SAAUtnD,EAAGxzB,GACpB,OAAO3L,KAAK2L,IAAIwzB,GAAK5/B,GAEvBi5R,OAAQ+D,EAAW/D,OACnBhwQ,MAAO+zQ,EAAW/zQ,MAClB9E,IAAK64Q,EAAW74Q,IAChB6B,KAAM,SAAU4nB,EAAWxhC,GACzBA,EAAMA,IAAQpM,EAAQg9R,EAAW/D,OAAOrrP,GAAW,GAAK5tC,EACxD,OAAOg9R,EAAWh3Q,KAAK4nB,EAAWxhC,IAEpCD,KAAM,SAAUyhC,EAAWxhC,GACzBA,EAAMA,IAAQpM,EAAQA,EAAQ,EAAIg9R,EAAW/D,OAAOrrP,GAAW,GAC/D,OAAOovP,EAAW7wR,KAAKyhC,EAAWxhC,MAIxCysR,EAAMoE,QAAU,SAAUC,GACxB,IAAIC,EAAc,GAChBC,EAAiB,EACjBC,EACF,IAAK,IAAI39R,KAAOw9R,EAAU,CACxB,IAAII,EAAY59R,EAAIoG,MAAM,KACxBZ,EAAOo4R,EAAU,GACjBC,EAAMD,EAAU,GAChBE,EAAON,EAASx9R,GAChBs9R,EAAaO,EAAM1E,EAAMkE,SAASQ,GAAK1E,EAAM3zR,GAAOs4R,GAAQ3E,EAAM3zR,GACpEi4R,EAAYl+R,KAAK,CACf+9R,WAAYA,EACZQ,KAAMA,IAERJ,IAEFD,EAAYzkR,MAAK,SAAUpS,EAAGye,GAC5B,IAAI04Q,EAAKn3R,EAAE02R,WAAWxqG,MACpBkrG,EAAK34Q,EAAEi4Q,WAAWxqG,MACpB,OAAOkrG,EAAKD,GAAM,EAAIC,EAAKD,EAAK,EAAI,KAEtCJ,EAAiBF,EAAYC,EAAiB,GAAGJ,WACjD,SAAS54Q,EAAUu5Q,GACjB,OAAOA,IAAQ,OAAS,SAAUr3R,EAAGye,GACnC,OAAOze,EAAEmK,UAAYsU,EAAEtU,WACrB,SAAUnK,EAAGye,GACf,OAAOA,EAAEtU,UAAYnK,EAAEmK,WAG3B,MAAO,CACLwY,MAAO,SAAU00Q,EAAK/vP,GACpB,IAAI5nB,EAAO4nB,EACTgwP,EAAU/E,EAAMvmR,MAAMqrR,GACtBE,EAAc,IACdj0P,EACF,MAAOi0P,MAAkBj0P,GAAQ5jB,EAAM,CACrC4jB,EAAO,KACP,IAAK,IAAIvqC,EAAI,EAAGA,EAAI+9R,EAAgB/9R,IAAK,CACvC,IAAI29R,EAAaG,EAAY99R,GAAG29R,WAC9Bc,EAASd,EAAW5wR,IAAI4Z,GACxBizQ,EAAS+D,EAAW/D,OAAOjzQ,GAC3B+3Q,EAASH,EAAQE,EAAQX,EAAY99R,GAAGm+R,KAAMvE,GAChD,IAAK+D,EAAW91M,QAAQlhE,EAAM+3Q,GAAS,CACrC/3Q,EAAOg3Q,EAAWW,GAAK33Q,EAAM+3Q,GAC7Bn0P,EAAO,MACP,QAIN,GAAI5jB,IAAS6yQ,EAAM+D,MAAO,CACxB52Q,EAAO23Q,IAAQ,OAASN,EAAep0Q,MAAMjD,GAAQq3Q,EAAel5Q,IAAI6B,GAE1E,OAAOA,GAET7B,IAAK,SAAUw5Q,EAAK/vP,GAClB,IAAIhhC,EACFgxR,EAAU/E,EAAMvmR,MAAMqrR,EAAM,WAC5B3xP,EAAU5nB,EAAUu5Q,GACtB,IAAK,IAAIt+R,EAAI+9R,EAAiB,EAAG/9R,GAAK,EAAGA,IAAK,CAC5C,IAAI29R,EAAaG,EAAY99R,GAAG29R,WAC9Bc,EAASd,EAAW5wR,IAAIwhC,GACxBqrP,EAAS+D,EAAW/D,OAAOrrP,GAC3BmwP,EAASH,EAAQE,EAAQX,EAAY99R,GAAGm+R,KAAMvE,GAC9CjzQ,EACF,GAAI+3Q,IAAW16R,UAAW,CACxB2iB,EAAOg3Q,EAAWW,GAAK/vP,EAAWmwP,GAClC,GAAI/3Q,KAAUpZ,GAAUo/B,EAAQp/B,EAAQoZ,IAAQ,CAC9CpZ,EAASoZ,IAIf,OAAOpZ,GAETqnN,KAAM,SAAU0pE,EAAK1gQ,GACnB,OAAO,IAAIhuB,KAAK0uR,IAAQ,OAASN,EAAel5Q,IAAI8Y,GAAMxsB,UAAYooR,EAAMwC,IAAMgC,EAAep0Q,MAAMgU,GAAMxsB,UAAYooR,EAAMwC,MAEjI2C,UAAW,SAAU/gQ,GACnB,OAAOogQ,EAAep0Q,MAAMgU,MAIlC47P,EAAMoF,SAAW,SAAUC,GACzB,IAAKA,EAAO,MAAM,IAAI/sR,MAAM,gCAC5B,IAAK+sR,EAAMC,UAAW,MAAM,IAAIhtR,MAAM,kDACtC,IAAIgtR,EAAY,GACdC,EAAeF,EAAMC,UAAU5+R,OAC/B8+R,EAAa,GACbC,EAAgBJ,EAAMG,WAAaH,EAAMG,WAAW9+R,OAAS,EAC/D,IAAK,IAAIF,EAAI,EAAGA,EAAI++R,EAAc/+R,IAAK,CACrC8+R,EAAUl/R,KAAK45R,EAAMoE,QAAQiB,EAAMC,UAAU9+R,KAE/C,IAAK,IAAI0xC,EAAI,EAAGA,EAAIutP,EAAevtP,IAAK,CACtCstP,EAAWp/R,KAAK45R,EAAMoE,QAAQiB,EAAMG,WAAWttP,KAEjD,SAASwtP,EAAaZ,EAAKl5Q,EAAOmpB,EAAWC,EAAS2wP,GACpD,IAAIxyP,EAAU5nB,EAAUu5Q,GACtBc,EAAYh6Q,EACZo5Q,EAAc,IACda,EAAc,GACdC,EAAe,GACf34Q,EACA7B,EACAy6Q,EAAU,GACV9vD,EAAY6uD,IAAQ,OACpBkB,EACAC,EAAShwD,EAAY,EAAI,EACzBiwD,EAAOjwD,EAAY,EAAI,EACzBlhM,EAAYA,EAAY,IAAI3+B,KAAK2+B,GAAa,IAAI3+B,KAClD,IAAK2+B,IAAcA,EAAUn9B,UAAW,MAAM,IAAIU,MAAM,uBACxD6tR,EAAcrB,EAAKQ,EAAWO,EAAa9wP,GAC3CqxP,EAAetB,EAAKU,EAAYM,EAAc/wP,GAC9C,MAAOiwP,KAAiBY,IAAcz4Q,EAAOk5Q,EAASR,EAAa1yP,IAAW,CAC5E,GAAI6B,GAAW7B,EAAQhmB,EAAM6nB,GAAU,CACrC,MAEF,GAAIywP,EAAe,CACjBa,EAAkBxB,EAAKU,EAAYM,EAAc34Q,GACjD,GAAI7B,EAAMi7Q,EAAiBzB,EAAKgB,EAAc34Q,GAAO,CACnDq5Q,EAAiB1B,EAAKQ,EAAWO,EAAav6Q,GAC9C,UAGJ,GAAIq6Q,EAAS,CACX,IAAIc,EAAaC,EAAeZ,EAAc3yP,GAC9C7nB,EAAMq7Q,EAAQ7B,EAAKQ,EAAWO,EAAa14Q,EAAMs5Q,GACjD,IAAI3uQ,EAAIm+M,EAAY,CAAC,IAAI7/N,KAAK4F,KAAKC,IAAI84B,EAAW5nB,IAAQ7B,EAAM,IAAIlV,KAAK4+B,EAAUh5B,KAAKuU,IAAIjF,EAAK0pB,GAAW1pB,GAAO9gB,WAAa,CAAC8gB,EAAM,IAAIlV,KAAK4+B,EAAUh5B,KAAKC,IAAI+4B,EAAS1pB,EAAI1T,UAAYooR,EAAMwC,KAAOl3Q,EAAI1T,UAAYooR,EAAMwC,KAAOh4R,UAAW,IAAI4L,KAAK4F,KAAKuU,IAAIwkB,EAAW5nB,EAAKvV,UAAYooR,EAAMwC,OACrS,GAAIwD,GAAcluQ,EAAEmuQ,GAAQruR,YAAcouR,EAAWE,GAAMtuR,UAAW,CACpEouR,EAAWE,GAAQpuQ,EAAEouQ,GACrBN,QACK,CACLI,EAAaluQ,EACbiuQ,EAAQ3/R,KAAK4/R,GAEf,IAAK16Q,EAAK,MACVk7Q,EAAiB1B,EAAKQ,EAAWO,EAAav6Q,OACzC,CACLy6Q,EAAQ3/R,KAAK6vO,EAAY,IAAI7/N,KAAK4F,KAAKC,IAAI84B,EAAW5nB,IAASy5Q,EAAStB,EAAWO,EAAa14Q,EAAM6nB,IACtG6xP,EAAW/B,EAAKQ,EAAWO,EAAa14Q,GAE1Cy4Q,IAEF,IAAK,IAAIp/R,EAAI,EAAGykB,EAAM86Q,EAAQr/R,OAAQF,EAAIykB,EAAKzkB,IAAK,CAClD,IAAIuN,EAASgyR,EAAQv/R,GACrBu/R,EAAQv/R,GAAKX,OAAO4P,UAAU7D,SAASnD,KAAKsF,KAAY,iBAAmB,CAAC+yR,EAAU/yR,EAAO,IAAK+yR,EAAU/yR,EAAO,KAAO+yR,EAAU/yR,GAEtI,OAAOgyR,EAAQr/R,SAAW,EAAIs5R,EAAM+D,MAAQn4Q,IAAU,EAAIm6Q,EAAQ,GAAKA,EAEzE,SAASe,EAAU//P,GACjB,GAAIA,aAAa3wB,OAAS0F,MAAMirB,EAAEoJ,WAAY,CAC5C,OAAO,IAAI/5B,KAAK2wB,GAElB,OAAOv8B,UAET,SAAS27R,EAAcrB,EAAKiC,EAAUC,EAAWjyP,GAC/C,IAAK,IAAIvuC,EAAI,EAAGykB,EAAM87Q,EAASrgS,OAAQF,EAAIykB,EAAKzkB,IAAK,CACnDwgS,EAAUxgS,GAAKugS,EAASvgS,GAAG4pB,MAAM00Q,EAAK/vP,IAG1C,SAASyxP,EAAiB1B,EAAKiC,EAAUC,EAAWjyP,GAClD,IAAI5B,EAAU5nB,EAAUu5Q,GACxB,IAAK,IAAIt+R,EAAI,EAAGykB,EAAM87Q,EAASrgS,OAAQF,EAAIykB,EAAKzkB,IAAK,CACnD,GAAIwgS,EAAUxgS,KAAO2sC,EAAQ6zP,EAAUxgS,GAAIuuC,GAAY,CACrDiyP,EAAUxgS,GAAKugS,EAASvgS,GAAG4pB,MAAM00Q,EAAK/vP,KAI5C,SAASqxP,EAAetB,EAAKiC,EAAUE,EAAWlyP,GAChD,IAAK,IAAIvuC,EAAI,EAAGykB,EAAM87Q,EAASrgS,OAAQF,EAAIykB,EAAKzkB,IAAK,CACnD,IAAI0gS,EAAYH,EAASvgS,GAAG4pB,MAAM00Q,EAAK/vP,GACvC,IAAKmyP,EAAW,CACdD,EAAUzgS,GAAKw5R,EAAM+D,UAChB,CACLkD,EAAUzgS,GAAK,CAAC0gS,EAAWH,EAASvgS,GAAG8kB,IAAIw5Q,EAAKoC,MAItD,SAASZ,EAAkBxB,EAAKiC,EAAUE,EAAWlyP,GACnD,IAAI5B,EAAU5nB,EAAUu5Q,GACxB,IAAK,IAAIt+R,EAAI,EAAGykB,EAAM87Q,EAASrgS,OAAQF,EAAIykB,EAAKzkB,IAAK,CACnD,GAAIygS,EAAUzgS,KAAO2sC,EAAQ8zP,EAAUzgS,GAAG,GAAIuuC,GAAY,CACxD,IAAImyP,EAAYH,EAASvgS,GAAG4pB,MAAM00Q,EAAK/vP,GACvC,IAAKmyP,EAAW,CACdD,EAAUzgS,GAAKw5R,EAAM+D,UAChB,CACLkD,EAAUzgS,GAAK,CAAC0gS,EAAWH,EAASvgS,GAAG8kB,IAAIw5Q,EAAKoC,OAKxD,SAASL,EAAW/B,EAAKiC,EAAUC,EAAWjyP,GAC5C,IAAK,IAAIvuC,EAAI,EAAGykB,EAAM87Q,EAASrgS,OAAQF,EAAIykB,EAAKzkB,IAAK,CACnD,GAAIwgS,EAAUxgS,IAAMwgS,EAAUxgS,GAAGoR,YAAcm9B,EAAUn9B,UAAW,CAClEovR,EAAUxgS,GAAKugS,EAASvgS,GAAG4pB,MAAM00Q,EAAKiC,EAASvgS,GAAG40N,KAAK0pE,EAAK/vP,MAIlE,SAAS6xP,EAASG,EAAUC,EAAWjyP,EAAWoyP,GAChD,IAAIpzR,EACJ,IAAK,IAAIvN,EAAI,EAAGykB,EAAM+7Q,EAAUtgS,OAAQF,EAAIykB,EAAKzkB,IAAK,CACpD,GAAIwgS,EAAUxgS,IAAMwgS,EAAUxgS,GAAGoR,YAAcm9B,EAAUn9B,UAAW,CAClE,IAAIwY,EAAQ22Q,EAASvgS,GAAG2+R,UAAUpwP,GAClC,GAAIoyP,GAAc/2Q,EAAQ+2Q,EAAY,CACpC,OAAOA,EAET,IAAKpzR,GAAUqc,EAAQrc,EAAQ,CAC7BA,EAASqc,IAIf,OAAOrc,EAET,SAASwyR,EAAiBzB,EAAKmC,EAAWlyP,GACxC,IAAI5B,EAAU5nB,EAAUu5Q,GACtB/wR,EACF,IAAK,IAAIvN,EAAI,EAAGykB,EAAMg8Q,EAAUvgS,OAAQF,EAAIykB,EAAKzkB,IAAK,CACpD,IAAImzL,EAAQstG,EAAUzgS,GACtB,GAAImzL,IAAUxmJ,EAAQwmJ,EAAM,GAAI5kJ,MAAgB4kJ,EAAM,IAAMxmJ,EAAQwmJ,EAAM,GAAI5kJ,IAAa,CACzF,IAAKhhC,GAAUo/B,EAAQwmJ,EAAM,GAAI5lL,GAAS,CACxCA,EAAS4lL,EAAM,KAIrB,OAAO5lL,EAET,SAAS2yR,EAAeU,EAAYj0P,GAClC,IAAIp/B,EACJ,IAAK,IAAIvN,EAAI,EAAGykB,EAAMm8Q,EAAW1gS,OAAQF,EAAIykB,EAAKzkB,IAAK,CACrD,GAAI4gS,EAAW5gS,MAAQuN,GAAUo/B,EAAQp/B,EAAQqzR,EAAW5gS,GAAG,KAAM,CACnEuN,EAASqzR,EAAW5gS,GAAG,IAG3B,OAAOuN,EAET,SAAS4yR,EAAQ7B,EAAKiC,EAAUC,EAAWjyP,EAAW0xP,GACpD,IAAItzP,EAAU5nB,EAAUu5Q,GACtB/wR,EACF,IAAK,IAAIvN,EAAI,EAAGykB,EAAM87Q,EAASrgS,OAAQF,EAAIykB,EAAKzkB,IAAK,CACnD,IAAI4pB,EAAQ42Q,EAAUxgS,GACtB,GAAI4pB,GAASA,EAAMxY,YAAcm9B,EAAUn9B,UAAW,CACpD,IAAI0T,EAAMy7Q,EAASvgS,GAAG8kB,IAAIw5Q,EAAK10Q,GAC/B,GAAIq2Q,KAAgBn7Q,GAAO6nB,EAAQ7nB,EAAKm7Q,IAAc,CACpD,OAAOA,EAET,IAAK1yR,GAAUo/B,EAAQ7nB,EAAKvX,GAAS,CACnCA,EAASuX,IAIf,OAAOvX,EAET,SAASwX,EAAUu5Q,GACjB,OAAOA,IAAQ,OAAS,SAAUr3R,EAAGye,GACnC,OAAQA,GAAKze,EAAEmK,UAAYsU,EAAEtU,WAC3B,SAAUnK,EAAGye,GACf,OAAQze,GAAKye,EAAEtU,UAAYnK,EAAEmK,WAGjC,SAASyuR,EAAS5qR,EAAK03B,GACrB,IAAIhmB,EAAO1R,EAAI,GACf,IAAK,IAAIjV,EAAI,EAAGykB,EAAMxP,EAAI/U,OAAQF,EAAIykB,EAAKzkB,IAAK,CAC9C,GAAIiV,EAAIjV,IAAM2sC,EAAQhmB,EAAM1R,EAAIjV,IAAK,CACnC2mB,EAAO1R,EAAIjV,IAGf,OAAO2mB,EAET,MAAO,CACLkhE,QAAS,SAAUtnD,GACjB,OAAO2+P,EAAa,OAAQ,EAAG3+P,EAAGA,KAAOi5P,EAAM+D,OAEjD52Q,KAAM,SAAUvB,EAAOmpB,EAAWC,GAChC,OAAO0wP,EAAa,OAAQ95Q,GAAS,EAAGmpB,EAAWC,IAErD1hC,KAAM,SAAUsY,EAAOmpB,EAAWC,GAChC,OAAO0wP,EAAa,OAAQ95Q,GAAS,EAAGmpB,EAAWC,IAErDqyP,UAAW,SAAUz7Q,EAAOmpB,EAAWC,GACrC,OAAO0wP,EAAa,OAAQ95Q,GAAS,EAAGmpB,EAAWC,EAAS,OAE9DsyP,UAAW,SAAU17Q,EAAOmpB,EAAWC,GACrC,OAAO0wP,EAAa,OAAQ95Q,GAAS,EAAGmpB,EAAWC,EAAS,SAIlEgrP,EAAMr7Q,WAAa,SAAU/E,EAAIylR,GAC/B,IAAI/tR,EAAI0oR,EAAMoF,SAASC,GACrBx1Q,EACF,GAAIjQ,EAAI,CACN2nR,IAEF,SAASA,IACP,IAAIlxR,EAAMD,KAAKC,MACb8W,EAAO7V,EAAE6V,KAAK,EAAG9W,GACnB,IAAK8W,EAAK,GAAI,CACZ0C,EAAIrlB,UACJ,OAEF,IAAI8nC,EAAOnlB,EAAK,GAAGvV,UAAYvB,EAC/B,GAAIi8B,EAAO,IAAK,CACdA,EAAOnlB,EAAK,GAAKA,EAAK,GAAGvV,UAAYvB,EAAM,IAE7C,GAAIi8B,EAAO,WAAY,CACrBziB,EAAIlL,WAAW/E,EAAI0yB,OACd,CACLziB,EAAIlL,WAAW4iR,EAAiB,aAGpC,MAAO,CACLC,OAAQ,WACN,OAAQ33Q,GAEVw2B,MAAO,WACL/2B,aAAaO,MAInBmwQ,EAAM5yN,YAAc,SAAUxtD,EAAIylR,GAChC,IAAKzlR,EAAI,CACP,OAEF,IAAIiQ,EAAImwQ,EAAMr7Q,WAAW4iR,EAAiBlC,GACxCt0P,EAAOlhB,EAAE23Q,SACX,SAASD,IACP,IAAKx2P,EAAM,CACTnxB,IACAiQ,EAAImwQ,EAAMr7Q,WAAW4iR,EAAiBlC,IAG1C,MAAO,CACLmC,OAAQ,WACN,OAAO33Q,EAAE23Q,UAEXnhP,MAAO,WACLtV,EAAO,KACPlhB,EAAEw2B,WAIR25O,EAAM57P,KAAO,GACb47P,EAAM57P,KAAKqjQ,SAAW,SAAUC,GAC9B1H,EAAM57P,KAAKujQ,MAAQD,EAAe,SAAUz/P,EAAGlC,EAAGU,EAAG8B,EAAG53B,EAAG2G,GACzD,OAAO,IAAIlB,KAAK6xB,EAAGlC,EAAGU,EAAG8B,EAAG53B,EAAG2G,IAC7B,SAAU2wB,EAAGlC,EAAGU,EAAG8B,EAAG53B,EAAG2G,GAC3B,OAAO,IAAIlB,KAAKA,KAAK24B,IAAI9G,EAAGlC,EAAGU,EAAG8B,EAAG53B,EAAG2G,KAE1C,IAAIgC,EAAMouR,EAAe,MAAQ,SAC/B3gQ,EAAI3wB,KAAKX,UACXuqR,EAAM57P,KAAKiM,QAAUtJ,EAAEztB,EAAM,YAC7B0mR,EAAM57P,KAAKtvB,SAAWiyB,EAAEztB,EAAM,SAC9B0mR,EAAM57P,KAAKrvB,QAAUgyB,EAAEztB,EAAM,QAC7B0mR,EAAM57P,KAAK4C,OAASD,EAAEztB,EAAM,OAC5B0mR,EAAM57P,KAAK29P,QAAUh7P,EAAEztB,EAAM,SAC7B0mR,EAAM57P,KAAK+9P,OAASp7P,EAAEztB,EAAM,WAC5B0mR,EAAM57P,KAAKu+P,OAAS57P,EAAEztB,EAAM,WAC5B0mR,EAAM57P,KAAK89P,OAASwF,GAEtB1H,EAAM57P,KAAK2K,IAAM,WACfixP,EAAM57P,KAAKqjQ,SAAS,QAEtBzH,EAAM57P,KAAKwjQ,UAAY,WACrB5H,EAAM57P,KAAKqjQ,SAAS,OAEtBzH,EAAM57P,KAAK2K,MACXixP,EAAMwC,IAAM,IACZxC,EAAMuC,IAAMvC,EAAMwC,IAAM,GACxBxC,EAAM6H,KAAO7H,EAAMuC,IAAM,GACzBvC,EAAM4B,IAAM5B,EAAM6H,KAAO,GACzB7H,EAAMqD,KAAOrD,EAAM4B,IAAM,EACzB5B,EAAMa,cAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IACnEb,EAAM+D,MAAQ,EACd/D,EAAM57P,KAAKjX,KAAO,SAAU8a,EAAGlC,EAAGU,EAAG8B,EAAG53B,EAAG2G,GACzC,OAAO0oR,EAAM57P,KAAKujQ,MAAM1/P,EAAGlC,IAAMv7B,UAAYu7B,EAAI,EAAI,EAAGU,IAAMj8B,UAAYi8B,EAAI,EAAG8B,GAAK,EAAG53B,GAAK,EAAG2G,GAAK,IAExG0oR,EAAM57P,KAAK48P,aAAe,SAAUj6P,EAAGxzB,EAAK4wR,EAAY2D,GACtD,IAAIzH,EAAM8D,EAAW5wR,IAAIwzB,GACvB9qB,EAAMkoR,EAAW/D,OAAOr5P,GAAG,GAC7B,OAAQxzB,GAAO0I,IAAQokR,GAAO9sR,EAAM0I,EAAM,IAAI7F,KAAK0xR,EAAOx8Q,IAAIyb,GAAGnvB,UAAYooR,EAAMwC,KAAOsF,EAAO13Q,MAAM2W,IAEzGi5P,EAAM57P,KAAK9wB,KAAO,SAAU20B,EAAGlC,EAAGU,EAAG8B,EAAG53B,EAAG2G,GACzC,IAAI2T,EAAMxkB,UAAUC,OACpBq/B,EAAI9a,EAAM,EAAI,GAAK8a,EAAI,EACvBU,EAAIxb,EAAM,EAAI+0Q,EAAMv5P,EAAE25P,OAAOJ,EAAM57P,KAAKjX,KAAK8a,EAAGlC,EAAI,IAAI,GAAKU,EAC7D8B,EAAItd,EAAM,EAAI,GAAKsd,EACnB53B,EAAIsa,EAAM,EAAI,GAAKta,EACnB2G,EAAI2T,EAAM,EAAI,GAAK3T,EACnB,OAAO0oR,EAAM57P,KAAKujQ,MAAM1/P,EAAGlC,EAAGU,EAAG8B,EAAG53B,EAAG2G,IAEzC0oR,EAAM57P,KAAK88P,aAAe,SAAUn6P,EAAGxzB,EAAK4wR,EAAY2D,GACtD,IAAIzH,EAAM8D,EAAW5wR,IAAIwzB,GACzB,OAAOxzB,GAAO8sR,IAAQ9sR,EAAMu0R,EAAO13Q,MAAM03Q,EAAOx0R,KAAKyzB,EAAG+gQ,EAAOv0R,IAAIwzB,GAAK,IAAM+gQ,EAAO13Q,MAAM2W,IAE7Fi5P,EAAMpsR,MAAQ,GACdosR,EAAMpsR,MAAMm0R,KAAO,SAAUC,EAAMC,GACjC,IAAIC,EAAQ,CACVC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,GAEP,IAAIC,EAAe,CACjBC,cAAe,gBACfC,UAAW,YACXC,YAAa,YACbC,WAAY,YACZC,UAAW,YACXC,SAAU,YACVC,UAAW,aAEb,IAAIC,EAAS,CACXxyR,EAAG,CAAC,EAAG,EAAG,IACV3G,EAAG,CAAC,EAAG,EAAG,IACV43B,EAAG,CAAC,EAAG,EAAG,IACV9B,EAAG,CAAC,EAAG,EAAG,IACVV,EAAG,CAAC,EAAG,EAAG,IACVkC,EAAG,CAAC,EAAG,KAAM,MACblB,EAAG,CAAC,EAAG,EAAG,EAAG,IAEf,SAAS9Z,EAAS9lB,EAAOuvC,EAAQz6B,GAC/B,OAAOH,MAAM3U,GAAS+gS,EAAM/gS,IAAU,KAAO6U,KAAKuU,KAAKppB,GAASuvC,GAAU,GAAIz6B,GAAO,MAEvF,SAAS8tR,EAAc1E,GACrB,IAAIluR,EAAQ,GACVgH,EACF,IAAKA,KAASknR,EAAO,CACnB,GAAIlnR,IAAU,MAAQA,IAAU,IAAK,CACnChH,EAAMgH,GAASknR,EAAMlnR,GAAOtE,MAAM,IAGtC,OAAO1C,EAET,SAASwP,EAAI0+Q,EAAOh5R,EAAMkkB,EAAKtU,EAAKqmR,GAClC,IAAI97R,EAAI+pB,EACR,IAAK80Q,EAAMh5R,GAAO,CAChBg5R,EAAMh5R,GAAQ,GAEhB,MAAO7F,GAAKyV,EAAK,CACf,GAAIopR,EAAMh5R,GAAMgB,QAAQ7G,GAAK,EAAG,CAC9B6+R,EAAMh5R,GAAMjG,KAAKI,GAEnBA,GAAK87R,GAAO,EAEd+C,EAAMh5R,GAAMwT,MAAK,SAAUpS,EAAGye,GAC5B,OAAOze,EAAIye,KAGf,SAAS89Q,EAAQ1E,EAAW2E,EAAU9iS,EAAO+iS,GAC3C,GAAID,EAASljQ,IAAMkjQ,EAAS7I,IAAM6I,EAAS7I,IAAM6I,EAAS7I,GAAG/zR,QAAQ68R,GAAQ,EAAG,CAC9E5E,EAAUl/R,KAAK2jS,EAAcE,IAC7BA,EAAW3E,EAAUA,EAAU5+R,OAAS,GAE1CigB,EAAIsjR,EAAU,IAAK9iS,EAAOA,GAC1Bwf,EAAIsjR,EAAU,KAAMC,EAAMA,GAE5B,SAASC,EAAW7yR,EAAG2yR,EAAU9iS,GAC/B,IAAIijS,EAAU,GACZC,EAAU,GACZ,GAAIljS,IAAU,EAAG,CACfwf,EAAIsjR,EAAU,IAAK,EAAG,GACtBtjR,EAAIsjR,EAAU,IAAK/B,EAAMc,IAAKd,EAAMkB,KACpCziR,EAAIyjR,EAAS,IAAK,EAAG,GACrBzjR,EAAIyjR,EAAS,IAAKlC,EAAMe,IAAKf,EAAMkB,KACnCziR,EAAI0jR,EAAS,IAAK,EAAG,GACrB1jR,EAAI0jR,EAAS,IAAKnC,EAAMe,IAAKf,EAAMkB,SAC9B,CACLziR,EAAIsjR,EAAU,IAAK9iS,EAAQ,EAAGA,EAAQ,GACtCwf,EAAIsjR,EAAU,IAAK/B,EAAMc,IAAKd,EAAMkB,KACpCziR,EAAIyjR,EAAS,IAAKjjS,EAAQ,EAAGA,EAAQ,GACrCwf,EAAIyjR,EAAS,IAAKlC,EAAMc,IAAKd,EAAMiB,KACnCxiR,EAAI0jR,EAAS,IAAKljS,EAAQ,EAAGA,EAAQ,GACrCwf,EAAI0jR,EAAS,IAAKnC,EAAMe,IAAKf,EAAMkB,KAErC9xR,EAAEkuR,WAAWp/R,KAAKgkS,GAClB9yR,EAAEkuR,WAAWp/R,KAAKikS,GAEpB,SAASC,EAAS/wR,EAAM0wR,EAAU59R,EAAMkkB,EAAKtU,EAAKy6B,GAChD,IAAI6zP,EAAWhxR,EAAKtM,MAAM,KACxBq1R,GAAOiI,EAAS,GAChB5wG,EAAQ4wG,EAAS,GACnB,GAAI5wG,IAAU,KAAOA,IAAU,IAAK,CAClC,IAAI6wG,EAAa7wG,EAAM1sL,MAAM,KAC7BsjB,EAAMtD,EAASu9Q,EAAW,GAAI9zP,EAAQz6B,GACtCA,EAAMgR,EAASu9Q,EAAW,GAAI9zP,EAAQz6B,IAAQA,EAEhD0K,EAAIsjR,EAAU59R,EAAMkkB,EAAKtU,EAAKqmR,GAEhC,SAAS1uR,EAAM2F,EAAMjC,EAAGjL,EAAMkkB,EAAKtU,EAAKy6B,GACtC,IAAIvvC,EACF8F,EACAq4R,EAAYhuR,EAAEguR,UACd2E,EAAW3E,EAAUA,EAAU5+R,OAAS,GAC1C,GAAI6S,IAAS,IAAK,CAChBA,EAAOgX,EAAM,EAEf,IAAKppB,EAAQ8lB,EAAS1T,EAAMm9B,EAAQz6B,MAAU,KAAM,CAClD0K,EAAIsjR,EAAU59R,EAAMlF,EAAOA,QACtB,IAAKA,EAAQ8lB,EAAS1T,EAAKnH,QAAQ,IAAK,IAAKskC,EAAQz6B,MAAU,KAAM,CAC1EkuR,EAAW7yR,EAAG2yR,EAAU9iS,QACnB,IAAKA,EAAQ8lB,EAAS1T,EAAKnH,QAAQ,IAAK,IAAKskC,EAAQz6B,MAAU,KAAM,CAC1E+tR,EAAQ1E,EAAW2E,EAAU9iS,EAAOopB,EAAM,QACrC,IAAKtjB,EAAQsM,EAAKtM,MAAM,MAAMvG,SAAW,EAAG,CACjDS,EAAQ8lB,EAAShgB,EAAM,GAAIypC,EAAQz6B,GACnC+tR,EAAQ1E,EAAW2E,EAAU9iS,EAAO8lB,EAAShgB,EAAM,SAC9C,CACLq9R,EAAS/wR,EAAM0wR,EAAU59R,EAAMkkB,EAAKtU,EAAKy6B,IAG7C,SAAS+zP,EAAOlxR,GACd,OAAOA,EAAKlM,QAAQ,MAAQ,GAAKkM,EAAKlM,QAAQ,KAAO,EAEvD,SAASq9R,EAAWj9R,EAAGye,GACrB,OAAOu+Q,EAAOh9R,KAAOg9R,EAAOv+Q,GAAK,EAAIze,EAAIye,EAE3C,SAASy+Q,EAAU3C,GACjB,IAAI5C,EAAW,CACXE,UAAW,CAAC,IACZE,WAAY,IAEdoF,EAAa5C,EAAK51R,QAAQ,SAAU,KAAKnF,MAAM,KAC/CkR,EACA4R,EACA2qG,EACA7vG,EACF,IAAK1M,KAAS2rR,EAAQ,CACpB/5Q,EAAI+5Q,EAAO3rR,GACXu8G,EAAYkwK,EAAW76Q,EAAE,IACzB,GAAI2qG,GAAaA,IAAc,KAAOA,IAAc,IAAK,CACvD7vG,EAAQ6vG,EAAUztH,MAAM,KAAK4S,KAAK6qR,GAClC,IAAIlkS,EACFE,EAASmkB,EAAMnkB,OACjB,IAAKF,EAAI,EAAGA,EAAIE,EAAQF,IAAK,CAC3BoN,EAAMiX,EAAMrkB,GAAI4+R,EAAUjnR,EAAO4R,EAAE,GAAIA,EAAE,GAAIA,EAAE,MAIrD,OAAOq1Q,EAET,SAASyF,EAAY7C,GACnB,IAAIvoN,EAAWuoN,EAAK91R,cACpB,OAAOo3R,EAAa7pN,IAAaA,EAEnC,IAAI7zE,EAAIi/R,EAAY7C,GACpB,OAAO2C,EAAU1C,EAAar8R,EAAI,KAAOA,IAE3Co0R,EAAMpsR,MAAMk3R,MAAQ,WAClB,IAAIxF,EAAY,GACdE,EAAa,GACbnF,EACA0K,EAASzF,EACT0F,EACAv3R,EACAsE,EACAmsR,EACA+G,EACAC,EACA1kS,EACAwnC,EACF,SAASrnB,EAAIta,EAAMkkB,EAAKtU,GACtB5P,EAAO63R,EAAW73R,EAAO,IAAM63R,EAAW73R,EAC1C,IAAKg0R,EAAK,CACR0K,EAAO3kS,KAAK,IACZi6R,EAAM0K,EAAO,GAEf,IAAK1K,EAAIh0R,GAAO,CACdg0R,EAAIh0R,GAAQ,GAEd2+R,EAAU3K,EAAIh0R,GACd,GAAI0L,EAAO,CACTtE,EAAS,GACT,IAAKjN,EAAI+pB,EAAK/pB,GAAKyV,EAAKzV,GAAKuR,EAAO,CAClCtE,EAAOrN,KAAKI,GAEdwnC,EAAO,CACLnK,EAAGx3B,EACHN,EAAGgM,EACH7K,EAAG89R,EAAQtkS,OACXiK,EAAGsL,GAGPxI,EAASw3R,EAAW,CAAC16Q,GAAO26Q,EAAW,CAACjvR,GAAOxI,EAC/C,IAAI/M,EAAS+M,EAAO/M,OACpB,IAAKF,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EAAG,CAC9B,IAAI+M,EAAME,EAAOjN,GACjB,GAAIwkS,EAAQ39R,QAAQkG,GAAO,EAAG,CAC5By3R,EAAQ5kS,KAAKmN,IAGjBE,EAASsE,EAAQmsR,EAAW+G,EAAWC,EAAW,EAEpD,MAAO,CACL5F,UAAWA,EACXE,WAAYA,EACZzuQ,GAAI,WACFtjB,EAAShN,UAAU,aAAc0I,MAAQ1I,UAAU,GAAKA,UACxD,OAAOmB,MAETmQ,MAAO,SAAUhM,GACfgM,EAAQhM,GAAK,EACb,OAAOnE,MAET09C,MAAO,SAAUv5C,GACfm4R,EAAW,IACXzwR,EAAS,CAAC1H,GACV,OAAOnE,MAETm7D,OAAQ,SAAUh3D,GAChBm4R,EAAW,IACXzwR,EAAS,CAAC1H,GACV,OAAOnE,MAETsrC,MAAO,WACL+3P,EAAW,EACX,OAAOrjS,MAETomC,KAAM,WACJk9P,EAAW,EACX,OAAOtjS,MAETmoC,KAAM,WACJ,IAAK,IAAIvpC,EAAI,EAAGykB,EAAMxX,EAAO/M,OAAQF,EAAIykB,EAAKzkB,IAAK,CACjD,IAAIyG,EAAQwG,EAAOjN,GAAGyG,MAAM,KAC5B,GAAIA,EAAMvG,OAAS,EAAGuG,EAAM7G,KAAK,GACjCqN,EAAOjN,IAAMyG,EAAM,GAAK,OAAQA,EAAM,GAAK,KAAMA,EAAM,GAEzD0Z,EAAI,KACJ,OAAO/e,MAET+hC,OAAQ,WACNhjB,EAAI,IAAK,EAAG,IACZ,OAAO/e,MAETs9B,OAAQ,WACNve,EAAI,IAAK,EAAG,IACZ,OAAO/e,MAET+gC,KAAM,WACJhiB,EAAI,IAAK,EAAG,IACZ,OAAO/e,MAET+iL,WAAY,WACVhkK,EAAI,IAAK,EAAGukR,EAAW,EAAI,IAC3B,OAAOtjS,MAET65R,UAAW,WACT96Q,EAAI,IAAK,EAAG,GACZ,OAAO/e,MAETujS,UAAW,WACT13R,EAAS,CAAC,EAAG,GACb,OAAO7L,KAAK65R,aAEd2J,UAAW,WACT33R,EAAS,CAAC,EAAG,EAAG,EAAG,EAAG,GACtB,OAAO7L,KAAK65R,aAEdN,eAAgB,WACdx6Q,EAAI,KAAM,EAAGukR,EAAW,EAAI,GAC5B,OAAOtjS,MAET+5R,UAAW,WACTh7Q,EAAI,KAAM,EAAGukR,EAAW,EAAI,KAC5B,OAAOtjS,MAETg7R,YAAa,WACXj8Q,EAAI,KAAM,EAAGukR,EAAW,EAAI,GAC5B,OAAOtjS,MAETyiL,WAAY,WACV1jK,EAAI,KAAM,EAAGukR,EAAW,EAAI,IAC5B,OAAOtjS,MAETw+B,MAAO,WACLzf,EAAI,IAAK,EAAG,IACZ,OAAO/e,MAETgiC,KAAM,WACJjjB,EAAI,IAAK,KAAM,MACf,OAAO/e,MAETo8R,SAAU,WACR,IAAK,IAAIx9R,EAAI,EAAGykB,EAAMxX,EAAO/M,OAAQF,EAAIykB,EAAKzkB,IAAK,CACjDiN,EAAOjN,GAAKiN,EAAOjN,GAAGoR,UAExB+O,EAAI,MACJ,OAAO/e,MAETyjS,eAAgB,SAAU94R,EAAIoyR,GAC5B,IAAI2G,EAAStL,EAAMkE,SAAS3xR,GAC5B,IAAK+4R,EAAQ,MAAM,IAAIhzR,MAAM,mBAAqB/F,EAAK,oBACvD2xR,EAAW3xR,EACXkB,EAAShN,UAAU,aAAc0I,MAAQ1I,UAAU,GAAK,CAACA,UAAU,IACnE,OAAOmB,MAET2jS,aAAc,SAAUh5R,GACtB,IAAI+4R,EAAStL,EAAMztR,GACnB,IAAK+4R,EAAQ,MAAM,IAAIhzR,MAAM,sBAAwB/F,EAAK,oBAC1DoU,EAAIpU,EAAI+4R,EAAOlL,OAAO,IAAIhqR,MAAQ,GAAIk1R,EAAOlL,OAAO,IAAIhqR,MAAQ,IAChE,OAAOxO,MAET4jS,WAAY,SAAUp7Q,GACpB,OAAOxoB,KAAKupF,QAAQ/gE,EAAO4d,EAAKr9B,IAElCwgF,QAAS,SAAU/gE,EAAO9E,GACxB+0Q,EAAIryP,EAAKnK,GAAKw8P,EAAIryP,EAAKnK,GAAG/jB,OAAO,EAAGkuB,EAAK9gC,GACzC6K,EAAQi2B,EAAKjiC,EACb4a,EAAIqnB,EAAKnK,EAAGzT,EAAO9E,GACnB,OAAO1jB,MAETstH,IAAK,WACHmrK,EAAM0K,EAAOA,EAAO3kS,KAAK,IAAM,GAC/B,OAAOwB,MAET6jS,OAAQ,WACNV,EAASvF,EACTnF,EAAM,KACN,OAAOz4R,QAIbo4R,EAAMpsR,MAAMf,KAAO,SAAUrD,GAC3B,IAAIs7R,EAAQ9K,EAAMpsR,MAAMk3R,MACtBxnP,EAAM,EACNyqF,EAAQ,GACRnxG,EACF,IAAI8uQ,EAAa,CACfC,IAAK,KACL3H,SAAU,yCACVntH,KAAM,8FACN9mI,KAAM,8EACN67P,QAAS,kEACTC,UAAW,6GACXC,UAAW,gBACX/zR,MAAO,WACPutC,MAAO,WACPyd,OAAQ,YACRp5B,OAAQ,uBACRzE,OAAQ,uBACRyD,KAAM,kBACNvD,IAAK,+BACL2mQ,YAAa,kBACbtK,UAAW,yBACXE,UAAW,yBACXt3G,WAAY,6BACZu4G,YAAa,2BACbz7P,QAAS,aACT6kQ,QAAS,aACT5lQ,MAAO,eACPwD,KAAM,cACNunD,QAAS,oBACT/gE,MAAO,mCACP2qH,GAAI,YACJ7lB,IAAK,aACLu2K,OAAQ,cACRQ,KAAM,WACN/4P,MAAO,aACPlF,KAAM,UACNk+P,GAAM,QACNC,GAAI,QACJC,MAAO,YACPr1Q,GAAI,QACJW,QAAS,uBAEX,IAAIwwQ,EAAQ,CACVl1P,IAAK,EACLq5P,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLx5P,IAAK,EACLy5P,IAAK,EACL97P,IAAK,EACL+7P,IAAK,GACLC,IAAK,GACLtgQ,IAAK,GACLugQ,IAAK,EACL7gQ,IAAK,EACL8gQ,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,MAAO,EACPC,IAAK,EACLC,MAAO,EACPC,IAAK,EACLC,MAAO,EACPC,IAAK,EACLC,MAAO,EACPr9O,IAAO,GAET,SAASvgC,EAAEO,EAAO9E,EAAKzY,EAAM4B,GAC3B,MAAO,CACLi5R,SAAUt9Q,EACVu9Q,OAAQriR,EACRzY,KAAMA,EACN4B,KAAMA,GAGV,SAAS4sK,EAAKusH,GACZ,IAAIC,EAAaD,aAAoBz+R,MAAQy+R,EAAW,CAACA,GACvDE,EAAa,MACbC,EACAC,EACAr9R,EACAs9R,EACA79Q,EACAnF,EACF4iR,EAAWznS,KAAK0nS,GAChB19Q,EAAQkzB,EACR,OAAQyqP,GAASA,EAAMt5R,OAASq5R,EAAY,CAC1C7iR,GAAO,EACP+iR,EAAWjgK,EAAM3gI,UAAUgjB,GAC3B29Q,EAAQl+Q,EAAEO,EAAOA,EAAO29G,EAAM9gI,MAAM6gS,GAAY,IAChD,IAAItnS,EACFE,EAASmnS,EAAWnnS,OACtB,IAAKF,EAAI,EAAGA,EAAIE,EAAQF,IAAK,CAC3BynS,EAAYJ,EAAWrnS,GACvBmK,EAAIs9R,EAAUt+Q,KAAKq+Q,GACnB,GAAIr9R,GAAKA,EAAEmH,QAAU,GAAKnH,EAAE,GAAGjK,OAASukB,EAAK,CAC3CA,EAAMta,EAAE,GAAGjK,OACXqnS,EAAQl+Q,EAAEO,EAAOA,EAAQnF,EAAK+iR,EAAS5gS,UAAU,EAAG6d,GAAMgjR,IAG9D,GAAIF,EAAMt5R,OAASq5R,EAAY,CAC7B19Q,EAAQ29Q,EAAMJ,QAGlB,OAAOI,EAET,SAASG,EAAKC,GACZ,IAAIJ,EAAQ1sH,EAAK8sH,GACjB7qP,EAAMyqP,EAAMJ,OACZ,OAAOI,EAET,SAASK,EAAiBC,GACxB,IAAIj+Q,GAASk+Q,EAAgBD,GAC3B/iR,EAAMijR,EAAc7C,EAAWh0Q,UAAY42Q,EAAgBD,GAAaj+Q,EACxEo+Q,EAAO,GACT,IAAK,IAAIhoS,EAAI4pB,EAAO5pB,GAAK8kB,EAAK9kB,IAAK,CACjCgoS,EAAKpoS,KAAKI,GAEZ,OAAOgoS,EAET,SAASC,EAAYJ,GACnB,IAAIG,EAAOJ,EAAiBC,GAC5B,MAAOE,EAAc7C,EAAWx2K,KAAM,CACpCs5K,EAAOA,EAAKjgR,OAAO6/Q,EAAiBC,IAEtC,OAAOG,EAET,SAASE,EAAW52Q,GAClB,IAAI+8I,EAAKizH,EAAQ13Q,EAAO9E,EACxB,GAAIijR,EAAc7C,EAAWM,SAAU,CACrCl0Q,EAAEf,GAAGmxQ,EAAM2E,IAAK3E,EAAMgF,KAAKzL,iBACtB,GAAI8M,EAAc7C,EAAWvkQ,SAAU,CAC5CrP,EAAEf,GAAGmxQ,EAAMl8P,IAAKk8P,EAAM4E,IAAK5E,EAAM6E,IAAK7E,EAAM8E,IAAK9E,EAAM+E,KAAKxL,gBACvD,CACL5sH,EAAMy5H,EAAgB5C,EAAW70H,MACjC/+I,EAAE/f,MAAM88J,GACRizH,EAAS6G,EAAgB72Q,GACzB,GAAIy2Q,EAAc7C,EAAWt7Q,OAAQ,CACnCykJ,EAAMy5H,EAAgB5C,EAAW70H,MACjC/+I,EAAE0zQ,WAAW32H,GACb+5H,EAAW9G,EAAOrzR,WACb,GAAI85R,EAAc7C,EAAWv6M,SAAU,CAC5C/gE,EAAQk+Q,EAAgB5C,EAAW70H,MACnC,GAAI03H,EAAc7C,EAAWx2K,KAAM,CACjC5pG,EAAMgjR,EAAgB5C,EAAW70H,MACjC/+I,EAAEq5D,QAAQ/gE,EAAO9E,MAKzB,SAASujR,EAAW/2Q,GAClB,GAAIy2Q,EAAc7C,EAAWx4P,OAAQ,CACnCpb,EAAEob,aACG,GAAIq7P,EAAc7C,EAAW19P,MAAO,CACzClW,EAAEkW,WACG,CACLlW,EAAEf,GAAG03Q,EAAY/C,EAAW70H,OAE9B83H,EAAgB72Q,GAElB,SAASg3Q,EAAkBt/R,GACzB8zC,EAAM,EACNyqF,EAAQv+H,EACRotB,GAAS,EACT,IAAI9E,EAAIgzQ,IACR,MAAOxnP,EAAMyqF,EAAMrnI,QAAUk2B,EAAQ,EAAG,CACtC,IAAImxQ,EAAQa,EAAW,CAAClD,EAAW3zR,MAAO2zR,EAAWpmP,MAAOomP,EAAW3oO,OAAQ2oO,EAAWU,MAAOV,EAAW30Q,GAAI20Q,EAAWS,GAAIT,EAAW,MAAOA,EAAW3wJ,GAAI2wJ,EAAWx2K,IAAKw2K,EAAWD,OAAQC,EAAWO,OAC9M,OAAQ8B,EAAMt5R,MACZ,KAAKi3R,EAAW3zR,MACd22R,EAAW52Q,GACX,MACF,KAAK4zQ,EAAWpmP,MACd,GAAI+7H,EAAKqqH,EAAW37P,MAAMt7B,OAASjK,UAAW,CAC5CstB,EAAEwtB,MAAMgpP,EAAgB5C,EAAW37P,OACnCjY,EAAEiY,YACG,GAAIsxI,EAAKqqH,EAAW1H,UAAUvvR,OAASjK,UAAW,CACvDstB,EAAEwtB,MAAMgpP,EAAgB5C,EAAW1H,WACnClsQ,EAAEksQ,eACG,CACLlsQ,EAAEwtB,MAAMgpP,EAAgB5C,EAAW70H,OACnC83H,EAAgB72Q,GAElB,MACF,KAAK4zQ,EAAW3oO,OACd,GAAIs+G,EAAKqqH,EAAW37P,MAAMt7B,OAASjK,UAAW,CAC5CstB,EAAEirC,OAAOurO,EAAgB5C,EAAW37P,OACpCjY,EAAEiY,YACG,GAAIsxI,EAAKqqH,EAAW1H,UAAUvvR,OAASjK,UAAW,CACvDstB,EAAEirC,OAAOurO,EAAgB5C,EAAW1H,WACpClsQ,EAAEksQ,eACG,CACLlsQ,EAAEirC,OAAOurO,EAAgB5C,EAAW70H,OACpC83H,EAAgB72Q,GAElB,MACF,KAAK4zQ,EAAWU,MACdyC,EAAW/2Q,GACX,MACF,KAAK4zQ,EAAW30Q,GACde,EAAEf,GAAG03Q,EAAY/C,EAAWE,UAAUnK,YACtC,MACF,KAAKiK,EAAWS,GACdr0Q,EAAEf,GAAG03Q,EAAY/C,EAAWG,YAAYzlQ,QACxC,MACF,KAAKslQ,EAAW,MACd5zQ,EAAEf,GAAG03Q,EAAY/C,EAAWI,YAAYliQ,OACxC,MACF,KAAK8hQ,EAAW3wJ,GACdjjH,EAAEf,GAAGu3Q,EAAgB5C,EAAW37P,OAAOA,OACvC,MAAOw+P,EAAc7C,EAAWx2K,KAAM,CACpCp9F,EAAEf,GAAGu3Q,EAAgB5C,EAAW37P,OAAOA,OAEzC,MACF,KAAK27P,EAAWx2K,IACd,MACF,KAAKw2K,EAAWO,KACdn0Q,EAAEo9F,MACF,MACF,KAAKw2K,EAAWD,OACd3zQ,EAAE2zQ,SACF,MACF,QACE7uQ,EAAQ0mB,GAGd,MAAO,CACLgiP,UAAWxtQ,EAAEwtQ,UACbE,WAAY1tQ,EAAE0tQ,WACd5oQ,MAAOA,GAGX,SAAS+xQ,EAAgB72Q,GACvB,IAAIi3Q,EAAaH,EAAW,CAAClD,EAAW/hQ,OAAQ+hQ,EAAWxmQ,OAAQwmQ,EAAW/iQ,KAAM+iQ,EAAW/J,UAAW+J,EAAWjK,UAAWiK,EAAWK,YAAaL,EAAWtmQ,IAAKsmQ,EAAWtlQ,MAAOslQ,EAAW9hQ,KAAM8hQ,EAAW9I,YAAa8I,EAAWrhH,aAC9O,OAAQ0kH,EAAWt6R,MACjB,KAAKi3R,EAAW/hQ,OACd7R,EAAE6R,SACF,MACF,KAAK+hQ,EAAWxmQ,OACdpN,EAAEoN,SACF,MACF,KAAKwmQ,EAAW/iQ,KACd7Q,EAAE6Q,OACF,MACF,KAAK+iQ,EAAW/J,UACd7pQ,EAAE6pQ,YACF,MACF,KAAK+J,EAAWjK,UACd3pQ,EAAE2pQ,YACF,MACF,KAAKiK,EAAWK,YACdj0Q,EAAEqpQ,iBACF,MACF,KAAKuK,EAAWtmQ,IACdtN,EAAE6yJ,aACF,MACF,KAAK+gH,EAAW9I,YACd9qQ,EAAE8qQ,cACF,MACF,KAAK8I,EAAWrhH,WACdvyJ,EAAEuyJ,aACF,MACF,KAAKqhH,EAAWtlQ,MACdtO,EAAEsO,QACF,MACF,KAAKslQ,EAAW9hQ,KACd9R,EAAE8R,OACF,MACF,QACEhN,EAAQ0mB,EAEZ,OAAOyrP,EAET,SAASR,EAAcF,GACrB,IAAI/1O,EAAQ+oH,EAAKgtH,GAAW55R,OAAS45R,EACrC,GAAI/1O,EAAO,CACT41O,EAAKG,GAEP,OAAO/1O,EAET,SAASs2O,EAAWP,GAClB,IAAIx+Q,EAAIq+Q,EAAKG,GACb,GAAIx+Q,EAAEpb,KAAM,CACVob,EAAEhd,KAAOm8R,EAAcn/Q,EAAEhd,KAAMw7R,OAC1B,CACLzxQ,EAAQ0mB,EAEV,OAAOzzB,EAET,SAASy+Q,EAAgBD,GACvB,OAAOO,EAAWP,GAAWx7R,KAE/B,SAASm8R,EAAcx/R,EAAK6+R,GAC1B,IAAI3mR,EAASlY,EACb,OAAQ6+R,GACN,KAAK3C,EAAW37P,KACd,IAAItC,EAAQj+B,EAAIvC,MAAM,aACpB07B,EAAO8E,EAAM,KAAO,MAAQA,EAAM,GAAK,GAAKz8B,SAASy8B,EAAM,GAAI,IAAM,GAAKA,EAAM,GAChFld,EAAMkd,EAAM,GAAGr5B,OACjBsT,GAAUihB,EAAKjiC,SAAW,EAAI,IAAM,IAAMiiC,EAAO,IAAMpY,EACvD,MACF,KAAKm7Q,EAAW70H,KACdnvJ,EAAS1W,SAAS,OAAO2e,KAAKngB,GAAK,GAAI,IACvC,MACF,KAAKk8R,EAAWG,UAChB,KAAKH,EAAWE,QACdlkR,EAASwgR,EAAM14R,EAAIpC,UAAU,EAAG,IAChC,MACF,KAAKs+R,EAAW1H,SACdt8Q,EAAS,IAAItR,KAAK5G,EAAI0C,eACtB,MAEJ,OAAOwV,EAET,OAAOonR,EAAkBt/R,EAAIqB,gBAE/B,OAAOmvR,EAjnDK,GAonDdA,GAAM57P,KAAKwjQ,YA2BX,SAAS36R,GAAM0d,GACb,MAAMskR,EAAc,GACpB,MAAMC,EAAc,GACpB,IAAIr6M,EACJ,MAAMs6M,EAAO,YACX,IAAKt6M,EAAUA,EAAWlqE,EAASvN,OAAOy3E,YAC1C,MAAO,KAAM,CACX,GAAIo6M,EAAYvoS,OAAQ,OACfuoS,EACPA,EAAYvoS,OAAS,EAEvB,IAAKmuF,EAAU,MACf,MAAM1tF,MACJA,EAAK4pC,KACLA,GACE8jD,EAAS1nE,OACb,GAAI4jB,EAAM,CACR8jD,EAAW,KACXlqE,EAAW,KACX,MAEFukR,EAAY9oS,KAAKe,SACXA,IAGV,MAAMioS,EAAO,YACX,IAAKv6M,EAAUA,EAAWlqE,EAASvN,OAAOy3E,YAC1C,MAAO,KAAM,CACX,GAAIq6M,EAAYxoS,OAAQ,OACfwoS,EACPA,EAAYxoS,OAAS,EAEvB,IAAKmuF,EAAU,MACf,MAAM1tF,MACJA,EAAK4pC,KACLA,GACE8jD,EAAS1nE,OACb,GAAI4jB,EAAM,CACR8jD,EAAW,KACXlqE,EAAW,KACX,MAEFskR,EAAY7oS,KAAKe,SACXA,IAGV,MAAO,CAACgoS,IAAQC,KAGlB,SAAUC,GAAgBx6M,EAAUy6M,GAClC,GAAIA,EAAY,EAAG,MAAM,IAAIh3R,MAAM,wCACnCg3R,EAAYA,EAAY,EACxB,MAAMC,EAAe,GACrB,IAAK,MAAMj9O,KAAMuiC,EAAU,CACzB,GAAI06M,EAAa7oS,SAAW4oS,EAAW,OAC/BC,EACNA,EAAa7oS,OAAS,EAExB6oS,EAAanpS,KAAKksD,GAEpB,GAAIi9O,EAAa7oS,OAAS,QAAS6oS,EAGrC,SAAUvpS,GAAO6uF,EAAUzmE,GACzB,IAAI5nB,EAAI,EACR,IAAK,MAAM8rD,KAAMuiC,EAAU,CACzB,GAAIzmE,EAAKkkC,EAAI9rD,WAAY8rD,GAI7B,SAAUusL,GAAKhqJ,EAAU26M,GACvB,IAAIhpS,EAAI,EACR,IAAK,MAAM8rD,KAAMuiC,EAAU,CACzB,KAAMruF,EAAIgpS,QAAel9O,GAI7B,SAASv6C,GAAM88E,EAAUzmE,GACvB,IAAI5nB,EAAI,EACR,IAAK,MAAM8rD,KAAMuiC,EAAU,CACzB,IAAKzmE,EAAKkkC,EAAI9rD,KAAM,OAAO,MAE7B,OAAO,KAGT,SAAS+I,GAAKslF,EAAUzmE,GACtB,IAAI5nB,EAAI,EACR,IAAK,MAAM8rD,KAAMuiC,EAAU,CACzB,GAAIzmE,EAAKkkC,EAAI9rD,KAAM,OAAO,KAE5B,OAAO,MAGT,SAAUiL,GAAIojF,EAAUzmE,GACtB,IAAI5nB,EAAI,EACR,IAAK,MAAM8rD,KAAMuiC,QAAgBzmE,EAAKkkC,EAAI9rD,KAG5C,SAAS6M,GAAOwhF,EAAUzmE,EAAMqhR,GAC9B,IAAIjpS,EAAI,EACR,IAAIkpS,EAAMD,EACV,IAAK,MAAMn9O,KAAMuiC,EAAU,CACzB66M,EAAMthR,EAAKshR,EAAKp9O,EAAI9rD,KAEtB,OAAOkpS,EAGT,SAAUC,GAAW96M,GACnB,MAAM+6M,EAAO,IAAInpR,IACjB,IAAK,MAAM6rC,KAAMuiC,EAAU,CACzB,IAAK+6M,EAAK/pR,IAAIysC,GAAK,CACjBs9O,EAAKjpR,IAAI2rC,SACHA,IAKZ,SAAUu9O,GAAah7M,EAAUzmE,GAC/B,MAAMwhR,EAAO,IAAInpR,IACjB,IAAK,MAAM6rC,KAAMuiC,EAAU,CACzB,MAAMi7M,EAAW1hR,EAAKkkC,GACtB,IAAKs9O,EAAK/pR,IAAIiqR,GAAW,CACvBF,EAAKjpR,IAAImpR,SACHx9O,IAKZ,SAAUy9O,GAAUl7M,EAAUzmE,GAC5B,IAAI5nB,EAAI,EACR,IAAK,MAAM8rD,KAAMuiC,EAAU,CACzB,GAAIzmE,EAAKkkC,EAAI9rD,WAAY8rD,OAAQ,QAIrC,SAAU/jC,MAAUyhR,GAClB,IAAK,IAAIxpS,EAAI,EAAGA,EAAIwpS,EAAUtpS,OAAQF,UAAYwpS,EAAUxpS,GAG9D,SAAUypS,GAAeC,GACvB,IAAK,MAAMr7M,KAAYq7M,QAA0Br7M,EAOnD,MAAMs7M,GACJ5oS,YAAYojB,GACV/iB,KAAK+iB,SAAWngB,UAChB,IAAKmgB,EAAU,MAAM,IAAIrS,MAAM,6CAC/B1Q,KAAK+iB,SAAWA,EAElBpjB,OAAOojB,GACL/iB,KAAK+iB,SAAWngB,UAChB,OAAO,IAAI2lS,GAAqBxlR,GAElCpjB,OACE,MAAO6oS,EAAOC,GAASpjS,GAAMrF,KAAK+iB,UAClC/iB,KAAK+iB,SAAW0lR,EAChB,OAAO,IAAIF,GAAqBC,GAElC7oS,QACE,MAAO6oS,EAAOC,GAASpjS,GAAMrF,KAAK+iB,UAClC,MAAO,CAAC,IAAIwlR,GAAqBC,GAAQxoS,KAAK0oS,OAAOD,IAEvD9oS,gBAAgB+nS,GACd,OAAO1nS,KAAK0oS,OAAOjB,GAAgBznS,KAAK+iB,SAAU2kR,IAEpD/nS,OAAO6mB,GACL,OAAOxmB,KAAK0oS,OAAOtqS,GAAO4B,KAAK+iB,SAAUyD,IAE3C7mB,KAAKioS,GACH,OAAO5nS,KAAK0oS,OAAOzxD,GAAKj3O,KAAK+iB,SAAU6kR,IAEzCjoS,IAAI6mB,GACF,OAAOxmB,KAAK0oS,OAAO7+R,GAAI7J,KAAK+iB,SAAUyD,IAExC7mB,OAAO6mB,EAAMqhR,GACX,OAAOp8R,GAAOzL,KAAMwmB,EAAMqhR,GAE5BloS,SAEE,OAAOK,KAAK0oS,OAAOL,GAAeroS,KAAK+iB,WAEzCpjB,aACE,OAAOK,KAAK0oS,OAAOX,GAAW/nS,KAAK+iB,WAErCpjB,aAAa6mB,GACX,OAAOxmB,KAAK0oS,OAAOT,GAAajoS,KAAK+iB,SAAUyD,IAEjD7mB,MAAM6mB,GACJ,OAAOrW,GAAMnQ,KAAMwmB,GAErB7mB,KAAK6mB,GACH,OAAO7e,GAAK3H,KAAMwmB,GAEpB7mB,UAAU6mB,GACR,OAAOxmB,KAAK0oS,OAAOP,GAAUnoS,KAAK+iB,SAAUyD,IAE9C7mB,EAAE6V,OAAOy3E,YACP,IAAIlqE,EAAW/iB,KAAK+iB,SACpB,IAAKA,EAAU,MAAM,IAAIrS,MAAM,oEAE/B1Q,KAAK+iB,SAAWngB,gBACTmgB,EAEPA,EAAWngB,UAEbjD,UACE,OAAO4H,MAAMyd,KAAKhlB,MAEpBL,KAAK2wN,GACH,OAAO/oN,MAAMyd,KAAKhlB,MAAMiY,KAAKq4M,GAE/B3wN,QACE,OAAO,IAAIkf,IAAI7e,MAEjBL,QAEE,OAAO,IAAI6R,IAAIxR,MAKjBL,QACE,IAAK,MAAM82C,KAAWz2C,KAAM,GAE9BL,UACE,OAAO,IAAIgpS,GAAsB3oS,OAGrC,MAAM4oS,GAAkB37M,GAAY,IAAIs7M,GAAqBt7M,GAC7D,MAAM47M,GAAKD,GAEX,MAAMD,WAA8BJ,GAClC5oS,cACEua,SAASrb,WACTmB,KAAKsqO,SAAW,GAChBtqO,KAAK8oS,UAAYlmS,UAEnBmgB,aAAaA,GACX/iB,KAAK+oS,UAAYhmR,EAEnBA,eACE,OAAO/iB,KAETL,OAAOojB,GACL,OAAO,IAAIwlR,GAAqBxlR,GAElCpjB,EAAE6V,OAAOy3E,YACP,MAAMq9I,EAAWtqO,KAAKsqO,SACtB,GAAItqO,KAAK+oS,UAAW,CAClB,IAAK/oS,KAAK8oS,UAAW9oS,KAAK8oS,UAAY9oS,KAAK+oS,UAAUvzR,OAAOy3E,YAC5D,IAAIA,EAAWjtF,KAAK8oS,UACpB,IAAIE,EAAkB1+D,EAASxrO,OAE/B,GAAIkqS,EAAkB,QAAU1+D,EAChC,MAAO,KAAM,CACX,GAAIA,EAASxrO,OAASkqS,EAAiB,CAErC,IAAK,IAAIpqS,EAAIoqS,EAAiBpqS,EAAI0rO,EAASxrO,OAAQF,UAAW0rO,EAAS1rO,GACvEoqS,EAAkB1+D,EAASxrO,OAE7B,IAAKmuF,EAAU,MACf,MAAM1tF,MACJA,EAAK4pC,KACLA,GACE8jD,EAAS1nE,OACb,GAAI4jB,EAAM,CACR8jD,EAAWjtF,KAAK8oS,UAAY,KAC5B9oS,KAAK+oS,UAAY,SACZ,CACLz+D,EAAS9rO,KAAKe,GACdypS,UACMzpS,QAGL,OACE+qO,IAIb,MAAM2+D,GAAmBh8M,GAAY,IAAI07M,GAAsB17M,GAC/D,MAAMi8M,GAAKD,GAGX,MAAME,GAA0B3zR,OAAO,iBACvC,MAAM4zR,GAAqB5zR,OAAO,sBAElC,MAAM6zR,GACJ1pS,cACEK,KAAKspS,OAAS1mS,UACd5C,KAAKupS,SAAW3mS,UAChB5C,KAAKwpS,qBAAuB5mS,UAC5B5C,KAAKypS,YAAc7mS,UACnB5C,KAAK0pS,6BAA+BR,GAAGlpS,KAAK2pS,0BAE9ChqS,WAAWyyC,GACT,MAAMryC,EAAK,IAAIC,KACfoyC,GAASn0C,OAAOmZ,OAAOrX,EAAIqyC,GAC3B,OAAOryC,EAET6pS,iBACE,GAAI5pS,KAAKypS,cAAgB7mS,UAAW,OAAO5C,KAAKypS,YAChD,OAAOzpS,KAAKypS,YAAczpS,KAAK6pS,kBAEjClqS,kBACE,OAAO4H,MAAMyd,KAAKhlB,KAAK8pS,oBAAoB9rS,QAAQia,MAAK,CAAC8xR,EAAQC,IAAWD,EAASC,IAEvFF,0BACE,GAAI9pS,KAAKwpS,uBAAyB5mS,UAAW,OAAO5C,KAAKwpS,qBACzD,OAAOxpS,KAAKwpS,qBAAuBxpS,KAAKiqS,2BAE1CtqS,iBAAiBkK,EAAKqgS,GACpB,IAAIC,EAAkBtgS,EAAI6H,IAAIw4R,GAC9B,IAAKC,EAAiB,CACpBA,EAAkB,GAClBtgS,EAAIyH,IAAI44R,EAAWC,GAErB,OAAOA,EAETxqS,2BACE,IAAIyqS,EAAe,EACnB,MAAMC,EAAerqS,KAAKspS,OAAST,GAAG7oS,KAAKspS,OAAOgB,eAAeR,oBAAoBj+R,UAAU8a,SAAS2sD,QAAU,IAAIz0D,IACtH,MAAMhV,EAAMg/R,GAAG7oS,KAAKupS,SAASgB,cAAc1gS,KAAI2W,GAASA,EAAM8pR,eAAeR,sBAAqBnjR,SAASlb,QAAO,CAACq+R,GAAsBI,EAAW3pR,MAClJ,GAAI2pR,EAAYE,EAAcA,EAAeF,EAC7ClqS,KAAKwqS,iBAAiBV,EAAqBI,GAAW1rS,KAAK+hB,GAC3D,OAAOupR,IACN,IAAIt4R,KACPxR,KAAKwqS,iBAAiB3gS,EAAKugS,EAAe,GAAG5rS,KAAK,CAACwB,KAAKupS,WACxD,OAAOV,GAAGh/R,GAAKA,KAAI,EAAEoE,EAAOq8N,KACnB,CAACr8N,EAAO46R,GAAGv+D,GAAU3jN,SAASohR,aAAa3pS,QAAOoiB,IAAU6pR,EAAapsR,IAAIuC,KAAQvI,MAAK,CAACwyR,EAAQC,IAAWD,EAAO9/R,GAAK+/R,EAAO//R,QACvIggS,QAELhrS,gCACSkpS,GAAG7oS,KAAK4pS,YAAY//R,KAAIoE,GAASjO,KAAK8pS,oBAAoBp4R,IAAIzD,KAAQ0Y,UAIjF,IAAIikR,GAAW,EAEf,MAAMzlR,GAAWtf,GAAK,cAAcA,IAKpC,MAAMglS,IAEN,MAAMC,GACJnrS,cACEK,KAAK2K,GAAKigS,KACV5qS,KAAKuqS,aAAe,GACpBvqS,KAAK+qS,UAAYF,GACjB7qS,KAAKgrS,eAAiBpoS,UACtB5C,KAAKirS,YAAc9lR,GACnBnlB,KAAKsqS,eAAiB1nS,UAEtB5C,KAAKkrS,cAAgBtoS,UACrB5C,KAAKyE,KAAO,GAEd9E,WAAWyyC,GACT,MAAMryC,EAAK,IAAIC,KACfoyC,GAASn0C,OAAOmZ,OAAOrX,EAAIqyC,GAC3BryC,EAAGuqS,eAAiBjB,GAAoBx4K,IAAI,CAC1C04K,SAAUxpS,EACVupS,OAAQ6B,GAAcprS,EAAGgrS,aAG3B,MAAME,EAAclrS,EAAGkrS,YACvB,MAAMjxL,EAASj6G,EAAGirS,eAAiBx1R,OAAOy1R,EAAYxmS,MACtD,MAAM2mS,EAAqBntS,OAAOmZ,QAAO,SAAUd,GACjD,MAAM+0R,EAAgBJ,EAAY30R,GAClC+0R,EAAcx9R,UAAUmsG,GAAU,KAClC,OAAOqxL,IACN,CACD1rS,CAACwpS,IAA0BnvL,EAC3Br6G,CAACypS,IAAqBrpS,IAExB9B,OAAOoB,eAAe+rS,EAAoB51R,OAAO81R,YAAa,CAC5D/rS,MAAOgsS,KAETxrS,EAAGkrS,YAAcG,EACjB,OAAOrrS,EAETyrS,mBACE,GAAIxrS,KAAKkrS,gBAAkBtoS,UAAW,OAAO5C,KAAKkrS,cAClD,OAAOlrS,KAAKkrS,cAAgBlrS,KAAKyrS,oBAUnC9rS,oBAAoBorS,GAClB,MAAM16R,EAAcrQ,KAAKqQ,YACzB,MAAMq7R,EAAUr7R,EAAYs7R,eAAej6R,IAAIq5R,GAC/C,GAAIW,IAAY9oS,UAAW,OAAO8oS,EAClC,MAAM3lN,EAAQ6kN,KACdv6R,EAAYs7R,eAAer6R,IAAIy5R,EAAWhlN,GAC1C,OAAOA,EAETpmF,oBACE,MAAMqoE,EAAOhoE,KAAKqQ,YAClB,IAAIggI,EAAUrwI,KAAK+qS,UACnB,MAAMa,EAA0B5rS,KAAKsqS,eAAeZ,6BAA6Bj+R,QAAO,CAACq8R,EAAKtnR,KAC5F,MAAM1K,IACJA,EAAGwsR,KACHA,GACEwF,EACJ,MAAM+D,EAAWvJ,EAAOp5R,OAAOC,aAAaqX,EAAM7V,IAClD,IAAImhS,EAAa9jO,EAAK+jO,2BAA2Br6R,IAAIm6R,GACrD,IAAKC,EAAY,CACfA,EAAatrR,EAAMyqR,YAAYn1R,GAC/B0K,EAAM/b,KAAOqnS,EAAWrnS,KACxBujE,EAAK+jO,2BAA2Bz6R,IAAIu6R,EAAUC,GAEhDhE,EAAIhyR,IAAMg2R,EACVhE,EAAIxF,KAAOuJ,EACX,OAAO/D,IACN,CACDhyR,IAAKu6H,EACLiyJ,KAAMp5R,OAAOC,aAAanJ,KAAKgsS,oBAAoB37J,MAClDv6H,IACH,MAAM01R,EAAevtS,OAAOmZ,OAAOw0R,EAAyB,CAC1DjsS,CAACwpS,IAA0BnpS,KAAKgrS,eAChCrrS,CAACypS,IAAqBppS,KACtBisS,IAAKjsS,KAAKirS,YACVvC,OAAQpyR,GAAQ41R,GAAM,CAACV,EAAcl1R,IAAOA,GAAQ,cAAcA,MAClEy+F,EAAG/0G,KACHgK,SAAUhK,KAAKgK,SAASgL,KAAKhV,QAE/B/B,OAAOoB,eAAemsS,EAAch2R,OAAO81R,YAAa,CACtD/rS,MAAOgsS,KAET,OAAOC,EAET7rS,WACE,OAAOK,KAAKsqS,eAAeZ,6BAA6Bj+R,QAAO,CAACq8R,EAAKtnR,IAAU,GAAGA,EAAM/b,QAAQqjS,MAAQ9nS,KAAK+qS,UAAUtmS,OAG3HqmS,GAAWiB,2BAA6B,IAAIv6R,IAC5Cs5R,GAAWa,eAAiB,IAAIn6R,IAGhC,MAAM26R,GAAe3lR,GACZvoB,OAAO4S,eAAe2V,EAAK3Y,WAAWwC,YAAYvC,eAAes7R,IAE1E,MAAM+B,GAAgB3kR,GACbvoB,OAAO4S,eAAe2V,EAAK3Y,WAAWwC,YAAY+4R,IAG3D,MAAM5oR,GAAQ,CAAC8sK,EAAU29G,KACvB,IAAIF,EACJ,GAAIz9G,EAASxuL,OAAS,EAAG,CACvB,MAAMstS,EAAkB9+G,EAASA,EAASxuL,OAAS,GAGnD,IAAKqtS,GAAaC,IAAoBA,IAAoBvB,GAAeE,EAAYqB,EAEvF,MAAM7B,EAAe,GACrBj9G,EAAStuL,SAAQ,CAACqtS,EAAan8R,KAC7B,MAAMo8R,EAAaD,EAAYjD,IAC/B,GAAIkD,IAAe1pS,UAAW,CAC5B,MAAM2pS,EAAmBD,EAAWvB,UAEpC,GAAIwB,IAAqB1B,GAAe,CACtC,GAAIE,EAAW,CAEb,GAAIA,IAAcwB,EAAkB,CAClC,MAAMC,EAAeD,EAAiB1+R,UAAU4+R,cAAc1B,EAAUl9R,WACxE,MAAM6+R,EAAiB3B,EAAUl9R,UAAU4+R,cAAcF,EAAiB1+R,WAC1E,IAAK2+R,IAAiBE,EAAgB,MAAM,IAAIh8R,MAAM,uBACtDq6R,EAAY2B,EAAiBH,EAAmBxB,QAIlDA,EAAYwB,EAEhBhC,EAAa/rS,KAAK8tS,OACb,CACL,GAAIp8R,IAAUo9K,EAASxuL,OAAS,EAAG,MAAM,IAAI4R,MAAM,mFAIvD,MAAM47R,EAAaxB,GAAWj6K,IAAI,CAChC05K,aAAAA,EACAU,YAAaA,EACbF,UAAWA,GAAaF,KAE1B,OAAOyB,EAAWd,cAKpB,MAAMD,GAAqB,SAAUnyR,GACnC,OAAOlZ,QAAQkZ,GAAYA,EAASpZ,KAAKmpS,OAY3C,MAAMwD,GAAe,CAACvzR,EAAUoN,IACvBtmB,QAAQkZ,GAAYA,EAASoN,EAAK2iR,MAqQ3C,MAAM+C,GAAQ1rR,GAKd,MAAMosR,GAAWpsR,GAOjB,MAAMqsR,GAQJltS,WAAWyyC,GACTA,GAASn0C,OAAOmZ,OAAOpX,KAAMoyC,GA4B/BzyC,WAAWyyC,GACT,MAAMh5B,EAAW,IAAIpZ,KACrBoZ,EAASm3J,WAAWn+H,GACpB,OAAOh5B,GAOX,IAAI0zR,IACJ,SAAWA,GACTA,EAAS,eAAiB,cAC1BA,EAAS,UAAY,SACrBA,EAAS,UAAY,SACrBA,EAAS,QAAU,OACnBA,EAAS,OAAS,MAClBA,EAAS,QAAU,OACnBA,EAAS,SAAW,QACpBA,EAAS,WAAa,UACtBA,EAAS,QAAU,QATrB,CAUGA,KAAaA,GAAW,KAI3B,IAAIC,IACJ,SAAWA,GAMTA,EAAe,eAAiB,cAMhCA,EAAe,gBAAkB,eAKjCA,EAAe,sBAAwB,qBAOvCA,EAAe,oBAAsB,mBAOrCA,EAAe,uBAAyB,sBAKxCA,EAAe,qBAAuB,qBApCxC,CAqCGA,KAAmBA,GAAiB,KAIvC,IAAIC,IACJ,SAAWA,GACTA,EAAe,UAAY,SAC3BA,EAAe,iBAAmB,gBAClCA,EAAe,eAAiB,cAChCA,EAAe,cAAgB,cAJjC,CAKGA,KAAmBA,GAAiB,KAIvC,IAAIC,IACJ,SAAWA,GAITA,EAA2BA,EAA2B,WAAa,GAAK,UAIxEA,EAA2BA,EAA2B,oBAAsB,GAAK,mBAIjFA,EAA2BA,EAA2B,yBAA2B,GAAK,yBAZxF,CAaGA,KAA+BA,GAA6B,KAI/D,IAAIC,IACJ,SAAWA,GAMTA,EAAeA,EAAe,gBAAkB,GAAK,eAOrDA,EAAeA,EAAe,cAAgB,GAAK,aAMnDA,EAAeA,EAAe,cAAgB,GAAK,aAMnDA,EAAeA,EAAe,YAAc,GAAK,YAzBnD,CA0BGA,KAAmBA,GAAiB,KAIvC,IAAIC,IACJ,SAAWA,GACTA,EAAqB,WAAa,UAClCA,EAAqB,aAAe,YACpCA,EAAqB,WAAa,WAHpC,CAIGA,KAAyBA,GAAuB,KAInD,IAAIC,IACJ,SAAWA,GACTA,EAAYA,EAAY,kBAAoB,GAAK,iBACjDA,EAAYA,EAAY,gBAAkB,GAAK,eAC/CA,EAAYA,EAAY,SAAW,GAAK,SAH1C,CAIGA,KAAgBA,GAAc,KAIjC,IAAIC,IACJ,SAAWA,GAITA,EAAU,WAAa,UAIvBA,EAAU,YAAc,WACxBA,EAAU,QAAU,QATtB,CAUGA,KAAcA,GAAY,KAC7B,IAAIC,IACJ,SAAWA,GACTA,EAAuB,SAAW,QAClCA,EAAuB,OAAS,OAFlC,CAGGA,KAA2BA,GAAyB,KAMvD,MAAMC,GAAW,IAAI/+R,MAAM,QAI3B,MAAMg/R,GAAW,IAAIh/R,KAAK,QAC1B,MAAMi/R,GAAejxQ,IACnB,IAAKA,EAAM,OAAO,MAClB,MAAM2L,EAAO3L,EAAKxsB,UAClB,OAAOm4B,IAASolQ,GAASv9R,WAAam4B,IAASqlQ,GAASx9R,WAW1D,IAAI09R,IACJ,SAAWA,GACTA,EAAcA,EAAc,QAAU,GAAK,OAC3CA,EAAcA,EAAc,SAAW,GAAK,SAF9C,CAGGA,KAAkBA,GAAgB,KAKrC,IAAIC,IACJ,SAAWA,GAITA,EAAuBA,EAAuB,qBAAuB,GAAK,oBAI1EA,EAAuBA,EAAuB,qBAAuB,GAAK,oBAI1EA,EAAuBA,EAAuB,+BAAiC,GAAK,8BAIpFA,EAAuBA,EAAuB,mBAAqB,GAAK,mBAhB1E,CAiBGA,KAA2BA,GAAyB,KAIvD,MAAMC,GACJjuS,YAAYwY,GACVnY,KAAK6tS,qBAAuBL,GAC5BxtS,KAAK8tS,mBAAqBP,GAC1BvtS,KAAK+tS,8BAAgC,GACrC/tS,KAAKguS,0BAA4BlB,GAASmB,IAC1CjuS,KAAKkuS,qBAAuB,IAE5BluS,KAAKmuS,SAAW,EAAI,IAAM,GAAK,GAAK,GAAK,IACzCh2R,GAAUla,OAAOmZ,OAAOpX,KAAMmY,GAEhCxY,yBAAyBqW,EAAOm3B,EAAWC,GACzCp3B,EAAMo4R,6BAA6BjhQ,EAAWC,GAC9CptC,KAAKquS,cAAcC,qBAAqBt4R,EAAMq4R,cAAelhQ,EAAWC,GAK1EztC,6BAA6BwtC,EAAWC,GACtC,MAAMmhQ,EAAwBvuS,KAAK6tS,qBAAqB79R,UACxD,MAAMw+R,EAAsBxuS,KAAK8tS,mBAAmB99R,UACpD,GAAIu+R,IAA0Bf,GAASx9R,UAAW,CAChD,MAAMy+R,EAAathQ,EAAUn9B,UAC7B,MAAM0+R,EAAWthQ,EAAQp9B,UACzB,GAAIu+R,GAAyBE,GAAcC,GAAYF,EAAqB,OAE5E,GAAIE,GAAYH,EAAuB,CACrCnhQ,EAAU,IAAI5+B,KAAK+/R,EAAwB,QACtC,GAAIE,GAAcD,EAAqB,CAC5CrhQ,EAAY,IAAI3+B,KAAKggS,EAAsB,QACtC,GAAID,GAAyBE,GAAcA,GAAcD,EAAqB,CACnFrhQ,EAAY,IAAI3+B,KAAKggS,EAAsB,QACtC,GAAID,GAAyBG,GAAYA,GAAYF,EAAqB,CAC/EphQ,EAAU,IAAI5+B,KAAK+/R,EAAwB,OACtC,CACLvuS,KAAKouS,6BAA6BjhQ,EAAW,IAAI3+B,KAAK+/R,EAAwB,IAC9EvuS,KAAKouS,6BAA6B,IAAI5/R,KAAKggS,EAAsB,GAAIphQ,GACrE,QAGJ,GAAImhQ,IAA0Bf,GAASx9R,WAAam9B,EAAUn9B,UAAYw+R,EAAqB,CAC7FxuS,KAAK6tS,qBAAuB1gQ,EAE9B,GAAIqhQ,IAAwBjB,GAASv9R,WAAaw+R,EAAsBphQ,EAAQp9B,UAAW,CACzFhQ,KAAK8tS,mBAAqB1gQ,EAE5BptC,KAAK2uS,UAAUxhQ,EAAWC,GAE5BztC,UAAUivS,EAAoBC,GAC5B,MAAM,IAAIn+R,MAAM,mBAElB/Q,QACEK,KAAK6tS,qBAAuBL,GAC5BxtS,KAAK8tS,mBAAqBP,GAC1BvtS,KAAKquS,cAAc5vP,QAqBrB9+C,4BAA4BiN,EAAS4Z,EAAM48C,GACzC,IAAI0rO,EACJ1rO,EAAQA,GAASpjE,KACjB,MAAMmtC,EAAYvgC,EAAQugC,UAC1B,MAAMC,EAAUxgC,EAAQwgC,QACxB,MAAMqhQ,EAAathQ,GAAaA,EAAUn9B,UAC1C,MAAM0+R,EAAWthQ,GAAWA,EAAQp9B,UACpC,MAAMm+R,GAAYW,EAAoBliS,EAAQuhS,YAAc,MAAQW,SAA2B,EAAIA,EAAoB9uS,KAAKmuS,SAE5H,MAAM9/D,EAAYzhO,EAAQyhO,YAAc,MACxC,GAAIA,GAAalhM,GAAaC,EAAS,CACrC,MAAM,IAAI18B,MAAM,wFAElB,MAAM29R,EAAgBruS,KAAKquS,cAC3B,IAAIU,EAAkB1gE,EAAYlhM,EAAYC,EAC9C,IAAI4hQ,EAAa3gE,EAAYlhM,EAAYC,EACzC,MAAM6hQ,EAAaD,EAAWh/R,UAG9B,IAAK,IAAIk/R,EAAQ,EAAGA,EAAQlvS,KAAKkuS,qBAAsBgB,IAAS,CAC9D,GAAI7gE,EAAW,CACbruO,KAAKouS,6BAA6BW,EAAiB3hQ,GAAWvN,GAAW9gB,IAAIgwR,EAAiB/uS,KAAK+tS,8BAA+B/tS,KAAKguS,gCAClI,CACLhuS,KAAKouS,6BAA6BjhQ,GAAatN,GAAW9gB,IAAIgwR,GAAkB/uS,KAAK+tS,8BAA+B/tS,KAAKguS,2BAA4Be,GAEvJ,IAAIxzJ,EAAW8yJ,EAAcc,cAAcH,EAAY3gE,EAAYq/D,GAAcxtP,KAAOwtP,GAActtP,OACtG,MAAOm7F,EAAU,CACf,MAAM6zJ,EAAoB7zJ,EAASpuG,UACnC,MAAMkiQ,EAAkB9zJ,EAASnuG,QAEjC,GAAIihM,GAAaqgE,GAAYU,EAAkBp/R,WAAa0+R,IAAargE,GAAaogE,GAAcY,EAAgBr/R,WAAay+R,EAAY,CAC3I,OAAOd,GAAuB2B,kBAEhC,GAAIjhE,GAAa+gE,EAAkBp/R,UAAYi/R,GAAcd,IAAa9/D,GAAa4gE,EAAaI,EAAgBr/R,WAAam+R,EAAU,CACzI,OAAOR,GAAuB4B,gBAGhC,GAAIlhE,GAAa+gE,EAAkBp/R,UAAYhQ,KAAK8tS,mBAAmB99R,YAAcq+N,GAAaghE,EAAgBr/R,UAAYhQ,KAAK6tS,qBAAqB79R,UAAW,CACjK,MAGFg/R,EAAa3gE,EAAYghE,EAAkBD,EAE3C,MAAMI,EAAYf,GAAcW,EAAkBp/R,UAAYy+R,EAAathQ,EAAYiiQ,EACvF,MAAMK,EAAYf,GAAYW,EAAgBr/R,UAAY0+R,EAAWthQ,EAAUiiQ,EAC/E,GAAI7oR,EAAK3f,KAAKu8D,EAAOosO,EAAWC,EAAWl0J,EAASm0J,iBAAmB,MAAO,CAE5E,OAAO/B,GAAuBgC,kBAEhCp0J,EAAW8yF,EAAYggE,EAAcuB,gBAAgBr0J,GAAY8yJ,EAAcwB,gBAAgBt0J,GAEjG,GAAI8yF,GAAa2gE,EAAWh/R,YAAcw9R,GAASx9R,YAAcq+N,GAAa2gE,EAAWh/R,YAAcu9R,GAASv9R,UAAW,CACzH,OAAO29R,GAAuB2B,kBAEhCP,EAAkB1gE,EAAYruO,KAAK8tS,mBAAqB9tS,KAAK6tS,qBAE/D,OAAOF,GAAuBmC,6BAIlC,MAAMC,GAAkBl+R,GAAStK,MAAMyd,KAAK,IAAInG,IAAIhN,IAMpD,MAAMm+R,GACJrwS,YAAYwY,GACVnY,KAAK6iE,UAAY,GACjB1qD,GAAUla,OAAOmZ,OAAOpX,KAAMmY,GAC9B,IAAKnY,KAAKiwS,SAAU,MAAM,IAAIv/R,MAAM,4CAEtC/Q,gBAAgB47I,GACd,GAAIv7I,KAAK6iE,UAAUp9D,QAAQ81I,KAAc,EAAG,CAC1C,MAAMt1D,EAAOjmF,KAAK6iE,UAAU5wD,QAC5Bg0E,EAAKznF,KAAK+8I,GACV,OAAO,IAAIy0J,GAAsB,CAC/BntO,UAAWojB,EACXgqN,SAAUjwS,KAAKiwS,gBAEZ,OAAOjwS,KAEhBL,YAAY47I,GACV,OAAO,IAAIy0J,GAAsB,CAC/BntO,UAAW7iE,KAAK6iE,UAAUl8C,OAAO40H,EAAS14E,WAC1CotO,SAAUjwS,KAAKiwS,WAOnBtwS,eACE,GAAIK,KAAKkwS,WAAa,KAAM,OAAOlwS,KAAKkwS,UACxC,MAAMrtO,EAAY7iE,KAAK6iE,UAAY7iE,KAAKmwS,mBAAmBnwS,KAAK6iE,WAEhE,OAAO7iE,KAAKkwS,UAAYrtO,EAAU,GAAGqtO,UAEvCvwS,mBAAmBkjE,GACjB,MAAMk0B,EAAWg5M,GAAgBltO,GAEjCk0B,EAAS9+E,MAAK,CAACm4R,EAAWC,IAAcA,EAAUC,mBAAqBF,EAAUE,qBACjF,OAAOv5M,GAIX,MAAMw5M,GACJ5wS,YAAYwY,GACVnY,KAAKwwS,eAAiB,GACtBr4R,GAAUla,OAAOmZ,OAAOpX,KAAMmY,GAEhCxY,YAAY47I,GACV,MAAMt1D,EAAOjmF,KAAKwwS,eAAev+R,QACjCg0E,EAAKznF,KAAK,CAAC+8I,EAAS00J,SAAU10J,IAC9B,OAAO,IAAIg1J,GAA8B,CACvCC,eAAgBvqN,IAGpBtmF,uBACE,GAAIK,KAAKywS,mBAAqB,KAAM,OAAOzwS,KAAKywS,kBAChD,IAAK,IAAKC,EAAW7tO,KAAc7iE,KAAK2wS,YAAa,CACnD,IAAK9tO,EAAU,GAAGqtO,UAAW,OAAOlwS,KAAKywS,kBAAoB,MAE/D,OAAOzwS,KAAKywS,kBAAoB,KAElC9wS,sBACE,GAAIK,KAAK4wS,kBAAoB,KAAM,OAAO5wS,KAAK4wS,iBAC/C,IAAK,IAAKF,EAAW7tO,KAAc7iE,KAAK2wS,YAAa,CACnD,GAAI9tO,EAAU,GAAGqtO,UAAW,OAAOlwS,KAAK4wS,iBAAmB,KAE7D,OAAO5wS,KAAK4wS,iBAAmB,MAEjCjxS,eACEK,KAAK2wS,YACL,OAAO3wS,KAAK6wS,UAEdlxS,kBAAkBswS,GAChB,OAAOjwS,KAAK8wS,yBAAyBp/R,IAAIu+R,GAE3CtwS,yBACE,GAAIK,KAAK+wS,oBAAqB,OAAO/wS,KAAK+wS,oBAC1C,MAAM/8R,EAAM,IAAIxC,IAChB,IAAK,IAAKy+R,EAAUptO,KAAc7iE,KAAK2wS,YAAa,CAElD38R,EAAI1C,IAAI2+R,EAAUptO,EAAU,GAAGqtO,WAEjC,OAAOlwS,KAAK+wS,oBAAsB/8R,EAEpCrU,sBACE,GAAIK,KAAKgxS,iBAAkB,OAAOhxS,KAAKgxS,iBACvC,MAAMH,EAAY,GAClB,IAAK,IAAKZ,EAAUptO,KAAc7iE,KAAK2wS,YAAa,CAElD,GAAI9tO,EAAU,GAAGqtO,UAAWW,EAAUryS,KAAKyxS,GAE7C,OAAOjwS,KAAKgxS,iBAAmBH,EAEjClxS,yBACE,GAAIK,KAAKixS,oBAAqB,OAAOjxS,KAAKixS,oBAC1C,MAAMJ,EAAY,GAClB,IAAK,IAAKZ,EAAUptO,KAAc7iE,KAAK2wS,YAAa,CAElD,IAAK9tO,EAAU,GAAGqtO,UAAWW,EAAUryS,KAAKyxS,GAE9C,OAAOjwS,KAAKixS,oBAAsBJ,EAEpClxS,YACE,GAAIK,KAAKkxS,oBAAqB,OAAOlxS,KAAKkxS,oBAC1C,MAAML,EAAY7wS,KAAK6wS,UAAY,GACnC,MAAMK,EAAsB,IAAI1/R,IAChCxR,KAAKwwS,eAAexxS,SAAQ,EAAEixS,EAAU10J,MACtC,IAAIrhH,EAAOg3Q,EAAoBx/R,IAAIu+R,GACnC,IAAK/1Q,EAAM,CACT22Q,EAAUryS,KAAKyxS,GACf/1Q,EAAO,GACPg3Q,EAAoB5/R,IAAI2+R,EAAU/1Q,GAEpCA,EAAK17B,KAAKC,MAAMy7B,EAAMqhH,EAAS14E,cAEjCquO,EAAoBlyS,SAAQ,CAAC6jE,EAAWotO,KACtC,MAAM1kN,EAASwkN,GAAgBltO,GAC/B0oB,EAAOtzE,MAEP,CAACm4R,EAAWC,IAAcA,EAAUC,mBAAqBF,EAAUE,qBACnEY,EAAoB5/R,IAAI2+R,EAAU1kN,MAEpC,OAAOvrF,KAAKkxS,oBAAsBA,GAKtC,MAAM1tR,GAAe,CAACjkB,EAAOsS,EAAOs/R,EAAa,EAACtrS,EAAGye,IAAMze,EAAIye,MAC7D,IAAIgxB,EAAO,EACX,IAAIF,EAAQvjC,EAAM/S,OAClB,MAAOw2C,EAAOF,EAAO,CAEnB,MAAMg8P,GAAO97P,EAAOF,GAAS,EAAI,EACjC,MAAM7J,EAAU4lQ,EAAW5xS,EAAOsS,EAAMu/R,IACxC,GAAI7lQ,IAAY,EAAG,MAAO,CACxBmlB,MAAO,KACPxgD,MAAOkhS,QACF,GAAI7lQ,EAAU,EAAG6J,EAAQg8P,OAAS97P,EAAO87P,EAAM,EAExD,MAAO,CACL1gP,MAAO,MACPxgD,MAAOklC,IAIX,IAAIi8P,IACJ,SAAWA,GACTA,EAAcA,EAAc,SAAW,GAAK,QAC5CA,EAAcA,EAAc,QAAU,GAAK,QAF7C,CAGGA,KAAkBA,GAAgB,KAErC,MAAMC,GACJ3xS,YAAYwxS,GACVnxS,KAAKhC,KAAO,GACZgC,KAAK6L,OAAS,GACd7L,KAAKmxS,WAAaA,GAAU,EAAMtrS,EAAGye,IAAMze,EAAIye,GAEjD3kB,IAAIV,EAAKM,GACP,MAAMsF,EAAS2e,GAAavkB,EAAKe,KAAKhC,KAAMgC,KAAKmxS,YACjD,GAAItsS,EAAO6rD,MAAO,CAChB1wD,KAAK6L,OAAOhH,EAAOqL,OAAS3Q,MACvB,CACLS,KAAKhC,KAAKka,OAAOrT,EAAOqL,MAAO,EAAGjR,GAClCe,KAAK6L,OAAOqM,OAAOrT,EAAOqL,MAAO,EAAG3Q,GAEtC,OAAOsF,EAAOqL,MAGhBvQ,SAASuQ,EAAOjR,EAAKM,GACnBS,KAAKhC,KAAKka,OAAOhI,EAAO,EAAGjR,GAC3Be,KAAK6L,OAAOqM,OAAOhI,EAAO,EAAG3Q,GAE/BI,WAAWuQ,EAAO3Q,GAChBS,KAAK6L,OAAOqE,GAAS3Q,EAEvBI,IAAIV,GACF,MAAM4F,EAAS2e,GAAavkB,EAAKe,KAAKhC,KAAMgC,KAAKmxS,YACjD,OAAOtsS,EAAO6rD,MAAQ1wD,KAAK6L,OAAOhH,EAAOqL,OAAStN,UAEpDjD,WAAWuQ,GACT,OAAOA,EAAQlQ,KAAKhC,KAAKc,OAAS,CAChCG,IAAKe,KAAKhC,KAAKkS,GACf3Q,MAAOS,KAAK6L,OAAOqE,IACjBtN,UAENjD,SAASuQ,GACP,OAAOlQ,KAAKhC,KAAKkS,GAEnBvQ,WAAWuQ,GACT,OAAOlQ,KAAK6L,OAAOqE,GAErBvQ,OAAOV,GACL,MAAM4F,EAAS2e,GAAavkB,EAAKe,KAAKhC,KAAMgC,KAAKmxS,YACjD,GAAItsS,EAAO6rD,MAAO1wD,KAAKuxS,SAAS1sS,EAAOqL,OAEzCvQ,OACE,OAAOK,KAAKhC,KAAKc,OAEnBa,SAASuQ,GACPlQ,KAAKhC,KAAKka,OAAOhI,EAAO,GACxBlQ,KAAK6L,OAAOqM,OAAOhI,EAAO,GAE5BvQ,WAAWV,GACT,MAAM4F,EAAS2e,GAAavkB,EAAKe,KAAKhC,KAAMgC,KAAKmxS,YACjD,MAAO,CACLzgP,MAAO7rD,EAAO6rD,MAAQ2gP,GAAcG,MAAQH,GAAcI,KAC1DvhS,MAAOrL,EAAOqL,OAGlBvQ,IAAI6mB,GACF,MAAMxoB,EAAOgC,KAAKhC,KAClB,MAAM6N,EAAS7L,KAAK6L,OACpB,MAAMM,EAAS,GACf,IAAK,IAAIvN,EAAI,EAAGA,EAAIZ,EAAKc,OAAQF,IAAKuN,EAAO3N,KAAKgoB,EAAK3a,EAAOjN,GAAIZ,EAAKY,GAAIA,IAC3E,OAAOuN,EAETxM,gBACE,OAAOK,KAAK6J,KAAI,CAACtK,EAAON,KACf,CACLM,MAAAA,EACAN,IAAAA,MAINU,QACEK,KAAKhC,KAAKc,OAAS,EACnBkB,KAAK6L,OAAO/M,OAAS,GAIzB,MAAM4yS,GACJ/xS,YAAYwY,GACVnY,KAAK2xS,OAAS,IAAIL,IAAU,CAACzrS,EAAGye,IAAMze,EAAEmK,UAAYsU,EAAEtU,YACtDhQ,KAAK4xS,gBAAkBrE,GACvBvtS,KAAK6xS,iBAAmBrE,GACxBvvS,OAAOmZ,OAAOpX,KAAMmY,GACpB,GAAInY,KAAK8xS,gBAAkBlvS,YAAc5C,KAAK+xS,mBAAoB,MAAM,IAAIrhS,MAAM,0DAClF1Q,KAAK2xS,OAAOrgS,IAAItR,KAAK4xS,gBAAiB5xS,KAAK8xS,eAE7CnyS,OACE,OAAOK,KAAK2xS,OAAOpgS,OAErB5R,QAAQ68B,GACN,OAAOx8B,KAAK2xS,OAAOK,WAAWx1Q,GAEhC78B,UAAUuQ,GACR,OAAOlQ,KAAK2xS,OAAOM,SAAS/hS,GAE9BvQ,WAAWuQ,GACT,OAAOlQ,KAAK2xS,OAAOO,WAAWhiS,GAEhCvQ,cAAc68B,EAAM21Q,EAAgBzE,GAAcxtP,MAEhD,IAAIwQ,MACFA,EAAKxgD,MACLA,GACElQ,KAAKyF,QAAQ+2B,GACjB,IAAI41Q,EACJ,GAAID,IAAkBzE,GAAcxtP,KAAM,CACxCkyP,EAAiB1hP,IAAU2gP,GAAcG,MAAQthS,EAAQA,EAAQ,MAC5D,CACLkiS,EAAiBliS,EAAQ,EAE3B,OAAOlQ,KAAKqyS,8BAA8BD,GAE5CzyS,gBAAgB47I,GACd,GAAIA,EAAS62J,iBAAmB,EAAG,OAAO,KAC1C,OAAOpyS,KAAKqyS,8BAA8B92J,EAAS62J,eAAiB,GAEtEzyS,gBAAgB47I,GACd,GAAIA,EAAS62J,gBAAkBpyS,KAAKuR,OAAS,EAAG,OAAO,KACvD,OAAOvR,KAAKqyS,8BAA8B92J,EAAS62J,eAAiB,GAEtEzyS,8BAA8ByyS,GAC5B,MAAO,CACLA,eAAgBA,EAChBjlQ,UAAWntC,KAAKsyS,UAAUF,GAC1BhlQ,QAASglQ,EAAiB,EAAIpyS,KAAKuR,OAASvR,KAAKsyS,UAAUF,EAAiB,GAAKpyS,KAAK6xS,iBACtFnC,cAAe1vS,KAAKuyS,WAAWH,IAGnCzyS,YAAYwtC,EAAWC,EAASolQ,GAC9B,MAAMb,EAAS3xS,KAAK2xS,OAEpB,MAAMjhP,MACJA,EAAKxgD,MACLA,GACEyhS,EAAOK,WAAW7kQ,GACtB,IAAIslQ,EACJ,IAAIC,EACJ,GAAIhiP,GAAS2gP,GAAcG,MAAO,CAChC,MAAMmB,EAAYH,EAAeE,EAAmBf,EAAOO,WAAWhiS,IACtEyhS,EAAOiB,WAAW1iS,EAAOyiS,GACzBF,EAAWviS,EAAQ,MACd,CACL,MAAMyiS,EAAYH,EAAeE,EAAmBf,EAAOO,WAAWhiS,EAAQ,IAC9EyhS,EAAO7+N,SAAS5iE,EAAOi9B,EAAWwlQ,GAClCF,EAAWviS,EAAQ,EAErB,MAAOuiS,EAAWd,EAAOpgS,OAAQ,CAC/B,MAAMshS,EAAUlB,EAAOM,SAASQ,GAChC,GAAII,EAAQ7iS,WAAao9B,EAAQp9B,UAAW,MAC5C,MAAM2iS,EAAYH,EAAeE,EAAmBf,EAAOO,WAAWO,IACtEd,EAAOiB,WAAWH,EAAUE,GAC5BF,IAEF,GAAIA,IAAad,EAAOpgS,OAAQ,CAC9BogS,EAAO7+N,SAAS6+N,EAAOpgS,OAAQ67B,EAASptC,KAAK8xS,mBACxC,CACL,MAAMe,EAAUlB,EAAOM,SAASQ,GAChC,GAAII,EAAQ7iS,YAAco9B,EAAQp9B,eAAkB,CAClD2hS,EAAO7+N,SAAS2/N,EAAUrlQ,EAASslQ,KAIzC/yS,qBAAqB0uS,EAAelhQ,EAAWC,GAC7C,IAAImuG,EAAW8yJ,EAAcc,cAAchiQ,GAC3C,MAAOouG,EAAU,CACfv7I,KAAK8yS,YAAYv3J,EAASpuG,UAAWouG,EAASnuG,SAAS2lQ,GAAoB/yS,KAAK+xS,mBAAmBgB,EAAkBx3J,EAASm0J,iBAC9H,GAAIn0J,EAASnuG,QAAQp9B,UAAYo9B,EAAQp9B,UAAW,MACpDurI,EAAW8yJ,EAAcuB,gBAAgBr0J,IAG7C57I,aACE,OAAOK,KAAK2xS,OAAO9nS,KAAI,CAACi/I,EAAOtsH,KACtB,CACLssH,MAAAA,EACAtsH,KAAAA,MAIN78B,QACEK,KAAK2xS,OAAOlzP,QACZz+C,KAAK2xS,OAAOrgS,IAAItR,KAAK4xS,gBAAiB5xS,KAAK8xS,gBAO/C,MAAMkB,WAA8BpF,GAClCjuS,YAAYwY,GACV+B,MAAM/B,GACNnY,KAAKizS,eAAiBlD,GAAgB/vS,KAAKizS,gBAC3CjzS,KAAKquS,cAAgB,IAAIqD,GAAc,CACrCI,cAAe,IAAIvB,GACnBwB,mBAAoB,CAAC3B,EAAWC,IACvBD,EAAU8C,YAAY7C,KAInC1wS,UAAUwtC,EAAWC,GACnBptC,KAAKizS,eAAej0S,SAAQm0S,IAC1BA,EAAcxE,UAAUxhQ,EAAWC,GACnCptC,KAAKozS,yBAAyBD,EAAehmQ,EAAWC,OA4B9D,MAAMimQ,WAA4BzF,GAChCjuS,YAAYwY,GACV+B,MAAM/B,GACNnY,KAAKszS,sBAAwB,MAC7B,IAAKtzS,KAAKuzS,wBAAyB,MAAM,IAAI7iS,MAAM,2DACnD1Q,KAAKquS,cAAgB,IAAIqD,GAAc,CACrCI,cAAe,IAAI9B,GAAsB,CACvCntO,UAAW,CAAC7iE,KAAKuzS,yBACjBtD,SAAUjwS,KAAKiwS,WAEjB8B,mBAAoB,CAAC3B,EAAWC,IACvBD,EAAU8C,YAAY7C,KAInC1wS,UAAUwtC,EAAWC,GACnB,IAAKptC,KAAKszS,sBAAuB,CAC/BtzS,KAAKwzS,uBACLxzS,KAAKszS,sBAAwB,KAE/B,GAAItzS,KAAKyzS,YAAazzS,KAAKozS,yBAAyBpzS,KAAKyzS,YAAatmQ,EAAWC,GACjF,MAAMqhQ,EAAathQ,EAAUn9B,UAC7B,MAAM0+R,EAAWthQ,EAAQp9B,UACzB,GAAIy+R,EAAaC,EAAU,MAAM,IAAIh+R,MAAM,+BAC3C1Q,KAAK0zS,0BAAyBn4J,IAC5B,MAAMo4J,EAAgBp4J,EAASq4J,uBAC/B,MAAMC,EAAct4J,EAASu4J,qBAC7B,IAAIC,EAAoBJ,EAAcjoS,KAAK,EAAGyhC,GAC9C,IAAI6mQ,EACJ,GAAIH,IAAgB,MAAO,CACzB,MAAMI,EAAcN,EAAcpuR,KAAK,EAAG6nB,GAC1C,GAAI6mQ,IAAgB7b,GAAM+D,MAAO,CAC/B6X,EAAkBn0Q,GAAWkqD,kBAAkBkqN,EAAa,UACvD,CACLD,EAAkB5b,GAAM+D,WAErB,CACL6X,EAAkBH,EAAYtuR,KAAK,EAAG6nB,GAIxC,GAAI2mQ,IAAsB3b,GAAM+D,OAAS4X,EAAkB/jS,YAAcy+R,EAAY,CACnF,MAAMyF,EAAqBP,EAAcjoS,KAAK,EAAGyhC,GACjD,GAAI+mQ,IAAuB9b,GAAM+D,OAAS+X,EAAmBp1S,SAAW,EAAGi1S,EAAoBG,EAAmB,GAEpH,GAAIF,IAAoB5b,GAAM+D,OAAS6X,EAAgBhkS,YAAc0+R,EAAU,CAC7E,MAAMyF,EAAmBN,EAAYtuR,KAAK,EAAG6nB,GAC7C,GAAI+mQ,IAAqB/b,GAAM+D,OAASgY,EAAiBr1S,SAAW,EAAGk1S,EAAkBG,EAAiB,GAE5G,MAAMC,EAAaT,EAAcpuR,KAAKypF,SAAU+kM,IAAsB3b,GAAM+D,MAAQ4X,EAAoB5mQ,EAAW6mQ,IAAoB5b,GAAM+D,MAAQ,IAAI3tR,KAAKwlS,EAAgBhkS,UAAY,GAAKo9B,GAE/L,GAAIgnQ,IAAehc,GAAM+D,MAAO,OAEhC,MAAMkY,EAAWR,IAAgB,MAAQO,EAAWvqS,KAAI2yB,GAAQqD,GAAWkqD,kBAAkBvtD,EAAM,QAASq3Q,EAAYtuR,KAAKypF,SAAU,IAAIxgG,KAAK4lS,EAAW,GAAGpkS,UAAY,GAAIgkS,IAAoB5b,GAAM+D,MAAQ6X,EAAkB5mQ,GAClO,GAAIinQ,IAAajc,GAAM+D,MAAO,OAC9B,GAAIkY,EAASv1S,OAASs1S,EAAWt1S,OAAQ,CAEvCu1S,EAASv1S,OAASs1S,EAAWt1S,YACxB,GAAIu1S,EAASv1S,OAASs1S,EAAWt1S,OAAQ,CAE9Cs1S,EAAWt1S,OAASu1S,EAASv1S,OAI/Bs1S,EAAWp1S,SAAQ,CAACmuC,EAAWj9B,KAC7B,MAAMokS,EAAennQ,EACrB,MAAMonQ,EAAaF,EAASnkS,GAG5BlQ,KAAKquS,cAAcyE,YAAYwB,EAAcC,GAAYC,GAAyBA,EAAsBC,gBAAgBl5J,WAI9H57I,QACEK,KAAKszS,sBAAwB,MAC7Bp5R,MAAMukC,QAER9+C,uBACEK,KAAK00S,uBAAsBn5J,IACzBv7I,KAAKquS,cAAcyE,YAAYv3J,EAASpuG,UAAWouG,EAASnuG,SAASonQ,GAAyBA,EAAsBC,gBAAgBl5J,QAGxI57I,sBAAsB6mB,GACpBxmB,KAAK20S,cAAc31S,SAAQu8I,IACzB,GAAIA,EAASq5J,WAAYpuR,EAAK+0H,MAGlC57I,yBAAyB6mB,GACvBxmB,KAAK20S,cAAc31S,SAAQu8I,IACzB,GAAIA,EAASs5J,cAAeruR,EAAK+0H,OAWvC,MAAMu5J,WAA0C5I,GAAM,IAAI51R,IAExD,MAAMw+R,UAA0Cx+R,EAC9C3W,oBACE,OAAOK,KAAKurG,QAAQ6wJ,cAEtB7wJ,YAAYA,GACVvrG,KAAK+0S,SAAWxpM,EAElBA,cACE,OAAOvrG,KAAK+0S,SAEdp1S,mBACE,MAAM,IAAI+Q,MAAM,gBAKlB/Q,WAAW4rG,GACT,OAAOvrG,KAAKurG,QAAUA,EAKxB5rG,aACE,GAAIK,KAAKurG,QAAS,OAAOvrG,KAAKurG,QAC9B,OAAOvrG,KAAKg1S,WAAWh1S,KAAKi1S,oBAK9Bt1S,qBACE,MAAM4rG,EAAUvrG,KAAKk1S,aACrB,OAAO3pM,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ4pM,gBAKnEx1S,qBACE,MAAM4rG,EAAUvrG,KAAKk1S,aACrB,OAAO3pM,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ6pM,gBAKnEz1S,gBACE,MAAM4rG,EAAUvrG,KAAKk1S,aACrB,OAAO3pM,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ8pM,WAKnE11S,mBACE,MAAM4rG,EAAUvrG,KAAKk1S,aACrB,OAAO3pM,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ+pM,cAKnE31S,0BACE,MAAM4rG,EAAUvrG,KAAKk1S,aACrB,OAAO3pM,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQgqM,sBAGrE,OAAOT,OAST,MAAMU,WAAwCtJ,GAAM,CAAC4I,GAAmCluM,KAAQtwF,IAC9F,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM2nS,UAAwCl/R,EAC5C3W,cACEua,SAASrb,WACTmB,KAAK01S,cAAgB,MAIvB/1S,UAAUwY,EAAS,IACjBA,EAAOwzF,YAAc,CACnB5sF,IAAK,KACLjd,OAAQ,KACR+9F,UAAW,KACXza,OAAQ,KACR0zG,QAAS,KACTtuL,QAAS,KACT8oF,KAAM,KACNqa,OAAQ,MAEV,OAAO8nM,EAAWj6R,UAAU3U,KAAK7G,KAAMmY,GAIzCxY,QAAQytB,EAAWkE,GACjB,MAAMvxB,EAAKC,MACT2rG,YACEA,EAAWJ,QACXA,GACExrG,EACJ41S,EAAahqM,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYv+E,GACnFwoR,EAAcD,IAAeA,IAAe,MAAQA,EAAWrkR,EAAM8gC,SACvE,IAAKwjP,EAAa,CAEhB,OAAOH,EAAWloR,QAAQ1mB,KAAK9G,EAAIqtB,EAAWkE,GAGhDmkR,EAAWloR,QAAQ1mB,KAAK9G,EAAI,GAAGqtB,aAAsB1uB,EAAe,GAAI4yB,IAExE,IAAKi6E,GAAWA,EAAQsqM,kBAAoBtqM,EAAQuqM,cAAe,CAEjEL,EAAWloR,QAAQ1mB,KAAK9G,EAAIqtB,EAAWkE,QAClC,IAAKvxB,EAAG4xB,iBAAmB45E,EAAS,CAIzC,IAAKA,EAAQwqM,kBAAmB,CAC9BxqM,EAAQyqM,sBAAwB,GAEhCzqM,EAAQwqM,kBAAoBxqM,EAAQp8E,GAAG,CACrCxvB,YAEEK,KAAKg2S,sBAAsBh3S,SAAQ,EAAEy2S,EAAYryO,EAAOh2C,EAAWkE,MACjEmkR,EAAWloR,QAAQ1mB,KAAKu8D,EAAOh2C,EAAWkE,MAE5Ci6E,EAAQyqM,sBAAwB,KAChCzqM,EAAQwqM,oBACRxqM,EAAQwqM,kBAAoB,MAE9BnpR,KAAM,OAGV2+E,EAAQyqM,sBAAsBx3S,KAAK,CAACi3S,EAAY11S,EAAIqtB,EAAWkE,IAGjE,OAAO,KAGT3xB,mBAEE,OAAOK,KAAKurG,QAEd5rG,aAAau6B,GACX,IAAI+7Q,EAGJ,GAAIj2S,KAAKurG,QAAS,CAChBvrG,KAAKurG,QAAQ2qM,sBAAwB,KAEvCl2S,KAAK01S,cAAgB,KACrBD,EAAW1rM,aAAaljG,KAAK7G,KAAMk6B,GACnCl6B,KAAK01S,cAAgB,OACpBO,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAc1oR,QAAQ,eAAgB,CACnHq+C,MAAO5rE,OAIXL,qBACE,GAAIK,KAAKsxF,cAAgB,GAAKtxF,KAAKurG,UAAYvrG,KAAKurG,QAAQsqM,gBAAiB,OAGrE71S,KAAKurG,QAAQ6wJ,cAErBq5C,EAAWtjN,aAAatrF,KAAK7G,MAE/BL,eAAesyE,EAAS/7C,GACtB,MAAM/pB,EAASnM,KAAK+e,IAAIkzD,EAAS/7C,SAC3Bl2B,KAAKurG,QAAQ6wJ,cACnB,OAAOjwP,EAETxM,kBAAkBuQ,EAAO+hE,EAAS/7C,GAChC,MAAM/pB,EAASnM,KAAK4yF,OAAO1iF,EAAO+hE,EAAS/7C,SACrCl2B,KAAKurG,QAAQ6wJ,cACnB,OAAOjwP,EAETxM,oBAAoBu6B,GAClBl6B,KAAKk6B,KAAOA,QACNl6B,KAAKurG,QAAQ6wJ,eAGvB,OAAOo5C,OAWT,MAAMW,WAAwCjK,GAAM,CAAC4I,GAAmCn5N,KAAQrlE,IAC9F,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMsoS,UAAwC7/R,EAC5C3W,UAAUisE,GACR,IAAIwqO,EAAgB,KAEpB,GAAIzJ,GAAa/gO,EAAO4pO,IAAkC,CACxD,MAAMjqM,EAAU3/B,EAAMspO,aACtB,GAAI3pM,IAAYvrG,KAAKk1S,aAAc,CACjCl1S,KAAKg1S,WAAWzpM,GAChB6qM,EAAgB7qM,GAGpBkqM,EAAWriO,UAAUvsE,KAAK7G,KAAM4rE,GAGhC,GAAIwqO,IAAkBA,EAAcC,qBAAsBr2S,KAAKs2S,cAEjE32S,YAAYisE,EAAO+a,EAAc,OAC/B8uN,EAAW3pO,YAAYjlE,KAAK7G,KAAM4rE,EAAO+a,GACzC,MAAM4kB,EAAUvrG,KAAKk1S,aACrB,MAAMqB,EAAwB5J,GAAa/gO,EAAO4pO,KAAoCjqM,IAAY3/B,EAAMspO,aAGxG,GAAI3pM,IAAYA,EAAQpyF,eAAiBoyF,EAAQ8qM,sBAAwBE,EAAuB,CAC9Fv2S,KAAKw2S,aAAa7vN,GAClB3mF,KAAKg1S,WAAW,MAGlB,GAAIuB,EAAuBv2S,KAAKy2S,MAAQ,KAM1C92S,eAIAA,aAAagnF,EAAc,QAC3BhnF,mBACE,MAAMisE,EAAQ5rE,KAAKsuE,OAAOv9C,MAAKrhB,GAAKi9R,GAAaj9R,EAAG8lS,OAAsC9lS,EAAEwlS,eAC5F,OAAOtpO,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMspO,aAE7Dv1S,eAAewzC,EAAW5zC,EAAO22B,GAC/B,IAAI+/Q,EACJ,MAAM9pS,EAASnM,KAAKsR,IAAI6hC,EAAW5zC,EAAO22B,UAClC+/Q,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAc75C,eACpG,OAAOjwP,EAETxM,eAAewzC,GACb,IAAIujQ,SACIA,EAAiB12S,KAAKurG,WAAa,MAAQmrM,SAAwB,OAAS,EAAIA,EAAet6C,eACvG,OAAOp8P,KAAK0R,IAAIyhC,GAElBwjQ,qBACE,MAAMprM,EAAUvrG,KAAKk1S,aACrB,OAAQ3pM,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQqrM,mBAAqBrrM,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ5/B,IAAIssC,cAAgB,OAGzK,OAAOk+L,OAcT,MAAMU,WAA8B3K,GAAM,CAACiK,KAAkC7/R,IAE3E,MAAMugS,UAA8BvgS,EAClC+iE,oBACE,MAAO,CAAC,OAAQ,CACd50E,KAAM,YACNoI,KAAM,QACL,CACDpI,KAAM,UACNoI,KAAM,QACL,qBAAsB,mBAAoB,MAAO,UAAW,CAC7DpI,KAAM,YACNoI,KAAM,UACNjI,aAAc,OACb,CACDH,KAAM,WACNoI,KAAM,WAGVlN,cACE,OAAOK,KAAKsuE,OAAO,GAAG2hO,SAExBtwS,gBACEK,KAAK82S,cAAgB,KACrB92S,KAAK+2S,cAAcC,WAGrBr3S,mBACE,GAAIK,KAAK82S,eAAiB,KAAM,OAAO92S,KAAK82S,cAG5C,IAAIxgS,EAAO,IAAQtW,KAAK+2S,cAAcC,WAAa,IACnD,IAAIC,EAAWj3S,KAAKi3S,SACpB,GAAIA,GAAY,KAAM,CAGpBA,EAAWj3S,KAAK60S,cAAgB,GAAK,GAGvC,OAAO70S,KAAK82S,cAAgBxgS,EAAO2gS,EAMrCt3S,cACE,OAAOO,QAAQF,KAAKk3S,oBAAsBl3S,KAAKm3S,kBAAoBn3S,KAAK4zS,wBAA0B5zS,KAAK8zS,sBAKzGn0S,WACE,OAAOO,QAAQF,KAAKmtC,WAAantC,KAAKotC,SAQxCztC,kBAAkBJ,GAChB,IAAIi+R,EAAWj+R,EACf,GAAIA,GAASA,IAAUtB,OAAOsB,GAAQ,CACpCi+R,EAAWpF,GAAMpsR,MAAMf,KAAK1L,GAC5B,GAAIi+R,IAAav/R,OAAOu/R,IAAaA,EAASxoQ,OAAS,EAAG,CAExD,IACEwoQ,EAAWzxR,KAAKC,MAAMzM,GACtB,MAAOyE,GACP,OAAO,OAIb,OAAOw5R,EAET79R,uBACE,GAAIK,KAAKo3S,kBAAmB,OAAOp3S,KAAKo3S,kBACxC,MAAM5Z,EAAWx9R,KAAKq3S,kBAAkBr3S,KAAKk3S,oBAC7C,OAAOl3S,KAAKo3S,kBAAoBhf,GAAMoF,SAASA,GAEjD79R,qBACE,GAAIK,KAAKs3S,gBAAiB,OAAOt3S,KAAKs3S,gBACtC,GAAIt3S,KAAKm3S,mBAAqB,MAAO,MAAO,MAC5C,MAAM3Z,EAAWx9R,KAAKq3S,kBAAkBr3S,KAAKm3S,kBAC7C,OAAOn3S,KAAKs3S,gBAAkBlf,GAAMoF,SAASA,IAGjD,OAAOqZ,OAOT,MAAMU,WAA8BrL,GAAM,CAACsJ,KAAkCl/R,IAE3E,MAAMihS,UAA8BjhS,EAClCuL,2BACE,MAAO,CACL04D,WAAYs8N,KAIlB,OAAOU,OAST,MAAMC,WAAqCtL,GAAM,CAAC2K,KAAwBvgS,IAExE,MAAMkhS,UAAqClhS,EAEzC3W,cACE,OAAOK,KAAKiwS,SAGdtwS,mBACE,GAAIK,KAAK82S,eAAiB,KAAM,OAAO92S,KAAK82S,cAC5C,OAAO92S,KAAK82S,cAAgB92S,KAAK+2S,cAAcC,YAGnD,OAAOQ,OAST,MAAMC,WAAsCvL,GAAM,CAAC4I,KAAoCx+R,IAErF,MAAMmhS,UAAsCnhS,EAE1C++R,iBACE,IAAIY,EACJ,OAAQA,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAcZ,WAEtGC,oBACE,IAAIoB,EACJ,OAAQA,EAAiB12S,KAAKurG,WAAa,MAAQmrM,SAAwB,OAAS,EAAIA,EAAepB,cAEzGH,sBACE,IAAIuC,EACJ,OAAQA,EAAiB13S,KAAKurG,WAAa,MAAQmsM,SAAwB,OAAS,EAAIA,EAAevC,gBAEzGC,sBACE,IAAIuC,EACJ,OAAQA,EAAiB33S,KAAKurG,WAAa,MAAQosM,SAAwB,OAAS,EAAIA,EAAevC,gBAEzGG,2BACE,IAAIqC,EACJ,OAAQA,EAAiB53S,KAAKurG,WAAa,MAAQqsM,SAAwB,OAAS,EAAIA,EAAerC,qBAOzG51S,aAAagL,GACX,IAAIktS,EACJ,OAAQA,EAAmB73S,KAAKq1S,cAAgB,MAAQwC,SAA0B,OAAS,EAAIA,EAAiBhrO,QAAQliE,GAK1HhL,kBAAkBgL,GAChB,IAAImtS,EACJ,OAAQA,EAAwB93S,KAAKo1S,mBAAqB,MAAQ0C,SAA+B,OAAS,EAAIA,EAAsBjrO,QAAQliE,GAK9IhL,gBAAgBgL,GACd,IAAIotS,EACJ,OAAQA,EAAsB/3S,KAAKs1S,iBAAmB,MAAQyC,SAA6B,OAAS,EAAIA,EAAoBlrO,QAAQliE,GAKtIhL,kBAAkBgL,GAChB,IAAIqtS,EACJ,OAAQA,EAAwBh4S,KAAKm1S,mBAAqB,MAAQ6C,SAA+B,OAAS,EAAIA,EAAsBnrO,QAAQliE,GAK9IhL,gBAAgBgL,GACd,IAAIstS,EACJ,OAAQA,EAAwBj4S,KAAKu1S,wBAA0B,MAAQ0C,SAA+B,OAAS,EAAIA,EAAsBprO,QAAQliE,IAGrJ,OAAO8sS,OAST,MAAMS,WAA8BhM,GAAM,CAACiK,KAAkC7/R,IAC3E,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMsqS,UAAsB7hS,EAC1B3W,cACEua,SAASrb,WACTmB,KAAK4S,QAAU,EAGjBymE,oBACE,MAAO,CAAC,CACN50E,KAAM,UACNoI,KAAM,UACL,OAAQ,CACTpI,KAAM,2BACNoI,KAAM,UACNjI,aAAc,MACb,CACDH,KAAM,YACNoI,KAAM,UAGVurS,yBACE,OAAOb,GAET5C,oBAEE,OAAO30S,KAAKmgB,KAAKk4R,eAGnB14S,mBAAmBwY,GACjBA,EAAOqiE,WAAax6E,KAAKo4S,mBAEzBjgS,EAAOoiE,WAAav6E,KAAKsd,0BAA0Bg7R,4BAA8Bt4S,KAAKo4S,mBAAmBv2R,cAAc04D,WACvHpiE,EAAO83R,SAAWjwS,KAEpBL,YACE,MAAM4rG,EAAUvrG,KAAKk1S,aACrB,GAAI3pM,EAAS,CACX,OAAOvrG,OAASurG,EAAQgtM,gBAE1B,OAAO,MAGT54S,WACE,OAAOK,KAAK0vE,WAAa,EAkB3B/vE,4BAA4BiN,EAAS4Z,EAAM48C,GACzC,MAAM+qO,EAAWnuS,KAAKk1S,aAAasD,iBACnC,GAAIrK,EAAU,CACZvhS,EAAU3O,OAAOmZ,OAAO,CACtB+2R,SAAAA,GACCvhS,GAEL,OAAO5M,KAAKmzS,cAAcsF,4BAA4B7rS,EAAS4Z,EAAM48C,GAevEzjE,sBAAsB68B,EAAMk8Q,EAAYrqE,GAEtC,GAAIqqE,IAAe,EAAG,MAAO,CAC3BC,UAAW,IAAInqS,KAAKguB,GACpBo8Q,sBAAuB,GAEzB,GAAI1kS,MAAMwkS,GAAa,MAAM,IAAIhoS,MAAM,oBACvC,IAAIioS,EAAYn8Q,EAChBx8B,KAAKy4S,4BAA4BpqE,EAAY,CAC3ClhM,UAAW3Q,EACX6xM,UAAW,MACT,CACFjhM,QAAS5Q,EACT6xM,UAAW,QACV,CAAC+gE,EAAmBC,EAAiBwJ,KACtC,IAAI1sS,EAAS,KACb,GAAI0sS,EAAsBC,eAAgB,CACxC,IAAIpuQ,EAAO2kQ,EAAgBr/R,UAAYo/R,EAAkBp/R,UACzD,GAAIhQ,KAAKk1S,aAAa6D,oBAAqB,CACzC,MAAMpuQ,EAAUykQ,EAAkBhyQ,oBAAsBiyQ,EAAgBjyQ,oBACxEsN,GAAQC,EAAU,GAAK,IAEzB,GAAI+tQ,GAAchuQ,EAAM,CACtBiuQ,EAAYtqE,EAAY,IAAI7/N,KAAK4gS,EAAkBp/R,UAAY0oS,GAAc,IAAIlqS,KAAK6gS,EAAgBr/R,UAAY0oS,GAClHA,EAAa,EACbvsS,EAAS,UACJ,CACLwsS,EAAYtqE,EAAYghE,EAAkBD,EAC1CsJ,GAAchuQ,GAGlB,OAAOv+B,KAET,MAAO,CACLwsS,UAAW,IAAInqS,KAAKmqS,GACpBC,sBAAuBF,GAW3B/4S,oBAAoBwtC,EAAWC,EAASomK,EAAgB,OACtD,IAAIlrL,EAAW,EACf,MAAMimC,EAAaphB,EAAUn9B,WAAao9B,EAAQp9B,YAAcwjM,EAAgB,GAAK,EACrF,GAAIjlJ,EAAa,EAAG,EACjBphB,EAAWC,GAAW,CAACA,EAASD,GAEnCntC,KAAKy4S,4BAA4B,CAC/BtrQ,UAAWA,EACXC,QAASA,IACR,CAACgiQ,EAAmBC,EAAiBwJ,KACtC,GAAIA,EAAsBC,eAAgB,CACxCxwR,GAAY+mR,EAAgBr/R,UAAYo/R,EAAkBp/R,UAC1D,GAAIhQ,KAAKk1S,aAAa6D,oBAAqB,CACzC,MAAMpuQ,EAAUykQ,EAAkBhyQ,oBAAsBiyQ,EAAgBjyQ,oBACxE9U,GAAYqiB,EAAU,GAAK,SAIjC,OAAOriB,EAAWimC,EASpB5uD,iBAAiBwtC,EAAWurQ,GAE1B,MAAMrqE,EAAYqqE,GAAc,EAChC,MAAM1kS,EAAMhU,KAAKg5S,sBAAsB7rQ,EAAW/4B,KAAK41B,IAAI0uQ,GAAarqE,GACxE,OAAOr6N,EAAI4kS,wBAA0B,EAAI5kS,EAAI2kS,UAAY,KAS3Dh5S,mBAAmBytC,EAASsrQ,GAE1B,MAAMrqE,EAAYqqE,GAAc,EAChC,MAAM1kS,EAAMhU,KAAKg5S,sBAAsB5rQ,EAASh5B,KAAK41B,IAAI0uQ,GAAarqE,GACtE,OAAOr6N,EAAI4kS,wBAA0B,EAAI5kS,EAAI2kS,UAAY,KAS3Dh5S,mBAAmB68B,EAAM6xM,EAAY,MACnC,IAAI4qE,EACJ,MAAMjlS,EAAMhU,KAAKy4S,4BAA4BpqE,EAAY,CACvDlhM,UAAW3Q,EACX6xM,UAAW,MACT,CACFjhM,QAAS5Q,EACT6xM,UAAW,QACV,CAAC+gE,EAAmBC,EAAiBwJ,KACtC,GAAIA,EAAsBC,eAAgB,CACxCG,EAAc5qE,EAAY+gE,EAAoBC,EAC9C,OAAO,UAGX,GAAIr7R,IAAQ25R,GAAuB4B,iBAAmBv7R,IAAQ25R,GAAuB2B,kBAAmB,MAAO,iBAC/G,OAAO2J,EAAc,IAAIzqS,KAAKyqS,GAAe,IAAIzqS,KAAKguB,GAKxD78B,YAAY47I,GACV,OAAOv7I,KAAKk5S,aAAa,CAAC39J,IAK5B57I,aAAakjE,GACX7iE,KAAKm5S,cACL,OAAOn5S,KAAK20S,cAAc51R,IAAI8jD,GAKhCljE,eAAe47I,GACb,OAAOv7I,KAAKo5S,gBAAgB,CAAC79J,IAK/B57I,gBAAgBkjE,GACd7iE,KAAKm5S,cACL,OAAOn5S,KAAK20S,cAAc7yS,OAAO+gE,GAKnCljE,eAAeu2B,GACb,IAAKA,EAAQ,CACXl2B,KAAKm5S,cAEP,OAAOn5S,KAAK20S,cAAc90M,UAAU3pE,GAEtCv2B,cACEK,KAAKq5S,aACLr5S,KAAK4S,UAEPugS,oBACE,GAAInzS,KAAKs5S,iBAAmB12S,UAAW,OAAO5C,KAAKs5S,eACnD,MAAM/F,EAA0B,IAAIiE,GAA6B,CAC/DtH,UAAWlwS,KAAKu5S,2BAElBhG,EAAwBtD,SAAWjwS,KACnC,OAAOA,KAAKs5S,eAAiB,IAAIjG,GAAoB,CACnDpD,SAAUjwS,KACVuzS,wBAAyBA,EACzBoB,cAAe30S,KAAK20S,cACpBlB,YAAazzS,KAAKsS,SAAWtS,KAAKsS,OAAO68D,OAASnvE,KAAKsS,OAAO6gS,cAAgB,OAGlFxzS,aAEEK,KAAKs5S,gBAAkBt5S,KAAKs5S,eAAe76P,QAC3Cz+C,KAAKs5S,eAAiB12S,UAExBjD,8BACEK,KAAKkxE,UAAS++N,IACZA,EAAS0E,cAAc31S,SAAQu8I,GAAYA,EAASi+J,qBAGxD75S,YAAYouD,EAAOoN,EAAQjlC,GACzB,IAAIliB,EAAMyhS,EAAWlkO,YAAY1qE,KAAK7G,QAASnB,WAC/C,IAAK0I,MAAMC,QAAQwM,GAAM,CACvBA,EAAM,CAACA,GAGTA,EAAIhV,SAAQkxB,IACVA,EAAEipR,cACFjpR,EAAEupR,iCAEJ,OAAOzlS,EAETrU,cACE81S,EAAWa,YAAYzvS,KAAK7G,MAC5BA,KAAK20S,cAAcK,WAAWh1S,KAAKk1S,cAErCv1S,eACE81S,EAAWe,aAAa3vS,KAAK7G,MAC7BA,KAAK20S,cAAcK,WAAW,MAC9Bh1S,KAAK20S,cAAc54R,UACnB/b,KAAKq5S,aAEP15S,YACEK,KAAKw2S,eACLt8R,MAAM8B,YAERrc,aAAa69B,GACX,MAAM2P,EAAYtN,GAAWoL,UAAUzN,GACrC4P,EAAUvN,GAAWssE,QAAQ3uE,EAAKsvQ,GAASmB,KAC7C,IAAIyL,EAAiB,MACrB15S,KAAKy4S,4BAA4B,CAC/BtrQ,UAAAA,EACAC,QAAAA,EACAihM,UAAW,OACV,CAACsrE,EAAoBC,EAAkBf,KACxCa,EAAiBb,EAAsBC,eACvC,OAAQY,KAEV,OAAQA,EAGV/5S,uBAAuBwtC,EAAWC,GAChC,MAAMjhC,EAAS,GACfghC,EAAYtN,GAAWoL,UAAUkC,GACjC,MAAOA,EAAYC,EAAS,CAC1B,GAAIptC,KAAK65S,aAAa1sQ,GAAY,CAChChhC,EAAO3N,KAAK,CACV2uC,UAAAA,EACAC,QAASvN,GAAWkqD,kBAAkB58C,EAAW,KAAM,QAG3DA,EAAYtN,GAAWssE,QAAQh/D,EAAW2/P,GAASmB,KAErD,OAAO9hS,EAUTxM,qBAAqBwtC,EAAWC,GAC9B,MAAMjhC,EAAS,GACfnM,KAAKy4S,4BAA4B,CAC/BtrQ,UAAAA,EACAC,QAAAA,EACAihM,UAAW,OACV,CAAC+gE,EAAmBC,EAAiBwJ,KACtC,GAAIA,EAAsBC,eAAgB,CACxC,MAAMrtP,EAAQotP,EAAsBh2O,UAAU,GAC9C12D,EAAO3N,KAAK,CACViG,KAAMgnD,EAAMhnD,KACZ0oC,UAAWiiQ,EACXhiQ,QAASiiQ,QAIf,OAAOljS,EAUTxM,wBAAwBwtC,EAAWC,GACjC,MAAMjhC,EAAS,GACfnM,KAAKy4S,4BAA4B,CAC/BtrQ,UAAAA,EACAC,QAAAA,EACAihM,UAAW,OACV,CAAC+gE,EAAmBC,EAAiBwJ,KACtC,IAAKA,EAAsBC,eAAgB,CACzC,MAAMrtP,EAAQotP,EAAsBh2O,UAAU,GAC9C12D,EAAO3N,KAAK,CACViG,KAAMgnD,EAAMhnD,KACZ6jJ,QAAS78F,EAAM68F,QACfxyI,IAAK21C,EAAM31C,IACXq3B,UAAWiiQ,EACXhiQ,QAASiiQ,QAIf,OAAOljS,EASTxM,cAAcwtC,EAAWC,EAAS0sQ,GAChC,GAAIA,EAAgB,CAClB,IAAIppP,EACJ,MAAM18C,EAAMhU,KAAKy4S,4BAA4B,CAC3CtrQ,UAAAA,EACAC,QAAAA,EACAihM,UAAW,OACV,CAAC+gE,EAAmBC,EAAiBwJ,KACtC,GAAIA,EAAsBC,gBAAkB1J,GAAqBjiQ,GAAakiQ,GAAmBjiQ,EAAS,CACxGsjB,EAAQ,KACR,OAAO,UAGX,GAAI18C,IAAQ25R,GAAuB4B,iBAAmBv7R,IAAQ25R,GAAuB2B,kBAAmB,OAAO,MAC/G,OAAO5+O,MACF,CAEL,MAAMqpP,EAAmB/5S,KAAKg6S,mBAAmB7sQ,GACjD,OAAO4sQ,GAAoBA,IAAqB,iBAAmB3sQ,EAAU2sQ,EAAmB3sQ,EAAU2sQ,EAAiB/pS,YAAcm9B,EAAUn9B,UAAY,QAIrK,OAAOmoS,OAST,MAAM8B,WAAoC/N,GAAM,CAACiK,KAAkC7/R,IACjF,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMqsS,UAA4B5jS,EAKhC3W,iBAAiBw6S,GAEf,IAAK,MAAMC,KAAeC,EAAiBr6S,KAAKs6S,YAAc,MAAQD,SAAwB,EAAIA,EAAiB,GAAI,CACrH,IAAIA,EACJ,GAAID,EAAWD,WAAaA,EAAU,OAAOC,EAE/C,OAAO,KAETz6S,aAAaw6S,GACX,OAAOj6S,QAAQF,KAAKu6S,iBAAiBJ,IAKvCx6S,aAAaw6S,GACX,MAAMK,EAAgBx6S,KAAKurG,QAAQ4pM,gBAAgB56N,WACnDv6E,KAAKy6S,cAAc,IAAID,EAAc,CACnCrqR,MAAOnwB,KACPm6S,SAAUA,KAEZ,OAAOn6S,KAAKo8P,cAKdz8P,eAAew6S,GACb,MAAMC,EAAap6S,KAAKu6S,iBAAiBJ,GACzCn6S,KAAK06S,iBAAiBN,GACtB,OAAOp6S,KAAKo8P,cAEdz8P,eAIE,GAAIK,KAAK26S,uBAAyB36S,KAAKs6S,SAAU,CAC/C,MAAMjF,EAAar1S,KAAK46S,gBAGxB56S,KAAKs6S,SAASt7S,SAAQo7S,GAAc/E,EAAWwF,sBAAsB97R,IAAIq7R,KAE3E3E,EAAWe,aAAa3vS,KAAK7G,QAASnB,WAExCc,SACE,GAAIK,KAAKsS,OAAQ,CAGf,MAAM+iS,EAAar1S,KAAK46S,gBACxBnF,EAAW3zS,OAAO+E,KAAK7G,MACvBq1S,GAAcA,EAAWyF,wBACpB,CACL,OAAOrF,EAAW3zS,OAAO+E,KAAK7G,OAMlCL,cAAcy6S,GACZp6S,KAAKk1S,aAAaC,gBAAgBp2R,IAAIq7R,GACtC,OAAOA,EAGTz6S,iBAAiBy6S,GACfp6S,KAAKk1S,aAAaC,gBAAgBrzS,OAAOs4S,GACzC,OAAOA,GAGX,OAAOF,OAQT,MAAMa,WAAoC7O,GAAM,CAACiK,GAAiCsB,GAA+B97N,KAAQrlE,IACvH,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMktS,UAAoCzkS,EACxC3W,cACEua,SAASrb,WAETmB,KAAKg7S,eAAiB,MAEtBh7S,KAAKi7S,SAAW,GAEhBj7S,KAAKk7S,cAAgB,GAEvBP,4BACE,OAAO,KAGTh7S,cACEK,KAAKm7S,aAGPx7S,aAAagnF,EAAc,OACzB,IAAIsvN,EACJR,EAAWe,aAAa3vS,KAAK7G,KAAM2mF,IAClCsvN,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAcmF,sBAK/Fz7S,aACE,IAAI+2S,GACHA,EAAiB12S,KAAKurG,WAAa,MAAQmrM,SAAwB,OAAS,EAAIA,EAAeyE,WAAWn7S,MAM7GL,qBAAqBwzC,GACnB,IAAIkoQ,EACJ,GAAIloQ,KAAanzC,KAAKi7S,SAAU,CAC9B,OAAOj7S,KAAKi7S,SAAS9nQ,GAEvB,OAAQkoQ,EAAYr7S,KAAK0R,IAAIyhC,MAAgB,MAAQkoQ,SAAmB,EAAIA,EAAY,KAK1F17S,qBAAqBwzC,GACnB,OAAOnzC,KAAKi7S,SAAS9nQ,IAAc,MAAQnzC,KAAK0R,IAAIyhC,IAAc,KAKpExzC,QAAQ4yE,GACN,IAAI+oO,EAEJ,GAAIt7S,KAAKurG,UAAY+vM,EAAwBt7S,KAAKu7S,qBAAuB,MAAQD,SAA+B,GAAKA,EAAsB/vM,QAAS,CAClJ,MAAMvtG,EAAOC,OAAOD,KAAKu0E,GACzB,IAAK,IAAI3zE,EAAI,EAAGA,EAAIZ,EAAKc,OAAQF,IAAK,CACpC,MAAMK,EAAMjB,EAAKY,GACjBoB,KAAKi7S,SAASh8S,GAAOszE,EAAQtzE,GAE/Be,KAAKm7S,iBACA,CAELn7S,KAAKsR,IAAIihE,IAMb5yE,WAAW4W,EAAOhX,EAAO47S,EAAa,KAAMpmO,EAAU,OACpD,MAAMh1E,EAAKC,KACXD,EAAGk7S,SAAS1kS,GAAShX,EAErB,GAAIw1E,EAAS,CACX,KAAMx+D,KAASxW,EAAGm7S,eAAgB,CAChCn7S,EAAGm7S,cAAc3kS,GAASxW,EAAG2R,IAAI6E,GAEnCxW,EAAGg1E,QAAQx+D,EAAOhX,GAEpB47S,GAAcp7S,EAAGo7S,aAKnBx7S,wBAIAA,oBAAoBu2B,EAAS,OAC3B,MAAMn2B,EAAKC,KACXD,EAAGi7S,eAAiB,KACpB,IAAK9kR,EAAQ,CAEXn2B,EAAGg1E,QAAQh1E,EAAGm7S,eAEdn7S,EAAGuR,IAAIvR,EAAGk7S,cACL,CACLl7S,EAAGg1E,QAAQh1E,EAAGk7S,UAEhBl7S,EAAGk7S,SAAW,GACdl7S,EAAGm7S,cAAgB,GACnBn7S,EAAGi7S,eAAiB,OAGxB,OAAOD,OAGT,MAAMS,GAAcj8S,GAAS0U,OAAO1U,KAAWA,EAC/C,MAAMk8S,GAA0Bl8S,IAC9B,GAAIA,aAAiBsf,KAAOtf,aAAiBgI,MAAO,OAAOshS,GAAGtpS,GAC9D,OAAOspS,GAAG,CAACtpS,KAEb,MAAMm8S,GAAUn8S,GAAS,IAAIgR,SAAQC,GAAWuM,WAAWvM,EAASjR,KACpE,MAAMu9B,GAAS,CAACA,KAAWjxB,IAClBixB,EAAOtyB,QAAQ,YAAY,CAACrK,EAAO47B,WAAkBlwB,EAAOkwB,KAAY,YAAclwB,EAAOkwB,GAAU57B,IAIhH,MAAMw7S,WAAqCzP,GAAM,CAACsJ,KAAkCl/R,IAClF,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM8tS,UAAqCrlS,EACzC3W,cACEua,SAASrb,WACTmB,KAAK66S,sBAAwB,IAAIh8R,IACjC7e,KAAK47S,yBAA2B,MAElCj8S,OAAOsyE,EAAS/7C,GACdl2B,KAAK66S,sBAAwBY,GAAwBxpO,GAASqB,QAC9D,MAAMt/D,EAAMyhS,EAAW3zS,OAAO+E,KAAK7G,KAAMiyE,EAAS/7C,GAClDl2B,KAAK66S,sBAAsBp8P,QAC3B,OAAOzqC,EAETrU,UAAUu2B,GACRl2B,KAAK47S,yBAA2B,KAChC,MAAM5nS,EAAMyhS,EAAW51M,UAAUh5F,KAAK7G,KAAMk2B,GAC5Cl2B,KAAK47S,yBAA2B,MAChC,OAAO5nS,GAGX,OAAO2nS,OAIT,MAAME,WAA0C3P,GAAM,CAACsJ,KAAkCl/R,IAEvF,MAAMulS,UAA0CvlS,EAE9C3W,YACE,IAAIm8S,EACJ,MAAM7pO,EAAU,GAEhB,MAAO6pO,EAAiB97S,KAAK0wE,YAAc,MAAQorO,SAAwB,GAAKA,EAAe5/R,aAAc,CAC3Glc,KAAKkxE,UAASsB,GAAUP,EAAQzzE,KAAKg0E,KAEvCt4D,MAAM8B,YACNi2D,EAAQjzE,SAAQwzE,GAAUA,EAAOz2D,aAGrC,OAAO8/R,OAIT,MAAME,WAAqC7P,GAAM,CAACsJ,KAAkCl/R,IAClF,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMkuS,UAAqCzlS,EACzC3W,cACEua,SAASrb,WACTmB,KAAKg8S,uBAAyB,IAAIn9R,IAClC7e,KAAKi8S,0BAA4B,MAEnCt8S,OAAOsyE,EAAS/7C,GACdl2B,KAAKg8S,uBAAyBP,GAAwBxpO,GAASqB,QAC/D,MAAMt/D,EAAMyhS,EAAW3zS,OAAO+E,KAAK7G,KAAMiyE,EAAS/7C,GAClDl2B,KAAKg8S,uBAAuBv9P,QAC5B,OAAOzqC,EAETrU,UAAUu2B,GACRl2B,KAAKi8S,0BAA4B,KACjC,MAAMjoS,EAAMyhS,EAAW51M,UAAUh5F,KAAK7G,KAAMk2B,GAC5Cl2B,KAAKi8S,0BAA4B,MACjC,OAAOjoS,GAGX,OAAO+nS,OAGT,MAAMG,GAAyB,CAC7BhkS,OAAQ,EACRumC,MAAO,GAGT,MAAM09P,WAAgCjQ,GAAM,CAACsJ,KAAkCl/R,IAC7E,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMsuS,UAAgC7lS,EACpC3W,cACEua,SAASrb,WACTmB,KAAK66S,sBAAwB,IAAIh8R,IAGjC7e,KAAKg8S,uBAAyB,IAAIn9R,IAGpClf,aAAawwB,GACX,IAAIisR,EAEJ,MAAM30M,EAAcy0M,GAAuB/rR,EAAMiiC,QACjDl4C,MAAM+9E,aAAa9nE,GACnB,GAAIs3E,IAAgB20M,EAAiBjsR,EAAMjN,WAAa,MAAQk5R,SAAwB,GAAKA,EAAet9S,OAAQkB,KAAK86S,oBAG3Hn7S,OAAOsyE,EAAS/7C,GACd,MAAMliB,EAAMyhS,EAAW3zS,OAAO+E,KAAK7G,KAAMiyE,EAAS/7C,GAClDl2B,KAAK86S,oBACL,OAAO9mS,EAGTrU,UAAUu2B,GACR,MAAMliB,EAAMyhS,EAAW51M,UAAUh5F,KAAK7G,KAAMk2B,GAC5Cl2B,KAAK86S,oBACL,OAAO9mS,EAETrU,oBACE,MAAMk7S,sBACJA,EAAqBmB,uBACrBA,GACEh8S,KAEJ,IAAK66S,EAAuB,OAG5B,MAAM1F,EAAkBn1S,KAAKq8S,qBAC7B,GAAIlH,IAAoBA,EAAgByG,0BAA4Bf,EAAsBtpS,KAAM,CAC9F,MAAMkT,EAAW,IAAIo2R,GAAuBz8S,QAAOg8S,IAAejF,EAAgB0F,sBAAsB58R,IAAIm8R,KAC5G31R,EAAS3lB,OAAS,GAAKq2S,EAAgBrzS,OAAO2iB,GAEhDo2R,EAAsBp8P,QAEtB,MAAM22P,EAAkBp1S,KAAKs8S,qBAC7B,GAAIlH,IAAoBA,EAAgB6G,2BAA6BD,EAAuBzqS,KAAM,CAChG,MAAMkT,EAAW,IAAIu3R,GAAwB59S,QAAOm+S,IAAenH,EAAgB4G,uBAAuB/9R,IAAIs+R,KAC9G93R,EAAS3lB,OAAS,GAAKs2S,EAAgBtzS,OAAO2iB,GAEhDu3R,EAAuBv9P,QAEzB9+C,cAAc8gL,EAAa91E,EAAY,OACrC,IAAIsrM,EACJ,MAAOA,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,GAAKA,EAAcI,sBAAuB,CAChH,MAAMmG,EAAiBx8S,KAAK6sE,QAAQ4zG,EAAY91K,IAChD,MAAMg8E,EAAc61N,GAAkBA,IAAmB/7H,EAEzD,GAAI95F,GAAe61N,EAAelC,SAAU,CAG1C,IAAK,MAAMF,KAAcoC,EAAelC,SAAU,CAChDF,EAAWjqR,MAAQswJ,IAIzB,OAAOA,GAGX,OAAO07H,OAGT,MAAMM,GAAuB,CAC3BvkS,OAAQ,EACRumC,MAAO,GAGT,MAAMi+P,WAAmCxQ,GAAM,CAACsJ,KAAkCl/R,IAChF,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM6uS,UAAmCpmS,EACvC3W,cACEua,SAASrb,WACTmB,KAAK66S,sBAAwB,IAAIh8R,IAGnClf,aAAawwB,GACX,IAAIisR,EAEJ,MAAM30M,EAAcg1M,GAAqBtsR,EAAMiiC,QAC/Cl4C,MAAM+9E,aAAa9nE,GACnB,GAAIs3E,IAAgB20M,EAAiBjsR,EAAMjN,WAAa,MAAQk5R,SAAwB,GAAKA,EAAet9S,OAAQkB,KAAK28S,uBAG3Hh9S,OAAOsyE,EAAS/7C,GACd,MAAMliB,EAAMyhS,EAAW3zS,OAAO+E,KAAK7G,KAAMiyE,EAAS/7C,GAClDl2B,KAAK28S,uBACL,OAAO3oS,EAGTrU,UAAUu2B,GACR,MAAMliB,EAAMyhS,EAAW51M,UAAUh5F,KAAK7G,KAAMk2B,GAC5Cl2B,KAAK28S,uBACL,OAAO3oS,EAETrU,uBAEE,MAAMw1S,EAAkBn1S,KAAKq8S,qBAC7B,GAAIlH,IAAoBA,EAAgByG,yBAA0B,CAChE,MAAMf,EAAwB,IAAI76S,KAAK66S,uBAAuBz8S,QAAOg8S,IAAejF,EAAgB0F,sBAAsB58R,IAAIm8R,KAC9HS,EAAsB/7S,OAAS,GAAKq2S,EAAgBrzS,OAAO+4S,GAE7D76S,KAAK66S,sBAAsBp8P,QAE7B9+C,cAAcq0N,EAAgBrpH,EAAY,OACxC,MAAM6xM,EAAiBx8S,KAAK6sE,QAAQmnJ,EAAerpN,IACnD,MAAMg8E,EAAc61N,GAAkBA,IAAmBxoF,EACzD,GAAIrtI,EAAa,CAGf,IAAK,MAAMyzN,KAAcoC,EAAelC,UAAY,GAAI,CACtDF,EAAWD,SAAWnmF,GAG1B,OAAOA,GAGX,OAAO0oF,OAST,MAAME,WAAuB1Q,GAAM,CAAC6O,KAA8BzkS,IAChE,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM+uS,UAAuBtmS,EAC3B3W,cACEua,SAASrb,WACTmB,KAAK68S,WAAa,KAClB78S,KAAK88S,SAAW,KAChB98S,KAAKy3I,UAAY,KAGnBp+D,oBACE,MAAO,CAAC,CACN50E,KAAM,YACNoI,KAAM,QACL,CACDpI,KAAM,UACNoI,KAAM,QACL,CACDpI,KAAM,WACNoI,KAAM,UACL,CACDpI,KAAM,eACNoI,KAAM,eACNjI,aAAc,QAIlBuoC,gBACE,IAAIqkC,EAAMurO,EACV,OAAQvrO,GAAQurO,EAAmB/8S,KAAK68S,cAAgB,MAAQE,SAA0B,EAAIA,EAAmB/8S,KAAK0R,IAAI,gBAAkB,MAAQ8/D,SAAc,EAAIA,EAAO,KAE/KpkC,cACE,IAAIk3F,EAAO04K,EACX,OAAQ14K,GAAS04K,EAAiBh9S,KAAK88S,YAAc,MAAQE,SAAwB,EAAIA,EAAiBh9S,KAAK0R,IAAI,cAAgB,MAAQ4yH,SAAe,EAAIA,EAAQ,KAExKh8G,eACE,IAAI20R,EAAOjlK,EACX,OAAQilK,GAASjlK,EAAkBh4I,KAAKy3I,aAAe,MAAQO,SAAyB,EAAIA,EAAkBh4I,KAAK0R,IAAI,eAAiB,MAAQurS,SAAe,EAAIA,EAAQ,KAG7K9vQ,cAAc5tC,GACZS,KAAKk9S,iBAAiB39S,GAExB6tC,YAAY7tC,GACVS,KAAKm9S,eAAe59S,GAEtB+oB,aAAa/oB,GACXS,KAAKo9S,gBAAgB79S,GAGvBI,MAAM4W,KAAUgF,GACd,MAAMxb,EAAKC,KACX,GAAID,EAAGwrG,gBAAkBh1F,IAAU,SAAU,CAC3C,MAAM8mS,EAAgB,cAAe9mS,EACrC,MAAM+mS,EAAc,YAAa/mS,EACjC,MAAMgnS,EAAe,aAAchnS,EAInC,GAAI8mS,GAAgBC,IAAeC,EAAa,CAC9C,IAAIC,EAAeC,EAEnB,MAAMtwQ,EAAYyvQ,EAAev6N,aAAa,YAAa9rE,EAAM42B,UAAWptC,GAE5E,MAAMqtC,EAAUwvQ,EAAev6N,aAAa,UAAW9rE,EAAM62B,QAASrtC,GACtE,IAAKotC,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAUn9B,eAAiBwtS,EAAgBz9S,EAAGotC,aAAe,MAAQqwQ,SAAuB,OAAS,EAAIA,EAAcxtS,aAAeo9B,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQp9B,eAAiBytS,EAAc19S,EAAGqtC,WAAa,MAAQqwQ,SAAqB,OAAS,EAAIA,EAAYztS,WAAY,CAC1WjQ,EAAGq9S,gBAAgB,MACnBr9S,EAAGo9S,eAAe5mS,EAAM62B,UAM5B,IAAKiwQ,GAAgBC,GAAcC,EAAa,CAC9C,IAAIG,EAEJ,MAAMtwQ,EAAUwvQ,EAAev6N,aAAa,UAAW9rE,EAAM62B,QAASrtC,GACtE,GAAIwW,EAAM+R,WAAavoB,EAAGuoB,WAAa8kB,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQp9B,eAAiB0tS,EAAe39S,EAAGqtC,WAAa,MAAQswQ,SAAsB,OAAS,EAAIA,EAAa1tS,WAAY,CACnNjQ,EAAGm9S,iBAAiB,MACpBn9S,EAAGo9S,eAAe5mS,EAAM62B,WAK9B,OAAOqoQ,EAAWvzN,MAAMr7E,KAAK9G,EAAIwW,KAAUgF,GAI7C5b,eACE,OAAOK,KAAKmtC,UAEdxtC,iBAAiBwtC,EAAWwwQ,EAAe,MACzC39S,KAAK68S,WAAa1vQ,EAClBntC,KAAK49S,QAAQ,CACXzwQ,UAAAA,EACAwwQ,aAAAA,IAGJh+S,mBAAmBwtC,EAAWwwQ,EAAe,MAC3C,IAAI1H,EACJj2S,KAAKk9S,iBAAiB/vQ,EAAWwwQ,GACjC,OAAQ1H,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAc75C,cAItGz8P,aACE,OAAOK,KAAKotC,QAEdztC,eAAeytC,EAASuwQ,EAAe,OACrC39S,KAAK88S,SAAW1vQ,EAChBptC,KAAK49S,QAAQ,CACXxwQ,QAAAA,EACAuwQ,aAAAA,IAGJh+S,iBAAiBytC,EAASuwQ,EAAe,OACvC,IAAIjH,EACJ12S,KAAKm9S,eAAe/vQ,EAASuwQ,GAC7B,OAAQjH,EAAiB12S,KAAKurG,WAAa,MAAQmrM,SAAwB,OAAS,EAAIA,EAAet6C,cAIzGz8P,cACE,OAAOK,KAAKsoB,SAEd3oB,gBAAgB2oB,EAAU2f,EAAM41Q,EAAY,MAC1C79S,KAAKy3I,UAAYnvH,EACjBtoB,KAAK49S,QAAQ,CACXt1R,SAAAA,EACAu1R,UAAAA,IAEF,GAAI51Q,EAAMjoC,KAAK49S,QAAQ,CACrBE,aAAc71Q,IAGlBtoC,kBAAkB2oB,EAAU2f,EAAM41Q,EAAY,MAC5C,IAAInG,EACJ13S,KAAKo9S,gBAAgB90R,EAAU2f,EAAM41Q,GACrC,OAAQnG,EAAiB13S,KAAKurG,WAAa,MAAQmsM,SAAwB,OAAS,EAAIA,EAAet7C,cAEzGz8P,kBACE,OAAOK,KAAK89S,aAIdn+S,cACE,MAAMI,EAAKC,KACX,MAAMi5D,EAAUl5D,EAAGk7S,SACnB,MAAM9tQ,EAAYptC,EAAGg+S,qBAAqB,aAC1C,MAAM3wQ,EAAUrtC,EAAGg+S,qBAAqB,WACxC,MAAMz1R,EAAWvoB,EAAGg+S,qBAAqB,YAEzC,GAAI5wQ,GAAa,KAAM8rB,EAAQ9rB,UAAYptC,EAAG88S,WAAa1vQ,EAC3D,GAAIC,GAAW,KAAM6rB,EAAQ7rB,QAAUrtC,EAAG+8S,SAAW1vQ,EACrD,GAAI9kB,GAAY,KAAM2wC,EAAQ3wC,SAAWvoB,EAAG03I,UAAYnvH,EAExD,GAAIvoB,EAAGs1S,aAAet1S,EAAGs1S,WAAWK,cAAe,CACjD,IAAIsI,EACJ,MAAMC,GAAcD,EAAsBj+S,EAAGo1S,mBAAqB,MAAQ6I,SAA6B,OAAS,EAAIA,EAAoB95S,QAAQ6qF,SAAS,QAAS,MAClK,GAAIkvN,EAAY,CACd,IAAIC,EAIJ,MAAMC,GAAqBD,EAAuBn+S,EAAGo1S,mBAAqB,MAAQ+I,SAA8B,OAAS,EAAIA,EAAqBh6S,QAAQ6qF,SAAS,UAAWhvF,EAAG4K,IACjL,GAAIwzS,EAAmB,CACrB,IAAK,MAAM/D,KAAc+D,EAAmB,CAC1C/D,EAAWgE,WAAW,QAASr+S,QAE5B,CACL,IAAK,MAAMq6S,KAAc6D,EAAY,CACnC,GAAI7D,EAAW2D,qBAAqB,WAAah+S,EAAG4K,GAAI,CACtDyvS,EAAWgE,WAAW,QAASr+S,OAMzC01S,EAAWa,YAAYzvS,KAAK9G,GAG9BJ,WAAW+iF,EAASzjF,EAAKM,EAAOsiF,EAAetrE,GAC7C,IAAI+kS,EAEJ,GAAIt7S,KAAKurG,UAAY+vM,EAAwBt7S,KAAKu7S,qBAAuB,MAAQD,SAA+B,GAAKA,EAAsB/vM,QAAS,CAClJ,GAAItsG,IAAQ,aAAeA,GAAO,YAAcA,IAAQ,UAAW,CACjEyjF,EAAU,KAEV1iF,KAAK,IAAMf,GAAOM,EAEpB,GAAIsiF,EAAe,CACjBa,EAAU,OAGd+yN,EAAW3yN,WAAWj8E,KAAK7G,KAAM0iF,EAASzjF,EAAKM,EAAOsiF,EAAetrE,GAGvE5W,YAAY2zE,EAAOxG,EAAQ52C,EAAQk2C,EAAoByV,GACrD,IAAK7hF,KAAKg7S,iBAAmBn5N,EAAe,CAE1C7hF,KAAK+0E,QAAQ/0E,KAAKi7S,UAEpBxF,EAAW9hO,YAAY9sE,KAAK7G,KAAMszE,EAAOxG,EAAQ52C,EAAQk2C,EAAoByV,GAG/EliF,uBACE,MAAMI,EAAKC,KACX,MAAMi5D,EAAUl5D,EAAGk7S,SACnB,MAAMoD,EAAgB,cAAeplP,EACrC,MAAMqlP,EAAc,YAAarlP,EACjC,MAAMslP,EAAmB,aAActlP,EACvC,MAAM9rB,UACJA,EAASC,QACTA,EAAO9kB,SACPA,EAAQq1R,aACRA,EAAYE,UACZA,GACE5kP,EACJ,IAAIulP,EAAY,KAEhB,GAAIH,IAAiBC,IAAeC,EAAiB,CAEnD,GAAIpxQ,IAAc,KAAM,CACtB8rB,EAAQ7rB,QAAU,UAGf,GAAIrtC,EAAG0+S,qBAAqB,YAActxQ,EAAYptC,EAAGg+S,qBAAqB,aAAeJ,EAAc,CAC9G1kP,EAAQ7rB,QAAUD,EAClB8rB,EAAQ3wC,SAAW,OAGhB,GAAIvoB,EAAG0+S,qBAAqB,cAAgBd,IAAiB59S,EAAG0+S,qBAAqB,YAAa,CACrGD,EAAY,eAGT,GAAIz+S,EAAG0+S,qBAAqB,WAAY,CAC3CD,EAAY,iBAIX,IAAKH,GAAgBC,IAAeC,EAAiB,CAExD,GAAInxQ,IAAY,KAAM,CACpB6rB,EAAQ9rB,UAAY,UAGjB,GAAIptC,EAAG0+S,qBAAqB,cAAgBrxQ,EAAUrtC,EAAGg+S,qBAAqB,eAAiBJ,EAAc,CAChH1kP,EAAQ9rB,UAAYC,EACpB6rB,EAAQ3wC,SAAW,OAGhB,GAAIvoB,EAAG0+S,qBAAqB,cAAgBd,IAAiB59S,EAAG0+S,qBAAqB,cAAe,CACvGD,EAAY,iBAGT,GAAIz+S,EAAG0+S,qBAAqB,aAAc,CAC7CD,EAAY,iBAIX,IAAKH,IAAiBC,GAAcC,EAAiB,CAExD,GAAIj2R,IAAa,KAAM,CACrB2wC,EAAQ7rB,QAAU,UAGf,GAAIrtC,EAAG0+S,qBAAqB,eAAiBZ,IAAc99S,EAAG0+S,qBAAqB,YAAa,CACnG,GAAIZ,GAAa5kP,EAAQ3wC,SAAW,EAAG,CACrC2wC,EAAQ3wC,SAAW,EAErBk2R,EAAY,eAGT,GAAIz+S,EAAG0+S,qBAAqB,WAAY,CAC3CD,EAAY,kBAIX,GAAIH,GAAgBC,IAAeC,EAAiB,CAEvD,GAAIpxQ,IAAc,MAAQC,IAAY,KAAM,CAC1C6rB,EAAQ3wC,SAAW,SAGhB,CACHk2R,EAAY,iBAIX,GAAIH,IAAiBC,GAAcC,EAAiB,CACvDC,EAAY,eAGT,IAAKH,GAAgBC,GAAcC,EAAiB,CACvDC,EAAY,iBAGT,GAAIH,GAAgBC,GAAcC,EAAiB,CACtD,GAAIj2R,GAAY,KAAM,CACpBk2R,EAAY,gBACP,GAAIrxQ,GAAa,KAAM,CAC5BqxQ,EAAY,gBACP,CACLA,EAAY,WAIhB,MAAME,EAA6B3+S,EAAGg+S,qBAAqB,aAC3D,MAAMY,EAA2B5+S,EAAGg+S,qBAAqB,WACzD,MAAMa,EAA4B7+S,EAAGg+S,qBAAqB,YAC1D,MAAMc,EAAgC9+S,EAAGg+S,qBAAqB,gBAC9D,IAAIe,EAAcC,EAClB,OAAQP,GACN,IAAK,YACHvlP,EAAQ9rB,UAAYtN,GAAW9gB,IAAI4/R,GAA2BC,EAA2BC,GACzF,MACF,IAAK,UAEHC,EAAej/Q,GAAWqI,GAAG,OAAQ02Q,EAA2BC,GAEhEE,EAAiBl/Q,GAAWqI,GAAG22Q,EAA+BC,EAAc,KAC5E7lP,EAAQ7rB,QAAUvN,GAAW9gB,IAAI2/R,EAA4BK,EAAgBF,GAC7E,MACF,IAAK,WAEHC,EAAej/Q,GAAW6K,KAAKg0Q,EAA4BC,EAA0B,KAErF1lP,EAAQ3wC,SAAWuX,GAAWqI,GAAG22Q,EAA+BC,EAAc,KAC9E,MAEJ,GAAI7lP,EAAQ9rB,YAAcvqC,UAAW5C,KAAK68S,WAAa5jP,EAAQ9rB,UAC/D,GAAI8rB,EAAQ7rB,UAAYxqC,UAAW5C,KAAK88S,SAAW7jP,EAAQ7rB,QAC3D,GAAI6rB,EAAQ3wC,WAAa1lB,UAAW5C,KAAKy3I,UAAYx+E,EAAQ3wC,gBACtD2wC,EAAQ0kP,oBACR1kP,EAAQ4kP,WAGnB,OAAOjB,OAMT,MAAMoC,WAA0B9S,GAAM,CAAC6O,KAA8BzkS,IACnE,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMmxS,UAA0B1oS,EAC9BgkS,eACE,IAAIrE,EACJ,OAAQA,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAcd,gBAAgB8J,wBAAwBj/S,MAE9IL,cAGE,GAAIK,KAAKs1S,gBAAkBt1S,KAAKs1S,cAAcI,cAAe,CAC3D,IAAIsC,GACHA,EAAwBh4S,KAAKm1S,mBAAqB,MAAQ6C,SAA+B,OAAS,EAAIA,EAAsB15O,OAAMz4D,GAAKA,EAAE6L,IAAI,cAAgB1R,KAAK2K,KAAI3L,SAAQi/S,GAAcA,EAAWG,WAAW,WAAYp+S,QAEjOy1S,EAAWa,YAAYzvS,KAAK7G,MAE9BL,aAAagnF,EAAc,OAIzB,GAAI3mF,KAAKs6S,WAAa3zN,EAAa,CACjC,MAAM2uN,EAAgBt1S,KAAKs1S,cAG3Bt1S,KAAKs6S,SAASt7S,SAAQo7S,GAAc9E,EAAcuF,sBAAsB97R,IAAIq7R,KAE9E3E,EAAWe,aAAa3vS,KAAK7G,MAE/BL,WAAW+iF,EAASzjF,EAAKM,EAAO2/S,EAAc3oS,GAG5C,IAAKA,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM9R,QAAU,KAAM,CACvEzE,KAAKs6S,SAASt7S,SAAQo7S,IACpBA,EAAW9oS,IAAI,aAAc/R,MAGjCk2S,EAAW3yN,WAAWj8E,KAAK7G,KAAM0iF,EAASzjF,EAAKM,EAAO2/S,EAAc3oS,IAGxE,OAAOyoS,OAMT,MAAMG,WAA4BjT,GAAM,CAAC6O,KAA8BzkS,IACrE,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMsxS,UAA4B7oS,EAEhC+iE,oBACE,MAAO,CAEP,CACE50E,KAAM,WACN+mC,QAAS,CAAC3lC,EAAGye,IAAMze,IAAMye,EACzBs0D,QAAS,OACR,CACDn0E,KAAM,QACN+mC,QAAS,CAAC3lC,EAAGye,IAAMze,IAAMye,EACzBs0D,QAAS,QAIbj5E,WAAW4W,EAAOhX,EAAO47S,GACvB,MAAMhG,gBACJA,EAAeE,WACfA,EAAUC,cACVA,EAAa/pM,QACbA,GACEvrG,KACJ,IAAI2tG,EAAS,MACb,GAAIp3F,IAAU,QAAS,CACrB,MAAM4Z,EAAQw8Q,GAAaptS,EAAOq9S,IAAkBr9S,EAAQ81S,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWxoO,QAAQttE,GACvI,GAAI4wB,EAAOw9E,EAAS,KACpBpuG,EAAQ4wB,GAAS5wB,EAEnB,GAAIgX,IAAU,WAAY,CACxB,MAAM4jS,EAAWxN,GAAaptS,EAAOy/S,IAAqBz/S,EAAQ+1S,IAAkB,MAAQA,SAAuB,OAAS,EAAIA,EAAczoO,QAAQttE,GACtJ,GAAI46S,EAAUxsM,EAAS,KACvBpuG,EAAQ46S,GAAY56S,EAGtBk2S,EAAW2I,WAAWv3S,KAAK7G,KAAMuW,EAAOhX,EAAO47S,EAAY,MAE3D,GAAIhG,GAAmBxnM,IAAWpC,EAAQ6zM,qBAAuBjK,EAAgBO,gBAAkBJ,EAAcI,gBAAkBP,EAAgBkK,sBAAuB,CACxKlK,EAAgBnoN,qBAIpBrtF,cACE81S,EAAWa,YAAYzvS,KAAK7G,MAC5BA,KAAKo+S,WAAW,QAASp+S,KAAK0R,IAAI,UAClC1R,KAAKo+S,WAAW,WAAYp+S,KAAK0R,IAAI,aAIvC/R,uBAEE,IAAIwwB,MACFA,EAAQnwB,KAAKmwB,MAAKgqR,SAClBA,EAAWn6S,KAAKm6S,UACdn6S,KAAKi7S,SACT,GAAI9qR,IAAU,OAASw8Q,GAAax8Q,EAAOysR,IAAiB,CAC1D,IAAI/E,EACJ,MAAMyH,GAAYzH,EAAmB73S,KAAKq1S,cAAgB,MAAQwC,SAA0B,OAAS,EAAIA,EAAiBhrO,QAAQ18C,GAClI,GAAImvR,EAAUt/S,KAAKo+S,WAAW,QAASkB,EAAU,OAEnD,GAAInF,IAAa,OAASxN,GAAawN,EAAU6E,IAAoB,CACnE,IAAIjH,EACJ,MAAMuH,GAAYvH,EAAsB/3S,KAAKs1S,iBAAmB,MAAQyC,SAA6B,OAAS,EAAIA,EAAoBlrO,QAAQstO,GAC9I,GAAImF,EAAUt/S,KAAKo+S,WAAW,WAAYkB,EAAU,QAIxD3/S,oBAAoBu2B,GAClB,MAAM+iC,EAAUj5D,KAAKi7S,SACrB,GAAI,aAAchiP,EAAS,CACzB,IAAIsmP,EACJtmP,EAAQumP,YAAcD,EAAoBtmP,EAAQkhP,YAAc,MAAQoF,SAA2B,GAAKA,EAAkB9wO,QAAUxV,EAAQkhP,SAASxvS,GAAKsuD,EAAQkhP,SAEpK,GAAI,UAAWlhP,EAAS,CACtB,IAAIwmP,EACJxmP,EAAQymP,SAAWD,EAAiBxmP,EAAQ9oC,SAAW,MAAQsvR,SAAwB,GAAKA,EAAehxO,QAAUxV,EAAQ9oC,MAAMxlB,GAAKsuD,EAAQ9oC,MAElJslR,EAAWkK,oBAAoB94S,KAAK7G,KAAMk2B,GAG5C/F,UAAUA,GACRnwB,KAAKo+S,WAAW,QAASjuR,GAE3BA,YACE,MAAMA,EAAQnwB,KAAK0R,IAAI,SAEvB,OAAQye,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMxlB,KAAO,KAAOwlB,EAAQ,KAIpFgqR,aAAaA,GACXn6S,KAAKo+S,WAAW,WAAYjE,GAE9BA,eACE,MAAMA,EAAWn6S,KAAK0R,IAAI,YAE1B,OAAQyoS,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASxvS,KAAO,KAAOwvS,EAAW,MAGlG,OAAOgF,OAMT,MAAMS,WAAoC1T,GAAM,CAACsJ,GAAiCiC,GAA+B7wM,KAAQtwF,IACvH,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM+xS,UAAoCtpS,EACxC3W,WAAW4rG,GACT,MAAMp/F,EAASspS,EAAWT,WAAWnuS,KAAK7G,KAAMurG,GAChD,GAAIA,EAASvrG,KAAKs2S,YAAY/qM,GAC9B,OAAOp/F,EAETxM,YAAY4rG,IACZ5rG,kBAEF,OAAOigT,OAGT,MAAMC,GAAa,IAAIhhS,IAIvB,MAAMihS,WAAiC5T,GAAM,CAACyP,GAA8BiE,KAA8BtpS,IAExG,MAAMwpS,UAAiCxpS,EACrC3W,cACEua,SAASrb,WACTmB,KAAKq/S,sBAAwB,MAE/Bx9R,2BACE,MAAO,CACL04D,WAAY4kO,GACZj7S,QAAS,CACP6nF,UAAW,CAAC,CACV55E,SAAU,QACVo5E,OAAQ,OACP,CACDp5E,SAAU,WACVo5E,OAAQ,OACP,CACDp5E,SAAU,UACVo5E,OAAQ,UAKhBrxD,SAAS36B,GACPS,KAAK47S,yBAA2B,KAChC1hS,MAAMggB,KAAO36B,EACbS,KAAK47S,yBAA2B,MAElCj8S,qBAAqBwwB,GACnB,OAAOnwB,KAAKkE,QAAQ6qF,SAAS,QAAS5+D,IAAU0vR,GAElDlgT,wBAAwBw6S,GACtB,OAAOn6S,KAAKkE,QAAQ6qF,SAAS,WAAYorN,EAASzkO,YAAcmqO,GAElElgT,gBACEK,KAAKkE,QAAQ8rF,iBAEfrwF,oBACEK,KAAKkE,QAAQ8oF,oBAGfrtF,gBAAgBisE,EAAOm0O,GACrB,MAAM9B,EAAaj+S,KAAKgkB,OAAShkB,KAAKkE,QAAQ6qF,SAASgxN,EAAW,MAClE,GAAI9B,EAAY,CACd,IAAK,MAAM7D,KAAc6D,EAAY,CACnC,MAAMzrO,EAAS5G,EAAMiB,QAAQutO,EAAW2D,qBAAqBgC,IAC7D,GAAIvtO,EAAQ4nO,EAAWgE,WAAW2B,EAAWvtO,GAE/CxyE,KAAKgtF,qBAITrtF,kBAAkBogT,GAGhB//S,KAAKhB,SAAQo7S,IACX,IAAI5oO,EAAMwuO,EAAuBC,EACjC,OAAO7F,EAAWgE,WAAW2B,GAAYvuO,GAAQwuO,GAAyBC,EAAyB7F,EAAW2F,MAAgB,MAAQE,SAAgC,OAAS,EAAIA,EAAuBt1S,MAAQ,MAAQq1S,SAA+B,EAAIA,EAAwB5F,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAW8F,QAAQH,MAAgB,MAAQvuO,SAAc,EAAIA,EAAO4oO,EAAW2F,EAAY,UAE1a//S,KAAKgtF,oBAEPrtF,gBACEK,KAAKmgT,iBAGT,OAAOL,OAQT,MAAMM,WAA0BlU,GAAM,CAACgM,GAAuB6C,KAA8BzkS,IAE1F,MAAM8pS,UAA0B9pS,GAChC,OAAO8pS,OAMT,MAAMC,WAAsCnU,GAAM,CAAC2P,GAAmC+D,KAA8BtpS,IAElH,MAAM+pS,UAAsC/pS,EAC1CuL,2BACE,MAAO,CACL6kE,KAAM,KACNnM,WAAY6lO,KAIlB,OAAOC,OAGT,MAAMC,WAA4BpU,GAAM,CAAC6O,KAA8BzkS,IACrE,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMyyS,UAA4BhqS,EAChC+iE,oBACE,MAAO,CAAC,CACN50E,KAAM,YACN+mC,QAAS,CAAC3lC,EAAGye,IAAMze,IAAMye,EACzBs0D,QAAS,OACR,CACDn0E,KAAM,UACN+mC,QAAS,CAAC3lC,EAAGye,IAAMze,IAAMye,EACzBs0D,QAAS,QAIbj5E,WAAW4W,EAAOhX,EAAO47S,GACvB,IAAIrD,EACJ,IAAInqM,EAAS,MACb,GAAIp3F,IAAU,aAAeA,IAAU,UAAW,CAChD,IAAIshS,EACJ,MAAM1nR,EAAQw8Q,GAAaptS,EAAOq9S,IAAkBr9S,GAASs4S,EAAmB73S,KAAKq1S,cAAgB,MAAQwC,SAA0B,OAAS,EAAIA,EAAiBhrO,QAAQttE,GAC7K,GAAI4wB,EAAOw9E,EAAS,KACpBpuG,EAAQ4wB,GAAS5wB,EAEnBk2S,EAAW2I,WAAWv3S,KAAK7G,KAAMuW,EAAOhX,EAAO47S,EAAY,MAC3D,GAAIxtM,IAAW3tG,KAAKurG,QAAQ6zM,uBAAyBtH,EAAwB93S,KAAKo1S,mBAAqB,MAAQ0C,SAA+B,GAAKA,EAAsBpC,eAAgB,CACvL,IAAI6K,GAEHA,EAAyBvgT,KAAKo1S,mBAAqB,MAAQmL,SAAgC,OAAS,EAAIA,EAAuBvzN,qBAIpIrtF,cACE81S,EAAWa,YAAYzvS,KAAK7G,MAG5BA,KAAKo+S,WAAW,YAAap+S,KAAK0R,IAAI,cACtC1R,KAAKo+S,WAAW,UAAWp+S,KAAK0R,IAAI,YAItC/R,uBAEE,IAAI6gT,UACFA,EAASC,QACTA,GACEzgT,KAAKi7S,SACT,GAAIuF,IAAc,OAAS7T,GAAa6T,EAAW5D,IAAiB,CAClE,IAAI8D,EACJ,MAAMpB,GAAYoB,EAAoB1gT,KAAKq1S,cAAgB,MAAQqL,SAA2B,OAAS,EAAIA,EAAkB7zO,QAAQ2zO,GACrI,GAAIlB,EAAUt/S,KAAKi7S,SAASuF,UAAYlB,EAE1C,GAAImB,IAAY,OAAS9T,GAAa8T,EAAS7D,IAAiB,CAC9D,IAAI+D,EACJ,MAAMrB,GAAYqB,EAAoB3gT,KAAKq1S,cAAgB,MAAQsL,SAA2B,OAAS,EAAIA,EAAkB9zO,QAAQ4zO,GACrI,GAAInB,EAAUt/S,KAAKi7S,SAASwF,QAAUnB,GAK1CkB,cAAcA,GACZxgT,KAAKo+S,WAAW,YAAaoC,GAE/BA,gBACE,MAAMA,EAAYxgT,KAAK0R,IAAI,aAE3B,OAAQ8uS,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU71S,KAAO,KAAO61S,EAAY,KAEpGC,YAAYA,GACVzgT,KAAKo+S,WAAW,UAAWqC,GAE7BA,cACE,MAAMA,EAAUzgT,KAAK0R,IAAI,WAEzB,OAAQ+uS,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ91S,KAAO,KAAO81S,EAAU,MAG9F,OAAOH,OAGT,MAAMM,GAAW,IAAI/hS,IAIrB,MAAMgiS,WAAiC3U,GAAM,CAAC6P,GAA8B6D,KAA8BtpS,IAExG,MAAMuqS,UAAiCvqS,EACrC3W,cACEua,SAASrb,WACTmB,KAAKg8S,uBAAyB,IAAIn9R,IAClC7e,KAAKi8S,0BAA4B,MAEnCp6R,2BACE,MAAO,CACL04D,WAAY+lO,GACZp8S,QAAS,CACP6nF,UAAW,CAAC,CACV55E,SAAU,YACVo5E,OAAQ,OACP,CACDp5E,SAAU,UACVo5E,OAAQ,UAKhB5rF,wBAAwBwwB,GACtB,OAAOnwB,KAAKkE,QAAQ6qF,SAAS,UAAW5+D,IAAUywR,GAEpDjhT,wBAAwBwwB,GACtB,OAAOnwB,KAAKkE,QAAQ6qF,SAAS,YAAa5+D,IAAUywR,GAEtD1mR,SAAS36B,GACPS,KAAKi8S,0BAA4B,KACjC/hS,MAAMggB,KAAO36B,EACbS,KAAKi8S,0BAA4B,MAEnCt8S,gBACEK,KAAKkE,QAAQ8rF,iBAEfrwF,oBACEK,KAAKkE,QAAQ8oF,oBAEfrtF,gBACEK,KAAKmgT,iBAGT,OAAOU,OAST,MAAMC,WAAgC5U,GAAM,CAAC0Q,GAAgB3C,KAA8B3jS,IACzF,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMizS,UAAgCxqS,EACpCgkS,eACE,IAAIyG,EAAuB9K,EAC3B,OAAQ8K,GAAyB9K,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAcd,gBAAgB6L,qBAAqBhhT,SAAW,MAAQ+gT,SAA+B,EAAIA,EAAwB/gT,KAAKihT,mBAEvPthT,aAAagnF,EAAc,OAEzB3mF,KAAKihT,mBAAqBjhT,KAAKs6S,SAC/BpgS,MAAMs8R,aAAa7vN,GAErBhnF,WAAW+iF,EAASzjF,EAAKM,EAAO2/S,EAAc3oS,GAE5C,GAAItX,IAAQ,KAAM,CAChB,IAAIo7S,GACHA,EAAiBr6S,KAAKs6S,YAAc,MAAQD,SAAwB,OAAS,EAAIA,EAAer7S,SAAQo7S,GAAcA,EAAW9oS,IAAI,UAAW/R,KAEnJk2S,EAAW3yN,WAAWj8E,KAAK7G,KAAM0iF,EAASzjF,EAAKM,EAAO2/S,EAAc3oS,GAEtE5W,KAAKomF,EAAQ,KAAMjzC,EAAO,MACxB,MAAMmzC,EAAOwvN,EAAWxvN,KAAKp/E,KAAK7G,KAAM+lF,EAAOjzC,GAG/C,GAAI9B,GAAaphC,SAASkjC,KAAUA,EAAKouQ,uBAAyBlwQ,GAAaphC,SAASkjC,GAAO,CAE7FmzC,EAAKg7N,mBAAqBjhT,KAAKs6S,SAEjC,OAAOr0N,GAGX,OAAO66N,OAST,MAAMK,WAAiCjV,GAAM,CAAC0Q,KAAiBtmS,IAC7D,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMszS,UAAiC7qS,EACrC8qS,mBACE,OAAOphT,KAAKurG,QAAQ6pM,gBAAgBiM,wBAAwBrhT,MAE9DshT,mBACE,OAAOthT,KAAKurG,QAAQ6pM,gBAAgBmM,wBAAwBvhT,MAE9DL,eACE,MAAM01S,EAAar1S,KAAKq1S,WAGxB,GAAIr1S,KAAKohT,aAAc,CACrBphT,KAAKohT,aAAapiT,SAAQu9S,GAAclH,EAAW2G,uBAAuBj9R,IAAIw9R,KAEhF,GAAIv8S,KAAKshT,aAAc,CACrBthT,KAAKshT,aAAatiT,SAAQu9S,GAAclH,EAAW2G,uBAAuBj9R,IAAIw9R,KAEhF9G,EAAWe,aAAa3vS,KAAK7G,OAGjC,OAAOmhT,OAOT,MAAMK,WAA2BtV,GAAM,CAAC0Q,GAAgBkE,GAAyBK,KAA2B7qS,IAE1G,MAAMkrS,UAA2BlrS,GACjC,OAAOkrS,OAMT,MAAMC,WAA4BvV,GAAM,CAACiQ,GAAyByD,KAA8BtpS,IAE9F,MAAMmrS,UAA4BnrS,EAChCuL,2BACE,MAAO,CACL04D,WAAYinO,IAGhB7hT,cACE,IAAIq4S,GACHA,EAAwBh4S,KAAKm1S,mBAAqB,MAAQ6C,SAA+B,OAAS,EAAIA,EAAsB0J,gBAAgB1hT,KAAM,SAErJL,gBACE,IAAIgiT,EACJ3hT,KAAK86S,qBACJ6G,EAAyB3hT,KAAKm1S,mBAAqB,MAAQwM,SAAgC,OAAS,EAAIA,EAAuBD,gBAAgB1hT,KAAM,UAG1J,OAAOyhT,OAkCT,MAAMG,WAA+B1V,GAAM,CAACwQ,GAA4BkD,KAA8BtpS,IACpG,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM+zS,UAA+BtrS,EACnCuL,2BACE,MAAO,CACL04D,WAAYykO,IAGhBr/S,cACE,IAAIq4S,GACHA,EAAwBh4S,KAAKm1S,mBAAqB,MAAQ6C,SAA+B,OAAS,EAAIA,EAAsB0J,gBAAgB1hT,KAAM,YAErJL,gBACE,IAAIgiT,GACHA,EAAyB3hT,KAAKm1S,mBAAqB,MAAQwM,SAAgC,OAAS,EAAIA,EAAuBD,gBAAgB1hT,KAAM,YAExJL,MAAMkiT,GACJ,IAAIC,EACJrM,EAAWh3P,MAAM53C,KAAK7G,KAAM6hT,IAC3BC,EAAyB9hT,KAAKm1S,mBAAqB,MAAQ2M,SAAgC,OAAS,EAAIA,EAAuBC,kBAAkB,aAGtJ,OAAOH,OAGT,MAAMI,WAAsB9V,GAAM,GAAIj/Q,MACtC,MAAMg1R,WAA2B/V,GAAM,GAAIloO,MAO3C,MAAMk+O,WAA6BhW,GAAM,CAAC8V,GAAeC,GAAoBtmO,KAAQrlE,IACnF,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMq0S,UAA6B5rS,EACjC3W,cACEua,SAASrb,WAITmB,KAAK42S,gBAAkB,MAEzBP,2BACE,OAAO,MAET8L,sBACE,OAAQniT,KAAKoiT,0BAA4BpiT,KAAKk2S,sBAEhDv2S,UAAUwY,EAAS,IAWjBnY,KAAKoiT,yBAA2B,MAChCpiT,KAAKqiT,oBAAsB,MAC3BriT,KAAK81S,cAAgB,MACrB91S,KAAKk2S,sBAAwB,MAE7Bl2S,KAAKw4S,iBAAmB,qBAAsBrgS,EAASA,EAAOqgS,iBAAmB,QACjF/C,EAAWj6R,UAAU3U,KAAK7G,KAAMmY,GAChCnY,KAAKsiT,qBAAuB,yBAA0BnqS,EAASA,EAAOmqS,qBAAuB,KAC7FtiT,KAAK+4S,oBAAsB,wBAAyB5gS,EAASA,EAAO4gS,oBAAsB,MAG5Fp5S,gBAAgBisE,IAEhBjsE,qBACAA,+BAA+B4iT,EAAS/7R,EAAMjL,GAE5CiL,KAAQjL,GAGV5b,YAAYisE,IAEZjsE,YAAYisE,IACZjsE,oBACE,MAAM,IAAI+Q,MAAM,0BAGlB/Q,gBACE,MAAM,IAAI+Q,MAAM,2BAGpB,OAAOwxS,OAGT,MAAMM,WAAyBtW,GAAM,GAAIloO,MAKzC,MAAMy+O,WAAkCvW,GAAM,CAACgW,GAAsBzK,GAA+B+K,GAAkB7mO,KAAQrlE,IAC5H,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM40S,UAAkCnsS,EACtCuL,2BACE,MAAO,CACL8pD,IAAK,GACL0pO,WAAY,GACZF,gBAAiB,GACjBG,cAAe,GACfF,gBAAiB,GACjBG,qBAAsB,GACtBmN,gBAAiBlB,GACjBmB,qBAAsBxD,GACtByD,mBAAoB5D,GACpB6D,qBAAsBvC,GACtBwC,mBAAoB1C,GACpB2C,gBAAiBtB,GACjBuB,qBAAsBlD,GACtBmD,mBAAoBrB,GACpBsB,qBAAsBrC,GACtBsC,0BAA2B9C,GAC3B+C,gBAAiB,KACjBC,cAAe,KACfC,iBAAkB,KAClBC,WAAY,KACZC,cAAe,MAKnB7jT,UAAUwY,EAAS,IAEjBnY,KAAKyjT,aAAe,IAAI5kS,IAUxB7e,KAAKo/S,mBAAqB,MAC1Bp/S,KAAKsiT,qBAAuB,KAC5BtiT,KAAK0jT,QAAUnzS,QAAQC,UACvBilS,EAAWj6R,UAAU3U,KAAK7G,KAAMmY,GAEhCnY,KAAKu4S,gBAAkB,IAAIv4S,KAAKu1S,qBAAqBh7N,WAAW,CAC9Dg/N,yBAA0Bv5S,KAAKu5S,2BAEjCv5S,KAAKu4S,gBAAgBhtM,QAAUvrG,KAC/B,MAAMqjT,cACJA,EAAaE,WACbA,EAAUD,iBACVA,EAAgBE,cAChBA,EAAaJ,gBACbA,GACEpjT,KACJ,MAAM2jT,EAAgBzjT,QAAQmjT,GAAiBE,GAAcD,GAAoBE,GAAiBJ,GAClG,GAAIO,EAAe,CACjB3jT,KAAK4jT,eAAe,CAClBP,cAAAA,EACAE,WAAAA,EACAD,iBAAAA,EACAE,cAAAA,EACAJ,gBAAAA,WAEKpjT,KAAKqjT,qBACLrjT,KAAKujT,kBACLvjT,KAAKsjT,wBACLtjT,KAAKwjT,qBACLxjT,KAAKojT,oBACP,CAELpjT,KAAKo7S,uBAGTz7S,YACE,IAAIkkT,EAAgBC,EAAqB9F,EAAqB+F,EAAmBC,EAAuBp+M,EACxG,MAAM7lG,EAAKC,MACV6jT,EAAiB9jT,EAAGs1S,cAAgB,MAAQwO,SAAwB,OAAS,EAAIA,EAAe9nS,WAChG+nS,EAAsB/jT,EAAGq1S,mBAAqB,MAAQ0O,SAA6B,OAAS,EAAIA,EAAoB/nS,WACpHiiS,EAAsBj+S,EAAGo1S,mBAAqB,MAAQ6I,SAA6B,OAAS,EAAIA,EAAoBjiS,WACpHgoS,EAAoBhkT,EAAGu1S,iBAAmB,MAAQyO,SAA2B,OAAS,EAAIA,EAAkBhoS,WAC5GioS,EAAwBjkT,EAAGw1S,wBAA0B,MAAQyO,SAA+B,OAAS,EAAIA,EAAsBjoS,UAChIhc,EAAGw4S,gBAAgBx8R,WAClB6pF,EAAU7lG,EAAG4rE,OAAS,MAAQi6B,SAAiB,OAAS,EAAIA,EAAQ7pF,UACrE05R,EAAWz5R,UAAUnV,KAAK7G,MAQ5BL,qBAAqBu6B,GACnBl6B,KAAKqiT,oBAAsB,KAC3B,GAAInoR,EAAKmpR,cAAe,CACtBrjT,KAAKu1S,qBAAqBr7Q,KAAOA,EAAKmpR,cAExC,GAAInpR,EAAKspR,cAAe,CACtBxjT,KAAKs1S,cAAcp7Q,KAAOA,EAAKspR,cAEjC,GAAItpR,EAAKkpR,gBAAiB,CACxBpjT,KAAKm1S,gBAAgBj7Q,KAAOA,EAAKkpR,gBAEnC,GAAIlpR,EAAKqpR,WAAY,CACnBvjT,KAAKq1S,WAAWn7Q,KAAOA,EAAKqpR,WAE9B,GAAIrpR,EAAK+pR,UAAW,CAClBjkT,KAAKq1S,WAAWn7Q,KAAOA,EAAK+pR,UAE9B,GAAI/pR,EAAKopR,iBAAkB,CACzBtjT,KAAKo1S,gBAAgBl7Q,KAAOA,EAAKopR,uBAE7BtjT,KAAKkkT,aACXlkT,KAAKqiT,oBAAsB,MAC3B,OAIF1iT,yBACQK,KAAKo8P,cAEX,IAAKp8P,KAAKkc,YAAalc,KAAKutB,QAAQ,QAEtC5tB,iBAAiBisE,GACf,MAAM5zD,EAAKw6D,IACTA,EAAOwiO,WAAWh1S,MAClBwyE,EAAO8jO,eAET,GAAI1qO,EAAM8E,SAAU,CAClB9E,EAAM8E,SAASQ,SAASl5D,OACnB,CACL4zD,EAAM5sE,QAAQgZ,IAGlBrY,mBAAmBisE,GACjB,MAAM5zD,EAAKw6D,IACTA,EAAOgkO,eACPhkO,EAAOwiO,WAAWh1S,OAEpB,GAAI4rE,EAAM8E,SAAU,CAClB9E,EAAM8E,SAASQ,UAAS5pB,IAEtB,GAAIA,IAASskB,EAAM8E,SAAU14D,EAAGsvC,UAE7B,CACLskB,EAAM5sE,QAAQgZ,IAKlBrY,0BAA0B8E,EAAM0T,GAE9B,MAAMqiE,GAAcriE,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOqiE,aAAex6E,KAAK,GAAGyE,eAElG,IAAI81E,EAAapiE,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOoiE,WACxE,IAAKA,EAAY,CAGf,GAAIv6E,KAAKsd,0BAA0B,GAAG7Y,iBAAsB+1E,EAAWl9D,0BAA0Bi9D,WAAY,CAC3GA,EAAaC,EAAWl9D,0BAA0Bi9D,eAG/C,CACHA,EAAav6E,KAAK,GAAGyE,gBAGzB,MAAO,CACL+1E,WAAAA,EACAD,WAAAA,GAGJ86N,iBACE,OAAOr1S,KAAKmkT,YAEdxkT,cAAc01S,GACZr1S,KAAKq1S,WAAaA,EAEpBA,eAAeA,GACb,MAAMt1S,EAAKC,KACX,MAAM2rE,IACJA,GACE5rE,EACJ,MAAMkgM,EAAWlgM,EAAGokT,YACpBpkT,EAAGqkT,YAAYnkH,GACf,KAAMo1G,aAAsBzuM,IAAQ,CAClC,MAAMpsB,WACJA,EAAUD,WACVA,GACEx6E,EAAGskT,0BAA0B,QAAShP,GAC1CA,EAAa,IAAI76N,EAAWxpC,GAAa55B,OAAO,CAC9CmjE,WAAAA,EACAgxB,QAASxrG,EACT4rE,IAAAA,GACC0pO,QACE,CACLA,EAAW9pM,QAAUxrG,EACrB4rE,EAAIo6B,SAASsvM,GACbt1S,EAAGukT,iBAAiBjP,GAEtB,GAAIp1G,GAAYt0H,EAAIk6B,SAASo6F,GAAW,CACtCt0H,EAAIm6B,YAAYm6F,GAChBlgM,EAAGwkT,mBAAmBtkH,GACtB,MAAM46G,sBACJA,GACE56G,EAEJ46G,EAAsB77S,SAAQo7S,IAC5B,MAAMoK,EAAWpK,EAAWjqR,MAC5B,GAAIq0R,EAAU,CACZ,MAAMC,EAAWpP,EAAWxoO,QAAQ23O,EAAS75S,IAC7C,GAAI85S,EAAU,CACZrK,EAAWjqR,MAAQs0R,EAEnB5J,EAAsBvhS,OAAO8gS,QAInCn6G,EAAS66G,oBAEXzF,EAAWL,WAAWj1S,GACtBA,EAAGokT,YAAc9O,EACjBt1S,EAAG2kT,YAAYrP,GACft1S,EAAGwtB,QAAQ,mBAAoB,CAC7Bq+C,MAAOypO,IAKXF,sBACE,OAAOn1S,KAAK2kT,iBAEdhlT,mBAAmBw1S,GACjBn1S,KAAKm1S,gBAAkBA,EAEzBA,oBAAoBA,GAClB,MAAMp1S,EAAKC,KACX,MAAM2rE,IACJA,GACE5rE,EACJ,MAAMkgM,EAAWlgM,EAAG4kT,iBACpB5kT,EAAGqkT,YAAYnkH,GACf,GAAIA,GAAYt0H,EAAIk6B,SAASo6F,GAAW,CACtCt0H,EAAIm6B,YAAYm6F,GAChBlgM,EAAGwkT,mBAAmBtkH,GAExB,KAAMk1G,aAA2BvuM,IAAQ,CACvC,MAAMpsB,WACJA,EAAUD,WACVA,GACEx6E,EAAGskT,0BAA0B,aAAclP,GAC/CA,EAAkB,IAAI36N,EAAWxpC,GAAa55B,OAAO,CACnDmjE,WAAAA,EACAgxB,QAASxrG,EACT4rE,IAAAA,GACCwpO,QACE,CACLA,EAAgB5pM,QAAUxrG,EAC1B4rE,EAAIo6B,SAASovM,GACbp1S,EAAGukT,iBAAiBnP,GAEtBA,EAAgBH,WAAWj1S,GAC3BA,EAAG4kT,iBAAmBxP,EACtBp1S,EAAG2kT,YAAYvP,GACfp1S,EAAGwtB,QAAQ,wBAAyB,CAClCq+C,MAAOupO,IAKXG,oBACE,OAAOt1S,KAAK4kT,eAEdjlT,iBAAiB21S,GACft1S,KAAKs1S,cAAgBA,EAEvBA,kBAAkBA,GAChB,MAAMv1S,EAAKC,KACX,MAAM2rE,IACJA,GACE5rE,EACJ,MAAMkgM,EAAWlgM,EAAG6kT,eACpB7kT,EAAGqkT,YAAYnkH,GACf,KAAMq1G,aAAyB1uM,IAAQ,CACrC,MAAMpsB,WACJA,EAAUD,WACVA,GACEx6E,EAAGskT,0BAA0B,WAAY/O,GAC7CA,EAAgB,IAAI96N,EAAWxpC,GAAa55B,OAAO,CACjDmjE,WAAAA,EACAgxB,QAASxrG,EACT4rE,IAAAA,GACC2pO,QACE,CACLA,EAAc/pM,QAAUxrG,EACxB4rE,EAAIo6B,SAASuvM,GACbv1S,EAAGukT,iBAAiBhP,GAEtB,GAAIr1G,GAAYt0H,EAAIk6B,SAASo6F,GAAW,CACtCt0H,EAAIm6B,YAAYm6F,GAChBlgM,EAAGwkT,mBAAmBtkH,GACtB,MAAM46G,sBACJA,GACE56G,EAEJ46G,EAAsB77S,SAAQo7S,IAC5B,MAAMyK,EAAczK,EAAWD,SAC/B,GAAI0K,EAAa,CACf,MAAMC,EAAcxP,EAAczoO,QAAQg4O,EAAYl6S,IACtD,GAAIm6S,EAAa,CACf1K,EAAWD,SAAW2K,EAEtBjK,EAAsBvhS,OAAO8gS,QAInCn6G,EAAS08G,uBAEXrH,EAAcN,WAAWj1S,GACzBA,EAAG6kT,eAAiBtP,EACpBv1S,EAAG2kT,YAAYpP,GACfv1S,EAAGwtB,QAAQ,sBAAuB,CAChCq+C,MAAO0pO,IAKXF,sBACE,OAAOp1S,KAAK+kT,iBAEdplT,mBAAmBy1S,GACjBp1S,KAAKo1S,gBAAkBA,EAEzBA,oBAAoBA,GAClB,MAAMr1S,EAAKC,KACX,MAAMigM,EAAWlgM,EAAGglT,iBACpBhlT,EAAGqkT,YAAYnkH,GACf,KAAMm1G,aAA2BxuM,IAAQ,CACvC,MAAMpsB,WACJA,EAAUD,WACVA,GACEx6E,EAAGskT,0BAA0B,aAAcjP,GAC/CA,EAAkB,IAAI56N,EAAWxpC,GAAa55B,OAAO,CACnDmjE,WAAAA,EACAgxB,QAASxrG,EACT4rE,IAAK5rE,EAAG4rE,KACPypO,QACE,CACLA,EAAgB7pM,QAAUxrG,EAC1BA,EAAG4rE,IAAIo6B,SAASqvM,GAChBr1S,EAAGukT,iBAAiBlP,GAEtBr1S,EAAGglT,iBAAmB3P,EACtBr1S,EAAG2kT,YAAYtP,GACfr1S,EAAGwtB,QAAQ,wBAAyB,CAClCq+C,MAAOwpO,IAKXG,2BACE,OAAOv1S,KAAKglT,sBAEdrlT,wBAAwB41S,GACtBv1S,KAAKu1S,qBAAuBA,EAE9BA,yBAAyBA,GACvB,MAAMx1S,EAAKC,KACX,MAAMigM,EAAWlgM,EAAGilT,sBACpBjlT,EAAGqkT,YAAYnkH,GACf,KAAMs1G,aAAgC3uM,IAAQ,CAC5C,IAAIq+M,EAAuBC,EAE3B,MAAM1qO,IAAeyqO,EAAwB1P,KAA0B,MAAQ0P,SAA+B,OAAS,EAAIA,EAAsBzqO,aAAez6E,EAAGojT,0BAEnK,MAAM5oO,IAAe2qO,EAAyB3P,KAA0B,MAAQ2P,SAAgC,OAAS,EAAIA,EAAuB3qO,aAAeC,EAAWl9D,0BAA0Bi9D,YAAcx6E,EAAG+iT,mBACzNvN,EAAuB,IAAI/6N,EAAWxpC,GAAa55B,OAAO,CACxDmjE,WAAAA,EACAgxB,QAASxrG,EACT4rE,IAAK5rE,EAAG4rE,KACP4pO,QACE,CACLx1S,EAAG4rE,IAAIo6B,SAASwvM,GAElBA,EAAqBP,WAAWj1S,GAChCA,EAAGilT,sBAAwBzP,EAC3Bx1S,EAAG2kT,YAAYnP,GACfx1S,EAAGwtB,QAAQ,6BAA8B,CACvCq+C,MAAO2pO,IAKXtF,eACE,OAAOjwS,KAAKmlT,WAAanlT,KAAKu4S,gBAEhCtI,aAAaA,GACXjwS,KAAKmlT,UAAYlV,EAEnBmV,wBACE,OAAOplT,KAAKiwS,SAIdtwS,eAAewwB,GACbnwB,KAAKq1S,WAAWt2R,IAAIoR,GACpB,OAAOnwB,KAAKo8P,cAEdz8P,oBAAoBy6S,GAClBp6S,KAAKm1S,gBAAgBp2R,IAAIq7R,GACzB,OAAOp6S,KAAKo8P,cAEdz8P,kBAAkBw6S,GAChBn6S,KAAKs1S,cAAcv2R,IAAIo7R,GACvB,OAAOn6S,KAAKo8P,cAEdz8P,oBAAoB48S,GAClBv8S,KAAKo1S,gBAAgBr2R,IAAIw9R,GACzB,OAAOv8S,KAAKo8P,cAMdz8P,sBACE,IAAKK,KAAKqlT,qBAAsB,CAC9BrlT,KAAK+c,WAAW,CACd/E,GAAI,cACJ8E,MAAO,MAIbuoS,2BACE,OAAOrlT,KAAKuoL,WAAW,eAEzB5oL,uBACEK,KAAK0nB,aAAa,eAIpB/nB,oBACE,GAAIK,KAAKo/S,mBAAoB,OAAOp/S,KAAK0jT,QACzC,OAAO1jT,KAAK0jT,QAAU1jT,KAAKslT,gBAE7B3lT,sBACE,MAAMI,EAAKC,KACXD,EAAGq/S,mBAAqB,KAExBr/S,EAAGwlT,6BACG7J,GAAQ,GACd,IAAK37S,EAAGmc,YAAa,CAEnB,IAAK,MAAMs2D,KAAUzyE,EAAG0jT,aAAc,CACpCjxO,EAAOgzO,uBAET,MAAMrD,gBACJA,EAAeG,qBACfA,GACEviT,EAEJ,MAAM0lT,EAAgBtD,GAAmBG,EAEzCviT,EAAGo1S,gBAAgBuQ,gBACnB3lT,EAAGq1S,gBAAgBsQ,gBACnB3lT,EAAGqiT,yBAA2B,KAC9BriT,EAAGm2S,sBAAwB,MAC3Bn2S,EAAGq/S,mBAAqB,MACxB,MAAM9wO,EAAS,CAACvuE,EAAGo1S,gBAAiBp1S,EAAGq1S,gBAAiBr1S,EAAGs1S,WAAYt1S,EAAGu1S,cAAev1S,EAAGw1S,sBAC5FjnO,EAAOtvE,SAAQ4sE,IACb,IAAI+5O,EACJ,OAAQA,EAAwB/5O,EAAMg6O,qBAAuB,MAAQD,SAA+B,OAAS,EAAIA,EAAsB9+S,KAAK+kE,MAE9I7rE,EAAG+1S,cAAgB,KAEnB/1S,EAAGwtB,QAAQ,UAAW,CACpB40R,gBAAAA,EACA0D,aAAc,OAGhB,GAAIJ,EAAe,CACjB,IAAK,MAAMjzO,KAAUzyE,EAAG0jT,aAAc,CACpCjxO,EAAOmtO,oBAAoB,WAExB,CAIL,IAAK,MAAMntO,KAAUzyE,EAAG0jT,aAAc,CACpCjxO,EAAO6lB,WAAW,MAClB7lB,EAAOmtO,sBAGT,IAAK,MAAMntO,KAAUzyE,EAAG0jT,aAAc,CACpCjxO,EAAO8lB,SAAS,MAAO,OAG3Bv4F,EAAG+1S,cAAgB,MACnB/1S,EAAG0jT,aAAahlQ,QAEhB1+C,EAAGwtB,QAAQ,aACX+gD,EAAOtvE,SAAQ4sE,IACb,IAAIk6O,EACJ,OAAQA,EAAwBl6O,EAAMm6O,oBAAsB,MAAQD,SAA+B,OAAS,EAAIA,EAAsBj/S,KAAK+kE,MAK7I7rE,EAAGwtB,QAAQ,mBACX,OAAO,MAGX5tB,uBACE,OAAOK,KAAKo8P,cAGdz8P,WAAW6yE,GACTxyE,KAAKyjT,aAAa1kS,IAAIyzD,GACtBxyE,KAAKo7S,sBAGPz7S,0BACE,OAAO,KAITA,SACE,OAAOK,KAAK2rE,IAKdA,QAAQA,GACNA,EAAM3rE,KAAKgmT,KAAO,IAAI3uM,GAAuBrmE,GAAa55B,OAAO,CAC/DwoD,SAAU,MACT+L,IACHA,EAAIx8C,GAAG,CAEL82R,cAAe/9R,UAEbyjD,EAAIhK,gBACE3hE,KAAKo8P,cACX,IAAKp8P,KAAKkc,YAAa,CACrByvD,EAAI0pB,SACJr1F,KAAKutB,QAAQ,0BAKrBo+C,UACE,OAAO3rE,KAAKgmT,KAGdrmT,gBACE,OAAQK,KAAKqlT,uBAAyBrlT,KAAKo/S,oBAAsBp/S,KAAKoiT,0BAI1EK,EAA0BhmO,aAAe,KACzC,OAAOgmO,OAmBT,MAAMyD,WAAuBniF,GAE3Bh2N,mBACE,MAAO,iBAETlB,kBACE,MAAO,WAETs5S,2BACE,OAAO,KAET9sO,oBACE,MAAO,CAMP,CACE50E,KAAM,mBACNG,aAAc,IAGlBq9C,sBACE,MAAO,CAKLt5B,IAAK,KAKLtU,IAAK,KAULgxB,KAAM,EAONiqK,UAAW,EACX/4L,MAAO,eACPtL,KAAM,cACNuiO,cAAe,KAEfxJ,WAAY,WACZrkO,SAASymT,EAAiBC,GACxB,MAAMC,EAAMF,EAAgBpmT,KAAKuW,OAC/BgwS,EAAMF,EAAgBrmT,KAAKuW,OAC7B,OAAO+vS,EAAMC,IAInB5mT,YACEua,MAAMsB,aAAa3c,WACnB,MAAMyrF,EAAStqF,KAAK87N,SACpB97N,KAAK87N,SAAW,IAAIvgN,IAAS+uE,EAAOzjF,KAAK7G,QAASub,GAEpD0gN,oBACE,MAAM5nN,IACJA,EAAGsU,IACHA,EAAG0c,KACHA,EAAIiqK,UACJA,GACEtvM,KAEJ,OAAOgxC,GAAamwD,kBAAkB,CACpCt0F,KAAM,WACNpI,KAAMzE,KAAKuW,MACXlC,IAAAA,EACAsU,IAAAA,EACA0c,KAAAA,EACAiqK,UAAAA,IAKJk3G,wBACE,MAAO,GAAGxmT,KAAKuW,YAEjB5W,YAAY2oB,EAAUw1R,GACpB,GAAIx1R,aAAoBm/D,GAAU,CAChCq2N,EAAex1R,EAAS2f,KACxB3f,EAAWA,EAASyhB,UAEtB,MAAM08Q,SAAqBzmT,KAAKi2N,KAAKywF,2BAA6B,SAAW1mT,KAAKi2N,KAAKywF,yBAA2B1mT,KAAKuvM,iBACrHhhJ,EAAan6C,KAAK4V,IAAI,GAAIy8R,GAC1BE,EAAUvyS,KAAKkxB,MAAMhd,EAAWimC,GAAcA,EAChD,OAAOo4P,EAAU,IAAM9mR,GAAW6J,uBAAuBo0Q,EAAcx1R,IAAa,GAStF3oB,iBAAgB6yE,OACdA,EAAMkyJ,SACNA,IAEA,MAAMnlO,EAAQizE,EAAOxyE,KAAKuW,OACxB1J,SAActN,EACdqnT,EAAgB/5S,IAAS,SAAWtN,EAAQA,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMwqC,UAChG+zQ,EAAejxS,IAAS,SAAW2lE,EAAOxyE,KAAKwmT,mBAAqBjnT,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM0oC,KAE1H,UAAW2+Q,IAAkB,SAAU,CACrC,OAAOliF,EAAW,GAAK,KAEzB,OAAO1kO,KAAK6wM,YAAY+1G,EAAe9I,IAK3C/9E,GAAYkC,mBAAmBikF,IAC/BA,GAAeh+S,OAAS,iBAYxB,MAAM2+S,WAA+B3tF,GACnCnrN,mBACE,MAAO,yBAETlB,kBACE,MAAO,mBAETo1C,sBACE,MAAO,CAEL/6C,MAAO,MACPmvC,MAAO,SACPylL,SAAU,MACVC,UAAW,MACXrB,OAAQ,MACRphL,SAAU,EACV2hL,QAAS,0BACTyE,SAAU,EACRltJ,OAAAA,MACD,CACC/xD,IAAK,IACLP,MAAO,CACLu8H,SAAU,EACVqqK,yBAA0B,EAC1BC,SAAUv0O,EAAOw0O,cAAgB,WAKzCrnT,aAAY6yE,OACVA,EAAMriD,MACNA,IAGAA,EAAM21B,iBACN0sB,EAAOw0O,YAAcx0O,EAAOw0O,cAAgB,OAAS,OAAS,SAGlEjnF,GAAYkC,mBAAmB4kF,IAC/BA,GAAuB3+S,OAAS,yBAsBhC,MAAM++S,WAA2B/tF,GAC/BnrN,mBACE,MAAO,qBAETlB,kBACE,MAAO,eAETwsE,oBACE,MAAO,CAAC,iBAAkB,WAAY,WAAY,YAAa,aAAc,qBAAsB,sBAErGp3B,sBACE,MAAO,CAULilQ,UAAW,KAMXC,eAAgB,KAMhBC,SAAU,KAOVC,SAAU,MAMVC,WAAY,KAOZC,mBAAoB,GAMpBC,mBAAoB,KACpBjxS,MAAO,OACP8rN,WAAY,MACZn7N,MAAO,IACP+zN,QAAS,sBACTP,OAAQhoN,EAAcoC,UAAY,MAAQ,QAG9CnV,aAAa4b,GACXrB,MAAMsB,aAAaD,GACnBvb,KAAKynT,gBAAkB,IAAIh0F,GAAgB,CACzCh9K,QAASz2C,KAAKi2N,KAAKx/K,UAGvB92C,YACEua,MAAM8B,YACNhc,KAAKynT,gBAAgB1rS,UAEvBpc,YAAY+nT,GACV,MAAMC,EAAoB3nT,KAAKi2N,KAAK0xF,mBAAqB,GACvD9hR,EAAQ8hR,EAAkBtiT,MAAM,MAChCuiT,EAAU/hR,EAAM/mC,OAAS,EAAI+mC,EAAM,GAAK8hR,EACxCE,EAASz9S,EAAa09S,UAAU,CAACF,GAAW,GAAIF,GAAa,KAC/D,OAAO7hR,EAAM/mC,OAAS,EAAI+mC,EAAM,GAAK,KAAOgiR,EAASA,EAEvDloT,SAASq0N,EAAgBz0N,GACvB,MAAMQ,EAAKC,MACTknT,UACEA,EAASG,SACTA,EAAQD,SACRA,EAAQD,eACRA,EAAclxF,KACdA,GACEl2N,GACJgoT,SACEA,EAAQC,uBACRA,EAAyB,GAAEC,yBAC3BA,GACEhyF,EACJiyF,SAAmBb,IAAa,SAAWA,EAAW,OACtDrjS,EAAQmjS,GAAkBnzF,EAAeqhF,WAAW8S,UAAU,CAC5DC,mBAAoBnyF,EAAKoyF,sBACzBr0F,eAAAA,EACA7mL,UAAW46Q,EAAS56Q,UACpBC,QAAS26Q,EAAS36Q,UACjBtuC,OACL,IAAIg1N,EACJ,GAAIozF,GAAalzF,EAAes0F,QAAU,MAAO,CAC/C,GAAIt0F,EAAeF,SAAU,CAC3BA,EAAWE,EAAeF,aACrB,CAEL,MAAM4zF,SAAmBR,IAAc,SAAWA,EAAYlzF,EAAes0F,OAAS/oT,GAASQ,EAAGynT,oBAAsBjoT,EAAM0J,cAAgB++S,GAA0BC,GAA4B,GACpMn0F,EAAW4zF,GAAa3nT,EAAGwoT,YAAYb,GAEvC,GAAI5zF,IAAa4zF,EAAU97S,SAAS,KAAM,CAExC,IAAK7L,EAAGunT,YAAcvnT,EAAGunT,WAAW17S,SAAS87S,GAAY,CACvD5zF,GAAYk0F,KAKpB,MAAO,CACL9nS,MAAO,kBACPmnC,SAAU,CAAC6/P,GAAannT,EAAG0nT,gBAAgBe,kBAAkB,CAC3Dx0F,eAAAA,EACAH,SAAUG,EAAeH,SACzB33J,MAAO83J,EAAey0F,WACtBngK,QAAS0rE,EAAe1rE,QACxBwrE,SAAAA,EACAC,gBAAiBk0F,GAA4BjoT,KAAKuoT,YAAYN,KAC5DZ,GAAYF,GAAkBC,EAAW,CAC3C3mS,IAAK,KACL4mC,SAAU,CAAC,CACT5mC,IAAK,KACLxV,KAAM1L,GACL8nT,EAAW,CACZ5mS,IAAK,KACLP,MAAO,kBACPjV,KAAM+oN,EAAek0F,IACnB,KAAMf,EAAiB,CACzB1mS,IAAK,KACLP,MAAO,oBACPyoC,KAAM5oD,EAAGo7B,EAAE,oBAAqBnX,IAC9B,KAAMojS,EAAW,CACnB3mS,IAAK,KACLP,MAAO,kBACPyoC,KAAM5oD,EAAGqnT,SAASpzF,IAChB,OACFz0N,IAKRI,iBAAgBs2N,KACdA,EAAIzjJ,OACJA,EAAM8rJ,YACNA,EAAW/+N,MACXA,EAAKmlO,SACLA,IAEA,IAAIv4N,EACJ,GAAIqmE,EAAO6T,aAAc,CACvBl6E,EAAS,QACJ,GAAIu4N,EAAU,CACnBv4N,EAAS5M,MACJ,CACL,GAAIS,KAAKunT,oBAAsBtxF,EAAKzmD,UAAYxvK,KAAKunT,mBAAoB,CACvEjpF,EAAYj9N,MAAMm0M,SAAWygB,EAAKzmD,UAAY,GAAK,SAC9C,CACL8uD,EAAYj9N,MAAMm0M,SAAW,GAE/BrpM,EAASnM,KAAK8yD,SAAS0f,EAAQjzE,GAEjC,OAAO4M,GAGX4zN,GAAYkC,mBAAmBglF,IAC/BA,GAAmB/+S,OAAS,qBAK5B,SAASwgT,GAAYz6S,EAAOouP,GAC1B,OAAOpuP,IAAUouP,EAAOv9P,OAAS,EAEnC,SAAS6pT,GAAW16S,EAAOk5L,GACzB,OAAOA,IAASl5L,EAAMilP,MAAMjlP,EAAMilP,MAAMp0P,OAAS,GAUnD,MAAM8pT,WAAqBt8P,GACzBv+C,mBACE,MAAO,eAGTvO,0BACE,MAAO,CAOLqpT,0BAA2B,GAE3BtjO,MAAO,KACPzvE,IAAK,KAMLgzS,aAAc,KAMdC,iBAAkB,MAGtBnxS,wBACE,MAAO,CACLu1B,UAAW,KACXC,QAAS,KACTivN,OAAQ,GACR9qP,KAAM,MAIVwgL,WAAU5kJ,UACRA,EAASC,QACTA,IAEA,MAAMrtC,EAAKC,KAEX,GAAID,EAAGotC,UAAYA,GAAaptC,EAAGqtC,QAAUA,EAAS,CACpDrtC,EAAGotC,UAAYA,EACfptC,EAAGqtC,QAAUA,EACbrtC,EAAG+4L,WAMPn5L,WAAW6oB,EAAQxoB,KAAKmtC,UAAWzpB,EAAM1jB,KAAKotC,SAC5C,IAAIy0B,EACJ,MAAM9hE,EAAKC,MACT8oT,aACEA,GACE/oT,GACJipT,cACEA,EAAaC,WACbA,GACElpT,EAAG8/D,QAAU,GACjBqpP,EAAuB,IACvBpqT,OACEA,GACEiB,EAAGs8P,OACT,MAAM8sD,EAAcppT,EAAGs8P,OAAOxyP,KAAI,CAACoE,EAAOrP,KACxC,IAAIwqT,EACJ,MAAMC,EAAeL,IAAkBC,GAAcrqT,EAAIE,EAAS,GAClE,MAAO,CACL4/C,UAAW,CACT4qQ,mBAAoB,EACpB3pT,CAAC,oBAAoBsO,EAAMmtC,YAAa,EACxCmuQ,wBAAyB3qT,IAAMmB,EAAGwlF,MAAMikO,WAAWC,gBACnDC,WAAYhB,GAAY9pT,EAAGmB,EAAGs8P,QAC9BstD,kBAAmBN,GAErBlgQ,YAAa,CAIXgzD,iBAAkB,EAClB7qD,YAAa,aAEf56B,QAAS,CACPkzR,cAAe,YAAYhrT,IAC3BirT,eAAgB57S,EAAMmtC,UAGxBiM,UAAW+hQ,EAAen7S,EAAMilP,SAAW,MAAQk2D,SAAsB,OAAS,EAAIA,EAAahrT,QAAO+oM,GAAQA,EAAK3+K,MAAQ9E,GAAOyjL,EAAKzjL,IAAM8E,IAAO3e,KAAIs9L,IAAI,CAC9JzoJ,UAAW,CACTorQ,6BAA8B,EAC9BnqT,CAACwnM,EAAK4iH,eAAgB5iH,EAAK4iH,cAC3BpqT,CAAC,WAAWwnM,EAAK9wJ,SAAU8wJ,EAAK9wJ,MAChC2zQ,SAAUrB,GAAW16S,EAAOk5L,IAE9BzwK,QAASh4B,EAAe,CACtBurT,UAAW9iH,EAAKj3L,OACf9N,WAAW8nT,OAAS,CACrB1tR,KAAM2qK,EAAK3+K,MAAMxY,YAEnB3O,MAAO,CAEL1B,CAACI,EAAGgpT,kBAAmB5hH,EAAKgjH,MAC5BxqT,CAACmpT,GAAe3hH,EAAKjgM,MACrBvH,CAAC,OAAOmpT,KAAiB3hH,EAAKjgM,OAEhCmgD,SAAU,CAAC,CACT5mC,IAAK,OACLi+B,UAAW,CACT0rQ,oBAAqB,EACrBT,kBAAmBN,GAErB1gQ,KAAMw+I,EAAK5nM,iBAMlBsiE,EAAa9hE,EAAG8/D,UAAY,MAAQgC,SAAoB,OAAS,EAAIA,EAAWwoP,oBAAoBnB,GACrGC,EAAY3qT,QAAQ0qT,GAEpB,MAAO,CACLxqQ,UAAW3+C,EAAG87H,gBACd1yE,YAAa,CAEXgzD,iBAAkB,GAEpB90D,SAAU8hQ,GAGdxpT,OAAOiiD,GACL1nC,MAAMH,OAAO6nC,GACb5hD,KAAK84L,QAAQ,MAMfn5L,QAAQ2qT,GAAWtqT,KAAKq8P,OAAOv9P,QAC7B,MAAMiB,EAAKC,MACTuqT,aACEA,GACExqT,EAAGwlF,OACP82K,OACEA,GACEt8P,EACJyqT,EAAiBnuD,EAAOv9P,OAC1B,GAAIwrT,EAAS,CACXjuD,EAAOv9P,OAAS,EAChByrT,EAAavrT,SAAQ,CAACk0P,EAAO93M,IAAaihN,EAAOjhN,GAAY,CAC3DA,SAAAA,EACA83M,MAAAA,KAEFnzP,EAAGwR,KAAO8qP,EAAO,GAAGnJ,MAAMznP,QAAO,CAACwxF,EAAKkqG,IAASlqG,GAAOkqG,EAAKjgM,OAAO,GAEnE,MAAMujT,EAAW1qT,EAAG02C,QAAQe,cAE5B,GAAIizQ,IAAapuD,EAAOv9P,SAAW0rT,GAAkBF,GAAU,CAC7DG,EAAS7rQ,UAAU98C,OAAO,+BAA+B0oT,KACzDC,EAAS7rQ,UAAU7/B,IAAI,+BAA+Bs9O,EAAOv9P,WAGjE,IAAKiB,EAAGotC,YAAcptC,EAAGqtC,QAAS,CAChC,OAGFmtE,GAAQ+K,KAAK,CACXloE,UAAWr9C,EAAG2qT,aACd9oQ,cAAe7hD,EAAG02C,QAClB6a,YAAa,kBAEfvxD,EAAGwtB,QAAQ,WAIbi1C,kBACE,MAAO,cAGXomP,GAAa1gT,OAAS,eAatB,MAAMyiT,WAA2B/B,GAE/B76S,mBACE,MAAO,qBAETlB,kBACE,MAAO,qBAETrN,0BACE,MAAO,CACL+lF,MAAO,KACPujO,aAAc,SAIlBC,uBACE,IAAI/3L,EACJ,OAAQA,EAAchxH,KAAK2Y,SAAW,MAAQq4G,SAAqB,GAAKA,EAAYv7E,IAAM,QAAU,OAEtGvuC,YACE,OAAOlH,KAAKuR,KAEd5R,gBAEE,GAAIK,KAAKulF,MAAMknE,iBAAmBzsJ,KAAKkH,MAAO,CAC5ClH,KAAK84L,QAAQ,OAGjBn5L,YAAYirT,GACV5qT,KAAKupE,gBAAgB,QACrBqhP,IAAsB,MAAQA,SAA2B,OAAS,EAAIA,EAAkBz7R,GAAG,CACzF1qB,KAAM,OACNkpG,OAAQ,gBACRrxF,QAAStc,QAIf2qT,GAAmBziT,OAAS,qBAmC5B,MAAM2iT,WAAuBv+P,GAE3Bv+C,mBACE,MAAO,iBAETlB,kBACE,MAAO,iBAETgV,2BACE,MAAO,CAMLyzR,cAAe,KA2Cf/wG,eAAgB,KAEhBumH,UAAW,KAEXC,eAAgB,KAEhBC,iBAAkB,MAGtBxrT,0BACE,MAAO,CAMLyrT,YAAa,CACX1rT,MAAO,KACPiiB,QAAS,WAiBX0pS,UAAW,KAeXC,SAAU,MAOVC,YAAa,KAGjBxzS,wBACE,MAAO,CAOLyzS,eAAgB,EAOhBC,cAAe,GAKnB3rT,UAAUwY,GACR,MAAMpY,EAAKC,KAGXmY,EAAOozS,UAAUC,iBAAmBzrT,EACpCma,MAAMsB,UAAUrD,GAChB,GAAIpY,EAAG+qT,WAAa,KAAM,CAExB/qT,EAAG02C,QAAQmI,UAAU7/B,IAAI,gBAE3B+hC,GAAY3xB,GAAG,CACbsnB,QAAS12C,EAAG02C,QACZ8I,SAAU,yBACVC,QAAS,KACTt5C,MAAO,uBACPogD,SAAU,uBACVC,YAAa,uBACbjqC,QAASvc,IAGbJ,kBAAkBywH,GAChB,IAAIq7L,GACHA,EAAwBzrT,KAAKynT,mBAAqB,MAAQgE,SAA+B,OAAS,EAAIA,EAAsB1vS,UAC7H,GAAIq0G,EAAM,CACRpwH,KAAKynT,gBAAkB,IAAIh0F,GAAgB,CACzCh9K,QAASz2C,KAAKy2C,UAGlB,OAAO25E,EAETzwH,oBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAK84L,WAKTw8G,kBAAkB1pO,GAChB,MAAM7rE,EAAKC,KACX,GAAI4rE,IAAU7rE,EAAG2rT,eAAgB,CAC/B,IAAIC,GACHA,EAAwB5rT,EAAG6rT,yBAA2B,MAAQD,SAA+B,OAAS,EAAIA,EAAsB9kT,KAAK9G,GACtIA,EAAG2rT,eAAiB9/O,EACpB7rE,EAAG6rT,sBAAwBhgP,EAAMz8C,GAAG,CAClC4wE,gBAAiB,4BACjBzjF,QAASvc,IAGX,GAAI6rE,EAAM5nD,MAAO,CACfjkB,EAAG8rT,0BAA0B,MAInCvW,oBACE,OAAOt1S,KAAK0rT,eAGd/rT,2BAA0ByyD,OACxBA,IAIApyD,KAAKme,UAAU,aACfne,KAAKme,UAAU,YACf,MAAMpe,EAAKC,MACTy2C,QACEA,EAAO6+P,cACPA,GACEv1S,EACJmH,EAAQouS,EAAcwW,cAAc/rT,EAAGwrT,WAGzC,GAAIxrT,EAAGwrT,UAAUQ,qBAAsB,CACrChsT,EAAGisT,WAAajsT,EAAGksT,UAAY,UAC1B,CACLlsT,EAAGisT,WAAajsT,EAAGmsT,oBACnBnsT,EAAGksT,UAAYlsT,EAAGosT,mBAEpB,GAAIjlT,IAAUnH,EAAGmH,MAAO,CACtB+wC,GAAUod,UAAU5e,EAAS,QAASvvC,GAEtCnH,EAAGg3M,OAAOzlM,IAAI,QAASpK,EAAOnH,EAAGg3M,OAAOkf,KAAKz4M,eAE/C,GAAI40C,IAAW,YAAa,CAE1B3b,EAAQib,UAAY,GAEtB,GAAIU,IAAW,UAAYA,IAAW,OAASA,IAAW,UAAYryD,EAAGorT,UAAYprT,EAAGmrT,UAAW,CACjGnrT,EAAGqsT,gBAELrsT,EAAGg3M,OAAOkf,KAAKg+C,kBAIjBt0Q,kBAAkByrT,GAIhB,IAAKprT,KAAKqsT,iBAAkB,CAC1BrsT,KAAKssT,sBAAwBlB,EAE/B,OAAOA,EAETzrT,kBAAkBuH,EAAOmmI,GACvB,MAAMttI,EAAKC,KAEX,IAAKD,EAAGssT,iBAAkB,CACxBtsT,EAAGqsT,gBAEL,IAAKrsT,EAAGyd,cAAe,CACrBzd,EAAG+4L,UAEH/4L,EAAGwtB,QAAQ,oBAAqB,CAC9BrmB,MAAAA,EACAmmI,SAAAA,KAIN1tI,gBAAgBurT,GACd,OAAOlrT,KAAKksT,oBAAsBhB,EAEpCvrT,kBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAKosT,iBAGTzsT,eAAewrT,GACb,OAAOnrT,KAAKmsT,mBAAqBhB,EAEnCxrT,iBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAKosT,iBAGTzsT,YAAY+nT,GACV,OAAOt9S,EAAa09S,UAAU,CAAC9nT,KAAK8qT,WAAa,GAAIpD,GAAa,KAEpEoD,gBACE,OAAO9qT,KAAKusT,WAEdzB,cAAc76S,GACZjQ,KAAKusT,WAAat8S,EAClBjQ,KAAK84L,UAIPo0D,qBACE,OAAOltP,KAAKwsT,gBAEdt/D,mBAAmBhmP,GACjBlH,KAAKwsT,gBAAkBtlT,EACvBlH,KAAKosT,gBAGPzsT,gBACE,IAAIokT,EACJ,MAAMhkT,EAAKC,MACTktP,eACEA,EAAco/D,sBACdA,GACEvsT,EACJikB,GAAS+/R,EAAoBhkT,EAAGu1S,iBAAmB,MAAQyO,SAA2B,OAAS,EAAIA,EAAkB//R,MAGvH,IAAKkpO,IAAmBlpO,GAASjkB,EAAGwrT,UAAUQ,qBAAsB,CAClE,OAEFhsT,EAAGssT,iBAAmB,KACtB,MAEEI,EAAM1sT,EAAGorT,UAAYprT,EAAGmrT,WAAaoB,EAAwBtoS,EAAQkpO,EACrEw/D,EAAWD,EAAMr4S,KAAK+oB,MAAM+vN,EAAiBlpO,GAASsoS,EACtDK,EAAgB5sT,EAAGg3M,OAAOkf,KAAK22F,uBAAyBx4S,KAAK41B,IAAIjqC,EAAG8sT,aAAeH,GAAY,GACjGz0Q,GAAU0pF,kBAAkB5hI,EAAG02C,QAAS,cAAek2Q,EAAgB,IAAM,EAAG5sT,GAChFA,EAAGqrT,YAAcsB,EACjB3sT,EAAGssT,iBAAmB,MAKxBS,sBAAqBzB,cACnBA,EAAaC,aACbA,IAEAtrT,KAAKqrT,cAAgBA,EACrBrrT,KAAKsrT,aAAeA,EACpBtrT,KAAK84L,UAKPn5L,UACE,MAAMI,EAAKC,MACTqrT,cACEA,EAAaC,aACbA,EAAYC,UACZA,GACExrT,GACJgsT,qBACEA,GACER,EACJ5vS,EAAU,GACZ,IAAK5b,EAAGg3M,OAAOkf,KAAKz4M,eAAiB6tS,GAAiB,GAAKC,GAAgB,GAAKA,EAAevrT,EAAGu1S,cAActxR,MAAO,CAErH,IAAK,IAAIplB,EAAIysT,EAAezsT,GAAK0sT,EAAc1sT,IAAK,CAClD,MAAMo1N,EAAiBj0N,EAAGu1S,cAActiN,MAAMp0F,GAC5C2wE,EAAeykJ,EAAezkJ,aAAag8O,GAE3CrkT,EAAQ8sN,EAAeo3F,aAAerrT,EAAGqrT,YACzC2B,EAAgB,CAEdruQ,UAAW,IAAIlB,GAAa,CAC1BwvQ,wBAAyB,IAE3Bt2R,QAAS,CACP8oR,WAAYxrF,EAAerpN,IAE7BtJ,MAAO,CACL1B,CAAC4rT,EAAU91Q,IAAM,QAAU,QAASs2Q,EAAuBx8O,EAAa09O,WAAaruT,EAAImB,EAAGqrT,YAC5FlkT,MAAAA,GAEFmgD,SAAU,IAGd,GAAItnD,EAAGwkM,eAAgB,CACrB,MAAMhlM,EAAQQ,EAAGwkM,eAAe,CAC9BwoH,cAAAA,EACA/4F,eAAAA,IAEF,GAAIz0N,GAAS,KAAM,CACjBwtT,EAAcpkQ,KAAOppD,OAIpB,CACH,IAAIu0N,EACJ,GAAIE,EAAeF,SAAU,CAC3BA,EAAWE,EAAeF,aACrB,CACL,GAAI/zN,EAAG+qT,WAAa,KAAM,CACxB,GAAI92F,EAAes0F,QAAU,MAAO,CAClC,IAAI4E,EACJ,MAAMxF,EAAY1zF,EAAes0F,SAAW4E,EAAuBl5F,EAAevvN,QAAU,MAAQyoT,SAA8B,OAAS,EAAIA,EAAqBjkT,eAAiBlJ,EAAGgrT,eACxLj3F,EAAW/zN,EAAGwoT,YAAYb,KAKhCqF,EAAc1lQ,SAAS7oD,KAAKuB,EAAGkrT,aAAelrT,EAAG0nT,gBAAgBe,kBAAkB,CACjFx0F,eAAAA,EACAH,SAAUG,EAAeH,SACzB33J,MAAO83J,EAAey0F,WACtBngK,QAAS0rE,EAAe1rE,QACxByrE,gBAAiBh0N,EAAGirT,kBAAoBjrT,EAAGwoT,YAAYxoT,EAAGirT,kBAC1Dl3F,SAAAA,IACE,CACFrzM,IAAK,OACLi+B,UAAW,kBACXiK,KAAMv+C,EAAaY,WAAWgpN,EAAevvN,QAGjDkX,EAAQnd,KAAKuuT,IAIjBxyM,GAAQ+K,KAAK,CACXloE,UAAW,CACT6L,aAAc,KACd5B,SAAU1rC,GAEZimC,cAAe7hD,EAAG02C,QAClB6a,YAAa,eAMjB3xD,qBAAqBwwB,GACnB,MAAMg9R,EAAeh9R,EAAMxxB,OAAOslD,QAAQ,0BACxC+vK,EAAiBh0N,KAAKs1S,cAAczoO,QAAQsgP,EAAaz2R,QAAQ8oR,YACnEx/S,KAAKutB,QAAQ,iBAAmBnjB,EAAaK,WAAW0lB,EAAMtjB,MAAO,CACnEmnN,eAAAA,EACA7jM,MAAAA,IAKJxwB,iBAAiBiN,GACf,MAAMT,EAAS+N,MAAMuE,iBAAiB7R,UAE/BT,EAAOmpS,qBACPnpS,EAAO4qM,cACP5qM,EAAOU,KACd,OAAOV,GAGX0+S,GAAe3iT,OAAS,iBA4BxB,MAAMklT,WAAuBngS,GAAOu3M,KAGlCnrJ,oBACE,MAAO,CAEP,CACE50E,KAAM,SACNm0E,QAAS,OACR,CACDn0E,KAAM,OACNm0E,QAAS,OACR,CACDn0E,KAAM,QACNm0E,QAAS,OACR,CACDn0E,KAAM,UACNm0E,QAAS,OACR,CACDn0E,KAAM,QACNm0E,QAAS,OACR,QAEL32B,sBACE,MAAO,CAOLs0E,UAAW,MAOXwlG,UAAW,MAOXsM,SAAU,MAOV+M,iBAAkB,MAOlBjT,WAAY,MAOZrG,SAAU,MAOVwG,UAAW,MAOXF,WAAY,MAKZ1H,OAAQ,MAORuW,sBAAuB,MAKvBQ,gBAAiB,MAOjB37N,IAAK,uBAELu3S,UAAW,KACXlpQ,KAAM,KACN03K,OAAQ,SACRyjC,WAAY,MACZj9B,WAAY,OAGhBx1N,kBACE,MAAO,WAGTlN,UAAUwY,GACR,MAAMpY,EAAKC,KACXka,MAAMsB,aAAa3c,WACnBkB,EAAGuc,QAAUvc,EACbA,EAAG6qT,kBAAoB7qT,EAAGk2N,KAAK20F,kBAG/B7qT,EAAGokD,KAAOpkD,EAAGokD,KACbpkD,EAAGk2N,KAAK9mM,GAAG,CACTwrK,MAAO,kBACPr+K,QAASvc,EACT6sB,KAAM,OAGV2yD,8BACE,OAAO,KAGT5/E,YACE,IAAI2tT,EAAuBC,GAC1BD,EAAwBttT,KAAKwtT,mBAAqB,MAAQF,SAA+B,OAAS,EAAIA,EAAsBvxS,WAC5HwxS,EAAqBvtT,KAAKytT,gBAAkB,MAAQF,SAA4B,OAAS,EAAIA,EAAmBxxS,UACjH7B,MAAM8B,YAERmoC,SAASA,GACP,MAAMpkD,EAAKC,MACTi2N,KACEA,GACEl2N,EACNA,EAAGuR,IAAI,OAAQ6yC,GAEf,GAAIA,IAAS,aAAc,CACzBpkD,EAAG0tT,aAAe,IAAI9C,GAAmB,CACvCplO,MAAOxlF,EAAG6qT,kBACV/B,0BAA2B9oT,EAAG8oT,0BAC9BlwS,MAAOs9M,EACPp2J,OAAQo2J,SAIP,GAAI9xK,IAAS,WAAY,CAE5BpkD,EAAGytT,gBAAkB3C,GAAeh6L,IAAI,CACtCkmF,OAAQh3M,EACRwrT,UAAWt1F,EACXq/E,cAAer/E,EAAKq/E,cACpBwV,UAAW70F,EAAK0xF,kBAChBoD,eAAgB90F,EAAK+xF,uBACrBgD,iBAAkB/0F,EAAKgyF,0BACtBhyF,EAAKu3F,iBAAmB,IAC3BztT,EAAGikM,YAAYjkM,EAAGytT,gBAAiB,CAAC,sBAAuB,yBAA0B,+BAGzFrpQ,WACE,OAAOnkD,KAAK0R,IAAI,QAIlB/R,mBACEZ,OAAQ2uT,IAER,MAAM3tT,EAAKC,KACX,GAAID,EAAGokD,OAAS,aAAc,CAE5BpkD,EAAG0yR,cAAc,MACjB1yR,EAAGmH,MAAQwmT,EAAUC,UACrB5tT,EAAGk2N,KAAKn9B,UAIR/4L,EAAGo8N,QAAQopD,yBACN,GAAIxlR,EAAGokD,OAAS,WAAY,CAEjCpkD,EAAGk2N,KAAKqkB,eAKZ36O,iBAAgBipI,WACdA,IAEA,MAAM7oI,EAAKC,KACX,IAAKD,EAAGo8N,QAAQkqD,iBAAkB,CAChC,OAEF,GAAIz9I,EAAY,CACd7oI,EAAGw8N,eAAe39K,UAAU7/B,IAAI,sBAChC,GAAIhf,EAAGokD,OAAS,WAAY,CAC1B,IAAIypQ,EACJ7tT,EAAG0yR,iBAEFm7B,EAAW7tT,EAAGk2N,QAAU,MAAQ23F,SAAkB,OAAS,EAAIA,EAAS96B,mBAU/EnzR,cAAcm5E,GACZ,MAAM/4E,EAAKC,MACTy2C,QACEA,GACE12C,EACN,GAAI02C,EAAS,CACX,GAAI12C,EAAGokD,OAAS,aAAc,EAE3B20B,GAAY/4E,EAAG6qT,kBAAkBj9M,OAAO/qG,UAAWA,UAAW,MAC/D,IAAK7C,EAAG0tT,aAAa5vL,SAAU,CAE7BpnF,EAAQib,UAAY,GACpB3xD,EAAG0tT,aAAa1zS,OAAO08B,OAClB,CAEL12C,EAAG0tT,aAAa30H,QAAQ,YAErB,GAAI/4L,EAAGokD,OAAS,WAAY,CACjC,IAAKpkD,EAAGytT,gBAAgB5vL,eAAgB,CAEtCnnF,EAAQib,UAAY,GACpB3xD,EAAGytT,gBAAgBzzS,OAAO08B,MAOlC92C,iBAAiBqzN,GACf,MAAMiD,KACJA,GACEj2N,KAEJ,GAAIi2N,EAAK1qH,QAAQ62M,0BAA4BnsF,EAAK1qH,QAAQsiN,sBAAuB,CAC/E53F,EAAK9N,mBAAmBuX,SAAS1M,GACjC,OAAO94M,MAAMylN,iBAAiB3M,IAIlC43F,wBACE,OAAO5qT,KAAK8tT,mBAEdlD,sBAAsBA,GACpB,MAAM7qT,EAAKC,KACXD,EAAGwpE,gBAAgB,QACnBqhP,IAAsB,MAAQA,SAA2B,OAAS,EAAIA,EAAkBz7R,GAAG,CACzF1qB,KAAM,OACNkpG,OAAQ,oBACR9gF,MAAO,IACPvQ,QAASvc,IAEXA,EAAG+tT,mBAAqBlD,EACxB,GAAI7qT,EAAG0tT,aAAc,CACnB1tT,EAAG0tT,aAAaloO,MAAQqlO,IAI9B1rT,EAAgBkuT,GAAgB,QAAS,kBACzCrtF,GAAYkC,mBAAmBmrF,IAC/BA,GAAellT,OAAS,iBAUxB,MAAM6lT,WAAyBnF,GAC7B76S,mBACE,MAAO,mBAETvO,0BACE,MAAO,CACLsW,IAAK,qBACLgzS,aAAc,SACdC,iBAAkB,MAClBiF,SAAU,MAKdruT,uBACE,MAAMI,EAAKC,MACT6/D,OACEA,GACE9/D,EACJipT,EAAgBnpP,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOmpP,cACvEE,EAAuB,GACvBC,EAAcppT,EAAGs8P,OAAO5wP,QAAO,CAACU,EAAQ8B,EAAOrP,KAC7C,GAAIqP,EAAMilP,MAAO,CACf,IAAIk2D,EACJj9S,EAAO3N,SAAU4qT,EAAen7S,EAAMilP,SAAW,MAAQk2D,SAAsB,OAAS,EAAIA,EAAahrT,QAAO+oM,GAAQA,EAAK3+K,MAAQzoB,EAAGqtC,SAAW+5J,EAAKzjL,IAAM3jB,EAAGotC,YAAWtjC,KAAI,CAACs9L,EAAM72J,EAAG4iN,KAAK,CAC7Lx0M,UAAW,CACTorQ,6BAA8B,EAC9BnqT,CAACwnM,EAAK4iH,eAAgB5iH,EAAK4iH,cAC3BpqT,CAAC,WAAWwnM,EAAK9wJ,SAAU8wJ,EAAK9wJ,MAChC2zQ,SAAU15Q,IAAM4iN,EAAMp0P,OAAS,EAC/B4qT,WAAY9qT,IAAMmB,EAAGs8P,OAAOv9P,OAAS,GAEvC43B,QAASh4B,EAAe,CACtBurT,UAAW9iH,EAAKj3L,MAChB+9S,OAAQ,GAAGrvT,KAAKuoM,EAAKj3L,QACrB25S,eAAgBjrT,GACfwD,WAAW8nT,OAAS,CACrB1tR,KAAM2qK,EAAK3+K,MAAMxY,YAEnB3O,MAAO,CAEL8zC,IAAKgyJ,EAAKgjH,MACVljT,OAAQkgM,EAAKjgM,MACbmyC,UAAW8tJ,EAAKjgM,OAElBmgD,SAAU,CAAC,CACT3I,UAAW,CACT0rQ,oBAAqB,EACrBT,kBAAmBX,GAErBrgQ,KAAMw+I,EAAK5nM,aAIjB,OAAO4M,IACN,IAEL0zD,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOwqP,oBAAoBnB,GAC3EC,EAAY3qT,QAAQ0qT,GAEpB,MAAO,CACLxqQ,UAAW3+C,EAAG87H,gBACdnlG,QAAS,CACPkzR,cAAe,aACfC,eAAgB,GAElB1gQ,YAAa,CAIXgzD,iBAAkB,EAClB7qD,YAAa,UAEfjK,SAAU8hQ,GAGdliT,aACE,OAAOjH,KAAKuR,MAGhBw8S,GAAiB7lT,OAAS,mBAyB1B,MAAMgmT,WAA+Bh1F,GACnCrsN,kBACE,MAAO,mBAETo1C,sBACE,MAAO,CAWLs0E,UAAW,MAQXwlG,UAAW,MAQXsM,SAAU,MAQV+M,iBAAkB,MAQlBjT,WAAY,MAQZrG,SAAU,MAgBVsG,WAAY,MAQZ1H,OAAQ,MAQRuW,sBAAuB,MAKvBQ,gBAAiB,MAOjBn4L,SAAU,EACVgpL,UAAW,MACXrH,QAAS,2BACT7jG,KAAM,GAGVllE,kBACE,OAAO,MAETvyD,UAAUu6B,GACRhgB,MAAMsB,aAAa3c,WACnBmB,KAAKmuT,KAAO,IAAIJ,GAAiB,CAC/BxoO,MAAOvlF,KAAKi2N,KAAK20F,kBACjB/qP,OAAQ7/D,KAAKi2N,OAGjBt2N,UAAS2+N,YACPA,EAAW/sN,KACXA,IAEAvR,KAAKmuT,KAAKp0S,OAAOukN,GACjB/sN,EAAKtK,OAASjH,KAAKmuT,KAAKlnT,OAI1BtH,iBAAiBiN,GACf,MAAMT,EAAS+N,MAAMuE,iBAAiB7R,UAE/BT,EAAOxB,UACPwB,EAAO0vN,cACP1vN,EAAOU,YACPV,EAAOoK,aACPpK,EAAOyrH,iBACPzrH,EAAOguN,cACd,OAAOhuN,GAGXjN,EAAgBgvT,GAAwB,QAAS,0BACjDnuF,GAAYkC,mBAAmBisF,IAC/BA,GAAuBhmT,OAAS,yBAShC,IAAIkmT,GAAiClhS,GAAU,MAAMkhS,UAAsClhS,EACzFnf,mBACE,MAAO,gCAETvO,0BACE,MAAO,CAYL6uT,iBAAkB,KAQlBC,oBAAqB,KACrBC,gCAAiC,sCACjCC,gCAAiC,sCACjCC,6BAA8B,0NAC9BC,sBAAuB,sFAG3BC,wCACE,MAAO,GAEThvT,6BAA6BivT,EAAWC,EAAWC,GACjD,MAAMC,EAAW,IACf/nN,QACEA,GACE4nN,EACJI,EAAkBhvT,KAAK2uT,kCACvBxiT,EAAS,CACPxM,CAACqnG,GAAU,IAGf,GAAI6nN,EAAW,CACb,IAAKA,EAAUn/I,KAAM,CACnBq/I,EAASvwT,KAAK,MAAMwoG,sFACpB76F,EAAO66F,GAAS0oE,KAAO,CAAC,aAIvB,GAAIs/I,IAAoB,MAAQA,SAAyB,GAAKA,EAAgBpjT,SAASo7F,GAAU,CACpG+nN,EAASvwT,KAAK,SAASwoG,6DACvB76F,EAAO66F,GAAS0oE,KAAO,CAAC,OAG1B,GAAIq/I,EAASjwT,OAAQ,CACnBb,OAAOmZ,OAAO03S,EAAkB3iT,GAElC,OAAO4iT,EAETpvT,wBAAwBg1B,GACtB,MAAMo6R,EAAW,GACfD,EAAmB,GACrB,IAAK9uT,KAAKsuT,oBAAqB,CAC7BQ,EAAiB/nT,QAAU,KAG7B/G,KAAKivT,kBAAiB,CAACrjP,EAAOo7B,EAAS4nN,KACrCG,EAASvwT,QAAQwB,KAAKkvT,6BAA6BN,EAAWj6R,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASqyE,GAAU8nN,OAEvI,GAAIC,EAASjwT,OAAQ,CACnBiwT,EAASvwT,KAAK,mDAAqDuN,KAAKK,UAAU0iT,EAAkB,KAAM,GAAGtkT,QAAQ,YAAa,QAClIukT,EAASvwT,KAAKwB,KAAK0uT,uBAErB,OAAOK,EAETpvT,qBAAqBg1B,GACnB,MAAMo6R,EAAW/uT,KAAKmvT,wBAAwBx6R,GAC9C,GAAIo6R,EAASjwT,OAAQ,CACnB8V,QAAQC,KAAK7U,KAAKuuT,gCAAkC,KAAOQ,EAAS9kT,KAAK,QAG7EtK,6BAA6BivT,EAAWQ,EAAWP,EAAWC,GAC5D,MAAMC,EAAW,GACfM,EAAc,GACdC,EAAiB,IACjBtoN,QACEA,GACE4nN,EACJziT,EAAS,CACPxM,CAACqnG,GAAU,IAEbniB,EAAiB+pO,EAAU/pO,gBAAkB7kF,KAAK6kF,gBAClDtK,WACEA,GACEq0O,EAAUhjP,MACdgQ,EAAUrB,EAAWoY,mBAAmBpY,EAAWqB,SACnD2zO,GAAiBV,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAUn/I,OAAS,GAC1F8/I,GAAoBX,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU3rS,UAAY,GAClG,IAAIusS,EAAmC,MAEvC,GAAIL,IAAc,MAAQA,SAAmB,GAAKA,EAAUv6O,MAAO,CACjEw6O,EAAY7wT,QAAQ4wT,EAAUv6O,MAAMz2E,QAAOo0E,IACjC+8O,EAAcx+R,MAAK49I,GAAOA,EAAI9pF,IAAmBrS,EAAOqS,OAAqB2qO,EAAiBz+R,MAAK49I,GAAOA,EAAI9pF,IAAmBrS,EAAOqS,IAAmB8pF,EAAI/yF,IAAYpJ,EAAOqS,OACzLh7E,KAAI2oE,IAAM,CACX7yE,CAACklF,GAAiBrS,EAAOqS,GACzBllF,CAACi8E,GAAU,WAEb,GAAIyzO,EAAYvwT,OAAQ,CACtB,MAAM4wT,EAAaL,EAAYxlT,KAAI8kK,GAAO,IAAMA,EAAI9pF,KAAiB56E,KAAK,MAC1E8kT,EAASvwT,KAAK,MAAMwoG,0DAAgE0oN,0BAAqC,4GAI7H,GAAI1vT,KAAK2vT,yBAA0B,CAEjC,IAAKN,EAAYvwT,QAAU+vT,EAAW,CACpC,UAAWA,IAAc,UAAYtnT,MAAMC,QAAQqnT,GAAY,CAC7DE,EAASvwT,KAAK,MAAMwoG,yCACpB76F,EAAO66F,GAAS,OAAS,MAG3B,GAAI6nN,EAAUn/I,OAASnoK,MAAMC,QAAQqnT,EAAUn/I,MAAO,CACpDq/I,EAASvwT,KAAK,MAAMwoG,8CACpBqoN,EAAY7wT,KAAK,OAGnB,GAAIqwT,EAAU3rS,UAAY3b,MAAMC,QAAQqnT,EAAU3rS,SAAU,CAC1D6rS,EAASvwT,KAAK,MAAMwoG,kDACpBsoN,EAAe9wT,KAAK,aAKrB,CAEH,GAAI4wT,IAAc,MAAQA,SAAmB,GAAKA,EAAU/6N,QAAS,CACnE,MAAMu7N,EAAqBR,EAAU/6N,QAAQj2F,QAAOo0E,IAAW+8O,EAAcx+R,MAAK49I,GAAOA,EAAI/yF,IAAYpJ,EAAOoJ,OAAW/xE,KAAI2oE,IAAM,CACnI7yE,CAACi8E,GAAUpJ,EAAOoJ,OAEpByzO,EAAY7wT,QAAQoxT,GACpB,GAAIA,EAAmB9wT,OAAQ,CAC7B,MAAM4wT,EAAaE,EAAmB/lT,KAAI8kK,GAAO,IAAMA,EAAI/yF,KAAU3xE,KAAK,MAC1E8kT,EAASvwT,KAAK,MAAMwoG,4DAAkE0oN,0BAAqC,qDAC3HD,EAAmC,MAGvC,GAAIJ,EAAYvwT,OAAQ,CACtBuwT,EAAY7wT,KAAK,OAGnB,GAAI4wT,IAAc,MAAQA,SAAmB,GAAKA,EAAUlsS,QAAS,CACnEosS,EAAe9wT,QAAQ4wT,EAAUlsS,QAAQ9kB,QAAOo0E,IAAW+8O,EAAcx+R,MAAK49I,GAAOA,EAAI/yF,IAAYpJ,EAAOoJ,OAAW/xE,KAAI2oE,IAAM,CAC/H7yE,CAACi8E,GAAUpJ,EAAOoJ,QAEpB,GAAI0zO,EAAexwT,OAAQ,CACzB,MAAM4wT,EAAaJ,EAAezlT,KAAI8kK,GAAO,IAAMA,EAAI/yF,KAAU3xE,KAAK,MACtE8kT,EAASvwT,KAAK,MAAMwoG,+DAAqE0oN,0BAAqC,qDAC9HvjT,EAAO66F,GAAS9jF,QAAUosS,EAC1BA,EAAe9wT,KAAK,OACpBixT,EAAmC,OAIzC,GAAIJ,EAAYvwT,OAAQ,CACtBqN,EAAO66F,GAAS0oE,KAAO2/I,EAGzB,IAAKN,EAASjwT,OAAQ,QACbqN,EAAO66F,GAGhB/oG,OAAOmZ,OAAO03S,EAAkB3iT,GAChC,MAAO,CACL4iT,SAAAA,EACAU,iCAAAA,GAGJ9vT,wBAAwBg1B,EAAUk7R,GAChC,MAAMd,EAAW,GACfD,EAAmB,GACnBxoL,EAAUupL,EAAYC,KACxB,IAAK9vT,KAAKsuT,oBAAqB,CAC7BQ,EAAiB/nT,QAAU,KAE7B,IAAI0oT,EAAmC,MAEvCzvT,KAAKivT,kBAAiB,CAACrjP,EAAOo7B,EAAS4nN,KACrC,MAAMmB,EAAW/vT,KAAKgwT,6BAA6BpB,EAAWtoL,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQt/B,GAAUryE,EAASqyE,GAAU8nN,GACrJW,EAAmCA,GAAoCM,EAASN,iCAChFV,EAASvwT,QAAQuxT,EAAShB,aAE5B,GAAIA,EAASjwT,OAAQ,CACnBiwT,EAASvwT,KAAK,mDAAqDuN,KAAKK,UAAU0iT,EAAkB,KAAM,GAAGtkT,QAAQ,wBAAyB,OAAOA,QAAQ,YAAa,QAC1K,GAAIilT,EAAkC,CACpCV,EAASvwT,KAAKwB,KAAKyuT,8BAErBM,EAASvwT,KAAKwB,KAAK0uT,uBAErB,OAAOK,EAETpvT,qBAAqBg1B,EAAU2xG,GAC7B,MAAMyoL,EAAW/uT,KAAKiwT,wBAAwBt7R,EAAU2xG,GACxD,GAAIyoL,EAASjwT,OAAQ,CACnB8V,QAAQC,KAAK7U,KAAKwuT,gCAAkC,KAAOO,EAAS9kT,KAAK,UAQ/E,MAAMimT,WAAiCx/S,OACvC,MAAMy/S,WAAgCD,GACpCvwT,YAAYuW,EAAM,IAChB,IAAIk6S,EAAcC,EAClBn2S,MAAMhE,EAAIzB,SAAWyB,EAAIowH,SAAWl8H,EAAaK,YAAY2lT,EAAel6S,EAAIowH,WAAa,MAAQ8pL,SAAsB,OAAS,EAAIA,EAAavjT,MAAQ,WAAa,+BAC1K5O,OAAOmZ,OAAOpX,KAAMkW,GACpBlW,KAAKoyD,QAAUi+P,EAAgBrwT,KAAKsmI,WAAa,MAAQ+pL,SAAuB,OAAS,EAAIA,EAAcxjT,MAG/G,MAAMyjT,GAAc,SAAUxsS,EAAKC,EAAKwsS,GAEpC,GAAIzsS,EAAI8nD,MAAO,CACb9nD,EAAMA,EAAI8nD,MAEZ,GAAI7nD,EAAI6nD,MAAO,CACb7nD,EAAMA,EAAI6nD,MAEZ9nD,EAAMA,EAAIysS,IAAiB,EAC3BxsS,EAAMA,EAAIwsS,IAAiB,EAC3B,OAAOzsS,EAAMC,GAAO,EAAID,EAAMC,EAAM,EAAI,GAG1CysS,GAAkB,SAAU1sS,EAAKC,GAC/B,OAAOusS,GAAYxsS,EAAKC,EAAK,iBAG/B0sS,GAAkB,SAAU3sS,EAAKC,GAC/B,OAAOusS,GAAYxsS,EAAKC,EAAK,iBAiCjC,IAAI2sS,GAA4BxjS,IAC9B,IAAIy7C,EAGJz7C,EAAOyjS,OAASzjS,EAAOjQ,MACvB,MAAMsD,EAAS,GAGf,IAAK2M,EAAO0jS,SAAU,CACpBrwS,EAAO/hB,KAAKyuB,IAEd,IAAKC,EAAOuB,YAAa,CACvBlO,EAAO/hB,KAAKwlE,IAEdzjD,EAAO/hB,KAAK4vT,IACZ,OAAOzlP,EAAS,MAAM+nP,WAAkCxjS,GAAU7R,IAAQmF,SAASD,IAwBjFxS,mBACE,MAAO,2BAGT8T,2BACE,MAAO,CAULgvS,aAAc,KA+BdC,WAAY,GAqEZC,gBAAiB,UAOjBC,gBAAiB,SAmCjBC,UAAW,GAUXC,kBAAmB,MAWnBvB,yBAA0B,KAO1B9qO,eAAgB,aAOhBssO,qBAAsB,mBAOtBvjN,SAAU,MAQVwjN,gBAAiB,IASjBC,SAAU,MAQVC,mBAAoB,KA6BpBC,kBAAmB,GACnBC,kBAAmB,GAYnB5kN,eAAgB,MAChB6kN,kBAAmB,EACnBC,uBAAwB,EAExBC,WAAY,MACZC,qBAAsB,MACtBC,qBAAsB,MACtBjgS,gBAAiB,MAGrBkgS,oBACE,OAAO,KAITnyT,UAAUwY,EAAS,IACjBnY,KAAK+xT,WAAa,EAClB/xT,KAAKgyT,eAAiB,GACtBhyT,KAAKiyT,gBAAkB,GACvB/3S,MAAMsB,UAAUrD,GAElBxY,iBACEua,MAAMuB,iBACN,GAAIzb,KAAK4tG,SAAU,CACjB5tG,KAAKkyT,iBAAmBlyT,KAAKmyT,cAKjCC,cACE,OAAOpyT,KAAKixT,UAAUpjN,KAAKjoG,IAE7BjG,cAAciG,GACZorC,GAAahX,QAAQh6B,KAAM,qBAAsB4F,GAEnDysT,cACE,OAAOryT,KAAKixT,UAAU3rM,KAAK1/G,IAE7BjG,cAAciG,GACZorC,GAAahX,QAAQh6B,KAAM,qBAAsB4F,GAUnDjG,mBAAmBqnG,GACjB,IAAKA,EAAS,OAAO,KACrB,GAAIA,aAAmBJ,GAAO,OAAO5mG,KAAK8wT,WAAW//R,MAAKuhS,GAAaA,EAAU1mP,QAAUo7B,IAC3F,UAAWA,IAAY,SAAU,OAAOhnG,KAAKiyT,gBAAgBjrN,EAAQA,SACrE,OAAOhnG,KAAKiyT,gBAAgBjrN,IAAYhnG,KAAKuyT,mBAAmB3rN,GAAMM,SAASF,IAEjFrnG,oBAAoBiX,GAClB,MAAMg1D,MACFA,GACEh1D,GACJm6S,gBACEA,EAAkB/wT,KAAK+wT,gBAAex2O,WACtCA,GACE3O,EACN,IAAKh1D,EAAWowF,QAAS,CACvBpwF,EAAWowF,QAAUp7B,EAAMmlP,IAAoBnlP,EAAMjhE,GAEvD,IAAKiM,EAAWglE,QAAS,CACvBhlE,EAAWglE,QAAUrB,EAAWqB,QAElC,IAAKhlE,EAAWiuE,eAAgB,CAC9BjuE,EAAWiuE,eAAiBtK,EAAWsK,eAEzC,IAAKjuE,EAAWu6S,qBAAsB,CACpCv6S,EAAWu6S,qBAAuB52O,EAAW42O,qBAE/C,KAAM,mBAAoBv6S,GAAa,CACrCA,EAAWg2F,eAAiBhhC,EAAMghC,eAEpC,OAAOh2F,EAETjX,uBACE,MAAMsyT,EAAkBjyT,KAAKiyT,gBAAkB,GAC/CjyT,KAAK8wT,WAAW9xT,SAAQ4sE,GAASA,EAAMo7B,UAAYirN,EAAgBrmP,EAAMo7B,SAAWp7B,KAUtFjsE,aAAaqnG,GACX,MAAMwrN,EAAkBxyT,KAAKuyT,mBAAmBvrN,GAChD,OAAOwrN,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgB5mP,MAE3FjsE,iBAAiBqY,EAAIsE,EAAUtc,MAC7B,IAAKgY,EAAI,CACP,MAAM,IAAItH,MAAM,sCAElB1Q,KAAK8wT,WAAW3gT,OAAMy7D,GAAS5zD,EAAGnR,KAAKyV,EAASsvD,EAAMA,MAAOA,EAAMo7B,QAASp7B,KAAW,QAEzFklP,eAAexiP,GACbtuE,KAAKyyT,YAAc,GACnBzyT,KAAK0yT,aAAapkP,GAIlB,IAAK,MAAM1C,KAAS5rE,KAAKyyT,YAAa,CACpC7mP,EAAM+mP,aAAe/mP,EAAMgnP,aAAe,GAG9C9B,iBACE,OAAO9wT,KAAKyyT,YAEdjB,wBACE,OAAOxxT,KAAK6yT,mBAEdrB,sBAAsBljP,GACpB,OAAOtuE,KAAK6yT,mBAAqBvkP,EAEnCijP,sBAAsBjjP,GACpBtuE,KAAK8yT,mBAAqB,GAC1B9yT,KAAK+yT,wBAAwBzkP,GAE/BijP,wBACE,OAAOvxT,KAAK8yT,mBAEdnzT,qBAAqBisE,GACnB,MAAM7rE,EAAKC,KACX,IAAI4uT,EAEJ,GAAIhjP,aAAiBg7B,GAAO,CAC1BgoN,EAAY,CACVhjP,MAAAA,QAEG,UAAWA,IAAU,SAAU,CACpC,IAAKA,EAAMA,MAAO,CAEhBA,EAAQ,CACNo7B,QAASp7B,EAAMjhE,GACfihE,MAAO,IAAIg7B,GAAMh7B,IAGrBgjP,EAAYhjP,MAGT,CACHgjP,EAAY,CACVhjP,MAAOg7B,GAAMM,SAASt7B,IAG1B7rE,EAAGizT,oBAAoBpE,GAEvBhjP,EAAQgjP,EAAUhjP,MAElB,GAAIA,EAAMqnP,eAAgB,CACxBrnP,EAAMqnP,eAAelzT,OAGlB,CACH6rE,EAAMswL,YAAcn8P,EAItB6rE,EAAM2hC,SAAW,KAEjB,GAAI3hC,EAAMiiC,KAAM,CACdjiC,EAAMwlB,WAAa,MACnBxlB,EAAMgiC,SAAW,MAGnB7tG,EAAGmzT,uBAAuBtnP,GAC1B,OAAOgjP,EA6DTjvT,aAAaisE,EAAOxwB,EAAU+3Q,GAC5B,IAAIl4H,EACJrvH,EAAQ9oD,GAAYm7B,QAAQ2tB,GAC5B,MAAOqvH,EAASrvH,KAAW,MAAQqvH,SAAgB,GAAKA,EAAOn8L,QAAS,CACtE,OAEF,MAAMiB,EAAKC,KACTsuE,EAAS1C,EAAM/hE,IAAI9J,EAAGqzT,qBAAsBrzT,GAE9C,UAAWq7C,IAAa,YAAa,CACnCr7C,EAAG+wT,WAAWtyT,QAAQ8vE,OAGnB,CAEH,GAAI6kP,EAAW,CACb,GAAIA,aAAqBvsN,WAAgBusN,IAAc,SAAUA,EAAYpzT,EAAGwyT,mBAAmBY,GAEnG/3Q,GAAYr7C,EAAG+wT,WAAWrrT,QAAQ0tT,GAGpCpzT,EAAG+wT,WAAW54S,OAAOkjC,EAAU,KAAMkzB,GAEvCvuE,EAAGyxT,kBAAkBhzT,QAAQ8vE,GAC7BvuE,EAAGszT,uBAIL1zT,oBAAoBisE,GAClB,MAAM7rE,EAAKC,KACX,IAAKD,EAAGuzT,aAAa1nP,GAAQ,CAC3B7rE,EAAG2yT,aAAa9mP,EAAO9oD,GAAY8L,mBAAmBg9C,EAAO7rE,EAAG+wT,WAAYN,KAE9E,IAAKzwT,EAAGwzT,sBAAsB3nP,GAAQ,CACpC7rE,EAAGgzT,wBAAwBnnP,EAAO9oD,GAAY8L,mBAAmBg9C,EAAO7rE,EAAGwxT,kBAAmBd,MAGlG9wT,aAAaisE,GACX,IAAI4nP,EACJ,OAAQA,EAAmBxzT,KAAK8wT,cAAgB,MAAQ0C,SAA0B,OAAS,EAAIA,EAAiB7rT,MAAK+H,GAAKA,IAAMk8D,GAASl8D,EAAEk8D,QAAUA,GAASl8D,EAAEs3F,UAAYp7B,IAkB9KjsE,gBAAgBisE,GACd,MAAM7rE,EAAKC,KACTsuE,EAASvuE,EAAG+wT,WACZ2C,EAAanlP,EAAOv9C,MAAKrhB,GAAKA,IAAMk8D,GAASl8D,EAAEk8D,QAAUA,GAASl8D,EAAEs3F,UAAYp7B,IAClF,GAAI6nP,EAAY,CAEd1zT,EAAG2zT,yBAAyBD,EAAW7nP,cAChC7rE,EAAGkyT,gBAAgBwB,EAAWzsN,SACrClkF,GAAYhhB,OAAOwsE,EAAQmlP,GAC3B,GAAI1zT,EAAGwxT,kBAAmB,CACxBxxT,EAAG4zT,6BAA6B/nP,QAE7B,CACL,MAAM,IAAIl7D,MAAM,yCAKpB/Q,uBAAuBisE,GACrBA,EAAMz8C,GAAG,CACP1qB,KAAMmnE,EAAMjhE,GAEZipT,aAAc,oBACdxuO,OAAQ,oBACRrpE,QAAS,qBACTO,QAAStc,OAGbL,yBAAyBisE,GACvB5rE,KAAKupE,gBAAgBqC,EAAMjhE,IAuD7BhL,wBAAwBisE,EAAOxwB,EAAU+3Q,GACvC,IAAKvnP,EAAO,CACV,OAEFA,EAAQ9oD,GAAYm7B,QAAQ2tB,GAC5B,MAAM7rE,EAAKC,KAETk6B,EAAO0xC,EAAMngE,QAAO,CAAC6pF,EAAY1pB,KAC/B,MAAMl8D,EAAI3P,EAAGwyT,mBAAmB3mP,GAChCl8D,GAAK4lF,EAAW92F,KAAKkR,GACrB,OAAO4lF,IACN,IAEL,UAAWl6C,IAAa,YAAa,CACnCr7C,EAAGwxT,kBAAkB/yT,QAAQ07B,OAExB,CACL,IAAIwhB,EAAMN,EAEV,GAAI+3Q,EAAW,CACb,GAAIA,aAAqBvsN,WAAgBusN,IAAc,SAAUA,EAAYpzT,EAAGwyT,mBAAmBY,GAEnGz3Q,GAAO37C,EAAGwxT,kBAAkB9rT,QAAQ0tT,GAItCpzT,EAAGwxT,kBAAkBr5S,OAAOwjC,EAAK,KAAMxhB,GAEzC,MAAM25R,EAAe9zT,EAAGwxT,kBAAkB1nT,KAAI,EAC5Cm9F,QAAAA,KACIA,IACNjnG,EAAGyxT,kBAAoB,IAAIzxT,EAAGwxT,mBAC9BxxT,EAAG+wT,WAAW9xT,SAAQszT,IACpB,IAAKuB,EAAajoT,SAAS0mT,EAAUtrN,SAAU,CAC7CjnG,EAAGyxT,kBAAkBhzT,KAAK8zT,OAgBhC3yT,6BAA6BisE,GAC3B,MAAM17D,EAAQlQ,KAAKuxT,kBAAkBxhO,WAAUrgF,GAAKA,IAAMk8D,GAASl8D,EAAEk8D,QAAUA,GAASl8D,EAAEs3F,UAAYp7B,IACtG,GAAI17D,GAAS,EAAG,CACdlQ,KAAKuxT,kBAAkBr5S,OAAOhI,EAAO,GAErClQ,KAAKwxT,kBAAkBt5S,OAAOhI,EAAO,IAGzCvQ,sBAAsBisE,GACpB,OAAO5rE,KAAKuxT,kBAAkB5pT,MAAK+H,GAAKA,IAAMk8D,GAASl8D,EAAEk8D,QAAUA,GAASl8D,EAAEs3F,UAAYp7B,IAK5FjsE,oBACEZ,OAAQ6sE,IAER5rE,KAAK8zT,gBAAgBloP,GAEvBjsE,kBAAkBwwB,GAChB,MAAMpwB,EAAKC,KACX,GAAID,EAAG0xT,kBAAmB,CACxB,OAaF,GAAI1xT,EAAGg0T,oBAAoB5jS,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMpxB,QAAS,CACtFgB,EAAGwtB,QAAQ,cACX,GAAIxtB,EAAGsxT,SAAU,CACftxT,EAAGi0T,wBAEA,CACLj0T,EAAGwtB,QAAQ,cAOf5tB,kBACEK,KAAK0xT,yBAQP/xT,eAAes0T,EAAS,MACtB,MAAMl0T,EAAKC,KACXD,EAAG2xT,yBACH,GAAI3xT,EAAG2xT,wBAA0B,EAAG,CAClC3xT,EAAG2xT,uBAAyB,EAE5B,GAAIuC,GAAUl0T,EAAGsxT,UAAYtxT,EAAGg0T,sBAAuB,CACrDh0T,EAAGulH,SAIT4uM,0BACE,OAAOl0T,KAAK0xT,uBAAyB,EAEvC/xT,mBACE,MAAMI,EAAKC,KAEX,IAAKD,EAAGwoL,WAAW,cAAgBxoL,EAAGm0T,oBAAqB,CACzDn0T,EAAGgd,WAAW,CACZtY,KAAM,WACNuT,GAAI,KACFjY,EAAGulH,OAAOvwF,OAAMC,SAElBlY,MAAO/c,EAAGqxT,mBAIhBzxT,iCAAiC2mI,EAAS3xG,EAAUa,EAAck3E,GAChE,MAAM9/F,QACJA,EACAC,KAAMsnT,GACJ7tL,EAUJtmI,KAAKutB,QAAQ,cAAe,CAC1B4mS,YAAAA,EACAx/R,SAAAA,EACAa,aAAAA,EACA4+R,gBAAiB1nN,IAmBnB1sG,KAAKutB,QAAQ4mS,EAAc,OAAQ,CACjCx/R,SAAAA,EACAy/R,gBAAiB1nN,EACjBl3E,aAAAA,EACA5oB,QAAAA,IAGJjN,yBAAyB2mI,EAAS9wG,EAAck3E,GAC9C,MAAM3sG,EAAKC,KACT20B,EAAWa,EAAez1B,EAAGs0T,OAAO7+R,GAAgB,MACpD5oB,QACEA,EACAC,KAAMsnT,GACJ7tL,EACN,GAAI9wG,IAAiBb,EAAU,CAC7B/f,QAAQogB,MAAM,6BAA+BQ,GAE/C,IAAKb,IAAa50B,EAAGuuT,oBAAsB35R,EAAS5tB,UAAY,OAAS4tB,EAAS5tB,SAAU,CAC1FhH,EAAGu0T,2BAA2BhuL,EAAS3xG,EAAUa,EAAck3E,QAC1D,GAAI3sG,EAAGwtB,QAAQ,sBAAuB,CAC3C4mS,YAAAA,EACAx/R,SAAAA,MACK,OAAS50B,EAAGwtB,QAAQ,SAASnjB,EAAaK,WAAW0pT,UAAqB,CAC/Ex/R,SAAAA,EACA/nB,QAAAA,MACK,MAAO,CACZ7M,EAAG8wT,aAAel8R,EAAS4/R,eACrBx0T,EAAGy0T,cAAcluL,EAAS3xG,EAAU/nB,GAE1C,GAAI7M,EAAGmc,YAAa,CAClB,OAUFnc,EAAGwtB,QAAQ,cAAe,CACxB4mS,YAAAA,EACAx/R,SAAAA,EACAy/R,gBAAiB1nN,IAiBnB3sG,EAAGwtB,QAAQ4mS,EAAa,CACtBx/R,SAAAA,EACAy/R,gBAAiB1nN,EACjB9/F,QAAAA,IAEF,GAAIunT,IAAgB,SAAWp0T,EAAGg0T,sBAAuB,CAgBvDh0T,EAAGwtB,QAAQ,aACX,GAAI4mS,IAAgB,OAAQ,CAC1Bp0T,EAAG00T,oBAAoBnuL,EAAQwpL,KAAKxhP,OAAQ,kBAIlD,OAAO35C,EAITh1B,yBACEK,KAAKyxT,oBAEP9xT,sBAAsB+0T,GACpB,GAAI10T,KAAKyxT,sBAAyBzxT,KAAKyxT,oBAAsBiD,EAAiB,CAC5E10T,KAAK20T,qBAGTC,wBACE,OAAO50T,KAAKyxT,kBAAoB,EAqBlC9xT,oBAAoBqnG,GAClB,OAAOA,EAAUhnG,KAAK60T,iBAAiB70T,KAAK80T,aAAa9tN,IAAYhnG,KAAK8wT,WAAWnpT,MAAKwQ,GAAUnY,KAAK60T,iBAAiB18S,EAAOyzD,SAEnIjsE,iBAAiBisE,GACf,OAAO1rE,QAAQ0rE,EAAM2G,SAIvB5yE,aACE,OAAOK,KAAK6tG,OAAO94E,OAAMC,QAE3Br1B,oBAAoB2uE,EAAQlhD,EAAWwvI,GACrC,MAAMzsI,EAAQzxB,EAAe,CAC3B0zD,OAAQ,OAAShlC,GAChBwvI,GACH,IAAK,MAAMhxF,KAAS5rE,KAAK8wT,WAAY,CACnC,GAAIxiP,EAAO1iE,SAASggE,EAAMo7B,SAAU,CAClCp7B,EAAMA,MAAMr+C,QAAQH,EAAW+C,KAIrCxwB,eAAeiN,GACb,MAAMkjT,EAAO,CACTjjT,KAAM,OACNkoT,UAAW/0T,KAAK+0T,WAElBzmP,EAAStuE,KAAK8wT,WACdkE,EAAc/2T,OAAOmZ,OAAO,GAAIxK,UAG3BooT,EAAY1uL,QACnBwpL,EAAKxhP,OAASA,EAAOzkE,KAAI+hE,IACvB,IAAIqpP,EACJ,MAAMC,EAAOF,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYppP,EAAMo7B,SACvFuG,EAAW3hC,EAAM2hC,YAAc0nN,EAAerpP,EAAMA,SAAW,MAAQqpP,SAAsB,OAAS,EAAIA,EAAa1nN,UAiBzH,GAAI2nN,GAAQ3nN,EAAU,CACpB,MAAM7mG,EAASzI,OAAOmZ,OAAO,CAC3B4vF,QAASp7B,EAAMo7B,QACf+H,KAAM,GACLmmN,GACH,GAAI3nN,EAAU,CACZ7mG,EAAO6mG,SAAWA,EAEpB3hC,EAAM4iC,YAAc9nG,EAAOqoG,KAE3B,GAAImmN,EAAM,QACDF,EAAYppP,EAAMo7B,SAE3B,OAAOtgG,EAET,OAAOklE,EAAMo7B,WAGf/oG,OAAOmZ,OAAO04S,EAAMkF,GACpB,OAAOlF,EAETnwT,cAAcisE,EAAO1xC,EAAMttB,GACzB,MAAM8iK,EAAOx1I,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKw1I,KAC9D,GAAI9iK,IAAY,MAAQA,SAAiB,GAAKA,EAAQonD,QAAU95B,IAAS,MAAQA,SAAc,GAAKA,EAAK85B,OAAQ,CAC/G4X,EAAM7sD,IAAI2wJ,OACL,CACL9jG,EAAM1xC,KAAOw1I,EAEf9jG,EAAMr+C,QAAQ,OAAQ,CACpB2M,KAAMw1I,IAGV/vK,oBAAoB2yT,EAAWp4R,EAAMttB,GACnC,MAAMg/D,EAAQ0mP,EAAU1mP,MACtB8jG,EAAOx1I,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKw1I,KAC1D9jG,EAAMupP,UAAY,KAClB,GAAIzlJ,EAAM,CACR1vK,KAAKo1T,cAAcxpP,EAAO1xC,EAAMttB,EAAS0lT,GAE3C1mP,EAAMupP,UAAY,MAsBpBx1T,oBAAoBg1B,EAAU/nB,EAAU,IAEtC5M,KAAKq1T,yBAELr1T,KAAK8wT,WAAW9xT,SAAQszT,IACtB,MAAMtrN,EAAUsrN,EAAUtrN,QACxB9sE,EAAOvF,EAASqyE,GAClB,GAAI9sE,EAAM,CACRl6B,KAAKs1T,oBAAoBhD,EAAWp4R,EAAMttB,EAAQo6F,QAGtDhnG,KAAKu1T,sBAAsB,MAQ7BC,2BACE,OAAOt1T,QAAQF,KAAKgyT,eAAenkN,MAAQ7tG,KAAK4xT,sBAQlD6D,2BACE,OAAOv1T,QAAQF,KAAKgyT,eAAe1sM,MAAQtlH,KAAK6xT,sBAElD11D,yBACE,OAAOj8P,QAAQF,KAAKw1T,sBAAwBx1T,KAAKy1T,sBAoFnD91T,KAAKiN,GACH,UAAWA,IAAY,SAAU,CAC/BA,EAAU,CACR05H,QAAS,CACP1gI,IAAKgH,IAIX,MAAM7M,EAAKC,KACT8vT,EAAO/vT,EAAG21T,eAAe9oT,GAC3B,OAAO,IAAI2D,SAAQ,CAACC,EAASkkB,KAO3B,GAAI30B,EAAGwtB,QAAQ,aAAc,CAC3BuiS,KAAAA,MACK,MAAO,CACZ,IAAIh/P,EAEJ,MAAM+8C,KACJA,GACE9tG,EAAGiyT,eACP,GAAInkN,EAAM,CACR9tG,EAAG41T,cAAc9nN,EAAK92E,KAAM82E,EAAKn5E,QACjC30B,EAAGwtB,QAAQ,eAAgB,CACzBuiS,KAAAA,IAIJ,MAAMxpL,EAAUx5H,EAAQsK,OAAO,CAC7BzM,GAAImlT,EAAKiF,UACT76R,KAAMn6B,EAAG61T,OAAO9F,GAChBjjT,KAAM,OACN9F,QAAShH,EAAG81T,qBACZC,QAAS/1T,EAAGg2T,qBACZz5S,QAASvc,IACP+wD,EAAWlkD,KAAa,MAAQkkD,SAAkB,OAAS,EAAIA,EAASw1E,SAC5EvmI,EAAGiyT,eAAenkN,KAAO,CACvBhhG,KAAM,OACND,QAAAA,EACAkjT,KAAAA,EACAt/S,QAAAA,EACA7Q,UAAU4b,GAGR+qH,EAAQv/H,QAAUu/H,EAAQwvL,QAAU,KACpCphS,KAAUnZ,IAEZ5Q,GAAImlT,EAAKiF,UACTh+R,KAAMh3B,EAAGi2T,YAAY1vL,IAEvBvmI,EAAG00T,oBAAoB3E,EAAKxhP,OAAQ,aACpCvuE,EAAGwtB,QAAQ,YAAa,CACtBuiS,KAAAA,QAEG,CASL/vT,EAAGwtB,QAAQ,eAAgB,CACzBuiS,KAAAA,IAEFp7R,EAAO,CACLuhS,UAAW,WAKnBt2T,4BAA4Bw0T,GAC1B,IAAI7tL,EAAUtmI,KAAKgyT,eAAemC,GAClC,IAAK7tL,GAAWtmI,KAAKkxT,kBAAmB,CACtC5qL,EAAUroI,OAAO4N,OAAO7L,KAAKgyT,gBAAgB,GAE/C,OAAO1rL,EAIT3mI,aAAay2G,EAAMw4M,GACjB,MAAMhjP,MACFA,GACEgjP,GACJv7N,OACEA,GACEznB,EACJiZ,EAAiB+pO,EAAU/pO,gBAAkB7kF,KAAK6kF,eAClDssO,EAAuBvC,EAAUuC,sBAAwBnxT,KAAKmxT,qBAChE,OAAO/6M,EAAKh4G,QAAOo0E,GAAUA,EAAOiU,UAAS58E,KAAI2oE,IAC/C,MAAM18D,EAAM08D,EAAOniE,YACjB6pB,EAAOj8B,OAAOmZ,OAAOo7D,EAAOwI,gBAAiB,CAC3Cr7E,CAACklF,GAAiBrS,EAAO7nE,KAE7B,GAAI0oF,EAAQ,CACV,MAAM/gF,OACJA,GACEkgE,EACJ,GAAIlgE,IAAWA,EAAO68D,QAAU78D,EAAOgzE,UAAW,CAChDprD,EAAKi3R,GAAwB7+S,EAAO3H,IAGxC,GAAI3K,KAAKsxT,mBAAoB,QACpBtgR,GAAaklR,WAAWh8R,EAAMpkB,EAAI68E,mBAAmB78E,EAAI8lE,UAElE,OAAO1hD,KAGXv6B,eAAey2G,EAAMw4M,GACnB,MAAMhjP,MACFA,GACEgjP,GACJv7N,OACEA,GACEznB,EACJghC,EAAiBgiN,EAAUhiN,gBAAkBgiN,EAAUhiN,iBAAmB,OAAS5sG,KAAK4sG,eACxFukN,EAAuBvC,EAAUuC,sBAAwBnxT,KAAKmxT,qBAGhE,GAAIvC,EAAUhjP,MAAM8a,KAAM,CACxB,MAAMhW,EAAWk+O,EAAUhjP,MAAM8E,SACjC0lC,EAAOA,EAAKh4G,QAAOo0E,GAAUA,IAAW9B,IAE1C,OAAO0lC,EAAKh4G,QAAOo0E,GAAUA,EAAOiU,UAASh7E,QAAO,CAACyuB,EAAMs4C,KACzD,IAAI4R,EAEJ,GAAIwoB,EAAgB,CAClBxoB,EAAa5R,EAAOwI,oBACf,CACLoJ,EAAa5R,EAAO0R,wBAEtB,GAAImP,EAAQ,CACV,MAAM/gF,OACJA,GACEkgE,EACJ,GAAIlgE,IAAWA,EAAO68D,QAAU78D,EAAOgzE,UAAW,CAChDlB,EAAW+sO,GAAwB7+S,EAAO3H,IAI9C,IAAKqmC,GAAagN,QAAQomC,GAAa,CACrClqD,EAAK17B,KAAK4lF,GAEZ,OAAOlqD,IACN,IAELv6B,eAAey2G,GACb,OAAOA,EAAKvsG,KAAI2oE,IACd,MAAM18D,EAAM08D,EAAOniE,YACnB,OAAO2gC,GAAahX,QAAQ,GAAIlkB,EAAI68E,mBAAmB78E,EAAI8lE,SAAUpJ,EAAO7nE,OAGhFhL,oBAAoB6yT,GAClB,MAAM5mP,MACJA,GACE4mP,EACJ,IAAI39O,MACAA,EAAQ,GACRrB,SAAU6gB,EAAU,GAAEnxE,QACtBA,EAAU,IACR0oD,EAAM2G,SAAW,GACrBpmE,EACF,GAAI0oE,EAAM/1E,OAAQ+1E,EAAQ70E,KAAKm2T,aAAathP,EAAO29O,GACnD,GAAIn+N,EAAQv1F,OAAQu1F,EAAUr0F,KAAKo2T,eAAe/hO,EAASm+N,GAC3D,GAAItvS,EAAQpkB,OAAQokB,EAAUljB,KAAKq2T,eAAenzS,GAElD,GAAI2xD,EAAM/1E,QAAUu1F,EAAQv1F,QAAUokB,EAAQpkB,OAAQ,CACpDqN,EAAS,GACT,GAAI0oE,EAAM/1E,OAAQqN,EAAO0oE,MAAQA,EACjC,GAAIwf,EAAQv1F,OAAQqN,EAAOkoF,QAAUA,EACrC,GAAInxE,EAAQpkB,OAAQqN,EAAO+W,QAAUA,EAEvC,OAAO/W,EAETxM,sBACE,MAAM4yE,QACJA,GACEvyE,KACJ,OAAOuyE,GAAWvyE,KAAKs2T,UAAY53T,EAAe,CAChDmO,KAAM,OACNkoT,UAAW/0T,KAAK+0T,UAChBR,SAAUv0T,KAAK6wT,cACdt+O,GAAW,KA0BhBA,cACE,MAAMr4C,EAAO,GACbl6B,KAAK8wT,WAAW9xT,SAAQ4sE,IACtB,MAAM2G,EAAUvyE,KAAKu2T,oBAAoB3qP,GACzC,GAAI2G,EAAS,CACXr4C,EAAK0xC,EAAMo7B,SAAWz0B,MAG1B,OAAOt0E,OAAOD,KAAKk8B,GAAMp7B,OAAS,EAAIo7B,EAAO,KAE/Cv6B,yBAAwBisE,MACtBA,EAAKo7B,QACLA,GACCwvN,EAAeC,GAChB,IAAIvkD,EAAOwkD,EACX,MAAM32T,EAAKC,MACTu6E,WACEA,GACE3O,EACJ2oB,EAAeha,EAAWoY,mBAAmBpY,EAAWqB,UAGtDyY,QAASsiO,EACTzzS,QAAS0zS,GACPH,GAAa,GACnB,IAAI/mJ,EAAMxsJ,EAAS4hE,EAEnB,GAAI0xO,EAAe,CACjB,IAAIK,EAAqBC,EACzBhyO,EAAS,KACT,MAAMiyO,EAAe,GAErBrnJ,IAASmnJ,EAAsBL,EAAc9mJ,QAAU,MAAQmnJ,SAA6B,OAAS,EAAIA,EAAoB5kT,UAAY,GACzIiR,IAAY4zS,EAAwBN,EAActzS,WAAa,MAAQ4zS,SAA+B,OAAS,EAAIA,EAAsB7kT,UAAY,GAErJ,IAAIy9J,KAASxsJ,GAASlkB,SAAQg4T,IAC5B,MAAMrsT,EAAKqmC,GAAat0B,QAAQs6S,EAAgBziO,GAChDwiO,EAAapsT,GAAM,QAIrB,GAAI5K,EAAG4vT,yBAA0B,CAE/BgH,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAe33T,SAAQk7B,IACrF,MAAMvvB,EAAKqmC,GAAat0B,QAAQwd,EAAMq6D,GAEtC,IAAKwiO,EAAapsT,GAAK,CACrB+kK,EAAKlxK,KAAK,CACRmB,CAAC40F,GAAe5pF,QAKtBisT,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAe53T,SAAQk7B,IACrF,MAAMvvB,EAAKqmC,GAAat0B,QAAQwd,EAAMq6D,GAEtC,IAAKwiO,EAAapsT,GAAK,CACrBuY,EAAQ1kB,KAAK,CACXmB,CAAC40F,GAAe5pF,cAOrB,GAAIgsT,GAAkBC,EAAgB,CACzC9xO,EAAS,MACT4qF,EAAOinJ,EACPzzS,EAAU0zS,EAGZlnJ,GAAQwiG,EAAQxiG,KAAU,MAAQwiG,SAAe,GAAKA,EAAMpzQ,OAAS4wK,EAAO,KAC5ExsJ,GAAWwzS,EAAWxzS,KAAa,MAAQwzS,SAAkB,GAAKA,EAAS53T,OAASokB,EAAU,KAC9F,MAAO,CACLwsJ,KAAAA,EACAxsJ,QAAAA,EACA4hE,OAAAA,GAGJnlF,oBAAoB2yT,EAAWkE,EAAeC,GAC5C,MAAM12T,EAAKC,KACT6kF,EAAiBytO,EAAUztO,gBAAkB9kF,EAAG8kF,gBAChDjZ,MACEA,GACE0mP,EACJ12O,EAAUhQ,EAAM2O,WAAWoY,mBAAmB,OAE9C+8E,KACEA,EAAIxsJ,QACJA,EAAO4hE,OACPA,GACE/kF,EAAGk3T,wBAAwB3E,EAAWkE,EAAeC,GACzD5hP,EAAQ,GACRwf,EAAU,GAEZ,GAAIq7E,EAAM,CACR,IAAK,MAAMx1I,KAAQw1I,EAAM,CACvB,IAAI/6E,EAEJ,GAAI/oB,EAAMiB,SAAS8nB,EAAuBz6D,EAAK2qD,MAAqB,MAAQ8P,SAA8B,EAAIA,EAAuBz6D,EAAK0hD,IAAW,CACnJyY,EAAQ71F,KAAK07B,OAGV,CACH26C,EAAMr2E,KAAK07B,KAKjB,OAAO0xC,EAAMkpB,eAAe,CAC1B5xE,QAAAA,EACA2xD,MAAAA,EACAwf,QAAAA,GACC,KAAMxP,EAAgBC,EAAQ,MAEnCnlF,kBAAkBg1B,EAAU2xG,GAC1B,IAAI4wL,EACJ,MAAMn3T,EAAKC,KACTsuE,EAASvuE,EAAGyxT,kBACdzxT,EAAG8xT,qBAAuB,KAC1B9xT,EAAGs1T,yBACH,MAAM8B,GAAeD,EAAcn3T,EAAGwrG,WAAa,MAAQ2rN,SAAqB,OAAS,EAAIA,EAAYvrP,IAAI/L,SAC7G,GAAI7/D,EAAGwrG,SAAWxrG,EAAGq3T,yBAA0B,CAC7Cr3T,EAAGwrG,QAAQ5/B,IAAI/L,SAAW,KAE5B,IAAK,MAAMgM,KAAS0C,EAAQ,CAC1B,IAAI+oP,EACJt3T,EAAGu3T,oBAAoB1rP,EAAOj3C,EAASi3C,EAAMo7B,SAAUs/B,IAAY,MAAQA,SAAiB,OAAS,GAAK+wL,EAAgB/wL,EAAQwpL,QAAU,MAAQuH,SAAuB,OAAS,EAAIA,EAAczrP,EAAMo7B,UAE9M,GAAIjnG,EAAGwrG,QAAS,CACdxrG,EAAGwrG,QAAQ5/B,IAAI/L,SAAWu3P,EAE5Bp3T,EAAGw1T,sBAAsB,MACzBx1T,EAAG8xT,qBAAuB,MAE5BlyT,kBAAkBg1B,EAAU/nB,GAC1B5M,KAAK4xT,qBAAuB,KAC5B5xT,KAAKu3T,oBAAoB5iS,EAAU/nB,GACnC5M,KAAK4xT,qBAAuB,MAE9BjyT,oBAAoB2mI,EAAS3xG,EAAU/nB,GACrC,MAAM7M,EAAKC,KAETw3T,EAAez3T,EAAGmxT,mBAAqBv8R,EAAS9nB,MAAQy5H,EAAQz5H,KAClE,OAAQ2qT,GACN,IAAK,OACH,GAAIz3T,EAAGsuT,iBAAkB,CACvBtuT,EAAG03T,qBAAqB9iS,GAE1B50B,EAAG23T,kBAAkB/iS,EAAU/nB,GAC/B,MACF,IAAK,OACH,GAAI7M,EAAGsuT,iBAAkB,CACvBtuT,EAAG43T,qBAAqBhjS,EAAU2xG,GAEpCvmI,EAAG63T,kBAAkBjjS,EAAU2xG,GAC/B,OAoCN3mI,eAAe4yE,EAAS2hB,EAAc,KAAMrP,EAAgBsP,EAAa,OACvE,MAAMp0F,EAAKC,KACTw0F,EAAML,EAAa,IAAI3iF,IAAQ5O,UACjC7C,EAAG83T,kBACH93T,EAAGs1T,yBACH,IAAK,MAAMzpP,MACTA,EAAKiZ,eACLA,KACG9kF,EAAGyxT,kBAAmB,CACzB,GAAIj/O,EAAQ3G,EAAMjhE,IAAK,CACrB,MAAMmtT,EAAWlsP,EAAMkpB,eAAeviB,EAAQ3G,EAAMjhE,IAAKupF,EAAarP,GAAkB9kF,EAAG8kF,eAE3F,KAAMsP,GACN,GAAI2jO,EAAU,CACZtjO,EAAIljF,IAAIs6D,EAAMjhE,GAAImtT,KAIxB/3T,EAAGw1T,sBAAsB,MACzBx1T,EAAGg4T,eAAe,OAClB,OAAOvjO,EAUTugO,gBACE,OAAO9gT,OAAO7K,SAAS,GAAGoF,KAAKC,QAAQzO,KAAK+xT,gBA2C9CpyT,OACE,MAAMI,EAAKC,KAEXD,EAAG2nB,aAAa,YAChB,GAAI3nB,EAAGiyT,eAAe1sM,KAAM,CAQ1BvlH,EAAGwtB,QAAQ,eAEX,OAAOxtB,EAAGi4T,kBAAoBj4T,EAAGi4T,kBAAkB5oD,SAAQ,IAAMrvQ,EAAGulH,SAItE,OAAOvlH,EAAGi4T,kBAAoB,IAAIznT,SAAQ,CAACC,EAASkkB,KAElD,MAAMo7R,EAAO/vT,EAAGk4T,sBAEhB,IAAKnI,EAAM,CACTt/S,EAAQ,MACR,OAgBF,GAAIzQ,EAAGwtB,QAAQ,aAAc,CAC3BuiS,KAAAA,MACK,MAAO,CACZ/vT,EAAGwtB,QAAQ,YAAa,CACtBuiS,KAAAA,IAGF/vT,EAAGiyT,eAAe1sM,KAAO,CACvBz4G,KAAM,OACNijT,KAAAA,EACAt/S,QAAAA,EACAkkB,OAAAA,EACA/pB,GAAImlT,EAAKiF,UACTh+R,KAAMh3B,EAAGi2T,YAAY,CACnBrrT,GAAImlT,EAAKiF,UACT76R,KAAMn6B,EAAG61T,OAAO9F,GAChBjjT,KAAM,OACN9F,QAAShH,EAAG81T,qBACZC,QAAS/1T,EAAGg2T,qBACZz5S,QAASvc,SAGR,CAOLA,EAAGwtB,QAAQ,eAAgB,CACzBuiS,KAAAA,IAEFp7R,EAAO,CACLuhS,UAAW,WAGdlhS,OAAMC,IAEP,GAAIA,IAAUA,EAAMihS,UAAW,CAC7B,MAAMjhS,EAGR,OAAOA,KAGXr1B,2BAA2Bu4T,EAAaxrN,EAAc45B,GACpD,IAAI6xL,EACJ,MAAMp4T,EAAKC,MAEP6M,KAAMsnT,EACNxpT,GAAIoqT,GACFzuL,EACN,GAAIvmI,EAAGmc,YAAa,OACpB,IAAIsZ,EAAe,GACnB8wG,EAAUvmI,EAAGiyT,eAAemC,GAE5B,IACE3+R,QAAqB0iS,EAAYjtT,OACjC,MAAOjH,IAET,GAAIjE,EAAGmc,YAAa,OAUpB,KAAMi8S,EAAW7xL,KAAa,MAAQ6xL,SAAkB,OAAS,EAAIA,EAASxtT,MAAQoqT,EAAW,CAC/F,MAAM,IAAIrkT,MAAM,eAAeyjT,wBAMjCp0T,EAAGiyT,eAAemC,GAAe,KACjC,MAAMx/R,QAAiB50B,EAAGq4T,mBAAmB9xL,EAAS9wG,EAAck3E,GAEpE,GAAI3sG,EAAGmc,YAAa,OACpB,IAAKyY,IAAa50B,EAAGuuT,qBAAuB35R,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAAS5tB,WAAa,QAAU4tB,IAAa,MAAQA,SAAkB,GAAKA,EAAS5tB,UAAW,CAC9Lu/H,EAAQ5xG,OAAO,IAAIy7R,GAAwB,CACzC+H,YAAAA,EACAvjS,SAAAA,EACA2xG,QAAAA,KAIJvmI,EAAG,OAASqK,EAAaK,WAAW67H,EAAQz5H,MAAQ,MAAQ,KAC5Dy5H,EAAQ91H,QAAQ,CACdmkB,SAAAA,EACAujS,YAAAA,EACA1iS,aAAAA,EACA8wG,QAAAA,IAGJ3mI,2BAA2Bu4T,EAAaxrN,EAAc45B,GACpD,IAAI+xL,EACJ,MAAMt4T,EAAKC,KACX,GAAID,EAAGmc,YAAa,OACpBoqH,EAAUvmI,EAAGiyT,eAAe1rL,EAAQz5H,MACpC,MAAMynB,EAASo4E,IAAiB,MAAQA,SAAsB,OAAS,GAAK2rN,EAAwB3rN,EAAar4E,mBAAqB,MAAQgkS,SAA+B,OAAS,EAAIA,EAAsB/jS,OAC9MgkS,EAAap4T,QAAQo0B,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOyuI,SAC9E,IAAKu1J,EAAY,CACf,IAAI3jS,EACFa,EAAe,GACjB,IACEA,QAAqB0iS,EAAYjtT,OACjC0pB,EAAW50B,EAAGs0T,OAAO7+R,GACrB,MAAOxxB,IAET,GAAIjE,EAAGmc,YAAa,OACpBnc,EAAGu0T,2BAA2BhuL,EAAS3xG,EAAUa,EAAck3E,GAE/D,GAAI3sG,EAAGmc,YAAa,OACpBoqH,EAAQ5xG,OAAO,IAAIy7R,GAAwB,CACzC+H,YAAAA,EACA5xL,QAAAA,KAIJvmI,EAAGiyT,eAAe1rL,EAAQz5H,MAAQ,KAWpClN,gBACEK,KAAK8wT,WAAW9xT,SAAQ4sE,GAASA,EAAMA,MAAM6nB,kBAO/C9zF,gBACEK,KAAKwxT,kBAAkBxyT,SAAQ4sE,GAASA,EAAMA,MAAM8nB,kBAOtD/zF,YACE,MAAMI,EAAKC,MACT6tG,KACEA,EAAIyX,KACJA,GACEvlH,EAAGiyT,eACTnkN,GAAQ9tG,EAAG41T,cAAc9nN,EAAK92E,KAAM82E,EAAKn5E,QACzC4wF,GAAQvlH,EAAG41T,cAAcrwM,EAAKvuF,KAAMuuF,EAAK5wF,QACzC,MAAO30B,EAAG+wT,WAAWhyT,OAAS,EAAG,CAC/BiB,EAAG+zT,gBAAgB/zT,EAAG+wT,WAAW,IAEnC52S,MAAM8B,WAAa9B,MAAM8B,cAE1B9c,EAAgBypE,EAAQ,eAAgB,CA2BzCypP,QAAS,KA2BTC,QAAS,KAMTiE,UAAW,KAMXc,yBAA0B,QACxBzuP,GAkCN,MAAM4vP,WAA4Bl9S,GAAOmF,MAAMkwS,KAU7C6D,eACE,OAAOv0T,KAAK6wT,aAEd0D,aAAah1T,GACXS,KAAK6wT,aAAetxT,EAgCtBs1B,WACE,OAAOzqB,EAAa4C,kBAAkBhN,MAExC60B,SAASA,GACP,UAAWA,IAAS,SAAU,CAC5BA,EAAOzqB,EAAa4wF,cAAcnmE,GAEpC70B,KAAKivT,kBAAiBrjP,IACpB,MAAM4sP,EAAW,GAAG5sP,EAAMo7B,cAC1B,GAAInyE,EAAK2jS,GAAW,CAClB5sP,EAAM1xC,KAAOrF,EAAK2jS,OAIxB32S,2BACE,MAAO,CAcLysD,OAAQ,MAmBZ3uE,UAAUwY,EAAS,IACjB,GAAIA,EAAOm2D,OAAQ,CACjBn2D,EAAO24S,WAAa34S,EAAOm2D,cACpBn2D,EAAOm2D,OAEhBp0D,MAAMsB,UAAUrD,GAwClBxY,SAEE,MAAMwM,EAAS,GACfnM,KAAKivT,kBAAiB,CAACrjP,EAAOo7B,IAAY76F,EAAO,GAAG66F,SAAiBp7B,EAAM6Z,WAC3E,OAAOt5E,EA4BTssT,iBACE,OAAOz4T,KAAKylF,SAEdgzO,eAAev+R,GACbl6B,KAAK60B,KAAOqF,EAIdo0C,WAAWA,GACT,GAAIA,IAAWtuE,KAAK8wT,WAAY,CAC9B9wT,KAAK8wT,WAAaxiP,GAYtBA,aACE,OAAOtuE,KAAK8wT,WASdz+O,gBACE,OAAOryE,KAAKw1T,qBA0Dd71T,YAAY4b,GACV,OAAOvb,KAAK0yT,gBAAgBn3S,GAE9B5b,eAAe4b,GACb,OAAOvb,KAAK8zT,mBAAmBv4S,GAEjC5b,YAAY4b,GACV,OAAOvb,KAAK80T,gBAAgBv5S,GAE9B5b,cAAc4b,GACZ,OAAOvb,KAAK+zT,uBAAuBx4S,GAErC5b,YAAY4b,GACV,OAAOvb,KAAKu3T,uBAAuBh8S,IAGvCg9S,GAAoBrwT,OAAS,sBAgB7B,IAAIwwT,GAAiBxrS,GAAU,MAAMwrS,UAAuBxrS,GAAU7R,IACpEtN,mBACE,MAAO,gBAiKT4qT,2BACE,MAAO,CACL9qN,KAAM,MACNyX,KAAM,QASV3lH,cAAci5T,EAAgBlkS,GAC5B,IAAImkS,GACHA,EAAwBD,EAAe1jS,SAAW,MAAQ2jS,SAA+B,OAAS,EAAIA,EAAsBhyT,KAAK+xT,GAElIlkS,EAAO,CACLuhS,UAAW,OAGft2T,4BAA4Bm5T,EAAS/yS,EAAQphB,GAC3C,QAASohB,IAAW,QAAUA,IAAW,SAAWphB,EAmBtDhF,YAAY2mI,GACV,MAAMvmI,EAAKC,MACTk6B,KACEA,GACEosG,EACJyyL,EAAkBh5T,EAAGkxT,UAAU3qL,EAAQz5H,OAAS,GAEhDmsT,EAAgBlsT,EAAQsK,OAAO,GAAI2hT,EAAiBA,EAAgBC,eACtE,GAAI1yL,EAAQ1gI,IAAK,CACfozT,EAAcpzT,IAAM0gI,EAAQ1gI,IAE9BozT,EAAcjzS,OAASizS,EAAcjzS,QAAU2yS,EAAcC,cAAcryL,EAAQz5H,MACnFmsT,EAActyT,OAASoG,EAAQsK,OAAO4hT,EAActyT,QAAU,GAAI4/H,EAAQ5/H,QAC1E,IAAI/B,UACFA,GACEq0T,EAEJ,GAAIj5T,EAAGk5T,4BAA4BF,EAAiBC,EAAcjzS,OAAQphB,GAAY,CACpFq0T,EAAc/yT,KAAOi0B,EAErB8+R,EAAc9kS,QAAU8kS,EAAc9kS,SAAW,GACjD8kS,EAAc9kS,QAAQ,gBAAkB8kS,EAAc9kS,QAAQ,iBAAmB,uBAC5E,CAELvvB,EAAYA,GAAa,OACzBq0T,EAActyT,OAAO/B,GAAau1B,EAEpC,IAAK8+R,EAAcpzT,IAAK,CACtB,MAAM,IAAI8K,MAAM,kDAGXsoT,EAAcA,qBACdA,EAAcr0T,UAwBrB5E,EAAGwtB,QAAQ,aAAc,CACvB7mB,OAAQsyT,EAActyT,OACtBmG,KAAMy5H,EAAQz5H,KACdmsT,cAAAA,EACA7gT,OAAQmuH,IAGV0yL,EAAcxkS,YAAcwkS,EAActyT,cACnCsyT,EAActyT,OACrB,IAAIuvT,EAAY,MAChB,MAAMvpN,EAAe5/F,EAAQsK,OAAO,GAAI4hT,EAAeA,EAActsN,cACnEwsN,EAAcplS,GAAWC,MAAMilS,EAAcpzT,IAAK8mG,GACpD,MAAMvgG,EAAS+sT,EAAYnkS,OAAMC,IAC/B,IAAIqjS,EACJa,EAAY/vR,KAAO,KACnB,MAAM7U,GAAU+jS,EAAwB3rN,EAAar4E,mBAAqB,MAAQgkS,SAA+B,OAAS,EAAIA,EAAsB/jS,OACpJ,GAAIA,EAAQ,CACV2hS,EAAY3hS,EAAOyuI,QACnB,IAAKkzJ,EAAW,CACdrhT,QAAQC,KAAKmgB,IAGjB,MAAO,CACLA,MAAAA,EACAihS,UAAAA,MAEDxlT,MAAKkkB,IACNukS,EAAY/vR,KAAO,KACnB,MAAMgwR,EAAKxkS,IAAa,MAAQA,SAAkB,GAAKA,EAASe,GAAK4wG,EAAQv/H,QAAUu/H,EAAQwvL,QAC/F,OAAOqD,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAGtyT,KAAKy/H,EAAQhqH,SAAWvc,EAAI40B,EAAU+3E,EAAc45B,MAExGn6H,EAAO+oB,MAAQ,KACb,IAAKgkS,EAAY/vR,KAAM,CACrB,IAAIiwR,GACHA,EAAqBF,EAAYhkS,SAAW,MAAQkkS,SAA4B,OAAS,EAAIA,EAAmBvyT,KAAKqyT,KAG1H,OAAO/sT,IAiBX,IAAIktT,GAAensS,GAAU,MAAMmsS,UAAqBnsS,GAAU7R,IAChEtN,mBACE,MAAO,cAET8T,2BACE,MAAO,CAiCLy3S,QAAS,IAUb35T,OAAO45T,GACL,IAAIC,EACJD,EAAct7T,OAAOmZ,OAAO,IAAKoiT,EAAgBx5T,KAAKs5T,WAAa,MAAQE,SAAuB,OAAS,EAAIA,EAAcD,YAAaA,GAC1I,OAAOnvT,EAAa4C,kBAAkBusT,GASxC55T,OAAO61B,GACL,OAAOprB,EAAa4wF,cAAcxlE,KAYtC,IAAIikS,GAAmBvsS,IACrB,IAAIy7C,EACJ,OAAOA,EAAS,MAAM8wP,UAAwBvsS,EAAO1M,MAAMm+J,KACzD5wK,mBACE,MAAO,kBAGTpO,iBACEua,MAAMuB,iBACN,MAAMygP,YACJA,EAAW3wJ,QACXA,GACEvrG,KACJ,GAAIA,KAAKqqH,WAAa6xI,GAAe3wJ,GAASiqN,qBAAsB,CAElEx1T,KAAK05T,0BAST/5T,gBACE,MAAM2qH,SACJA,GACEtqH,KACJ,GAAIsqH,EAAU,CACZtqH,KAAKq2H,OAAS5G,GAAKv3C,aAAal4E,KAAK4+K,iBAAkBt0D,IAG3D3qH,gBACEK,KAAKq2H,OAAS,KAOhB12H,gBAAgBu8P,GACdl8P,KAAKupE,gBAAgB,eACrB2yL,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY/sO,GAAG,CACvE1qB,KAAM,cACNk1T,UAAW,yBACX9rN,KAAM,oBACN+rN,aAAc,4BACdC,UAAW,yBACXv0M,KAAM,oBACNw0M,aAAc,4BACdC,YAAa,2BACbz9S,QAAStc,OAGbL,yBACE,IAAIq6T,EAEJh6T,KAAKo0R,iBACJ4lC,EAAwBh6T,KAAKi0Q,mBAAqB,MAAQ+lD,SAA+B,OAAS,EAAIA,EAAsBnzT,KAAK7G,MAEpIL,yBACEK,KAAKi6T,gBAEPt6T,6BAA6Bu6T,EAAa,KAAM/F,EAAax/R,GAC3D,MAAM50B,EAAKC,MACTm6T,eACEA,GACEp6T,EACN,GAAIm6T,EAAY,CACd,IAAIE,EACJ,GAAID,GAAkB,KAAM,CAC1Bp6T,EAAGgd,WAAWhd,EAAGs6T,cAAeF,OAC3B,CACLp6T,EAAGs6T,iBAEJD,EAAsBr6T,EAAGk0Q,mBAAqB,MAAQmmD,SAA6B,OAAS,EAAIA,EAAoBvzT,KAAK9G,OACrH,CAILA,EAAGm0R,eAAe,wFAC0Bn0R,EAAGo7B,EAAE,cAAcg5R,iDACjDx/R,GAAYA,EAASlgB,QAAU,iCAAiC1U,EAAGo7B,EAAE,6CAA6CxG,EAASlgB,gBAAkB,+BAI/J9U,4BACEK,KAAKs6T,6BAA6B,KAAM,QAE1C36T,4BACEK,KAAKs6T,6BAA6B,KAAM,QAE1C36T,oBACEK,KAAKs6T,6BAA6B,KAAM,QAE1C36T,oBACEK,KAAKs6T,6BAA6B,KAAM,QAIxCt6T,KAAK84L,UAEPn5L,0BAAyBw0T,YACvBA,EAAWx/R,SACXA,IAEA30B,KAAKs6T,6BAA6B,MAAOnG,EAAax/R,GAExD6tC,qBACCtjE,EAAgBypE,EAAQ,SAAU,CACnCwxP,eAAgB,KAGhBl4S,WAAY,CACVk4S,eAAgB,KAEhBxxP,GAYN,IAAI4xP,GAAmBrtS,GAAU,MAAMstS,UAAuBttS,GAAU7R,IAoCtEtN,mBACE,MAAO,kBAWX,IAAI0sT,GAAwBvtS,GAAU,MAAMutS,UAA6BvtS,EACvEnf,mBACE,MAAO,uBAuBTsrE,oBACE,MAAO,CAMP,aAMA,UAMA,CACE50E,KAAM,mBACNoI,KAAM,WACL,QAAS,YAGdlN,UAAUu6B,KAAS3e,GACjB2e,EAAOA,GAAQ,GACf,MAAMwlR,EAAUxlR,EAAKl6B,KAAK65B,SAAS6lR,QAAQnnO,YACzCinO,EAAatlR,EAAKl6B,KAAK65B,SAAS2lR,WAAWjnO,YAE7C,GAAImnO,GAAW,KAAM,CACnBxlR,EAAK/J,MAAQuvR,EAEf,GAAIF,GAAc,KAAM,CACtBtlR,EAAKigR,SAAWqF,EAElBtlS,MAAMsB,UAAU0e,KAAS3e,GAS3Bm/S,uBACE,OAAO16T,KAAK26T,sBAAsB36T,KAAKmwB,MAAOnwB,KAAKm6S,UAErDx6S,sBAAsBwwB,EAAOgqR,GAC3B,IAAIygB,EAAUC,EACd,GAAI1qS,EAAO,CACTyqS,EAAWzqS,EAAMs+C,QAAUt+C,EAAMxlB,GAAKwlB,MACjC,CACLyqS,EAAW56T,KAAKqlF,WAElB,GAAI80N,EAAU,CACZ0gB,EAAc1gB,EAAS1rO,QAAU0rO,EAASxvS,GAAKwvS,MAC1C,CACL0gB,EAAc76T,KAAKqlF,WAErB,MAAO,GAAGu1O,KAAYC,IAExBl7T,eAAcwwB,MACZA,EAAKgqR,SACLA,IAEA,OAAOn6S,KAAK26T,sBAAsBxqS,EAAOgqR,GAE3Cx6S,IAAI4W,EAAOhX,KAAUgc,GACnB,MAAM+3D,EAAQtzE,KAAKoiF,YAAY7rE,EAAOhX,GAEtC,GAAI,aAAc+zE,EAAO,CACvB,IAAIwnP,EACJ,IAAKA,EAAkBxnP,EAAM6mO,YAAc,MAAQ2gB,SAAyB,GAAKA,EAAgBnwT,GAAI,CACnG2oE,EAAMksO,WAAalsO,EAAM6mO,SAASxvS,SAIjC,GAAI,eAAgB2oE,GAAStzE,KAAKqQ,YAAY0qT,qBAAsB,CACvEznP,EAAM6mO,SAAW7mO,EAAMksO,WAGzB,GAAI,UAAWlsO,EAAO,CACpB,IAAI0nP,EACJ,IAAKA,EAAe1nP,EAAMnjD,SAAW,MAAQ6qS,SAAsB,GAAKA,EAAarwT,GAAI,CACvF2oE,EAAMosO,QAAUpsO,EAAMnjD,MAAMxlB,SAEzB,GAAI,YAAa2oE,GAAStzE,KAAKqQ,YAAY0qT,qBAAsB,CACtEznP,EAAMnjD,MAAQmjD,EAAMosO,QAEtB,OAAOxlS,MAAM5I,IAAIgiE,EAAO,QAAS/3D,GAEnC5b,YAAY2zE,EAAOxG,EAAQ52C,EAAQk2C,EAAoByV,GACrD,IAAIo5O,EAGJ,IAAKj7T,KAAKqQ,YAAY0qT,sBAAwBjuP,IAAW,MAAQA,SAAgB,GAAKA,EAAO0yO,cAAgByb,EAAiBj7T,KAAKm6S,YAAc,MAAQ8gB,SAAwB,OAAS,EAAIA,EAAetwT,MAAQmiE,EAAO0yO,WAAWjgT,MAAO,CAC5OS,KAAKm6S,SAAWrtO,EAAO0yO,WAAWjgT,MAEpC,OAAO2a,MAAMy5D,eAAe90E,WAG9B2gT,eAAejgT,GACb,MAAM46S,SACJA,GACEn6S,KAGJ,GAAIm6S,IAAa,MAAQA,SAAkB,GAAKA,EAAS1rO,SAAW0rO,EAASxvS,KAAOpL,EAAO,CACzFS,KAAKsR,IAAI,aAAc/R,OAClB,CACLS,KAAKm6S,SAAW56S,GAGpBigT,iBACE,IAAI0b,EAEJ,OAAOl7T,KAAK0R,IAAI,iBAAmBwpT,EAAkBl7T,KAAKm6S,YAAc,MAAQ+gB,SAAyB,OAAS,EAAIA,EAAgBvwT,IAGxI+0S,YAAYngT,GACV,MAAM4wB,MACJA,GACEnwB,KAGJ,GAAImwB,IAAU,MAAQA,SAAe,GAAKA,EAAMs+C,SAAWt+C,EAAMxlB,KAAOpL,EAAO,CAC7ES,KAAKsR,IAAI,UAAW/R,OACf,CACLS,KAAKmwB,MAAQ5wB,GAGjBmgT,cACE,IAAIyb,EAEJ,OAAOn7T,KAAK0R,IAAI,cAAgBypT,EAAcn7T,KAAKmwB,SAAW,MAAQgrS,SAAqB,OAAS,EAAIA,EAAYxwT,IAOtHyiB,gBACE,IAAIguS,EACJ,OAAQA,EAAep7T,KAAKmwB,SAAW,MAAQirS,SAAsB,OAAS,EAAIA,EAAa32T,KAOjG42T,mBACE,IAAIC,EACJ,OAAQA,EAAkBt7T,KAAKm6S,YAAc,MAAQmhB,SAAyB,OAAS,EAAIA,EAAgB72T,KAQ7G9E,cACE,OAAOK,KAAKm6S,SAIdohB,mBACE,OAAO,KAOTh4O,oBACE,IAAIi4O,EACJ,MAAMrrS,MACFA,EAAKgqR,SACLA,EAAQl9N,eACRA,EAAck4N,gBACdA,GACEn1S,KACJk8P,EAAci5C,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBj5C,YAClG,IAAI/vP,EACJ,GAAIgpS,EAAiB,CAInBhpS,EAASnM,KAAKymF,SAAWt2D,EAAMozD,gBAAkB24K,IAAgB/rO,EAAMw5C,iBAAmBwwO,EAASxwO,oBAGhG,CACHx9D,GAAUnM,KAAKslF,WAAaplF,QAAQ+8E,EAAe,IAGrD,OAAO9wE,GAAU+N,MAAMqpE,kBAAoBi4O,EAAex7T,KAAKmwB,SAAW,MAAQqrS,SAAsB,GAAKA,EAAal+O,YAE5HmJ,cACE,OAAOzmF,KAAKm6S,UAAY,MAAQn6S,KAAKmwB,OAAS,KAMhDxwB,WACE,GAAIK,KAAKq7T,aAAc,CACrB,MAAO,GAAGr7T,KAAKq7T,gBAAgBjnT,KAAKkxB,MAAMtlC,KAAK2pC,UAEjD,MAAO,GAGThqC,wBAAwBwzC,EAAWt5B,EAAUrB,GAC3C,IAAK0B,MAAMgzD,wBAAwB/5B,EAAWt5B,EAAUrB,GAAW,CACjE,OAAO,MAET,GAAI26B,IAAc,SAAWA,IAAc,UAAW,CACpD,IAAI8iQ,EACJ,MAAMZ,GAAcY,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAcZ,WAChH,GAAIA,GAAcA,EAAWzoO,SAAS/yD,KAAcw7R,EAAWxoO,QAAQr0D,GAAW,CAChF,OAAO,OAGX,GAAI26B,IAAc,YAAcA,IAAc,aAAc,CAC1D,IAAIujQ,EACJ,MAAMpB,GAAiBoB,EAAiB12S,KAAKurG,WAAa,MAAQmrM,SAAwB,OAAS,EAAIA,EAAepB,cACtH,GAAIA,GAAiBA,EAAc1oO,SAAS/yD,KAAcy7R,EAAczoO,QAAQr0D,GAAW,CACzF,OAAO,OAGX,OAAO,OAKX,MAAMijT,GAAgBtc,GAgEtB,MAAMuc,WAA0BjB,GAAqBF,GAAgBkB,GAAc/yB,OAAO/sN,OAgBxF5tE,mBACE,MAAO,kBAETosS,eACE,OAAOjgS,MAAMigS,SAEfA,aAAaA,GACXjgS,MAAMigS,SAAWA,EACjBn6S,KAAKsR,IAAI,aAActR,KAAKqQ,YAAYmxE,KAAK24N,KAGjDuhB,GAAkB/+O,mBAClB++O,GAAkBxzT,OAAS,kBAkC3B,IAAIyzT,GAAwBzuS,GAAU,MAAMyuS,UAA6BzuS,EACvEnf,mBACE,MAAO,uBAmGT8T,2BACE,MAAO,CAKL8wS,aAAc,IAKdC,aAAc,IACd5rN,QAAS,eAGbrnG,IAAIi8T,KAAmBrgT,GACrBqgT,EAAiB94S,GAAYm7B,QAAQ29Q,GACrC,IAAK,IAAIh9T,EAAI,EAAGA,EAAIg9T,EAAe98T,OAAQF,IAAK,CAC9C,IAAIi9T,EACJ,IAAIzhB,EAAawhB,EAAeh9T,GAChC,KAAMw7S,aAAsBz+N,IAAQ,CAClCigP,EAAeh9T,GAAKw7S,EAAap6S,KAAK0uE,aAAa0rO,GAErD,IAAKp6S,KAAK6kG,qBAAuB7kG,KAAKkE,QAAQ6rF,UAAU,mBAAoBqqN,EAAWsgB,iBAAkB,SAAW,EAAG,CACrH,MAAM,IAAIhqT,MAAM,+BAA+B0pS,EAAWsF,wBAAwBtF,EAAWoF,cAE/F,IAAKqc,EAAoBzhB,EAAWjqR,SAAW,MAAQ0rS,SAA2B,GAAKA,EAAkBv+O,WAAY,CACnH88N,EAAW98N,WAAa,MAG5B,OAAOpjE,MAAM6E,IAAI68S,KAAmBrgT,GAEtC5b,mBAAmB+/S,EAASF,GAC1B,OAAOx/S,KAAKkE,QAAQ6rF,UAAU,mBAAoB,GAAG2vN,KAAWF,IAAc,SAAW,EAE3F7/S,aAAau6B,GACXhgB,MAAM6vF,aAAa7vE,GAMrBh2B,YAAYA,GACVgW,MAAMhW,QAAUA,EAGhBlE,KAAKkE,QAAQ8qF,SAAS,CACpB78E,SAAU,mBACVy9E,YAAa,CACXz/D,MAAO,KACPgqR,SAAU,QAIhBj2S,cAEE,OAAOlE,KAAKsnG,UAAYptF,MAAMhW,QAKhC43T,wBACE,OAAO,KAYTn8T,cAAco8T,EAAoBC,GAEhC,IAAKD,KAAwBC,IAAe,MAAQA,SAAoB,GAAKA,EAAWC,cAAe,CACrG,OAAOF,EAGT,MAAMh8T,EAAKC,KACX,MAAO,CACL2K,GAAI,GAAGqxT,EAAWrxT,OAAOoxT,EAAmBpxT,KAC5CwlB,MAAO6rS,EACP7hB,SAAU4hB,EAAmB5hB,SAC7BuF,QAASsc,EAAWrxT,GACpB60S,WAAYuc,EAAmB5hB,SAASxvS,GACxC4wT,aAAc,KAEdW,uBAAwB,KAExBv8T,aAAasnF,GACX,OAAOlnF,EAAGo8T,uBAAuBn8T,KAAMinF,KAK7CtnF,uBAAuBy8T,EAAsBn1O,GAC3C,MAAMlnF,EAAKC,KACTorE,EAAa6b,EAAat8E,IAAMs8E,GAChCt8E,GACEA,GACEyxT,EACN,IAAIC,eACFA,GACEt8T,EACJ,IAAKs8T,EAAgB,CACnBA,EAAiBt8T,EAAGs8T,eAAiB,GAEvC,IAAKA,EAAe1xT,GAAK,CACvB0xT,EAAe1xT,GAAM,GAEvB,OAAO0xT,EAAe1xT,GAAIygE,KAAgBixP,EAAe1xT,GAAIygE,GAAc,IAa7EzrE,uBAAuBwwB,EAAOnY,EAAIu7E,GAChCpjE,EAAQnwB,KAAKq1S,WAAWxoO,QAAQ18C,GAChC,MAAMmsS,EAAQp8T,QAAQ8X,GACpBukT,EAAcr8T,QAAQqzF,GACxB,GAAI+oO,GAASC,EAAa,CACxB,OAAOpsS,EAAMqsS,YAAY/wT,QAAO,CAACU,EAAQiuS,KACvC,MAAMqiB,EAAYH,EAAQtkT,EAAGoiS,GAAcA,EAC3C,IAAKmiB,GAAehpO,EAASkpO,GAAY,CACvCtwT,EAAO3N,KAAKi+T,GAEd,OAAOtwT,IACN,IAEL,OAAOgkB,EAAMqsS,YAWf78T,0BAA0Bw6S,EAAUniS,EAAIu7E,GACtC4mN,EAAWn6S,KAAKs1S,cAAczoO,QAAQstO,GACtC,MAAMmiB,EAAQp8T,QAAQ8X,GACpBukT,EAAcr8T,QAAQqzF,GACxB,GAAI+oO,GAASC,EAAa,CACxB,OAAOpiB,EAASqiB,YAAY/wT,QAAO,CAACU,EAAQiuS,KAC1C,MAAMqiB,EAAYH,EAAQtkT,EAAGoiS,GAAcA,EAC3C,IAAKmiB,GAAehpO,EAASkpO,GAAY,CACvCtwT,EAAO3N,KAAKi+T,GAEd,OAAOtwT,IACN,IAEL,OAAOguS,EAASqiB,YASlB78T,uBAAuBwwB,GACrB,OAAOA,EAAMqsS,YAQf78T,0BAA0BwwB,GACxB,OAAOnwB,KAAK8B,OAAOquB,EAAMqsS,aAS3B78T,0BAA0Bw6S,GACxBA,EAAWn6S,KAAKs1S,cAAczoO,QAAQstO,GACtC,OAAOA,EAASqiB,YAQlB78T,6BAA6Bw6S,GAC3Bn6S,KAAK8B,OAAO9B,KAAK08T,0BAA0BviB,IAS7Cx6S,qBAAqBwwB,GACnB,OAAOA,EAAMwsS,UASfh9T,qBAAqBw6S,GACnB,IAAIyiB,EACJziB,EAAWn6S,KAAKs1S,cAAczoO,QAAQstO,GACtC,OAAQyiB,EAAYziB,KAAc,MAAQyiB,SAAmB,OAAS,EAAIA,EAAU3uS,OAYtFtuB,sBAAsBwwB,EAAOwsS,EAAWE,EAAoB,KAAMC,EAA4B,OAC5F,IAAIjZ,EAAgBkZ,EACpB,MAAMh9T,EAAKC,KACTykB,EAAWq4S,EAA4B,IAAIj+S,IAAIsR,EAAMqsS,aAAe,KACtEG,EAAY75S,GAAYm7B,QAAQ0+Q,GAAW9yT,KAAIqmB,IAC7C,IAAI8sS,EACJ,OAAQA,EAAe9sS,EAAEwlD,aAAe,MAAQsnP,SAAsB,EAAIA,EAAe9sS,KAG3F,IAAK2zR,EAAiB9jT,EAAGs1S,cAAgB,MAAQwO,SAAwB,GAAKA,EAAeoZ,uBAAyBF,EAAqB5sS,EAAMqsS,eAAiB,MAAQO,SAA4B,GAAKA,EAAmBj+T,OAAQ,CACpO,IAAKiB,EAAGm9T,0BAA0B/sS,EAAOwsS,EAAU,IAAK,CACtDxsS,EAAMgqR,SAAWwiB,EAAU,GAE7B,MAAO,GAET,IAAIf,EAAiB,GACrB77T,EAAG6lT,oBAEH+W,EAAU39T,SAAQm7S,IAChB,MAAMgjB,EAAqBp9T,EAAGq9T,iCAAiCjtS,EAAOgqR,GACtE,IAAKgjB,EAAoB,CACvB,IAAIE,EACJ,MAAMjjB,EAAa,CACjBjqR,MAAAA,EACAgqR,SAAAA,GAEFyhB,EAAep9T,MAAM6+T,EAAqBR,IAAsB,MAAQA,SAA2B,OAAS,EAAIA,EAAkBziB,MAAiB,MAAQijB,SAA4B,EAAIA,EAAqBjjB,QAC3M,GAAI0iB,EAA2B,CACpCr4S,EAASnL,OAAO6jT,OAGpBvB,EAAiB77T,EAAGgf,IAAI68S,GACxB,GAAIkB,EAA2B,CAC7B/8T,EAAG+B,OAAOyF,MAAMyd,KAAKP,IAGvB1kB,EAAGgmT,mBACH,OAAO6V,EAUTj8T,0BAA0BwwB,EAAOwsS,GAC/B,MAAM58T,EAAKC,KACTs9T,EAAsB,GACxB,IAAKX,EAAW,CACd,OAAO58T,EAAGw9T,0BAA0BptS,GAEtCwsS,EAAY75S,GAAYm7B,QAAQ0+Q,GAChC,IAAK,IAAI/9T,EAAI,EAAGA,EAAI+9T,EAAU79T,OAAQF,IAAK,CACzC,GAAImB,EAAGm9T,0BAA0B/sS,EAAOwsS,EAAU/9T,IAAK,CACrD0+T,EAAoB9+T,KAAKuB,EAAGq9T,iCAAiCjtS,EAAOwsS,EAAU/9T,MAGlF,OAAOmB,EAAG+B,OAAOw7T,GAUnB39T,0BAA0BwwB,EAAOgqR,GAC/B,OAAOj6S,QAAQF,KAAKo9T,iCAAiCjtS,EAAOgqR,IAU9Dx6S,iCAAiCwwB,EAAOgqR,GACtC,IAAIqiB,EAGJ,KAAMrsS,EAAQnwB,KAAKq1S,WAAWxoO,QAAQ18C,OAAaqsS,EAAcrsS,EAAMqsS,gBAAkBriB,EAAWn6S,KAAKs1S,cAAczoO,QAAQstO,IAAY,CACzI,OAAO,KAET,OAAOn6S,KAAKw9T,cAAchB,EAAYzrS,MAAKlrB,GAAKA,EAAEs0S,WAAaA,IAAWhqR,KAK9E,MAAMstS,GAAgBlD,GAAgBza,GAAyBpX,OAAOj8L,KA0CtE,MAAMixN,WAA0B/B,GAAqB8B,KACnD57S,2BACE,MAAO,CACL04D,WAAYmhP,KAIlBx8T,EAAgBw+T,GAAmB,QAAS,mBAC5CA,GAAkBx1T,OAAS,kBAU3B,IAAIy1T,GAAsBzwS,GAAU,MAAMywS,UAA4BzwS,GAAU7R,IAC9EtN,mBACE,MAAO,qBAET6vT,sBACE,OAAO,KAmGT/7S,2BACE,MAAO,CAKL8wS,aAAc,IAKdC,aAAc,IACd5rN,QAAS,YACTxU,SAAU,MAGd7yF,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChB,IAAKnY,KAAKu6E,WAAWsjP,gBAAiB,CACpC,MAAM,IAAIntT,MAAM,wDAGpB/Q,cAAc4rT,GACZ,IAAIp/S,EAAS,EAGbo/S,EAAUQ,qBAAuB,MACjC/rT,KAAKhB,SAAQkxB,IAEXA,EAAEq/C,aAAag8O,GAAW0B,WAAa9gT,EACvC,GAAI+jB,EAAEk7R,aAAe,KAAM,CACzBj/S,GAAUo/S,EAAUuS,wBACf,CACL3xT,GAAU+jB,EAAEk7R,YACZG,EAAUQ,qBAAuB,SAGrC,OAAO5/S,EAETxM,YACE,MAAMwM,EAAS+N,MAAM2lF,aAAahhG,WAElCsN,GAAUnM,KAAKm1S,gBAAgBt1M,YAC/B,OAAO1zF,EASTxM,kBAAiB6yE,OACfA,EAAM34D,SACNA,EAAQta,MACRA,IAEA2a,MAAMyuF,iBAAiB,CACrBn2B,OAAAA,EACA34D,SAAAA,EACAta,MAAAA,IAEF,GAAIizE,EAAO+oJ,gBAAgB,MAAO,CAChCv7N,KAAK+9T,aAAe,KACpBvrP,EAAOwrP,8BACPh+T,KAAK+9T,aAAe,OASxBp+T,uBAAsBwtC,UACpBA,EAASC,QACTA,IAEA,OAAOptC,KAAKs+D,OAAM67O,GAAYn6S,KAAKq1S,WAAW4oB,qBAAqB9wR,EAAWC,EAAS,KAAM+sQ,OAWjG,IAAI+jB,GAAsBhxS,GAAU,MAAMgxS,UAA2BhxS,EACnEnf,mBACE,MAAO,qBAGT8vT,6BACE,OAAO,KAyBTxkP,oBACE,MAAO,CAWP,CACE50E,KAAM,OACNoI,KAAM,SACN+rE,QAAS,MAUX,aASA,aAOA,WAQA,QAMA,CACEn0E,KAAM,iBACNoI,KAAM,UAOR,CACEpI,KAAM,YACNoI,KAAM,UAmCR,eAIFlN,8BACEK,KAAKs6S,SAASt7S,SAAQo7S,IACpBA,EAAWoF,WAAax/S,KAAK2K,MAGjChL,OAAOJ,GACL2a,MAAMm4C,OAAO9yD,GACbS,KAAKg+T,8BAUP/vS,aACE,OAAOjuB,KAAKw8T,YAAY/wT,QAAO,CAACwiB,EAAQmsR,KACtC,GAAIA,EAAWjqR,MAAO,CACpBlC,EAAOzvB,KAAK47S,EAAWjqR,OAEzB,OAAOlC,IACN,IAOLuuS,kBACE,OAAOx8T,KAAKs6S,SAAW,IAAIt6S,KAAKs6S,UAAY,GAE9CkiB,gBAAgBA,GAEdA,EAAYx9T,SAAQo7S,IAClBA,EAAWD,SAAWn6S,QAQ1BL,YAEE,OAAOK,KAAKiuB,OAUds1D,oBACE,OAAOrpE,MAAMqpE,iBAAmBvjF,KAAKsS,QAAUtS,KAAKsS,OAAOixE,eAM7D5jF,cACEK,KAAKw8T,aAAex8T,KAAKm1S,gBAAgBrzS,OAAO9B,KAAKw8T,aASvD3oG,eACE,MAAMpvN,KACJA,EAAO,IACLzE,KACJ,IAAKyE,EAAM,CACT,MAAO,GAET,MAAMmc,EAAQnc,EAAKY,MAAM,KACvB84T,EAAev9S,EAAM,GAAG,GACxBw9S,EAAcx9S,EAAM9hB,OAAS,EAAI8hB,EAAMA,EAAM9hB,OAAS,GAAG,GAAK,GAChE,OAAOq/T,EAAeC,EAExBz+T,cAAc68B,GACZ,IAAIy5Q,EAAeooB,EACnB,MAAMpuB,EAAWjwS,KAAKolT,qBAAuBnP,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAchG,UACzI,OAAQA,KAAcouB,EAAwBpuB,EAASquB,iBAAmB,MAAQD,SAA+B,OAAS,EAAIA,EAAsBx3T,KAAKopS,EAAUzzQ,MAIvK,MAAM+hS,GAAgBvf,GAuEtB,MAAMwf,WAAwBN,GAAmB3D,GAAgBgE,GAAc71B,OAAOj+D,OACpF18N,mBACE,MAAO,iBAGXywT,GAAgB7hP,mBAChB6hP,GAAgBt2T,OAAS,gBAEzB,MAAMu2T,GAAgBlE,GAAgB3Y,GAAuBlZ,OAAOj8L,KA0CpE,MAAMiyN,WAAwBf,GAAmBc,KAC/C58S,2BACE,MAAO,CACL04D,WAAYikP,KAIlBE,GAAgBx2T,OAAS,gBAYzB,IAAIy2T,GAAmBzxS,GAAU,MAAMyxS,UAAyBzxS,GAAU7R,IACxEtN,mBACE,MAAO,kBAGTpO,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChBnY,KAAKwyF,SAAW,KAIlBiD,oBAAoBA,GAClBv7E,MAAMu7E,gBAAkBA,EAE1BA,sBAEE,MAAMtpF,EAAS+N,MAAMu7E,gBAErB,GAAItpF,GAAUA,IAAW2Z,GAAemkE,WAAY,CAClD,OAAO/5D,GAAKA,EAAEotD,YAAcnxE,EAAO+jB,GAErC,OAAO/jB,EAoBTxM,eAAeiN,GACb,MAAM7M,EAAKC,MACTy1F,gBACEA,EAAe5gB,MACfA,GACE90E,EAEJoM,EAASpM,EAAGooT,UAAUzpT,EAAeA,EAAe,GAAIkO,GAAU,GAAI,CACpEgyT,cAAe7+T,EAAGqsF,WAAarsF,EAAGq1F,mBAAqBK,EAAkBgrF,GAAe5rG,EAAMjpE,SAAS60K,GAAe1gL,EAAG0F,QAAQg7K,IAAgB,EAAIhrF,EAAgBgrF,GAAe,KACpLo+I,QAASjyT,EAAQiyT,SAAW,QAEhC1yT,EAAOnN,SAAQ,CAACO,EAAON,IAAQkN,EAAOmF,IAAIrS,EAAKM,EAAMT,UACrD,OAAOqN,EAcTxM,sBAAsBqY,EAAIsE,EAAUtc,MAClCA,KAAKhB,SAAQmxB,IACX,MAAMgd,UACJA,EAASC,QACTA,GACEjd,EACJ,GAAIgd,GAAaC,EAAS,CACxB,OAAOp1B,EAAGnR,KAAKyV,EAAS6T,EAAOgd,EAAWC,OAUhDztC,mBACE,IAAIm/T,EAAW,IAAItwT,KAAK,KAAM,EAAG,GAC/BuwT,EAAS,IAAIvwT,KAAK,GACpBxO,KAAKhB,SAAQmxB,IACX,GAAIA,EAAMgd,UAAW,CACnB2xR,EAAWj/R,GAAWlX,IAAIwH,EAAMgd,UAAW2xR,GAE7C,GAAI3uS,EAAMid,QAAS,CACjB2xR,EAASl/R,GAAWxrB,IAAI8b,EAAMid,QAAS2xR,OAI3CD,EAAWA,EAAW,IAAItwT,KAAK,KAAM,EAAG,GAAKswT,EAAW,KACxDC,EAASA,EAAS,IAAIvwT,KAAK,GAAKuwT,EAAS,KAEzC,OAAO/+T,KAAKg/T,kBAAoB,CAC9B7xR,UAAW2xR,GAAY,KACvB1xR,QAAS2xR,GAAUD,GAAY,MAWnCn/T,mBAAmBwwB,GACjB,OAAOA,EAAMozD,cAaf5jF,qBAAqB6oB,EAAO9E,EAAKu7S,EAAc9kB,GAG7C,GAAIA,EAASjgR,KAAKupE,gBAAiB,CACjC,OAAO,MAGT,MAAMy7N,EAAY,IAAIrgT,IAAI7e,KAAKm/T,qBAAqBhlB,IAMpD,GAAI8kB,IAAiB,MAAQA,SAAsB,GAAKA,EAAa1D,aAAc,CACjF,MAAM6D,EAAeH,EAAa9uS,MAChCwsS,EAAYyC,EAAazC,UAC3BA,EAAU39T,SAAQm7S,IAEhB,GAAIA,EAASxvS,KAAOs0T,EAAazf,WAAY,CAC3Cx/S,KAAKm/T,qBAAqBhlB,GAAUn7S,SAAQmxB,GAAS+uS,EAAUngT,IAAIoR,SAIzE,GAAI8uS,EAAc,CAChB,MAAMI,EAAgBJ,EAAa1D,aAAe0D,EAAa9uS,MAAQ8uS,EACvEC,EAAU5lT,OAAO+lT,GAEnB,OAAQ93T,MAAMyd,KAAKk6S,GAAWv3T,MAAKwoB,GAASA,EAAMmvS,aAAez/R,GAAW0/R,eAAe/2S,EAAO9E,EAAKyM,EAAMgd,UAAWhd,EAAMid,WAYhIztC,wBAAwBw6S,EAAUniS,EAAIsE,EAAUtc,MAC9C,OAAOm6S,EAASgO,UAAUnoT,MAAM5B,OAAO4Z,EAAGhD,KAAKsH,IASjD3c,qBAAqBwwB,GAEnB,GAAIA,EAAM8rS,aAAc,CACtB9rS,EAAQA,EAAMorR,kBAEhB,OAAOv7S,KAAKm1S,gBAAgBqqB,qBAAqBrvS,GAUnDxwB,qBAAqBw6S,GACnB,OAAOn6S,KAAKm1S,gBAAgBgqB,qBAAqBhlB,GAWnDx6S,uBAAuBwwB,GACrB,OAAOnwB,KAAKm1S,gBAAgBsqB,uBAAuBtvS,IAAU,GAS/DxwB,0BAA0Bw6S,GACxB,OAAOn6S,KAAKm1S,gBAAgBunB,0BAA0BviB,IAAa,GAWrEx6S,sBAAsBwwB,EAAOgqR,EAAU2iB,EAA4B,OACjE,OAAO98T,KAAKm1S,gBAAgBuqB,sBAAsBvvS,EAAOgqR,EAAUv3S,UAAWk6T,GAShFn9T,0BAA0BwwB,EAAOgqR,GAC/Bn6S,KAAKm1S,gBAAgBwqB,0BAA0BxvS,EAAOgqR,GAUxDx6S,oCAAoCwwB,EAAO00R,EAAaC,GACtD,MAAM/kT,EAAKC,KACT4/T,EAAgBjkP,GAAM6F,KAAKsjO,GAC3B1K,EAAar6S,EAAGo1S,gBAAgBioB,iCAAiCjtS,EAAO00R,GAC1E,GAAIzK,EAAY,CACdA,EAAWoF,WAAaogB,MACnB,CACL7/T,EAAGo1S,gBAAgBuqB,sBAAsBvvS,EAAO20R,IAWpDnlT,0BAA0BwwB,EAAOgqR,GAC/B,OAAOn6S,KAAKm1S,gBAAgB+nB,0BAA0B/sS,EAAOgqR,GAQ/Dx6S,0BAA0BwwB,GACxBnwB,KAAKm1S,gBAAgBooB,0BAA0BptS,GAQjDxwB,6BAA6Bw6S,GAC3Bn6S,KAAKm1S,gBAAgB0qB,6BAA6B1lB,KAQtD,MAAMlwN,GAAa,IAAM,KACvB61O,GAAe3vS,IAAUA,EAAM4vS,YAQjC,IAAIC,GAAkB9yS,IACpB,IAAIy7C,EACJ,OAAOA,EAAS,MAAMq3P,UAAuB9yS,EA6C3CvtB,WAAUvB,OACRA,EAAMo+B,KACNA,EAAI2Q,UACJA,EAASC,QAETA,EAAO6yR,UAEPA,EAAS7X,mBAETA,EAAkB8X,aAElBA,EAAYC,aAEZA,EAAe,MAAKtB,QAEpBA,EAAU,MAAK17I,QAEfA,EAAU,KAAIi9I,aAKdA,IAEA,MAAMrgU,EAAKC,KACT4M,EAAU/N,UAAU,IACpBwhU,cACEA,EAAaxrP,MACbA,EAAK4gB,gBACLA,GACE11F,EACJugU,EAAeliU,EAEjB,GAAI+hU,EAAc,CAChBvzT,EAAQxO,OAASkiU,EAAet8T,GAAKs8T,EAAat8T,IAAMA,EAAE24T,UAAU79T,OAASkF,GAAKA,EAAE24T,UAAU79T,OAIhG,KAAM,cAAe8N,GAAU,CAC7BugC,EAAYvgC,EAAQugC,UAAY3Q,EAElC,KAAM,uBAAwB5vB,GAAU,CACtCw7S,EAAqBx7S,EAAQw7S,mBAAqB,KAEpD,KAAM,iBAAkBx7S,GAAU,CAChCszT,EAAetzT,EAAQszT,cAAgBD,EAQzCrzT,EAAQgyT,cAAgB7+T,EAAGqsF,aAAex/E,EAAQsgF,cAAgBntF,EAAGq1F,mBAAqBK,EAAkBgrF,GAAe5rG,EAAMjpE,SAAS60K,GAAe1gL,EAAG0F,QAAQg7K,IAAgB,EAAIhrF,EAAgBgrF,GAAe,KAEvN,IAAKrzI,EAAS,CACZ,GAAID,EAAW,CACbC,EAAUxgC,EAAQwgC,QAAUvN,GAAWoL,UAAUkC,GACjDC,EAAQjD,QAAQiD,EAAQjgC,UAAY,OAGjC,CAEH,GAAIi7S,EAAoB,CACtB,MAAM,IAAI13S,MAAM,yFAElB9D,EAAQ2zT,WAAat2O,IAGzB,IAAKr9E,EAAQ2zT,WAAY,CAEvB,GAAIN,EAAW,CACbrzT,EAAQ2zT,WAAav8T,IAEnB,MAAMw8T,EAAiBx8T,EAAEy8T,iBAAiB,aAAez8T,EAAE0N,IAAI,aAAe1N,EAAEmpC,UAChF,OAAOqzR,KAAoB3gS,GAAWoL,UAAUu1R,GAAkBrzR,SAIjE,GAAI+yR,EAAc,CACrBtzT,EAAQ2zT,WAAav8T,IAEnB,MAAMw8T,EAAiBx8T,EAAEy8T,iBAAiB,aAAez8T,EAAE0N,IAAI,aAAe1N,EAAEmpC,UAC9EuzR,EAAe18T,EAAEy8T,iBAAiB,WAAaz8T,EAAE0N,IAAI,WAAa1N,EAAEopC,SAAWozR,EAC/EG,IAAgBH,EAAiBE,GACnC,OAAOF,IAAmBG,EAAc9gS,GAAW+gS,mBAAmBJ,EAAgBrzR,EAAWC,GAAWvN,GAAW0/R,eAAeiB,EAAgBE,EAAcvzR,EAAWC,SAI9K,CACHxgC,EAAQ2zT,WAAav8T,IAEnB,MAAMw8T,EAAiBx8T,EAAEy8T,iBAAiB,aAAez8T,EAAE0N,IAAI,aAAe1N,EAAEmpC,UAC9EuzR,EAAe18T,EAAEy8T,iBAAiB,WAAaz8T,EAAE0N,IAAI,WAAa1N,EAAEopC,SAAWozR,EACjF,OAAOA,GAAkBA,GAAkBrzR,GAAauzR,GAAgBtzR,IAI9E,MAAMyzR,EAAe,CACjB1zR,UAAAA,EACAC,QAAAA,GAEF0zR,GAAmBT,GAAiBA,EAAclzR,UAAY0zR,EAAa1zR,WAAakzR,EAAcjzR,QAAUyzR,EAAazzR,QAC/H,GAAI0zR,EAAiB,CAEnB/gU,EAAG2tB,6BAYH3tB,EAAGwtB,QAAQ,gBAAiB,CAC1B+uE,IAAK+jO,GAAiB,GACtBxvM,IAAK/jH,EAAQyC,MAAMsxT,KAGrB9gU,EAAGsgU,cAAgBvzT,EAAQyC,MAAMsxT,GAEnC,OAAOhC,EAAU9+T,EAAGghU,eAAen0T,GAAW7M,EAAGihU,iBAAiBp0T,GAMpEjN,kBAAiBvB,OACfA,EAAMo+B,KACNA,EAAIw3L,eACJA,EAAc7mL,UACdA,EAAY3Q,EAAI4Q,QAEhBA,EAAO6yR,UAEPA,EAAS7X,mBAETA,EAAqB,KAAIjlI,QAEzBA,EAAU,KAAIo9I,WAEdA,EAAU3B,cACVA,EAAawB,aAKbA,IAEA,MAAMrgU,EAAKC,KACTiuB,EAAS,GACTjK,EAAQ46S,EAAgB7+T,EAAGikB,MAAQjkB,EAAGqlG,SACxC,GAAIphF,EAAO,CACT,IAAIi9S,EAAkBjtG,EAAiBj0N,EAAGo/T,qBAAqBnrG,GAAkB,KAGjF,IAAKA,EAAgB,CACnB,MAAMktG,EAAYnhU,EAAGohU,YAAYh+I,GAC/Bi+I,EAAW,IAAIviT,IACfi2D,EAAYmrP,EAAY,YAAc,OAExClgU,EAAGshU,gBAAgBriU,SAAQgF,IACzB,GAAIk9T,EAAU/9I,QAAQnD,WAAWh8K,EAAEmpC,YAAcA,EAAW,CAC1Di0R,EAASriT,IAAI/a,OAIjB,IAAK,MAAMw4B,EAAO,IAAIhuB,KAAK2+B,GAAY3Q,EAAO4Q,EAAS5Q,EAAK2N,QAAQ3N,EAAKrvB,UAAY,GAAI,CACvF,MAAMm0T,EAAmBJ,EAAUxvT,IAAI0uT,EAAeA,EAAa5jS,GAAQs4C,EAAWt4C,GACtF8kS,IAAqB,MAAQA,SAA0B,OAAS,EAAIA,EAAiBtiU,SAAQgF,GAAKo9T,EAASriT,IAAI/a,KAMjHi9T,EAAkB,IAAIG,GAKxB,GAAIxC,EAAe,CACjBqC,EAAkBA,EAAgB7iU,OAAOwgU,GAK3C,IAAK,IAAIhgU,EAAI,GAAGE,OACZA,GACEmiU,EAAiBriU,EAAIE,EAAQF,IAAK,CACtC,MAAMoF,EAAIi9T,EAAgBriU,GAE1B,GAAIwpT,GAAsBpkT,EAAE+7T,YAAa,CACvC9xS,EAAOzvB,KAAKC,MAAMwvB,EAAQjqB,EAAEu9T,2BAA2Bp0R,EAAWC,GAAShvC,OAAOmiU,SAG/E,GAAIA,EAAWv8T,GAAI,CACtBiqB,EAAOzvB,KAAKwF,KAIlB,OAAO5F,EAAS6vB,EAAO7vB,OAAOA,GAAU6vB,EAM1CtuB,gBACEvB,OAAQkiU,EAAY9jS,KACpBA,EAAIw3L,eACJA,EAAc7mL,UAEdA,EAAY3Q,EAAI4Q,QAEhBA,EAAO6yR,UAEPA,EAAS7X,mBAETA,EAAqB,KAAIyW,QAEzBA,EAAO17I,QAEPA,EAAU,KAAIy7I,cACdA,EAAawB,aAKbA,IAEA,IAAIoB,EACJ,MAAMzhU,EAAKC,KAEX,IAAKwhU,EAAW3C,KAAa,MAAQ2C,SAAkB,GAAKA,EAAS/iR,MAAO,CAC1EogR,EAAQpgR,YACH,CACLogR,EAAU,IAAIrtT,IAEhB,GAAIzR,EAAGikB,MAAO,CACZ,MAAMk9S,EAAYnhU,EAAGohU,YAAYh+I,GAC/BruG,EAAYmrP,EAAY,YAAc,OACtCoB,EAAkB,GAClBjjU,EAAS4F,KAAOs8T,GAAgBA,EAAat8T,OAAS46T,GAAiBA,EAAc56T,IACrFy9T,EAAkBz9T,GAAK87T,GAAa97T,IAAM5F,EAAO4F,GACnDm/K,EAAU+9I,EAAU/9I,QAEpB,GAAI6wC,EAAgB,CAClB,MAAM,IAAItjN,MAAM,0FACX,CACL,IAAIgxT,GAGHA,EAAsB3hU,EAAGshU,mBAAqB,MAAQK,SAA6B,OAAS,EAAIA,EAAoB1iU,SAAQgF,IAC3H,GAAIm/K,EAAQnD,WAAWh8K,EAAEmpC,WAAaC,EAAS,CAC7Ci0R,EAAgB7iU,KAAKwF,OAIzB,IAAK,MAAMw4B,EAAO,IAAIhuB,KAAK2+B,GAAY3Q,EAAO4Q,EAAS5Q,EAAK2N,QAAQ3N,EAAKrvB,UAAY,GAAI,CACvF,IAAIw0T,EACJ,IAAKL,EAAkBriU,GAAOiiU,EAAUxvT,IAAI0uT,EAAeA,EAAa5jS,GAAQs4C,EAAWt4C,EAAM,MAEjG,IAAKmlS,EAAoBL,KAAsB,MAAQK,SAA2B,GAAKA,EAAkBpwT,KAAM,CAK7G+vT,EAAmB,IAAIA,GAAkBljU,OAAOqjU,GAEhD,GAAIH,EAAiBxiU,OAAQ,EAC1B+/T,EAAQntT,IAAIzS,IAAQ4/T,EAAQvtT,IAAIrS,EAAK,IAAIyS,IAAIzS,IAAMT,QAAQ8iU,MAMpE,IAAK,IAAI1iU,EAAI,GAAGE,OACZA,GACEuiU,EAAiBziU,EAAIE,EAAQF,IAAK,CACtC,MAAMoF,EAAIq9T,EAAgBziU,GAIxBgjU,GAAexZ,EAAqBpkT,EAAEu9T,2BAA2Bp0R,EAAWC,GAAW,CAACppC,IAAI5F,OAAOA,GACnGyjU,EAAWhiS,GAAW9gB,IAAIquB,EAAS,EAAG,OAExC,IAAK,IAAI3qB,EAAQ7jB,EAAI,GAAGE,OACpBA,GACE8iU,EAAahjU,EAAIE,EAAQF,IAAK,CAClC,MAAMo9T,EAAa4F,EAAYhjU,GAC7B49B,EAAO2mJ,EAAQnD,WAAWg8I,EAAW7uR,WACrC2nC,EAAYsrP,EAAeA,EAAa5jS,GAAQyjS,EAAY,YAAc,OAC1E6B,EAAuBhtP,IAAc,aAAeknP,EAAW+F,OAASliS,GAAW9gB,IAAIyd,EAAM,EAAG,OAASqD,GAAWlX,IAAIqzS,EAAW5uR,SAAWvN,GAAW9gB,IAAIi9S,EAAW7uR,UAAW6uR,EAAW1zS,SAAU0zS,EAAWle,cAAe+jB,GAEpO,KAAOrlS,EAAOslS,EAAsBtlS,EAAK2N,QAAQ3N,EAAKrvB,UAAY,GAAI,CACpE,MAAMlO,EAAMkkL,EAAQ6+I,QAAQxlS,IAC3B/Z,EAASo8S,EAAQntT,IAAIzS,KAAS4/T,EAAQvtT,IAAIrS,EAAKwjB,EAAS,IACzDA,EAAOjkB,KAAKw9T,MAKpB,OAAO6C,IAER3/T,EAAgBypE,EAAQ,QAAS,kBAAmBA,GAMzD,MAEEs5P,GAAe,CACbzlS,KAAM,aACN2Q,UAAW,mBAEb+0R,GAAajkU,OAAO4N,OAAOo2T,IAC3BE,GAAelkU,OAAOmR,OAAO,KAC7B0xK,eACEA,IACE5B,GAQN,MAAMkjJ,GACJziU,YAAYisE,EAAOu3G,GAUjBnjL,KAAKmjL,QAAUA,GAAWjE,GAAQ2B,SAOlC7gL,KAAK4rE,MAAQA,EAQb5rE,KAAKqiU,MAAQ,CAACriU,KAAKmjL,SAUrBxjL,IAAIm1E,EAAWt4C,EAAMikJ,GACnB,MAAMvwK,EAAQlQ,KAAKiiU,GAAantP,IAC9B71E,EAAMe,KAAKmjL,QAAQ6+I,QAAQxlS,GAC3BivB,EAAQv7C,EAAMjR,KAASiR,EAAMjR,GAAO,IAAI4f,KAC1C4sC,EAAM1sC,IAAI0hK,GAOZ9gL,SAAS8gL,GACP,IAAI6hJ,EACJ,IAAIC,GAAUD,EAAwBtiU,KAAKmjL,QAAQnD,WAAWS,EAAYtzI,cAAgB,MAAQm1R,SAA+B,OAAS,EAAIA,EAAsBtyT,UAClKwyT,EACF,GAAID,EAAQ,CACV,IAAIE,EAAuBC,EAC3BF,GAAaC,GAAyBC,EAAuBjiJ,EAAYrzI,WAAa,MAAQs1R,SAA8B,OAAS,EAAIA,EAAqB1yT,aAAe,MAAQyyT,SAA+B,EAAIA,EAAwBF,EAChPviU,KAAK+e,IAAI,YAAawjT,EAAQ9hJ,GAC9B,EAAG,CACDzgL,KAAK+e,IAAI,OAAQwjT,EAAQ9hJ,GACzB8hJ,GAAUzhJ,SACHyhJ,EAASC,IAMtB7iU,QACEuiU,GAAWljU,SAAQyF,GAAQzE,KAAKyE,GAAQxG,OAAOoZ,OAAO,QAYxD1X,IAAIm1E,EAAWt4C,EAAMmmS,IAElB3iU,KAAKkzO,aAAelzO,KAAKuwK,aAC1B,IAAIzlK,EAAM9K,KAAKiiU,GAAantP,IAC1B71E,EACF,GAAIu9B,EAAM,CACRv9B,EAAMe,KAAKmjL,QAAQ6+I,QAAQxlS,GAC3B1xB,EAAM63T,EAAY,CAAC73T,EAAI7L,GAAMA,GAAO6L,EAAI7L,GAE1C,OAAO6L,EAMTnL,aACEK,KAAKkzO,YAAc,KACnBlzO,KAAKy+C,QACLz+C,KAAKslH,KAAK,SAAUtlH,KAAK4rE,MAAM1nE,QAAQipF,WAEzCxtF,aACEK,KAAKkzO,YAAc,MACnBgvF,GAAWljU,SAAQyF,GAAQzE,KAAKyE,GAAQ,OAO1C9E,QAAQwjL,GACN,OAAOnjL,KAAKmjL,QAAQ9D,aAAe8D,EAAQ9D,WAU7C1/K,OAAOm1E,EAAWt4C,EAAMikJ,GACtB,MAAMvwK,EAAQlQ,KAAKiiU,GAAantP,IAC9B71E,EAAMe,KAAKmjL,QAAQ6+I,QAAQxlS,GAC3BivB,EAAQv7C,EAAMjR,GAChB,GAAIwsD,EAAO,CACTA,EAAMnyC,OAAOmnK,IAYjB9gL,YAAY8gL,EAAatzI,EAAWC,GAClC,IAAIw1R,EACJ,IAAIL,GAAUK,EAAyB5iU,KAAKmjL,QAAQnD,WAAW7yI,MAAgB,MAAQy1R,SAAgC,OAAS,EAAIA,EAAuB5yT,UACzJwyT,EACF,GAAID,EAAQ,CACV,IAAIM,EACJL,GAAaK,EAAmBz1R,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQp9B,aAAe,MAAQ6yT,SAA0B,EAAIA,EAAmBN,EAClKviU,KAAK8B,OAAO,YAAaygU,EAAQ9hJ,GACjC,EAAG,CACDzgL,KAAK8B,OAAO,OAAQygU,EAAQ9hJ,GAC5B8hJ,GAAUzhJ,SACHyhJ,EAASC,IAMtB7iU,KAAKyyD,EAAQyiB,EAAO3xD,EAASioE,EAAUre,GACrC,IAAIg2P,EAAmBC,EACvBluP,EAAQA,GAASstP,GACjBj/S,EAAUA,GAAWi/S,GACrB,MAAMpiU,EAAKC,KACT0nG,EAAa7yB,EAAM/1E,OACnB6oG,EAAezkF,EAAQpkB,OACvBkkU,EAAgB73O,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASrsF,OAC/E,IAAIF,EAAG6lT,EAAUwe,EACjB,IAAKljU,EAAGmzO,YAAa,CACnB,OAEF,OAAQ9gL,GACN,IAAK,QACHryD,EAAG0+C,QACH,MAEF,IAAK,SAEH,GAAIukR,EAAe,CACjBnuP,EAAQA,EAAM5iE,QACdiR,EAAUA,EAAQjR,QAClB,IAAKrT,EAAI,EAAGA,EAAIokU,EAAepkU,IAAK,CAClCskB,EAAQ1kB,KAAK2sF,EAASvsF,GAAG,IACzBi2E,EAAMr2E,KAAK2sF,EAASvsF,GAAG,KAI3B,GAAI+oG,EAAc,CAChB,IAAK/oG,EAAI,EAAGA,EAAI+oG,EAAc/oG,IAAK,CACjCqkU,EAAgB//S,EAAQtkB,GACxBmB,EAAGi4R,YAAYirC,EAAeA,EAAc91R,UAAW81R,EAAc71R,UAIzE,GAAIs6D,EAAY,CACd,IAAK9oG,EAAI,EAAGA,EAAI8oG,EAAY9oG,IAAK,CAC/B6lT,EAAW5vO,EAAMj2E,GAGjB,GAAI6lT,EAAS6a,cAAgB7a,EAAS90O,SAAU,CAC9C5vE,EAAGmjU,SAASze,KAIlB,MAEF,IAAK,aACHwe,EAAgBpuP,EAAM,GACtB90E,EAAGi4R,YAAYirC,IAAiBH,EAAoBh2P,EAAO3/B,aAAe,MAAQ21R,SAA2B,OAAS,EAAIA,EAAkBjpT,WAAaopT,EAAc91R,YAAa41R,EAAkBj2P,EAAO1/B,WAAa,MAAQ21R,SAAyB,OAAS,EAAIA,EAAgBlpT,WAAaopT,EAAc71R,SAEnTrtC,EAAGulH,KAAK,SAAUzwC,GAClB,OAONl1E,SAASwjL,GACPnjL,KAAKqiU,MAAM7jU,KAAK2kL,GAQlBxjL,WAAWwjL,GACT,MAAMk/I,MACFA,GACEriU,KACJpB,EAAIyjU,EAAM58T,QAAQ09K,GACpB,GAAIvkL,GAAK,EAAG,CACVyjU,EAAMnqT,OAAOtZ,EAAG,GAElB,OAAQyjU,EAAMvjU,QAIlB,MAAM+hB,GAAQuhT,GAAcv0T,UAC5Bq0T,GAAWljU,SAAQyF,GAAQoc,GAAMpc,GAAQ,OACzCoc,GAAMqyN,YAAc,MACpBkvF,GAAcl6T,OAAS,gBAKvB,MAAM24K,SACJA,IACE3B,GASJ,IAAIikJ,GAAiBj2S,IACnB,IAAIy7C,EACJ,OAAOA,EAAS,MAAMw6P,UAAsBj2S,EAC1CvtB,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChBnY,KAAKojU,WAAa,KAIpBzjU,gBACE,IAAI0jU,EACJrjU,KAAKsjU,YAAY,SAAUtjU,KAAKkE,QAAQipF,YACvCk2O,EAAuBnpT,MAAM6nF,iBAAmB,MAAQshO,SAA8B,OAAS,EAAIA,EAAqBx8T,KAAK7G,MAShIL,cAAayyD,OACXA,EAAMyiB,MACNA,EAAK3xD,QACLA,EAAOioE,SACPA,IAGAnrF,KAAKsjU,YAAYlxQ,EAAQyiB,EAAO3xD,EAASioE,GACzCjxE,MAAM+9E,gBAAgBp5F,WAExBc,eAAeyyD,EAAQl4B,GAErBl6B,KAAKsjU,YAAY,SACjBtjU,KAAKsjU,YAAY,SAAUtjU,KAAKkE,QAAQ2H,QACxCqO,MAAMwwF,eAAet4C,EAAQl4B,GAE/Bv6B,cAAc6yE,EAAQc,EAAOxG,EAAQ52C,EAAQk2C,GAE3C,GAAI,cAAeU,GAAU,YAAaA,EAAQ,CAChD9sE,KAAKsjU,YAAY,aAAc,CAAC9wP,GAAS,KAAM,KAAM1F,GAEvD5yD,MAAMopE,iBAAiBzkF,WAQzBc,uBACE,IAAI4jU,GACHA,EAAmBvjU,KAAKojU,cAAgB,MAAQG,SAA0B,OAAS,EAAIA,EAAiBvkU,SAAQwkU,GAAYA,EAASroB,eASxIx7S,iBAAiBwjL,GACf,MAAMpjL,EAAKC,KACTojU,EAAarjU,EAAGqjU,aAAerjU,EAAGqjU,WAAa,IACjD,IAAII,EAAU5kU,EACd,IAAKA,EAAI,GAAI4kU,GAAY5kU,EAAIwkU,EAAWtkU,SAAUF,EAAG,CACnD,GAAIwkU,EAAWxkU,GAAG0D,QAAQ6gL,GAAU,EACjCqgJ,EAAWJ,EAAWxkU,IAAIu4E,SAASgsG,KAGvCqgJ,GAAYJ,EAAW5kU,KAAKglU,EAAW,IAAIpB,GAAcriU,EAAIojL,IAC9D,OAAOqgJ,EAET7jU,eAAe4b,GACb,IAAIkoT,GACHA,EAAoBzjU,KAAKojU,cAAgB,MAAQK,SAA2B,OAAS,EAAIA,EAAkBzkU,SAAQwkU,GAAYA,EAASl+M,QAAQ/pG,KASnJ5b,mBAAmBwjL,GACjB,MAAMpjL,EAAKC,MACTojU,WACEA,GACErjU,EACN,IAAK,IAAInB,EAAIwkU,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWtkU,OAAQF,KAAM,GAAI,CAChG,GAAIwkU,EAAWxkU,GAAG0D,QAAQ6gL,GAAU,CAClC,GAAIigJ,EAAWxkU,GAAGioF,WAAWs8F,GAAU,CACrCigJ,EAAWlrT,OAAOtZ,EAAG,GAEvB,QAYNe,YAAYwjL,GACV,MAAMpjL,EAAKC,MACTojU,WACEA,GACErjU,EACNojL,EAAUA,GAAWtC,GACrB,IAAK,IAAIjiL,EAAI,EAAGwkU,GAAcxkU,EAAIwkU,EAAWtkU,SAAUF,EAAG,CACxD,GAAIwkU,EAAWxkU,GAAG0D,QAAQ6gL,GAAU,CAClC,OAAOigJ,EAAWxkU,IAGtB,GAAIukL,EAAQ9D,WAAY,CACtB,MAAM,IAAI3uK,MAAM,+BAA+ByyK,QAAcpjL,EAAG4K,MAElE,OAAO5K,EAAG2jU,iBAAiB7iJ,MAG5B3hL,EAAgBypE,EAAQ,QAAS,iBAAkBA,GAcxD,IAAIg7P,GAAyBz2S,GAAU,MAAMy2S,UAA8Bz2S,EACzEnf,mBACE,MAAO,wBAmGT8T,2BACE,MAAO,CAKL8wS,aAAc,IAKdC,aAAc,IACd5rN,QAAS,SAQT48N,sBAAuB,KAUvBC,iBAAkB,MAStBlkU,UAAUwY,GACR+B,MAAMsB,UAAUrD,EAAQ,MACxB,GAAInY,KAAK6jU,iBAAkB,CACzB7jU,KAAKi9T,qBAAuB,KAE9B,IAAKj9T,KAAKu6E,WAAWupP,aAAc,CACjC,MAAM,IAAIpzT,MAAM,0DAQpB/Q,OAAO6yE,GACL,OAAOxyE,KAAK+e,IAAIyzD,GAGlB+4B,cACE,OAAOrxF,MAAMqxF,QAEfA,YAAYA,GACVrxF,MAAMqxF,QAAUA,EAChBvrG,KAAKupE,gBAAgB,WACrB,GAAIgiC,EAAS,CACX,IAAIw4N,EAEJ,IAAKA,EAAwBx4N,EAAQ4pM,mBAAqB,MAAQ4uB,SAA+B,GAAKA,EAAsBjI,kBAAmB,CAC7I97T,KAAKgkU,wBAAwBz4N,EAAQ4pM,iBAIvC5pM,EAAQp8E,GAAG,CACT1qB,KAAM,UACNw/T,sBAAuB,iCACvB3nT,QAAStc,KACT6sB,KAAM,OAMZltB,eAAeukU,GACb,IAAI9gI,EACJ,MAAM+xG,gBACFA,GACEn1S,KACJmkU,EAAmB,GAIrB,GAAIhvB,EAAiB,CACnBA,EAAgBkK,sBAAwB,KAE1C6kB,EAAehqT,MAAM44E,eAAeoxO,EAAc/uB,MAAsB/xG,EAAYpjM,KAAK2rE,OAAS,MAAQy3H,SAAmB,GAAKA,EAAUnrF,cAAY,CAAKwoE,IAE3J,MAAM++H,EAAa/+H,EAAY/uK,IAAI,cACnC,IAAK+uK,EAAY2jJ,uBAAyB5kB,GAAc,KAAM,CAI5D,IAAKrK,EAAgBkvB,mBAAmB5jJ,EAAY91K,GAAI60S,GAAa,CAGnE2kB,EAAiB3lU,KAAK,CACpBmM,GAAIwqS,EAAgB56N,WAAWpP,WAAW,IAC1Cq0O,WAAAA,EACAE,QAASj/H,EAAY91K,MAK3B81K,EAAY2jJ,sBAAwB,SAChCxhU,WACN,GAAIuyS,EAAiB,CACnBA,EAAgBjxS,QAAQ8oF,oBACxBmoN,EAAgBkK,sBAAwB,MACxClK,EAAgBp2R,IAAIolT,GAEtB,OAAOD,EAETvkU,mBAAmBsyE,GACjB,MAAMkjO,gBACJA,GACEn1S,KACJ,GAAIm1S,EAAiB,CAInBA,EAAgBkK,sBAAwB,KACxCnlS,MAAM4tF,mBAAmB71B,GACzBkjO,EAAgBjxS,QAAQ8oF,oBACxBmoN,EAAgBkK,sBAAwB,UACnC,CACLnlS,MAAM4tF,mBAAmB71B,IAG7BtyE,cAAc8gL,EAAa91E,EAAY,OACrC81E,EAAcvmK,MAAMy0D,cAAc8xG,EAAa91E,GAC/C,MAAM60M,EAAa/+H,EAAY/uK,IAAI,cACnC,GAAI8tS,GAAc,OAAS/+H,EAAYtgK,KAAKmkT,8BAA+B,CACzE,MAAMvkU,EAAKC,MACTm1S,gBACEA,GACEp1S,EACJy8S,EAAiBz8S,EAAG8sE,QAAQ4zG,EAAY91K,IACxCg8E,EAAc61N,GAAkBA,IAAmB/7H,IAAgB91E,EAGrE,GAAIhkB,EAAa,CAEf,MAAMyzN,EAAajF,EAAgBpkR,MAAK/sB,GAAKA,EAAE07S,UAAYj/H,EAAY91K,KACvE,GAAIyvS,EAAY,CACdA,EAAWD,SAAWqF,EACtB/+H,EAAY2jJ,sBAAwB,UAKnC,CACHrkU,EAAGwkU,oBAAsB,KAI3BxkU,EAAGk9T,qBAAuB,KAE5B,OAAOx8I,EAET9gL,qBACE,MAAMw1S,gBACJA,GACEn1S,KACJ,GAAIA,KAAKukU,qBAAuBpvB,IAAoB,MAAQA,SAAyB,GAAKA,EAAgB2mB,kBAAmB,CAC3H,MAAMU,EAAc,GAEpBx8T,KAAKhB,SAAQyhL,IACX,MAAM++H,WACJA,EACA70S,GAAI+0S,GACFj/H,EACJ,GAAI++H,GAAc,KAAM,CAEtBgd,EAAYh+T,KAAK,CACfmM,GAAIwqS,EAAgB56N,WAAWpP,WAAW,IAC1Cq0O,WAAAA,EACAE,QAAAA,QAKNvK,EAAgBz4N,WAAa,CAC3BkB,oBAAqB,KACrBwqB,wBAAyB,KACzBvqB,sBAAuB,MAGzBs3N,EAAgB8nB,qBAAuB,MAEvC9nB,EAAgB16N,qBAAuB,MACvC06N,EAAgBj7Q,KAAOsiS,EACvBrnB,EAAgB8nB,qBAAuB,KACvCj9T,KAAKukU,oBAAsB,OAG/B5kU,WACEua,MAAMiwF,YAAYtrG,WAClBmB,KAAKwkU,qBAGP7kU,0BAAyBsyE,QACvBA,IAEA,IAAI2zB,EACJ,MAAM7lG,EAAKC,KACX,GAAID,EAAG6jU,wBAA0B7jU,EAAGsxF,aAAetxF,EAAG0kU,kBAAoB7+N,EAAU7lG,EAAG4rE,OAAS,MAAQi6B,SAAiB,GAAKA,EAAQqS,eAAiBl4G,EAAGk9T,uBAEzJl9T,EAAGo1S,gBAAgBtwM,sBAAwB9kG,EAAGu1S,cAAczwM,oBAAqB,CAChF,MAAMpgF,EAAW,IAAI5F,IAErBozD,EAAQjzE,SAAQ0lU,IACd,MAAMv0S,MACJA,GACEu0S,EAEJ,GAAIv0S,IAAUA,EAAM42D,WAAa52D,EAAMqsS,YAAYrsT,OAAMtK,GAAKosE,EAAQrmE,SAAS/F,KAAK,CAClF4e,EAAS1F,IAAIoR,OAIjB,GAAI1L,EAASlT,KAAM,CACjBxR,EAAG+B,OAAO,IAAI2iB,MAIpB9kB,gCAA+BisE,MAC7BA,IAEA5rE,KAAKgkU,wBAAwBp4P,GAE/BjsE,wBAAwBw1S,GACtB,MAAMp1S,EAAKC,KACXD,EAAGwpE,gBAAgB,mBACnB,GAAI4rO,EAAiB,CACnBp1S,EAAGykU,qBACHrvB,EAAgBhmR,GAAG,CACjB1qB,KAAM,kBAEN9E,cAAasyE,QACXA,IAEA,GAAIlyE,EAAGk9T,uBAAyBl9T,EAAG0kU,gBAAkB1kU,EAAG4kU,YAAa,CACnE1yP,EAAQjzE,SAAQo7S,IACd,MAAMjqR,MACJA,GACEiqR,EACJ,GAAIjqR,IAAU,MAAQA,SAAe,GAAKA,EAAMy0S,SAAWz0S,EAAMqvR,aAAepF,EAAWoF,WAAY,CACrGrvR,EAAMhQ,KAAKwkT,YAAc,KACzBx0S,EAAM7e,IAAI,aAAc8oS,EAAWoF,YACnCrvR,EAAMhQ,KAAKwkT,YAAc,YAMjCr+O,aAAc,2BAEd3mF,iBAAgBsyE,QACdA,IAEA,GAAIlyE,EAAGk9T,qBAAsB,CAC3BhrP,EAAQjzE,SAAQo7S,IACd,IAAIyqB,GAEHA,EAAc9kU,EAAG8sE,QAAQutO,EAAWsF,YAAc,MAAQmlB,SAAqB,OAAS,EAAIA,EAAYvzT,IAAI,aAAc,WAIjI3R,qBACE,GAAII,EAAGk9T,uBAAyBl9T,EAAG0kU,cAAe,CAChD1kU,EAAGg7E,WAAW/7E,SAAQyhL,GAAeA,EAAYnvK,IAAI,aAAc,UAIvE3R,QAAO6yE,OACLA,EAAMD,QACNA,IAEA,GAAIxyE,EAAGk9T,sBAAwB,eAAgB1qP,EAAS,CACtD,MAAMpiD,MACJA,GACEqiD,EACJriD,EAAMhQ,KAAKwkT,YAAc,KACzBx0S,EAAM7e,IAAI,aAAcihE,EAAQitO,WAAWjgT,OAC3C4wB,EAAMhQ,KAAKwkT,YAAc,QAG7BroT,QAASvc,KAIfm6B,SAASA,GACPl6B,KAAKykU,cAAgB,KAErB,GAAIzkU,KAAKi9T,uBAAyBj9T,KAAKukG,eAAgB,CACrDvkG,KAAKm1S,gBAAgBt1M,UAAU,MAEjC3lF,MAAMggB,KAAOA,EACbl6B,KAAKykU,cAAgB,MAIvB9kU,QAAQytB,EAAW1mB,GACjB,MAAM6rE,QACJA,GACE7rE,GAAU,GACd,GAAI6rE,GAAW,eAAgBA,GAAWt0E,OAAOD,KAAKu0E,GAASzzE,SAAW,EAAG,CAC3E4H,EAAOo+T,SAAW,KAEpB,OAAO5qT,MAAMqT,WAAW1uB,aAQ5B,MAAMkmU,GAAe9mU,OAAOmR,OAAO,IAKnC,IAAI41T,GAA2B93S,GAAU,MAAM83S,UAAiC93S,GAAU7R,IACxFtN,mBACE,MAAO,0BAETpO,aAAa4b,GACX,MAAMxb,EAAKC,KAGXD,EAAGklU,kBAAoB,IAAIzzT,IAG3BzR,EAAGshU,gBAAkB,IAAIxiT,IACzB3E,MAAMsB,aAAaD,GAGrB5b,gBAGEK,KAAKilU,kBAAkBxmR,QAEvBz+C,KAAKklU,4BAA4B,SACjCllU,KAAKklU,4BAA4B,SAAUllU,KAAKkE,QAAQipF,WACxDjzE,MAAM6nF,eAAiB7nF,MAAM6nF,gBAS/BpiG,cAAayyD,OACXA,EAAMyiB,MACNA,EAAK3xD,QACLA,EAAOioE,SACPA,IAGAnrF,KAAKklU,4BAA4B9yQ,EAAQyiB,EAAO3xD,EAASioE,GACzDjxE,MAAM+9E,gBAAgBp5F,WAExBc,4BAA4ByyD,EAAQyiB,EAAQkwP,GAAc7hT,EAAU6hT,GAAc55O,GAChF,MAAMprF,EAAKC,MACTqhU,gBACEA,GACEthU,EACJijU,EAAgB73O,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASrsF,OAC/E,OAAQszD,GACN,IAAK,QACHivQ,EAAgB5iR,QAChB,MAEF,IAAK,SACH,CAEE,GAAIukR,EAAe,CACjBnuP,EAAQA,EAAM5iE,QACdiR,EAAUA,EAAQjR,QAClB,IAAK,IAAIrT,EAAI,EAAGA,EAAIokU,EAAepkU,IAAK,CACtCskB,EAAQ1kB,KAAK2sF,EAASvsF,GAAG,IACzBi2E,EAAMr2E,KAAK2sF,EAASvsF,GAAG,KAG3B,MAAM8oG,EAAa7yB,EAAM/1E,OACvB6oG,EAAezkF,EAAQpkB,OAEzB,GAAI6oG,GAAgB05N,EAAgB9vT,KAAM,CACxC,IAAK,IAAI3S,EAAI,EAAGA,EAAI+oG,EAAc/oG,IAAK,CAGrCyiU,EAAgB/nT,OAAO4J,EAAQtkB,KAInC,GAAI8oG,EAAY,CACd,IAAK,IAAI9oG,EAAI,EAAGA,EAAI8oG,EAAY9oG,IAAK,CACnC,MAAM6lT,EAAW5vO,EAAMj2E,GAEvB,GAAI6lT,EAASsb,YAAa,CACxBsB,EAAgBtiT,IAAI0lS,KAI1B,QAIR9kT,QAAQgL,GACN,IAAIwB,EAAS+N,MAAM2yD,QAAQliE,GAE3B,IAAKwB,EAAQ,CACXA,EAASnM,KAAKilU,kBAAkBvzT,IAAI1R,KAAKu6E,WAAWiH,KAAK72E,IAE3D,OAAOwB,EAETxM,cAAc6yE,EAAQc,EAAOxG,EAAQ52C,EAAQk2C,GAC3C,MAAM+4P,EAAiCnlU,KAAKmlU,+BAA+B3yP,EAAQ1F,GAInF,GAAIq4P,IAAmCjvS,EAAQ,CAC7Cs8C,EAAO4yP,oBAETlrT,MAAMopE,iBAAiBzkF,WAKvB,GAAIsmU,IAAmCjvS,EAAQ,CAC7C,MAAM/F,EAAQ,CACZiiC,OAAQ,QACR6f,QAASjyE,KAAKkE,QAAQ2H,QAExB7L,KAAKutB,QAAQ,UAAW4C,GACxBnwB,KAAKutB,QAAQ,SAAU4C,IAY3BxwB,+BAA+B0lU,EAAUv4P,GACvC,OAAOu4P,EAAStF,aAAe,mBAAoBjzP,EAOrDntE,0BAA0B0lU,EAAUl4R,EAAWC,GAC7C,MAAMjhC,EAAS,GACf,GAAIk5T,EAAStF,YAAa,CACxBsF,EAASC,WAAWC,kBAAkBp4R,EAAWC,GAASld,GAAK/jB,EAAO3N,KAAK0xB,KAE7E,OAAO/jB,EAET+tB,SAASA,GAEPl6B,KAAKilU,kBAAkBxmR,QACvBvkC,MAAMggB,KAAOA,EAOfv6B,wBACE,MAAO,IAAIK,KAAKqhU,mBAYpB,IAAImE,GAAwBt4S,GAAU,MAAMs4S,UAA6BR,GAAwB93S,GAAU7R,KACzGtN,mBACE,MAAO,uBAUTpO,qBACE,OAAOK,KAAKylU,wBAEd9lU,mBAAmBwwB,GAEjB,OAAOjW,MAAMwrT,mBAAmBv1S,MAAYA,EAAMw1S,oBAAsBx1S,EAAM8rS,gBAmClF,MAAM2J,WAAiBjqP,GACrB5tE,mBACE,MAAO,WAGTsrE,oBACE,MAAO,CAcP,CACE50E,KAAM,YACNoI,KAAM,QAeR,CACEpI,KAAM,UACNoI,KAAM,QAOR,CACEpI,KAAM,WACNoI,KAAM,SACNg5T,UAAW,KACX/sP,SAAU,MAmBZ,CACEjsE,KAAM,eACNpI,KAAM,eACNG,aAAc,IACdk0E,SAAU,MACT,CACDr0E,KAAM,eACNm0E,QAAS,MACTm+H,OAAQ,CACNlqM,KAAM,aAeV,CACEpI,KAAM,MACNG,aAAc,GACdk0E,SAAU,MASZ,CACEr0E,KAAM,UACNq0E,SAAU,MAWZ,CACEr0E,KAAM,QACNoI,KAAM,SACNisE,SAAU,MAOZ,CACEr0E,KAAM,OACNoI,KAAM,SACNjI,aAAc,KAKlBjF,iBACEua,MAAMuB,iBAENzb,KAAKy9C,YAQP43P,iBACE,MAAMt1S,EAAKC,KAEX,GAAID,EAAGk8T,aAAc,CACnB,OAAOl8T,EAAGw7S,kBAAkBlG,WAE9B,IAAKt1S,EAAG+lU,YAAa,CACnB,IAAIC,EACJhmU,EAAG+lU,aAAeC,EAAahmU,EAAGuuE,UAAY,MAAQy3P,SAAoB,OAAS,EAAIA,EAAWh1S,MAAKrhB,GAAKA,EAAEs2T,eAEhH,OAAOjmU,EAAG+lU,YAEZnmU,YACE,MAAMI,EAAKC,MACTmtC,UACEA,EAASC,QACTA,EAAO9kB,SACPA,EAAQw1R,aACRA,GACE/9S,EACJkmU,EAAc39S,GAAY,KAE5B,GAAI6kB,GAAaC,IAAY64R,EAAa,CACxClmU,EAAGg1E,QAAQ,WAAYl1C,GAAW6K,KAAKyC,EAAWC,EAAS0wQ,EAAc,YAGtE,GAAI3wQ,IAAcC,GAAW64R,EAAa,CAC7ClmU,EAAGg1E,QAAQ,UAAWl1C,GAAW9gB,IAAIouB,EAAW7kB,EAAUw1R,SAGvD,IAAK3wQ,GAAaC,GAAW64R,EAAa,CAC7ClmU,EAAGg1E,QAAQ,YAAal1C,GAAW9gB,IAAIquB,GAAU9kB,EAAUw1R,KAK/Dn+S,kBAAkBmW,GAChB,GAAI9V,KAAKm+C,KAAM,CACbn+C,KAAKm+C,KAAK5+C,MAAQuW,MACb,CACL9V,KAAKm+C,KAAO,IAAIX,GAAa1nC,IAGjCowT,gBAAgBpwT,GACd9V,KAAKmmU,kBAAkBrwT,GACvB9V,KAAKsR,IAAI,MAAOtR,KAAKm+C,KAAK5+C,OAE5B2mU,kBACE,MAAMpwT,IACJA,GACE9V,KAEJ,GAAI8V,IAAQ,MAAQA,SAAa,GAAKA,EAAI+nC,eAAgB,CACxD,OAAO/nC,EAET9V,KAAKkmU,YAAcpwT,EACnB,OAAO9V,KAAKm+C,KAEdroC,UACE,IAAK9V,KAAKm+C,KAAM,CACdn+C,KAAKm+C,KAAO,IAAIX,GAAatjC,MAAMxI,IAAI,QAEzC,OAAO1R,KAAKm+C,KAEdroC,QAAQA,GACN9V,KAAKkmU,YAAcpwT,EAErBq3B,gBACE,OAAOntC,KAAK0R,IAAI,aAElBy7B,cAAc3Q,GACZx8B,KAAKq9S,aAAa7gR,GAEpB4Q,cACE,OAAOptC,KAAK0R,IAAI,WAElB07B,YAAY5Q,GACVx8B,KAAKs9S,WAAW9gR,GAElBlU,eACE,OAAOtoB,KAAK0R,IAAI,YAElB4W,aAAaA,GACXtoB,KAAKu9S,YAAYj1R,EAAUtoB,KAAK89S,cAElCA,mBACE,OAAO99S,KAAK0R,IAAI,gBASlB/R,YAAY2oB,EAAUw1R,EAAe99S,KAAK89S,cAExCx1R,EAAWrmB,WAAWqmB,GACtB,MAAMgrD,EAAQ,CACZhrD,SAAAA,EACAw1R,aAAAA,GAEF,GAAI99S,KAAKmtC,UAAW,CAClBmmC,EAAMlmC,QAAUvN,GAAW9gB,IAAI/e,KAAKmtC,UAAW7kB,EAAUw1R,QACpD,GAAI99S,KAAKotC,QAAS,CACvBkmC,EAAMnmC,UAAYtN,GAAW9gB,IAAI/e,KAAKotC,SAAU9kB,EAAUw1R,GAE5D99S,KAAKsR,IAAIgiE,GASX3zE,kBAAkBsoC,EAAMkG,GACtB,GAAInuC,KAAKomU,UAAYpmU,KAAKotC,QAAS,CACjC,OAAOvN,GAAWwmS,kBAAkBrmU,KAAKmtC,UAAWntC,KAAKotC,QAASnF,EAAMkG,OACnE,CACL,OAAOtO,GAAWqI,GAAGD,EAAMjoC,KAAKsoB,SAAUtoB,KAAK89S,eAOnDwoB,mBAEE,OAAO,IAAI7+O,GAAS,CAClBx/C,KAAMjoC,KAAK89S,aACX/zQ,UAAW/pC,KAAKsoB,WAGpBg+S,iBAAiBh+S,GACf,UAAWA,IAAa,SAAU,CAChCA,EAAWuX,GAAWiK,cAAcxhB,EAAU,KAAMtoB,KAAK89S,cAE3D99S,KAAKu9S,YAAYj1R,EAASyhB,UAAWzhB,EAAS2f,MAShDtoC,aAAa68B,EAAMmhR,EAAe,MAChC,MAAM59S,EAAKC,KACTszE,EAAQ,CACNnmC,UAAW3Q,GAEf,GAAIA,EAAM,CACR,IAAI+pS,EACJ,GAAI5oB,EAAc,CAChB4oB,EAAcxmU,EAAGuoB,UAAY,SACxB,CACL,GAAIvoB,EAAGqtC,QAAS,CACdkmC,EAAMhrD,SAAWuX,GAAW6K,KAAKlO,EAAMz8B,EAAGqtC,QAASrtC,EAAG+9S,aAAc,MACpE,GAAIxqO,EAAMhrD,SAAW,EAAG,MAAM,IAAI5X,MAAM,yBACnC,CACL61T,EAAcvmU,KAAKsoB,UAAY,MAGnC,GAAIi+S,EAAa,CAEfjzP,EAAMlmC,QAAUvN,GAAW9gB,IAAIyd,EAAMz8B,EAAGsmU,kBAAkB,KAAM,UAE7D,CACL/yP,EAAMhrD,SAAW,KAEnBvoB,EAAGuR,IAAIgiE,GAST3zE,WAAW68B,EAAMmhR,EAAe,OAC9B,MAAM59S,EAAKC,KACTszE,EAAQ,CACNlmC,QAAS5Q,GAEb,GAAIA,EAAM,CACR,IAAIgqS,EACJ,GAAI7oB,IAAiB,KAAM,CACzB6oB,EAAgBzmU,EAAGuoB,UAAY,SAC1B,CACL,GAAIvoB,EAAGotC,UAAW,CAChBmmC,EAAMhrD,SAAWuX,GAAW6K,KAAK3qC,EAAGotC,UAAW3Q,EAAMz8B,EAAG+9S,aAAc,MACtE,GAAIxqO,EAAMhrD,SAAW,EAAG,MAAM,IAAI5X,MAAM,yBACnC,CACL81T,EAAgBxmU,KAAKsoB,UAAY,MAGrC,GAAIk+S,EAAe,CACjBlzP,EAAMnmC,UAAYtN,GAAW9gB,IAAIyd,GAAOz8B,EAAGuoB,SAAUvoB,EAAG+9S,eAG5D/9S,EAAGuR,IAAIgiE,GAST3zE,gBAAgB6oB,EAAO9E,EAAKwS,GAC1Bl2B,KAAKsR,IAAI,CACP67B,UAAW3kB,EACX4kB,QAAS1pB,GACR,KAAMwS,GAOX2R,YACE,MAAMA,EAAQ,GACZsF,EAAYtN,GAAW2I,QAAQxoC,KAAKmtC,UAAW,OAC/CC,EAAUptC,KAAKotC,QACjB,IAAK,IAAI5Q,EAAO2Q,EAAW3Q,EAAO4Q,EAAS5Q,EAAOqD,GAAW9gB,IAAIyd,EAAM,EAAG,OAAQ,CAChFqL,EAAMrpC,KAAKg+B,GAEb,OAAOqL,EAET4+R,kBACE,IAAIj1P,EACJ,OAAQA,EAAOxxE,KAAKo5E,UAAYp5E,KAAKygU,iBAAiB,aAAezgU,KAAK0R,IAAI,aAAe1R,KAAKmtC,aAAe,MAAQqkC,SAAc,OAAS,EAAIA,EAAKxhE,UAE3JwyT,gBACE,IAAIl+L,EACJ,OAAQA,EAAQtkI,KAAKo5E,UAAYp5E,KAAKygU,iBAAiB,WAAazgU,KAAK0R,IAAI,WAAa1R,KAAKotC,WAAa,MAAQk3F,SAAe,OAAS,EAAIA,EAAMt0H,UAOxJ02T,iBACE,MAAMlE,UACJA,EAASiE,YACTA,GACEzmU,KACJ,GAAIwiU,GAAaiE,EAAa,CAC5B,OAAOjE,EAAYiE,MACd,CACL,OAAO5mS,GAAW4M,eAAezsC,KAAKsoB,UAAY,EAAGtoB,KAAK89S,eAQ9D6iB,kBACE,OAAO3gU,KAAKsoB,WAAa,EAE3B3oB,eAAe4W,GACb,UAAWA,IAAU,SAAU,CAG7B,IAAI42B,UACFA,EAASC,QACTA,EAAO9kB,SACPA,EAAQw1R,aACRA,EAAe99S,KAAK89S,cAClBvnS,EAEJ,UAAW42B,IAAc,SAAU,CACjCA,EAAYntC,KAAKisE,mBAAmB,aAAakS,QAAQhxC,GAE3D,UAAWC,IAAY,SAAU,CAC/BA,EAAUptC,KAAKisE,mBAAmB,WAAWkS,QAAQ/wC,GAEvD,GAAI,aAAc72B,EAAO,CACvB,GAAI42B,IAAcC,EAAS,CACzBA,EAAUvN,GAAW9gB,IAAIouB,EAAW7kB,EAAUw1R,EAAc,KAAM,MAEpE,IAAK3wQ,GAAaC,EAAS,CACzBD,EAAYtN,GAAW9gB,IAAIquB,GAAU9kB,EAAUw1R,EAAc,KAAM,YAEhE,GAAI3wQ,GAAaC,EAAS,CAE/B9kB,EAAWuX,GAAWqI,GAAG41Q,EAAcj+Q,GAAW6K,KAAKyC,EAAWC,EAAS,IAAK,MAAO,KAEzFD,IAAc52B,EAAM42B,UAAYA,GAChCC,IAAY72B,EAAM62B,QAAUA,GAC5B9kB,GAAY,OAAS/R,EAAM+R,SAAWA,GACtC,OAAO/R,GAGX5W,MAAM4W,EAAOhX,EAAO22B,EAAQk2C,EAAoByV,GAC9C,IAAKA,EAAe,CAClBtrE,EAAQvW,KAAK2mU,eAAepwT,IAAUA,EAExC,OAAO2D,MAAMgoE,MAAM3rE,EAAOhX,EAAO22B,EAAQk2C,EAAoByV,GAG/DliF,WAAW+iF,EAASzjF,EAAKM,EAAOsiF,EAAetrE,GAC7C,GAAItX,IAAQ,MAAO,CACjBe,KAAKmmU,kBAAkB5mU,GAEzB2a,MAAM4oE,WAAWJ,EAASzjF,EAAKM,EAAOsiF,EAAetrE,GASvD5W,YAAY6mB,EAAMlK,GAChB,OAAOtc,KAAK6nC,MAAM7oC,QAAQwnB,EAAKxR,KAAKsH,IAQtCgjT,kBACE,MAAMmH,YACJA,EAAWjE,UACXA,GACExiU,KACJ,OAAOwiU,EAAYiE,GAAe,EAGpChgP,cACE,MAAMt5C,UACJA,EAASC,QACTA,GACEptC,KACJ,OAAQmtC,IAAcC,GAAWA,EAAUD,GAAa,EAQ1DxtC,MAAMqoC,EAAQC,EAAOjoC,KAAK89S,cAExB,UAAW91Q,IAAW,SAAU,CAC9B,MAAM4+R,EAAI5+R,EACVA,EAASC,EACTA,EAAO2+R,EAET,OAAO5mU,KAAKq9S,aAAax9Q,GAAW9gB,IAAI/e,KAAKmtC,UAAWnF,EAAQC,EAAM,MAAO,MAM/E4+R,cACE,OAAO7mU,KAAK8mU,UAAY9mU,KAAKi8E,UAAUhyE,KAAK,KAE9C48T,YAAYtnU,GAEVS,KAAK8mU,SAAWvnU,EAElBI,WAEE,OAAOK,KAAKimF,KAAKxnF,MAAMuB,KAAMnB,WAE/Bc,WAAW0lU,GACT,OAAOrlU,KAAK+mU,gBAAgB1B,EAASl4R,UAAWk4R,EAASj4R,SAE3DztC,gBAAgB6oB,EAAO9E,GACrB,MAAMsjT,EAAUhnU,KAAKmtC,UACnB85R,EAAQjnU,KAAKotC,QACf,OAAO45R,GAAWC,GAASpnS,GAAW0/R,eAAeyH,EAASC,EAAOz+S,EAAO9E,GAQ9E/jB,MAAMunU,EAAa,IACjB,MAAMnnU,EAAKC,KACTuP,EAAQxP,EAAGkmF,QACXovN,WACEA,EAAUF,gBACVA,GACEp1S,EACJonU,EAAiBpnU,EAAGuoB,SAAW4+S,EAC/BE,EAAgBrnU,EAAGuoB,SAAW6+S,EAChC,GAAID,GAAc,GAAKA,GAAc,EAAG,CACtC,MAAM,IAAIx2T,MAAM,mCAElBnB,EAAM49B,UAAYtN,GAAW9gB,IAAIhf,EAAGotC,UAAWg6R,EAAgBpnU,EAAG+9S,cAClEvuS,EAAM+Y,SAAW8+S,EACjBrnU,EAAGuoB,SAAW6+S,EACd,GAAI9xB,EAAY,CACdA,EAAWt2R,IAAIxP,GACf,GAAI4lS,IAAoBE,EAAW4nB,qBAAsB,CACvD9nB,EAAgBp2R,IAAIhf,EAAGy8T,YAAY3yT,KAAIuwS,IACrC,MAAMitB,EAAappU,OAAOmZ,OAAO,GAAIgjS,EAAWlgR,KAAM,CACpDwlR,QAASnwS,EAAM5E,GAEfwlB,MAAO,KACPgqR,SAAU,cAELktB,EAAW18T,GAClB,OAAO08T,OAIb,OAAO93T,EAET5P,YAAY2nU,EAAiB,IAC3B,IAAKtnU,KAAKs/T,YAAa,CACrB,MAAO,GAET,MAAMiI,EAAW1nS,GAAW2nS,MAAM,IAAIh5T,MACpCi5T,EAAa5nS,GAAW2nS,MAAMxnU,KAAKmtC,WACnCu6R,EAAW7nS,GAAW2nS,MAAMxnU,KAAKotC,SACjCu6R,EAAiB,kBAEjB1tH,EAAYqtH,EAAeM,SAAW/nS,GAAW/C,OAAOyqS,EAAUI,GAAkB,WAC/EL,EAAeM,QACtB,IAAIC,EAAW,GACf,GAAI7nU,KAAK+hU,OAAQ,CACf,MAAMx0M,EAAa,WACnBs6M,EAAW,CACTC,qBAAsBjoS,GAAW/C,OAAO2qS,EAAYl6M,GACpDw6M,mBAAoBloS,GAAW/C,OAAO4qS,EAAUn6M,QAE7C,CACLs6M,EAAW,CACTG,QAASnoS,GAAW/C,OAAO2qS,EAAYE,GAAkB,IACzDM,MAAOpoS,GAAW/C,OAAO4qS,EAAUC,GAAkB,KAGzD,MAAM/0T,EAAUF,EAAc64S,WAAa74S,EAAclS,WAAW,cAAgBkS,EAAcu9R,UAAYv9R,EAAclS,WAAW,aAAe,GACpJ0nU,EAAgB,CACdC,MAAO,YACPC,QAAS,MACTC,SAAU,YACVC,OAAQ,oCAAoC11T,SAC5C21T,IAAK,aAEPC,EAAc9pU,EAAeA,EAAeA,EAAeA,EAAe,CACxEypU,MAAO,SACPM,IAAKzoU,KAAK2K,GAAK,eACf+9T,MAAO,SACPC,QAAS3oU,KAAKyE,KACdmjU,QAAS3tH,GACR4tH,GAAW7nU,KAAK4oU,eAAiB,CAClCC,MAAO7oU,KAAK4oU,gBACV,IAAKtB,GAAiB,GAAI,CAC5BiB,IAAK,WAEPO,EAAW7qU,OAAOD,KAAKkqU,GAAer+T,KAAI5K,GAAO,GAAGA,KAAOipU,EAAcjpU,OACzE8pU,EAAa9qU,OAAOD,KAAKwqU,GAAa3+T,KAAI5K,GAAO,GAAGA,KAAOupU,EAAYvpU,OAEzE6pU,EAAS5wT,OAAO4wT,EAAShqU,OAAS,EAAG,KAAMiqU,GAC3C,OAAOD,EAAS7+T,KAAK,MAavBtK,YAAY2nU,GACV,GAAItnU,KAAKs/T,YAAa,CACpB,MAAMl5T,EAAO,IAAI4iU,KAAK,CAAChpU,KAAKipU,YAAY3B,IAAkB,CACxDz6T,KAAM,kBAERnN,EAAcwpU,aAAa9iU,GAAOpG,KAAKyE,MAAQ,SAAW,SAY9D9E,WAAWwzC,GAET,OAAOnzC,KAAKisE,mBAAmB94B,GAAa,KAAOvwC,UAErDjD,gBAAgBwzC,GACd,GAAIA,IAAc,eAAgB,CAChC,OAAOj5B,MAAMqhN,gBAAgB,aAAerhN,MAAMqhN,gBAAgB,gBAEpE,OAAOrhN,MAAMqhN,gBAAgBpoL,IAGjCyyR,GAAS19T,OAAS,WAElB,MAAMihU,GAAiB,wCACvB,MAAMnlS,GAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAClD,MAAMolS,WAAiC/tT,GACrC1b,iBAAiB0pU,GACf,IAAIC,EAAWn9T,EACf,GAAIm9T,EAAYH,GAAephT,KAAKshT,GAAS,CAC3Cl9T,EAAS,CAAC63B,GAAKv+B,QAAQ6jU,EAAU,KAEjC,GAAIA,EAAU,GAAI,CAChBA,EAAU,GAAKlgU,SAASkgU,EAAU,GAAI,IACtCn9T,EAAO3N,KAAK8qU,EAAU,KAG1B,OAAOn9T,EAETxM,iBAAiB69B,GACf,IAAI4d,EAEJ,GAAI7zC,MAAMC,QAAQg2B,GAAM,EACrBA,EAAK4d,GAAY5d,EAEpB,OAAQ4d,EAAWA,EAASpxC,WAAa,IAAMg6B,GAAKxG,GAOtD79B,cAAc4pU,GACZ,MAAMp9T,EAAS,GACf,IAAIm9T,EACJ,GAAIC,EAAS,CACX,IAAK,IAAI3qU,EAAI,EAAGA,EAAI2qU,EAAQzqU,OAAQF,IAAK,CACvC,GAAI0qU,EAAYtpU,KAAKwpU,UAAUD,EAAQ3qU,IAAK,CAC1CuN,EAAO3N,KAAK8qU,KAIlB,OAAOn9T,EAETxM,cAAcqkC,GACZ,MAAM73B,EAAS,GACf,IAAIqxB,EACJ,GAAIwG,EAAM,CACR,IAAK,IAAIplC,EAAI,EAAGA,EAAIolC,EAAKllC,OAAQF,IAAK,CACpC,GAAI4+B,EAAMx9B,KAAKypU,UAAUzlS,EAAKplC,IAAK,CACjCuN,EAAO3N,KAAKg/B,KAIlB,OAAOrxB,GAGXi9T,GAAyBlhU,OAAS,2BAMlC,MAAMwhU,GAAoB,OACxBC,GAAkBC,IAChB,MAAMz9T,EAASy9T,EAAUp/T,QAAQk/T,GAAmB,IACpD,OAAOv9T,IAAW,MAAQ,MAAQA,GAEpC6L,GAAK,CAACwkB,EAAMwzN,EAASx4N,EAAS6tS,IAAaA,EAASwE,gBAAgBrtS,EAAMhF,GAC1EsyS,GAAwBttS,GAAQutS,GAAqBvtS,EACvD,IAAIutS,GACJ,MAAMC,WAAmC3uT,GACvC1b,8BAA8BwY,GAC5B,IAAI2kS,EACJ,MAAMwoB,WACFA,GACEntT,GACJyxT,UACEA,EAASruL,SACTA,EAAQ8pL,SACRA,EACAj4R,QAAS68R,EAAKjmT,MACdA,GACEshT,EAKN,IAAKntT,EAAO+xT,mBAAqB7E,EAASllT,KAAKgqT,iBAAkB,CAE/D,MAAM96B,EAAkBxvQ,GAAW9gB,IAAIsmT,EAASl4R,UAAWouG,EAAUouL,GAAgBC,IACnFx8R,EAAUvN,GAAWlX,IAAI0mR,EAAiBl3R,EAAOi1B,SAAWiiQ,GAC9DrvS,KAAKoqU,YAAY,CACfF,iBAAkB,KAClB/8R,UAAWk4R,EAASl4R,UACpBC,QAAAA,EACAk4R,WAAAA,EACAttT,GAAAA,KAIJ,MAAMqyT,EAAgBhF,EAASl4R,UAE/B,IAAIA,UACFA,EAAYk9R,EAAaj9R,QACzBA,EAAU68R,GACR9xT,EAEJ,GAAIg1B,EAAYk9R,EAAe,CAC7Bl9R,EAAYk9R,EAGd,GAAIJ,EAAO,CACT,IAAK78R,GAAWA,EAAU68R,EAAO,CAC/B78R,EAAU68R,QAOT,GAAIjmT,GAASmpB,EAAYk9R,EAAe,CAE3CrqU,KAAKoqU,YAAY,CACf9E,WAAAA,EACAttT,GAAI8xT,KAGN,IAAK18R,GAAWA,EAAU28R,GAAoB,CAE5C38R,EAAU,IAAI5+B,KAAKu7T,GAAmB/5T,UAAY,IAItD,MAAMs6T,EAAsBn9R,EAQ5B,IAAKh1B,EAAO8nT,UAAW,CACrB9yR,EAAY,IAAI3+B,KAAKqxB,GAAWxrB,IAAIwrB,GAAW9gB,IAAIouB,GAAYouG,EAAUouL,GAAgBC,IAAaS,IAExG,OAAOpsU,OAAOmZ,OAAO,CACnB6P,UAAW,GAEXg5S,WAAY//T,QAAQmlU,EAASqB,aAC5BvuT,EAAQ,CACTg1B,UAAAA,EACAC,QAAAA,EACAi4R,SAAAA,EACAgF,cAAAA,EACAC,oBAAAA,EACA9H,WAAY1lB,EAAW1vQ,KAAa,MAAQ0vQ,SAAkB,OAAS,EAAIA,EAAS9sS,UACpFu6T,gBAAiBF,EAAcr6T,UAC/Bw6T,sBAAuBF,EAAoBt6T,UAC3C02T,WAAYrB,EAASqB,WACrB+D,WAAYt9R,GAAak9R,GAAiBj9R,EAAUi9R,IAGxD1qU,0BAA0BwwB,GACxB,GAAIA,EAAM8rS,aAAc,CACtB,OAAOp8R,GAAW6K,KAAKva,EAAMorR,kBAAkBpuQ,UAAWhd,EAAMgd,UAAWw8R,GAAgBx5S,EAAMorR,kBAAkB+pB,WAAWsE,aAYlIjqU,yBAAyBwtC,EAAWC,EAAS5P,EAAKttB,GAChD,IAAI/D,EAAQm3B,EAAMonS,EAClB,GAAIx6T,EAAO,CACT,GAAIA,EAAQ,EAAG,CACbozB,EAAO,EACPonS,EAAav9R,MACR,CACL7J,GAAQ,EACRonS,EAAat9R,EAGf,MAAMp8B,EAAQwsB,EAAMktS,EAAWtrS,SAG/B,GAAIkE,EAAOtyB,EAAQ,EAAG,CACpBd,GAASozB,EAMXn3B,EAAS,IAAIqC,KAAKk8T,GAClBv+T,EAAOg+B,QAAQugS,EAAWv9T,WAAa+C,EAAQozB,GAAQ,EAAItyB,GAG3D,GAAI7E,EAASghC,GAAahhC,EAASihC,EAAS,CAC1CjhC,EAAS,MAGb,OAAOA,EAETxM,iBAAiBqiC,EAAMxD,EAAOhC,GAC5B,MAAMqQ,EAAK,IAAIr+B,KAAKwzB,EAAMxD,EAAOhC,GACjC,GAAIqQ,EAAG5/B,gBAAkB+0B,GAAQ6K,EAAG3/B,aAAesxB,GAASqO,EAAG1/B,YAAcqvB,EAAM,CACjF,OAAOqQ,GAGXltC,uBAAuBy7C,GACrB,OAAOl7C,QAAQk7C,GAEjBz7C,8BAA8BkoC,EAAO8iS,EAAW3yT,EAAIorD,GAClD,MAAMwnQ,EAAc/iS,EAAM/oC,OACxB68D,EAAY,GACd,IAAK,IAAI/8D,EAAI,EAAGA,EAAI+rU,EAAU7rU,OAAQF,IAAK,CACzC,MAAMsR,EAAQy6T,EAAU/rU,GACxB,GAAIoB,KAAK6qU,gBAAgB36T,GAAQ,CAC/B,MAAMssB,EAAOtsB,EAAQ,EAAI23B,EAAM33B,EAAQ,GAAK23B,EAAM+iS,EAAc16T,GAChE,GAAIssB,IAASm/B,EAAUn/B,EAAKxsB,WAAY,CAEtC2rD,EAAUn/B,EAAKxsB,WAAa,KAE5B,GAAIgI,EAAGnR,KAAKu8D,EAAO5mC,KAAU,MAAO,CAClC,OAAO,UAMjB78B,gBAAgBsgU,EAAW6K,EAAgBR,EAAqB5D,EAAYrB,GAC1E,OAAQpF,EAAY6K,GAAkBR,EAAsBQ,EAAeviS,UAAYm+R,EAAa4D,KAAyBjF,EAAS0F,aAAaD,GAGrJnrU,kBAAkBsgU,EAAW+K,EAAeC,EAAkBT,EAAuB9D,EAAYrB,GAC/F,OAAQpF,EAAYgL,GAAoBT,EAAwBS,EAAmBvE,EAAa8D,KAA2BnF,EAAS0F,aAAaC,IAGrJ9rU,EAAgB8qU,GAA4B,YAAa,QACzD9qU,EAAgB8qU,GAA4B,wBAAyB,KACrEA,GAA2B9hU,OAAS,6BAOpC,MAAMgjU,WAAgClB,GAkBpCrqU,mBAAmBwY,GACjB,MAAM8nT,UACFA,EAAS9yR,UACTA,EAASC,QACTA,EAAOo1R,UACPA,EAAS6C,SACTA,EAAQgF,cACRA,EAAaG,sBACbA,EAAqB9D,WACrBA,EAAU+D,WACVA,EAAUnF,WACVA,EAAUttT,GACVA,EAAEiP,UACFA,EAASm8C,MACTA,EAAQpjE,MACNA,KAAKmrU,uBAAuBhzT,IAChCojI,SACEA,GACE+pL,EACJxoT,EAAQqwB,EAAYk9R,EAEpBe,EAAmB7vL,EAAW,MAC9B8vL,EAAmBj3T,KAAK+oB,MAAMrgB,EAAQsuT,GACxC,IAAIpnT,MACAA,GACEshT,EACJt1E,EAAU,EACV86E,EAAiBjrS,GAAW9gB,IAAIsrT,EAAegB,EAAmB9vL,EAAU,OAC5E0vL,EAAmBH,EAAe96T,UACpC,IAAKo9B,IAAYppB,EAAO,CACtBA,EAAQhkB,KAAKsrU,sBAEf,OAAQ9I,GAAayI,EAAmBzI,EAAW,CACjD,MAAM+I,EAASvrU,KAAKwrU,WAAWvL,EAAW6K,EAAgBG,EAAkBT,EAAuB9D,EAAYrB,GAC/Gr1E,IACA,GAAIu7E,IAAW/I,GAAayI,EAAmBzI,GAAaxqT,EAAGvZ,MAAM2kE,EAAO,CAAC0nQ,EAAgB96E,EAASA,IAAY,GAAKy6E,EAAYpF,KAAap+S,MAAgB,OAASjD,GAASgsO,GAAWhsO,GAAQ,CACnM,MAGF8mT,EAAiBjrS,GAAW9gB,IAAI+rT,EAAgBvvL,EAAU,OAC1D0vL,EAAmBH,EAAe96T,YAIxC9Q,EAAgBgsU,GAAyB,YAAa,SACtDA,GAAwBhjU,OAAS,0BAOjC,MAAMujU,WAAiCzB,GAgBrCrqU,mBAAmBwY,GACjB,IAAIuzT,EACJ,MAAMzL,UACFA,EAAS9yR,UACTA,EAASq1R,UACTA,EAAS6C,SACTA,EAAQgF,cACRA,EAAaE,gBACbA,EAAeC,sBACfA,EAAqB9D,WACrBA,EAAU+D,WACVA,EAAUnF,WACVA,EAAUttT,GACVA,EAAEiP,UACFA,EAASm8C,MACTA,EAAQpjE,MACNA,KAAKmrU,uBAAuBhzT,IAChCojI,SACEA,EAAQv3G,KACRA,GACEshS,GACJ16R,aACEA,GACE/K,GACJ8rS,EAAatB,EAAcj9T,WAC3Bw+T,EAAevB,EAAch9T,aAC7Bw+T,EAAexB,EAAc/8T,aAC7Bw+T,EAAUzB,EAAc98T,kBAC1B,IAAIyiP,EAAU,GACZhsO,MACEA,GACEshT,EACJyG,EAAW3C,GAAyB/U,OAAOrwR,GAC3CgoS,EACAlB,EAEF,MAAOY,EAAYK,KAAc,MAAQL,SAAmB,GAAKA,EAAU5sU,QAAS,CAClFitU,EAAW,CAAC,CAAC1B,EAAcjrS,WAM7B,GAAIwL,EAAe,EAAG,CACpB,IAAK,IAAIhsC,EAAI,EAAGA,EAAImtU,EAASjtU,OAAQF,IAAK,CACxC,GAAIgsC,EAAemhS,EAASntU,GAAG,GAAI,CACjCmtU,EAASntU,GAAG,GAAK,EAAIgsC,EAAemhS,EAASntU,GAAG,OAC3C,CACLmtU,EAASntU,GAAG,IAAMgsC,IAKxBmhS,EAAS9zT,MAAK,CAACpS,EAAGye,IAAMze,EAAE,GAAKye,EAAE,KAGjC0nT,EAAgBnsS,GAAWssE,QAAQnoF,GAASu3H,EAAW,EAAI8uL,EAAgBl9R,EAAW,OAAQ,GAC9F,IAAKq1R,IAAcx+S,EAAO,CACxBA,EAAQhkB,KAAKsrU,sBAEf,OAAQ9I,GAAawJ,EAAch8T,UAAYwyT,EAAW,CACxD,IAAK,IAAI5jU,EAAI,EAAGA,EAAImtU,EAASjtU,OAAQF,IAAK,CAExCksU,EAAiB,IAAIt8T,KAAKw9T,EAAc/+T,cAAe++T,EAAc9+T,WAAY8+T,EAAc7+T,UAAY4+T,EAASntU,GAAG,GAAI+sU,EAAYC,EAAcC,EAAcC,GACnK,MAAMb,EAAmBH,EAAe96T,UACxC,GAAIi7T,GAAoBV,EAAiB,CACvC,MAAMgB,EAASvrU,KAAKwrU,WAAWvL,EAAW6K,EAAgBG,EAAkBT,EAAuB9D,EAAYrB,GAC/Gr1E,IACA,GAAIu7E,IAAW/I,GAAayI,GAAoBzI,GAAaxqT,EAAGvZ,MAAM2kE,EAAO,CAAC0nQ,EAAgB96E,EAASA,IAAY,GAAKy6E,EAAYpF,KAAap+S,MAAgB,OAASjD,GAASgsO,GAAWhsO,GAAQ,CACpM,SAKNgoT,EAAgBnsS,GAAWssE,QAAQ6/N,EAAe,OAAQzwL,KAIhEr8I,EAAgBusU,GAA0B,YAAa,UACvDA,GAAyBvjU,OAAS,2BAOlC,MAAM+jU,WAAkCjC,GACtCrqU,wBAAwB68B,EAAM0vS,GAC5B,MAAM7jS,EAAcxI,GAAWwI,YAAY7L,GAC3C,IAAIrwB,EAAS,KACb,GAAI+/T,GAAU93T,KAAK41B,IAAIkiS,IAAW7jS,EAAa,CAC7Cl8B,EAAS,IAAIqC,KAAKguB,EAAKvvB,cAAeuvB,EAAKtvB,WAAYg/T,EAAS,EAAI7jS,EAAc6jS,EAAS,EAAIA,GAEjG,OAAO//T,EAETxM,uBAAuBy7C,GACrB,OAAOA,GAAYhnC,KAAK41B,IAAIoR,GAAY,GAAKhnC,KAAK41B,IAAIoR,IAAa,GAiBrEz7C,mBAAmBwY,GACjB,MAAM8nT,UACFA,EAAS9yR,UACTA,EAASC,QACTA,EAAOi4R,SACPA,EAAQgF,cACRA,EAAaC,oBACbA,EAAmB5D,WACnBA,EAAU+D,WACVA,EAAUnF,WACVA,EAAUttT,GACVA,EAAEiP,UACFA,EAASm8C,MACTA,EAAQpjE,MACNA,KAAKmrU,uBAAuBhzT,IAChCojI,SACEA,EAAQv3G,KACRA,EAAIhgB,MACJA,EAAK2mT,UACLA,GACErF,EACJyG,EAAW3C,GAAyB/U,OAAOrwR,GAC3CmoS,EAAexB,GAAaA,EAAU7rU,OACtCstU,EAAgB,GAClB,IAAIC,UACAA,GACE/G,EACJt1E,EAAU,EACVs8E,EACAC,EACAC,EACA3kS,EACAijS,EACAlsU,EAGF2tU,EAAiB1sS,GAAW2I,QAAQxkB,GAASu3H,EAAW,EAAI8uL,EAAgBl9R,EAAW,SACvFq/R,EAAe,IAAIh+T,KAAKqxB,GAAWssE,QAAQogO,EAAgB,QAAS,GAAK,GAEzE,KAAMF,GAAaA,EAAUvtU,WAAaitU,GAAYA,EAASjtU,QAAS,CACtEutU,EAAY,CAAChC,EAAcl9T,WAE7B,GAAI4+T,GAAYA,EAASjtU,OAAQ,CAE/BitU,EAAS/sU,SAAQw+B,IACf,GAAIA,EAAI,GAAI,CACV8uS,EAAkBA,GAAmB,GACrCA,EAAgB9uS,EAAI,IAAMA,EAAI,OAIpC,QAAS4P,GAAWA,EAAUm/R,MAAqBvoT,GAASgsO,EAAUhsO,GAAQ,CAC5E6jB,EAAQ,GACR,GAAIkkS,GAAYA,EAASjtU,OAAQ,CAC/BitU,EAAS/sU,SAAQw+B,IACf,MAAMiR,EAAUjR,EAAI,GACpB,IAAIxY,EAAO,EACTynT,EAAO,GAET,GAAIjvS,EAAI,GAAI,CACVxY,EAAOynT,EAAOjvS,EAAI,GAEpB,IAAK5+B,EAAIomB,EAAMpmB,GAAK6tU,EAAM7tU,IAAK,CAC7B,GAAIksU,EAAiB9qU,KAAK0sU,kBAAkBH,EAAgBC,EAAc/9R,EAAS7vC,GAAI,CACrFksU,EAAiBjrS,GAAWovK,eAAe67H,EAAgBT,GAC3D,IAAK+B,EAActB,EAAe96T,WAAY,CAE5Co8T,EAActB,EAAe96T,WAAa,KAC1C63B,EAAMrpC,KAAKssU,SAKnBjjS,EAAM5vB,MAAK,CAACpS,EAAGye,IAAMze,EAAIye,IACzB,IAAK6nT,EAAc,CACjB,IAAKvtU,EAAI,EAAGA,EAAIipC,EAAM/oC,OAAQF,IAAK,CACjCksU,EAAiBjjS,EAAMjpC,GACvB,GAAIksU,GAAkBT,EAAe,CACnC,MAAMkB,EAASvrU,KAAKwzD,SAASysQ,EAAW6K,EAAgBR,EAAqB5D,EAAYrB,GACzFr1E,IACA,GAAIu7E,IAAWn+R,GAAW09R,GAAkB19R,GAAWp1B,EAAGvZ,MAAM2kE,EAAO,CAAC0nQ,EAAgB96E,EAASA,IAAY,GAAKy6E,EAAYpF,KAAap+S,MAAgB,OAASjD,GAASgsO,GAAWhsO,GAAQ,CAC9L,OAAO,cAKV,CACL,MAAM2oT,EAAmB,GACzB,IAAK/tU,EAAI,EAAGA,EAAIytU,EAAUvtU,OAAQF,IAAK,CAErC,IAAKksU,EAAiB9qU,KAAK4sU,iBAAiBL,EAAgBF,EAAUztU,OAASwtU,EAActB,EAAe96T,WAAY,CACtHo8T,EAActB,EAAe96T,WAAa,KAC1C28T,EAAiBnuU,KAAKssU,IAI1B6B,EAAiB10T,MAAK,CAACpS,EAAGye,IAAMze,EAAIye,IACpC,IAAK1lB,EAAI,EAAGA,EAAI+tU,EAAiB7tU,OAAQF,IAAK,CAC5CksU,EAAiBjrS,GAAWovK,eAAe09H,EAAiB/tU,GAAIyrU,GAChE,GAAI8B,EAAc,CAChBtkS,EAAMrpC,KAAKssU,QACN,GAAIA,GAAkBT,EAAe,CAC1C,MAAMkB,EAASvrU,KAAKwzD,SAASysQ,EAAW6K,EAAgBR,EAAqB5D,EAAYrB,GACzFr1E,IACA,GAAIu7E,IAEJn+R,GAAW09R,EAAiB19R,GAAWp1B,EAAGvZ,MAAM2kE,EAAO,CAAC0nQ,EAAgB96E,EAASA,IAAY,GAAKy6E,EAAYpF,KAAap+S,MAAgB,OAASjD,GAASgsO,GAAWhsO,GAAQ,CAC9K,UAKR,GAAImoT,GAAgBtkS,EAAM/oC,OAAQ,CAChCkB,KAAK6sU,uBAAuBhlS,EAAO8iS,GAAWG,IAC5C,GAAIA,GAAkBT,EAAe,CACnC,MAAMkB,EAAStL,EAAY6K,GAAkBR,EAAsBQ,EAAeviS,UAAYm+R,EAAa4D,IAAwBjF,EAAS0F,aAAaD,GACzJ96E,IAEA,GAAIu7E,KAAYn+R,GAAW09R,GAAkB19R,KAE7Cp1B,EAAGvZ,MAAM2kE,EAAO,CAAC0nQ,EAAgB96E,EAASA,IAAY,GAAKy6E,EAAYpF,KAAap+S,MAAgB,OAASjD,GAASgsO,GAAWhsO,GAAQ,CACvI,OAAO,WAMfuoT,EAAiB1sS,GAAWssE,QAAQogO,EAAgB,QAAShxL,GAC7DixL,EAAe,IAAIh+T,KAAKqxB,GAAWssE,QAAQogO,EAAgB,QAAS,GAAK,KAI/ErtU,EAAgB+sU,GAA2B,YAAa,WACxDA,GAA0B/jU,OAAS,4BAOnC,MAAM4kU,WAAiC9C,GAgBrCrqU,mBAAmBwY,GACjB,MAAM8nT,UACFA,EAAS9yR,UACTA,EAASC,QACTA,EAAOi4R,SACPA,EAAQgF,cACRA,EAAaC,oBACbA,EAAmB5D,WACnBA,EAAU+D,WACVA,EAAUnF,WACVA,EAAUttT,GACVA,EAAEiP,UACFA,EAASm8C,MACTA,EAAQpjE,MACNA,KAAKmrU,uBAAuBhzT,IAChCojI,SACEA,EAAQv3G,KACRA,EAAIhgB,MACJA,EAAK2mT,UACLA,GACErF,EACJyG,EAAW3C,GAAyB/U,OAAOrwR,GAC3CmoS,EAAexB,GAAaA,EAAU7rU,OACtCstU,EAAgB,GAClB,IAAI/nS,OACAA,GACEihS,EACJt1E,EAAU,EACVpxP,EACAksU,EACAjjS,EACAklS,EACAC,EACAV,EAGFS,EAAgBltS,GAAW2I,QAAQxkB,GAASu3H,EAAW,EAAI8uL,EAAgBl9R,EAAW,QACtF6/R,EAAc,IAAIx+T,KAAKqxB,GAAWssE,QAAQ4gO,EAAe,OAAQ,GAAK,GACtE1oS,GAAUA,EAAOpsB,MAAK,CAACpS,EAAGye,IAAMze,EAAIye,IAEpC,KAAM+f,GAAUA,EAAOvlC,WAAaitU,GAAYA,EAASjtU,QAAS,CAChEulC,EAAS,CAACgmS,EAAcn9T,WAAa,GAEvC,GAAI6+T,GAAYA,EAASjtU,OAAQ,CAE/BitU,EAAS/sU,SAAQw+B,IACf,GAAIA,EAAI,GAAI,CACV8uS,EAAkBA,GAAmB,GACrCA,EAAgB9uS,EAAI,IAAMA,EAAI,OAIpC,QAAS4P,GAAWA,EAAU2/R,MAAoB/oT,GAASgsO,EAAUhsO,GAAQ,CAC3E6jB,EAAQ,GACR,GAAIkkS,GAAYA,EAASjtU,OAAQ,CAC/BitU,EAAS/sU,SAAQw+B,IACf,MAAMiR,EAAUjR,EAAI,GACpB,IAAIxY,EAAO,EACTynT,EAAO,GAET,GAAIjvS,EAAI,GAAI,CACVxY,EAAOynT,EAAOjvS,EAAI,GAEpB,IAAK5+B,EAAIomB,EAAMpmB,GAAK6tU,EAAM7tU,IAAK,CAC7B,GAAIksU,EAAiB9qU,KAAK0sU,kBAAkBK,EAAeC,EAAav+R,EAAS7vC,GAAI,CACnFksU,EAAiBjrS,GAAWovK,eAAe67H,EAAgBT,GAC3D,IAAK+B,EAActB,EAAe96T,WAAY,CAE5Co8T,EAActB,EAAe96T,WAAa,KAC1C63B,EAAMrpC,KAAKssU,SAKnBjjS,EAAM5vB,MAAK,CAACpS,EAAGye,IAAMze,EAAIye,IACzB,IAAK6nT,EAAc,CACjB,IAAKvtU,EAAI,EAAGA,EAAIipC,EAAM/oC,OAAQF,IAAK,CACjCksU,EAAiBjjS,EAAMjpC,GACvB,GAAIksU,GAAkBT,EAAe,CACnC,MAAMkB,EAASvrU,KAAKwzD,SAASysQ,EAAW6K,EAAgBR,EAAqB5D,EAAYrB,GACzFr1E,IACA,GAAIu7E,IAAWn+R,GAAW09R,GAAkB19R,GAAWp1B,EAAGvZ,MAAM2kE,EAAO,CAAC0nQ,EAAgB96E,EAASA,IAAY,GAAKy6E,EAAYpF,KAAap+S,MAAgB,OAASjD,GAASgsO,GAAWhsO,GAAQ,CAC9L,eAKH,CACL,IAAKplB,EAAI,EAAGA,EAAIylC,EAAOvlC,OAAQF,IAAK,CAClC,GAAIksU,EAAiB9qU,KAAKitU,UAAUF,EAAc9/T,cAAeo3B,EAAOzlC,GAAK,EAAGyrU,EAAcl9T,WAAY,CACxG29T,EAAiBjrS,GAAWovK,eAAe67H,EAAgBT,GAE3D,IAAK+B,EAActB,EAAe96T,WAAY,CAC5Co8T,EAActB,EAAe96T,WAAa,KAC1C,GAAIm8T,EAAc,CAChBtkS,EAAMrpC,KAAKssU,QACN,GAAIA,GAAkBT,EAAe,CAC1C,MAAMkB,EAAStL,EAAY6K,GAAkBR,EAAsBQ,EAAeviS,UAAYm+R,EAAa4D,IAAwBjF,EAAS0F,aAAaD,GACzJ96E,IACA,GAAIu7E,IAAWn+R,GAAW09R,GAAkB19R,GAAWp1B,EAAGvZ,MAAM2kE,EAAO,CAAC0nQ,EAAgB96E,EAASA,IAAY,GAAKy6E,EAAYpF,KAAap+S,MAAgB,OAASjD,GAASgsO,GAAWhsO,GAAQ,CAC9L,YAOZ,GAAImoT,GAAgBtkS,EAAM/oC,OAAQ,CAChCkB,KAAK6sU,uBAAuBhlS,EAAO8iS,GAAWG,IAC5C,GAAIA,GAAkBT,EAAe,CACnC,MAAMkB,EAAStL,EAAY6K,GAAkBR,EAAsBQ,EAAeviS,UAAYm+R,EAAa4D,IAAwBjF,EAAS0F,aAAaD,GACzJ96E,IAEA,GAAIu7E,KAAYn+R,GAAW09R,EAAiB19R,GAAU,CAEpD,GAAIp1B,EAAGvZ,MAAM2kE,EAAO,CAAC0nQ,EAAgB96E,EAASA,IAAY,GAAKy6E,EAAYpF,KAAap+S,MAAgB,OAASjD,GAASgsO,GAAWhsO,EAAO,CAC1I,OAAO,YAOjB+oT,EAAgBltS,GAAWssE,QAAQ4gO,EAAe,OAAQxxL,GAC1DyxL,EAAc,IAAIx+T,KAAKqxB,GAAWssE,QAAQ4gO,EAAe,OAAQ,GAAK,KAI5E7tU,EAAgB4tU,GAA0B,YAAa,UACvDA,GAAyB5kU,OAAS,2BAKlC,MAAMglU,GAAsB,GAC5B,CAAChC,GAAyBO,GAA0BQ,GAA2Ba,IAA0B9tU,SAAQgkB,IAC/GkqT,GAAoBlqT,EAAG4mT,WAAa5mT,KAEtC,SAASmqT,GAAiC5tU,GACxC,GAAIA,EAAO,CACT,UAAWA,GAAS,SAAU,CAC5BA,EAAQA,EAAM8F,MAAM,KAAKwE,KAAI8H,GAAQvI,SAASuI,EAAM,WAEjD,CACLpS,EAAQ,KAEV,OAAOA,EAET,SAAS6tU,GAA0B7tU,GACjC,GAAIA,EAAO,CACT,UAAWA,GAAS,SAAU,CAC5BA,EAAQA,EAAM8F,MAAM,UAEjB,CACL9F,EAAQ,KAEV,OAAOA,EAET,SAAS8tU,GAAgBn2T,EAAQC,GAC/B,OAAOjO,OAAOgO,KAAYhO,OAAOiO,GAEnC,SAASm2T,GAAe/tU,GACtB,GAAIS,KAAK4E,cAAgBrF,IAAUqD,UAAW,CAC5C,OAAO5C,KAAK4E,aAEd,GAAI5E,KAAK6lU,WAAatmU,GAAS,KAAM,CACnC,OAAO,KAETA,EAAQ6J,SAAS7J,GACjB,OAAO2U,MAAM3U,GAASqD,UAAYrD,EAWpC,MAAMguU,WAAwB5xP,GAC5B5tE,mBACE,MAAO,kBAQTy/T,wBACE,OAAO,KAGTn0P,oBACE,MAAO,CAKP,CACE50E,KAAM,YACNG,aAAc,SAOhB,CACEH,KAAM,WACNG,aAAc,EACdu5E,QAASmvP,IAOX,CACE7oU,KAAM,UACNoI,KAAM,QAQR,CACEpI,KAAM,QACNohU,UAAW,KACX1nP,QAASmvP,IAYX,CACE7oU,KAAM,OACN05E,QAASivP,GACT5hS,QAAS6hS,IAQX,CACE5oU,KAAM,YACN05E,QAASgvP,GACT3hS,QAAS6hS,IAQX,CACE5oU,KAAM,SACN05E,QAASgvP,GACT3hS,QAAS6hS,IAQX,CACE5oU,KAAM,YACN05E,QAASgvP,GACT3hS,QAAS6hS,KAGb9/M,iBACE,OAAOvtH,KAAKytU,aAAe,kBAE7BlgN,eAAezwF,GACb98B,KAAKytU,YAAc3wS,EAErB4wS,yBACE,OAAOR,GAAoBltU,KAAK4pU,WAMlCvE,eACE,OAAOrlU,KAAK2tU,UAEdtI,aAAa9lU,GACXS,KAAK2tU,UAAYpuU,EAOnBquU,WACE,MAAM7tU,EAAKC,KACTmM,EAAS,GACX,GAAIpM,EAAG6pU,UAAW,CAChBz9T,EAAO3N,KAAK,QAAQuB,EAAG6pU,aACvB,GAAI7pU,EAAGw7I,SAAW,EAAG,CACnBpvI,EAAO3N,KAAK,YAAYuB,EAAGw7I,YAE7B,GAAIx7I,EAAGikC,MAAQjkC,EAAGikC,KAAKllC,OAAQ,CAC7BqN,EAAO3N,KAAK,SAAWuB,EAAGikC,KAAK/5B,KAAK,MAEtC,GAAIlK,EAAGssU,WAAatsU,EAAGssU,UAAUvtU,OAAQ,CACvCqN,EAAO3N,KAAK,cAAgBuB,EAAGssU,UAAUpiU,KAAK,MAEhD,GAAIlK,EAAGskC,QAAUtkC,EAAGskC,OAAOvlC,OAAQ,CACjCqN,EAAO3N,KAAK,WAAauB,EAAGskC,OAAOp6B,KAAK,MAE1C,GAAIlK,EAAGikB,MAAO,CACZ7X,EAAO3N,KAAK,SAASuB,EAAGikB,SAE1B,GAAIjkB,EAAGqtC,QAAS,CACdjhC,EAAO3N,KAAK,SAAWqhC,GAAW/C,OAAO/8B,EAAGqtC,QAASrtC,EAAGwtH,aAE1D,GAAIxtH,EAAG4qU,WAAa5qU,EAAG4qU,UAAU7rU,OAAQ,CACvCqN,EAAO3N,KAAK,YAAcuB,EAAG4qU,UAAU1gU,KAAK,OAGhD,OAAOkC,EAAOlC,KAAK,KAErB2jU,SAASA,GACP,MAAM7tU,EAAKC,KACT6L,EAAS,CACP+9T,UAAW,KACXruL,SAAU,KACVv3H,MAAO,KACPopB,QAAS,KACTpJ,KAAM,KACNqoS,UAAW,KACXhoS,OAAQ,KACRsmS,UAAW,MAEf5qU,EAAGs4F,aACH,GAAIu1O,EAAM,CACR,MAAM/nS,EAAQ+nS,EAAKvoU,MAAM,KACzB,IAAK,IAAIzG,EAAI,EAAGykB,EAAMwiB,EAAM/mC,OAAQF,EAAIykB,EAAKzkB,IAAK,CAChD,MAAM+nC,EAAOd,EAAMjnC,GAAGyG,MAAM,KAC1B9F,EAAQonC,EAAK,GACf,OAAQA,EAAK,IACX,IAAK,OACH96B,EAAO+9T,UAAYrqU,EACnB,MACF,IAAK,WACHsM,EAAO0vI,SAAWh8I,EAClB,MACF,IAAK,QACHsM,EAAOmY,MAAQzkB,EACfsM,EAAOo+T,MAAQ,KACf,MACF,IAAK,QACH,GAAI1qU,EAAO,CACTsM,EAAOuhC,QAAUvN,GAAW7zB,MAAMzM,EAAOQ,EAAGwtH,gBACvC,CACL1hH,EAAOuhC,QAAU,KAEnBvhC,EAAOmY,MAAQ,KACf,MACF,IAAK,QACHnY,EAAOm4B,KAAOzkC,EACd,MACF,IAAK,aACHsM,EAAOwgU,UAAY9sU,EACnB,MACF,IAAK,UACHsM,EAAOw4B,OAAS9kC,EAChB,MACF,IAAK,WACHsM,EAAO8+T,UAAYprU,EACnB,QAIRQ,EAAGuR,IAAIzF,GACP,GAAI+hU,EAAM,CACR7tU,EAAG8tU,WAEL9tU,EAAGu4F,WAEL34F,UAAUu6B,EAAO,IACf,MAAMn6B,EAAKC,MACT4tU,KACEA,EAAIvI,SACJA,GACEnrS,EACNn6B,EAAG+tU,4BAA8B,SAC1B5zS,EAAKmrS,gBACLnrS,EAAK0zS,KACZ1zT,MAAMsB,aAAa3c,WACnB,GAAI+uU,EAAM,CACR7tU,EAAGguU,2BACHhuU,EAAG6tU,KAAOA,EACV7tU,EAAGiuU,0BAELjuU,EAAGslU,SAAWA,EAehB1lU,kBAAkBwtC,EAAWC,EAASp1B,GACpC,GAAIhY,KAAKqlU,SAASl4R,UAAW,CAC3BntC,KAAK0tU,mBAAmBtD,YAAY,CAClC9E,WAAYtlU,KACZmtC,UAAAA,EACAC,QAAAA,EACAztC,GAAG68B,EAAMwzN,EAAS1kN,EAAO+5R,GACvB,OAAOrtT,EAAGqtT,EAASwE,gBAAgBrtS,EAAM8O,GAAQA,EAAO0kN,EAASxzN,OASzE78B,WACE,IAAIsuU,EACJ,MAAMluU,EAAKC,KACTkuU,GAAqBD,EAAeluU,EAAGslU,YAAc,MAAQ4I,SAAsB,OAAS,EAAIA,EAAa9gS,UAC7GthC,EAAS,GACX9L,EAAGouU,aAAe,KAClB,OAAQpuU,EAAG6pU,WACT,IAAK,QACH/9T,EAAO8+T,UAAY,KACnB9+T,EAAOm4B,KAAO,KACdn4B,EAAOwgU,UAAY,KACnBxgU,EAAOw4B,OAAS,KAChB,MACF,IAAK,SACH,CACEx4B,EAAO8+T,UAAY,KACnB9+T,EAAOwgU,UAAY,KACnBxgU,EAAOw4B,OAAS,KAChB,MAAML,KACJA,GACEjkC,EACJ,GAAImuU,IAAsBlqS,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKllC,SAAW,GAAKklC,EAAK,IAAMolS,GAAyBK,UAAUyE,EAAkB9uS,UAAW,CACpKvzB,EAAOm4B,KAAO,KAEhB,MAEJ,IAAK,UACH,CACE,IAAIoqS,EACJ,IAAKA,EAAgBruU,EAAGssU,aAAe,MAAQ+B,SAAuB,GAAKA,EAActvU,OAAQ,CAC/F+M,EAAO8+T,UAAY,KACnB9+T,EAAOm4B,KAAO,KAEhBn4B,EAAOw4B,OAAS,KAChB,MAAMgoS,UACJA,GACEtsU,EACJ,GAAImuU,IAAsB7B,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAUvtU,SAAW,GAAKutU,EAAU,IAAM6B,EAAkB/gU,UAAW,CACrJtB,EAAOwgU,UAAY,KAErB,MAEJ,IAAK,SACH,CACExgU,EAAOwgU,UAAY,KACnB,MAAMhoS,OACJA,GACEtkC,EACJ,GAAImuU,IAAsB7pS,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOvlC,SAAW,GAAKulC,EAAO,IAAM6pS,EAAkBhhU,WAAa,EAAG,CAC9IrB,EAAOw4B,OAAS,KAElB,OAGNtkC,EAAGuR,IAAIzF,GACP9L,EAAGouU,aAAe,MAEpBxuU,QAAQ4b,GACN,MAAMpP,EAAS+N,MAAM+rE,QAAQ1qE,GAC7BpP,EAAOohH,WAAavtH,KAAKutH,WACzBphH,EAAOk5T,SAAWrlU,KAAKqlU,SACvB,OAAOl5T,EAETxM,YAAY2zE,EAAOxG,EAAQ52C,GACzB,MAAM/pB,EAAS+N,MAAMy5D,YAAYL,EAAOxG,EAAQ52C,IAC9CmvS,SACEA,GACErlU,KACN,IAAKA,KAAKmuU,aAAc,CAEtBnuU,KAAK6tU,WAEP,GAAIxI,EAAU,CACZA,EAASgJ,uBAAuBruU,MAChC,IAAKA,KAAKsuU,6BAA8B,CACtCjJ,EAASkJ,uBAGb,OAAOpiU,EAETxM,IAAI4W,EAAOhX,KAAUgc,GACnB,MAAM1P,SAAgB0K,IAAU,SAAWA,EAAQ,CACjD5W,CAAC4W,GAAQhX,GAGX,GAAIsM,EAAOmY,MAAO,CAChBnY,EAAOuhC,QAAU,UAGd,GAAIvhC,EAAOuhC,QAAS,CACvBvhC,EAAOmY,MAAQ,KAEjB9J,MAAM5I,IAAIzF,EAAQjJ,aAAc2Y,GAElC+yT,mCACE,OAAOpuU,QAAQF,KAAK8tU,6BAEtBnuU,2BACEK,KAAK8tU,8BAEPnuU,0BACE,GAAIK,KAAK8tU,4BAA6B9tU,KAAK8tU,+BAG/CP,GAAgBrlU,OAAS,kBAEzB,SAASsmU,GAA2BjvU,GAClC,MAAM4M,EAAS,IACbohH,WACEA,GACEvtH,KACN,GAAIT,EAAO,CACTA,SAAeA,GAAS,SAAWA,EAAM8F,MAAM,KAAOyd,GAAYm7B,QAAQ1+C,GAC1EA,EAAMP,SAAQ2S,IACZ,UAAWA,GAAQ,SAAU,CAC3BA,EAAOkuB,GAAW7zB,MAAM2F,EAAM47G,GAGhC,IAAKr5G,MAAMvC,GAAO,CAChBxF,EAAO0zB,GAAWsgJ,QAAQxuK,IAAS,MAIzC,OAAOxF,EAET,SAASsiU,GAA6BlvU,GACpC,MAAM4M,EAAS,IACbohH,WACEA,GACEvtH,KACN,IAAK,MAAMw8B,KAAQj9B,EAAO,CACxB,GAAIA,EAAMi9B,GAAO,CACfrwB,EAAO3N,KAAKqhC,GAAW/C,OAAO+C,GAAWomK,SAASzpK,GAAO+wF,KAG7D,OAAOphH,EAET,MAAMuiU,GAAa,GAoBnB,IAAIC,GAAqBzhT,GAAU,MAAMyhT,UAA2BzhT,GAAU04S,IAC5E73T,mBACE,MAAO,oBAMT43T,wBACE,OAAO,KAETtsP,oBACE,MAAO,CAOP,CACE50E,KAAM,iBACNq0E,SAAU,MAoCZ,CACEr0E,KAAM,iBACN05E,QAASqwP,GACT5qP,UAAW6qP,GACX31P,SAAU,OASdn5E,SACE,GAAIK,KAAKi8T,aAAc,CACrB,MAAMl8T,EAAKC,MACTu7S,kBACEA,GACEx7S,EACNA,EAAGioG,cACHuzM,EAAkBljN,aAClBt4F,EAAG6uU,2BACHrzB,EAAkBjjN,eACb,CACL,OAAOp+E,MAAMpY,UAAUjD,YAG3Bw2S,iBACE,IAAI9uN,EACJ,IAAIp6E,EAASnM,KAAKi8T,aAAej8T,KAAK6uU,eAAex5B,WAAan7R,MAAMm7R,WAIxE,IAAKlpS,IAAWo6E,EAAmBvmF,KAAK2sE,cAAgB,MAAQ4Z,SAA0B,GAAKA,EAAiBuoP,0BAA2B,CACzI3iU,EAASnM,KAAK2sE,WAEhB,OAAOxgE,EAMT4iU,sBACE,OAAO/uU,KAAKgvU,kBAAoBzB,GAElCwB,oBAAoBxpP,GAClBvlF,KAAKgvU,iBAAmBzpP,EAgC1B5lF,cAAc2lU,EAAY/pL,EAAU0zL,GAClC,MAAMlvU,EAAKC,KACX,IAAI4oU,EACJ,GAAItD,EAAY,CACd,IAAKA,EAAWkI,kBAAmB,CACjC,UAAWlI,IAAe,SAAU,CAClCA,EAAa,CACXsE,UAAWtE,GAEb,GAAI/pL,EAAU,CACZ+pL,EAAW/pL,SAAWA,EAGxB,GAAI0zL,EAAe,CACjB,GAAIA,aAAyBzgU,KAAM,CACjC82T,EAAWl4R,QAAU6hS,MAChB,CACL3J,EAAWthT,MAAQirT,IAIzB3J,EAAa,IAAIvlU,EAAGgvU,gBAAgBzJ,GAKtCA,EAAWD,SAAWtlU,EACtB6oU,EAAiBtD,EAAWsI,KAE9B7tU,EAAGulU,WAAaA,EAChBvlU,EAAG6oU,eAAiBA,EAMtBtD,iBACE,MAAMvlU,EAAKC,KACT4tU,EAAO7tU,EAAG6oU,eACZ,IAAK7oU,EAAGmvU,aAAetB,EAAM,CAC3B7tU,EAAGmvU,YAAc,IAAInvU,EAAGgvU,gBAAgB,CACtCnB,KAAAA,EACAvI,SAAUtlU,EACV4K,GAAI,GAAG5K,EAAG4K,kBAGd,OAAO5K,EAAGmvU,YAEZ5J,eAAeA,GACb,MAAMvlU,EAAKC,KACXD,EAAGmvU,YAAc5J,EACjB,GAAIA,EAAY,CAEdA,EAAWD,SAAWtlU,EACtBA,EAAG6oU,eAAiBtD,EAAWsI,SAC1B,CAGL,GAAI7tU,EAAGk8T,aAAc,CACnBl8T,EAAGg1E,QAAQ,iBAAkB,UACxB,CACLh1E,EAAG6oU,eAAiB,OAS1B7I,kBAGE,OAAO7/T,SAASF,KAAKi8T,cAAgBj8T,KAAKslU,YAO5CrJ,mBACE,OAAO/7T,QAAQF,KAAKu7S,mBAQtBA,wBACE,OAAOv7S,KAAKmvU,mBAEd5rP,oBACE,OAAOrpE,MAAMqpE,iBAAmBvjF,KAAK2lU,oBAAsB3lU,KAAKi8T,cAElE1gB,sBAAsBA,GACpBv7S,KAAKmvU,mBAAqB5zB,EAU5B57S,2BAA2BwtC,EAAWC,EAAUD,GAC9C,OAAOntC,KAAKq1S,WAAW+5B,0BAA0BpvU,KAAMmtC,EAAWC,GAcpEw0R,kBACE,GAAI5hU,KAAK+/T,YAAa,CACpB,MAAM5zT,EAAS,GAEfnM,KAAKqvU,cAAcrwU,SAAQg9T,IACzB,GAAIA,IAAeh8T,KAAM,CACvBmM,EAAO3N,KAAKw9T,OAGhB,OAAO7vT,EAET,OAAOuiU,GAQTW,oBACE,OAAOrvU,KAAKsvU,kBAAoBtvU,KAAKsvU,gBAAkB,IAAI99T,KAO7D7R,iBAAiB4vU,GACf,IAAI13B,EACJ,MAAMr7Q,EAAO+yS,EAAeC,WAAaD,EAAezE,eAAiByE,GAExE13B,EAAmB73S,KAAKq1S,cAAgB,MAAQwC,SAA0B,OAAS,EAAIA,EAAiBotB,kBAAkB3rT,OAAOtZ,KAAKyvU,oBAAoBjzS,IAE3Jx8B,KAAKqvU,cAAc/1T,OAAOumB,GAAWsgJ,QAAQ3jJ,IAM/C78B,sBAAsB68B,GACpBx8B,KAAKqvU,cAAcrwU,SAAQ,CAACg9T,EAAYgG,KACtC,GAAIniS,GAAWomK,SAAS+7H,IAAYxlS,EAAM,CACxCx8B,KAAK0vU,iBAAiB1T,OAQ5Br8T,oBAIE,CAACK,QAASA,KAAK4hU,aAAa5iU,SAAQg9T,GAAch8T,KAAK0vU,iBAAiB1T,KAO1Er8T,sBACE,IAAIgwU,EACJ3vU,KAAK4oU,iBAAmB+G,EAAmB3vU,KAAKslU,cAAgB,MAAQqK,SAA0B,OAAS,EAAIA,EAAiB/B,OAAS,KAE3IjuU,uBAAuB2lU,EAAatlU,KAAKslU,YAGvC,GAAIA,EAAWl4R,QAAS,CACtB,MAAMA,EAAUvN,GAAWoL,UAAUq6R,EAAWl4R,UAC9CwiS,eACEA,GACE5vU,KAENA,KAAK6vU,sBAAsBziS,GAE3B,GAAIwiS,EAAgB,CAClB,IAAK,MAAM5N,KAAW4N,EAAgB,CACpC,MAAME,EAAgBjwS,GAAWomK,SAAS+7H,GAC1C,GAAI8N,GAAiB1iS,EAAS,QACrBwiS,EAAe5N,OAYhC8I,qBACE,IAAIiF,EACJ,QAASA,EAAsB/vU,KAAKmgB,KAAKqzD,YAAc,MAAQu8P,SAA6B,OAAS,EAAIA,EAAoB5iS,YAAcntC,KAAKmtC,UAQlJ6iS,sBACE,OAAOhG,GAA2BiG,mBAAmBjwU,MAcvDL,gBAAgBmrU,EAAgBtzS,GAC9B,IAAIqsR,EACJ,MAAM9jT,EAAKC,MACTqvU,cACEA,EAAa/J,WACbA,EAAUnlT,KACVA,GACEpgB,EACJklU,GAAqBphB,EAAiB9jT,EAAGs1S,cAAgB,MAAQwO,SAAwB,OAAS,EAAIA,EAAeohB,kBACrHiL,EAAgBrwS,GAAWsgJ,QAAQ2qJ,GACnCngU,EAAK5K,EAAG0vU,oBAAoB3E,EAAgBoF,GAC5CC,IAAgBrF,EAAiB/qU,EAAGotC,YACpCtT,SACEA,GACE95B,EAAGsQ,YAET,IAAI2rT,EAAaiJ,IAAsB,MAAQA,SAA2B,OAAS,EAAIA,EAAkBvzT,IAAI/G,IAC3G2d,SACEA,GACEvoB,EAIN,GAAIA,EAAGqtC,UAAYrtC,EAAGgiU,SAAWz5S,GAAW,CAC1CA,EAAWuX,GAAWqI,GAAGnoC,EAAG+9S,aAAc/9S,EAAGqtC,QAAQp9B,UAAYjQ,EAAGotC,UAAUn9B,WAGhF,MAAMogU,EAAoB9nT,IAAa1lB,UAAYi9B,GAAW9gB,IAAI+rT,EAAgBxiT,EAAUvoB,EAAG+9S,cAAgBl7S,UAC/G,IAAKo5T,EAAY,CAGf,GAAIxkS,GAAW24S,EAAa,CAC1BnU,EAAaj8T,EAGb,IAAKowU,EAAa,CAChBpwU,EAAGswU,gBAAgBvF,EAAgBsF,EAAmB,MAItD9K,EAAWyI,2BACXzI,EAAWuI,WACXvI,EAAW0I,0BAKb7tT,EAAKgqT,iBAAmB,SAGrB,CACHnO,EAAaj8T,EAAGkmF,KAAK,CACnBtmF,CAACk6B,EAASlvB,GAAG4tE,YAAa5tE,EAC1BhL,CAACk6B,EAASsT,UAAUorC,YAAauyP,EACjCnrU,CAACk6B,EAASuT,QAAQmrC,YAAa63P,EAC/BzwU,CAACk6B,EAASvR,SAASiwD,YAAajwD,IAElC0zS,EAAWzgB,kBAAoBx7S,EAEjCklU,IAAsB,MAAQA,SAA2B,OAAS,EAAIA,EAAkB3zT,IAAI3G,EAAIqxT,GAGhGqT,EAAc/9T,IAAI4+T,EAAelU,GAEnC,OAAOA,EAETr8T,oBAAoB68B,EAAOx8B,KAAKmtC,UAAW60R,EAAU,MACnD,MAAO,cAAchiU,KAAK2K,MAAMq3T,GAAWniS,GAAWsgJ,QAAQ3jJ,KAGhE78B,mBAAmBmtE,EAAQ52C,GACzB,IAAI4sS,EAAmBwN,EACvB,IAAKtwU,KAAKi8T,aAAc,CACtB,OAEF,MAAMl8T,EAAKC,MACTu7S,kBACEA,EAAiBpB,SACjBA,EAAQ61B,gBACRA,EAAe1K,WACfA,GACEvlU,EACJotC,GAAa2/B,IAAW,MAAQA,SAAgB,OAAS,GAAKg2P,EAAoBh2P,EAAO3/B,aAAe,MAAQ21R,SAA2B,OAAS,EAAIA,EAAkBvjU,QAAUQ,EAAGotC,UACvLnpB,EAAQshT,GAAc/pB,EAAkB+pB,WAAWthT,MAGnD8gS,GAAeh4O,IAAW,MAAQA,SAAgB,OAAS,GAAKwjQ,EAAwBxjQ,EAAOyjQ,mBAAqB,MAAQD,SAA+B,OAAS,EAAIA,EAAsB/wU,QAAUQ,EAAGm6B,KAAK4qR,YAClNvJ,EAAkBljN,aAClBt4F,EAAG6uU,2BACH7uU,EAAGolF,eAGHplF,EAAGg1E,QAAQ,KAAMh1E,EAAGorE,WAAWowO,EAAkBlG,aACjD,GAAIyP,EAAa,QAER/kT,EAAGm6B,KAAKslR,WAGjBjE,EAAkBlG,WAAWt2R,IAAIhf,EAAIm2B,GACrCn2B,EAAGotC,UAAYA,EAGf,GAAInpB,EAAO,CACTjkB,EAAGulU,WAAWthT,MAAQA,EAAQgsT,EAEhC,GAAIlrB,GAAe3K,EAAU,CAC3Bp6S,EAAGqX,OAAO0tS,GAAe3K,GAG3B,GAAI2K,EAAa,QACR/kT,EAAGm6B,KAAKq2S,gBAEjB,GAAIzjQ,EAAQ,QACHA,EAAOyjQ,gBAGhBh1B,EAAkBjjN,WAEpB34F,YAAY2zE,EAAOxG,EAAQ52C,KAAW3a,GACpC,MAAMxb,EAAKC,MACTq1S,WACEA,GACEt1S,EAEN,GAAI,mBAAoB+sE,EAAQ,CAC9B/sE,EAAGmvU,YAAc,KAKjB75B,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWgsB,gBAAgBv0P,EAAO87P,eAAerpU,MAAQ,MAAQ,UAAUQ,GASrI,GAAIA,EAAGk8T,aAAc,CACnBl8T,EAAGywU,mBAAmB1jQ,EAAQ52C,OACzB,CAEL,GAAI,qBAAsB42C,EAAQ,CAChC/sE,EAAGogB,KAAKqzD,SAASo8P,eAAiB,YAC3B7vU,EAAGogB,KAAKqzD,SAASi9P,iBAGxB1wU,EAAG2vU,iBAAiB5iQ,EAAO2jQ,iBAAiBlxU,QAGhD,OAAO2a,MAAMy5D,YAAYL,EAAOxG,EAAQ52C,KAAW3a,GAOrD5b,2BACE,MAAMI,EAAKC,MAGTu7S,kBACEA,EAAiBuvB,eACjBA,EAAc39R,UACdA,GACEptC,EAENA,EAAGw7S,kBAAoB,KAIvBA,EAAkBm1B,iBAAiB5F,GAInC,GAAI/qU,EAAG6oU,eAAgB,CAErBrtB,EAAkB+pB,WAAWl4R,QAAUvN,GAAW9gB,IAAIouB,GAAY,EAAG,WAWzEsjS,qBAAqBj0S,GACnB,GAAIA,EAAM,CACR,MAAMozS,EAAiB5vU,KAAK4vU,iBAAmB5vU,KAAK4vU,eAAiB,IACrEA,EAAe/vS,GAAWsgJ,QAAQ3jJ,IAAS,GAS/C78B,iBAAiB8wU,GACf,OAAOzwU,KAAKsR,IAAI,CACdm/T,iBAAAA,IAQJ9wU,aAAa68B,GACX,IAAIm0S,EACJ,OAAQA,EAAuB3wU,KAAK4vU,kBAAoB,MAAQe,SAA8B,OAAS,EAAIA,EAAqB9wS,GAAWsgJ,QAAQ3jJ,MAKvJ,IAAIo0S,GAAuB1jT,GAAU,MAAM0jT,UAA4B1jT,EAGrE0zJ,iBACE,MAAM7gL,EAAKC,MACTotC,QACEA,EAAOD,UACPA,GACEptC,EACN,GAAIqtC,EAAS,CAQX,OAAOA,EAET,OAAOvN,GAAW9gB,IAAIouB,EAAWptC,EAAGuoB,SAAUvoB,EAAG+9S,gBAIrD,MAAM+yB,GAAW,IAAO,GAAK,GAAK,GAQlC,IAAIC,GAAmB5jT,GAAU,MAAM4jT,UAAwB5jT,EAC7Dnf,mBACE,MAAO,kBAGT+1T,0BACE,OAAO,KAuBTzqP,oBACE,MAAO,CAwDP,CACE50E,KAAM,aACNq0E,SAAU,MAOZ,CACEr0E,KAAM,YACNsyM,OAAQ,CACNlqM,KAAM,sBAER+rE,QAAS,MACTE,SAAU,MAQZ,CACEr0E,KAAM,YACNoI,KAAM,UACN+rE,QAAS,MACTh0E,aAAc,KACdk0E,SAAU,MASZ,CACEr0E,KAAM,YACNm0E,QAAS,MACTh0E,aAAc,KACdk0E,SAAU,MASZ,CACEr0E,KAAM,SACNoI,KAAM,UACNjI,aAAc,OAShB,CACEH,KAAM,aACNq0E,SAAU,MASZ,CACEr0E,KAAM,aACNq0E,SAAU,MAOZ,CACEr0E,KAAM,iBACNq0E,SAAU,MAQZ,CACEr0E,KAAM,iBACNq0E,SAAU,OAKdn5E,2BACEK,KAAKs6S,SAASt7S,SAAQo7S,IACpBA,EAAWsF,QAAU1/S,KAAK2K,MAG9BhL,OAAOJ,GACL2a,MAAMm4C,OAAO9yD,GACbS,KAAK+wU,2BAUPpU,gBAEE,OAAO38T,KAAKw8T,YAAY/wT,QAAO,CAACkxT,EAAWviB,KACzCA,EAAWD,UAAYwiB,EAAUn+T,KAAK47S,EAAWD,UACjD,OAAOwiB,IACN,IAELA,cAAcA,GACZA,EAAY75S,GAAYm7B,QAAQ0+Q,GAChC,MAAM58T,EAAKC,KACTgxU,EAAiBrU,EAAU9yT,IAAI9J,EAAGsQ,YAAYmxE,MAChD,GAAIzhF,EAAGk9T,qBAAsB,CAC3Bl9T,EAAGuR,IAAI,aAAc0/T,EAAe,QAC/B,CACL,MAAMC,EAAsBlxU,EAAGy8T,YAAY3yT,KAAIhE,GAAKA,EAAEs0S,SAASxvS,MAE3Dga,QAASH,EACTI,QAASH,GACP3B,GAAY9R,MAAMggU,EAAgBC,GAExClxU,EAAGo1S,gBAAgBp2R,IAAIyF,EAAM3a,KAAI21S,IAAU,CACzCrF,SAAUqF,EACVrvR,MAAOpwB,OAETA,EAAGo1S,gBAAgBrzS,OAAO2iB,EAAS5a,KAAI21S,GAAcz/S,EAAGy8T,YAAYzrS,MAAKlrB,GAAKA,EAAEs0S,SAASxvS,KAAO60S,QAOpG7/S,gBAAgBqY,EAAIsE,EAAUtc,MAC5B,IAAK,MAAMm6S,KAAYn6S,KAAK28T,UAAW,CACrC,GAAI3kT,EAAGnR,KAAKyV,EAAS69R,KAAc,MAAO,QAU9Cx6S,YAAY6/S,GACV,GAAIA,GAAc,KAAM,CACtB,OAAOx/S,KAAKm6S,SAEd,OAAOn6S,KAAKs1S,cAAgBt1S,KAAKs1S,cAAczoO,QAAQ2yO,GAAc,KAIvEryQ,gBACE,IAAIN,EACJ,GAAI7sC,KAAKi8T,aAAc,CACrBpvR,EAAK7sC,KAAK0R,IAAI,iBACT,CACL,IAAIqrS,EAEJlwQ,GAAMkwQ,EAAmB/8S,KAAK68S,cAAgB,MAAQE,SAA0B,EAAIA,EAAmB7iS,MAAMizB,UAE/G,GAAIntC,KAAK+hU,OAAQ,CACfl1R,EAAK7sC,KAAKqQ,YAAY6gU,mBAAmBrkS,GAE3C,OAAOA,EAETM,cAAcA,GACZ,GAAIntC,KAAKo5E,SAAU,CACjBp5E,KAAK68S,WAAa1vQ,EAClBntC,KAAKsR,IAAI,CACP67B,UAAAA,QAEG,CACLjzB,MAAMizB,UAAYA,GAGtBC,cACE,IAAIP,EACJ,GAAI7sC,KAAKi8T,aAAc,CACrBpvR,EAAK7sC,KAAK0R,IAAI,eACT,CACL,IAAIsrS,EAEJnwQ,GAAMmwQ,EAAiBh9S,KAAK88S,YAAc,MAAQE,SAAwB,EAAIA,EAAiB9iS,MAAMkzB,QAEvG,GAAIptC,KAAK+hU,OAAQ,CACfl1R,EAAK7sC,KAAKqQ,YAAY8gU,iBAAiBtkS,GAEzC,OAAOA,EAETO,YAAYA,GACV,GAAIptC,KAAKo5E,SAAU,CACjBp5E,KAAK88S,SAAW1vQ,EAChBptC,KAAKsR,IAAI,CACP87B,QAAAA,QAEG,CACLlzB,MAAMkzB,QAAUA,GAKpBgkS,oBACE,OAAOpxU,KAAKmtC,UAEdikS,kBAAkB7xU,IAClB8xU,kBACE,OAAOrxU,KAAKotC,QAEdikS,gBAAgB9xU,IAahBqlU,cACE,OAAO,KAMT0M,kBACE,OAAOtxU,KAAKu2H,UAWdg7M,kBACE,OAAQvxU,KAAK2gU,eAAiB3gU,KAAK2vE,UAAY3vE,KAAKwxU,oBAAsBxxU,KAAKsiO,UASjF/+I,oBAEE,OAAOrpE,MAAMqpE,gBAAkBvjF,KAAKs9E,WAEtC39E,WACE,MACE4jF,cAAekuP,EACftxT,MAAMywD,aACJA,IAEA5wE,KAGJ,GAAI4wE,EAAc,CAChB,GAAI,YAAaA,EAAc,QACtB5wE,KAAK88S,SAMZ,GAAI98S,KAAK2f,UAAW,CAClB3f,KAAKqxU,YAAc,MAGvB,GAAI,cAAezgQ,EAAc,QACxB5wE,KAAK68S,WACZ,GAAI78S,KAAK0f,SAAU,CACjB1f,KAAKoxU,cAAgB,OAI3Bl3T,MAAMo+E,YAAYz5F,WAElB,GAAImB,KAAKujF,gBAAkBkuP,EAAgB,CACzCzxU,KAAKw8T,YAAYx9T,SAAQo7S,IACvBA,EAAW9rO,OAAOtvE,SAAQ0Q,IACxBA,EAAE84F,2BAA2B4xM,UAKrC98N,iBACE,OAAOpjE,MAAMojE,WAEfA,eAAe/9E,GACb2a,MAAMojE,WAAa/9E,EACnBS,KAAKw8T,YAAYx9T,SAAQwzE,GAAUA,EAAO8K,WAAa/9E,IAIzD09T,2BACE,OAAQj9T,KAAKq1S,YAAcr1S,KAAKq1S,WAAW4nB,qBAE7Ct9T,QAAQ4b,GACN,MAAM0qE,EAAO/rE,MAAM+rE,QAAQ1qE,GAE3B,IAAKvb,KAAKi9T,qBAAsB,CAC9Bh3O,EAAKu5N,WAAa,KAEpB,OAAOv5N,EAOTjL,sBACE,MAAM9gD,EAAOhgB,MAAM8gE,gBACnB,IAAKh7E,KAAKi9T,qBAAsB,QACvB/iS,EAAKslR,WAEd,OAAOtlR,EAMTigR,eACE,MAAMwiB,UACJA,GACE38T,KACJ,OAAO28T,EAAU79T,OAAS69T,EAAU,GAAK,KAE3CxiB,aAAanmF,GAEXh0N,KAAKw/S,WAAax/S,KAAKqQ,YAAYmxE,KAAKwyI,GAE1CwrF,iBACE,IAAIyb,EACJ,OAAOj7T,KAAKi9T,qBAAuBj9T,KAAK0R,IAAI,eAAiBupT,EAAiBj7T,KAAKm6S,YAAc,MAAQ8gB,SAAwB,OAAS,EAAIA,EAAetwT,GAE/J60S,eAAeA,GACbx/S,KAAK0xU,gBAAgBlyB,GAGvBmyB,uBACE,IAAIC,EAAuBC,EAC3B,OAAQD,GAAyBC,EAAkB7xU,KAAK28T,aAAe,MAAQkV,SAAyB,OAAS,EAAIA,EAAgBp1E,SAAQzoC,GAAkB,CAACA,KAAmBA,EAAeh+I,aAAc,MAAQ47P,SAA+B,EAAIA,EAAwB,GAErRjyU,gBAAgB6/S,EAAYsyB,EAAiB,OAC3C,MAAM/xU,EAAKC,MACTw8T,YACEA,EAAWrnB,gBACXA,EAAeE,WACfA,GACEt1S,EAEN,GAAIs1S,EAAY,CACd,GAAImK,GAAc,KAAM,CACtB,IAAKz/S,EAAGogB,KAAKmkT,8BAA+B,CAC1CjvB,EAAW4nB,qBAAuB,KAGpC,GAAIT,IAAgB,MAAQA,SAAqB,GAAKA,EAAY19T,QAAU0gT,IAAegd,EAAY,GAAGhd,WAAY,CAGpH,MAAM7tR,EAAkBzxB,QAAQm1S,EAAW1jR,iBAC3CA,GAAmBwjR,EAAgBxgO,gBACnC6nP,EAAY,GAAGriB,SAAWqF,EAC1B7tR,GAAmBwjR,EAAgBvgO,mBAGhC,CACHugO,EAAgBuqB,sBAAsB3/T,EAAIy/S,QAEvC,CAELrK,EAAgBrzS,OAAO/B,EAAGy8T,mBAIzB,IAAKsV,EAAgB,CACxB/xU,EAAGuR,IAAI,CACLkuS,WAAAA,KAKN7/S,WAAW+iF,EAASD,EAASljF,EAAOsiF,EAAetrE,GACjD,GAAIA,GAASA,EAAM9R,OAAS,eAAiBzE,KAAKmgB,KAAKwkT,YAAa,CAClE,MAAMtvB,WACJA,GACEr1S,KACJq1S,IAAeA,EAAWsvB,YAAc,MACxC3kU,KAAK0xU,gBAAgBnyU,EAAO,MAC5B81S,IAAeA,EAAWsvB,YAAc,OAE1CzqT,MAAM4oE,WAAWJ,EAASD,EAASljF,EAAOsiF,EAAetrE,GAS3DimT,kBACE,MAAO,IAAKx8T,KAAKs6S,UAAY,IAY/B36S,OAAOw6S,EAAU2iB,EAA4B,OAC3C,MAAMznB,WACJA,GACEr1S,KACJ,GAAIq1S,IAAeA,EAAW4nB,qBAAsB,CAClD5nB,EAAWqqB,sBAAsB1/T,KAAMm6S,EAAU2iB,OAC5C,CAGL98T,KAAKw/S,WAAax/S,KAAKqQ,YAAYmxE,KAAK24N,GACxC,IAAK9E,EAAY,CAEfr1S,KAAKmgB,KAAKmkT,8BAAgC,OAShD3kU,SAASw6S,EAAU43B,EAAmB,OACpC,IAAIluB,EACJ,MAAM9jT,EAAKC,KACXm6S,EAAWp6S,EAAGsQ,YAAYmxE,KAAK24N,GAE/Bp6S,EAAGogB,KAAK4xT,iBAAmBA,GAC1BluB,EAAiB9jT,EAAGs1S,cAAgB,MAAQwO,SAAwB,OAAS,EAAIA,EAAe8b,0BAA0B5/T,EAAIo6S,GAC/Hp6S,EAAGogB,KAAK4xT,iBAAmB,KAQ7BpyU,SAASqyU,EAAepS,GACtB5/T,KAAKq1S,YAAcr1S,KAAKq1S,WAAW48B,oCAAoCjyU,KAAMgyU,EAAepS,GAQ9FjgU,aAAaw6S,GACX,MAAMqF,EAAax/S,KAAKqQ,YAAYmxE,KAAK24N,GACzC,OAAOn6S,KAAKw8T,YAAY70T,MAAKyyS,GAAcA,EAAWoF,aAAeA,IAUvE0yB,mBACE,IAAIC,EACJ,MAAO,KAAMA,EAAqBnyU,KAAKshT,gBAAkB,MAAQ6wB,SAA4B,EAAIA,EAAqB,IAQxHC,iBACE,IAAIC,EACJ,MAAO,KAAMA,EAAqBryU,KAAKohT,gBAAkB,MAAQixB,SAA4B,EAAIA,EAAqB,IAExHC,mBACE,IAAIC,EAAqBC,EAEzB,MAAO,KAAMD,EAAsBvyU,KAAKshT,gBAAkB,MAAQixB,SAA6B,EAAIA,EAAsB,OAAUC,EAAsBxyU,KAAKohT,gBAAkB,MAAQoxB,SAA6B,EAAIA,EAAsB,IAGjP7yU,aAGAA,kBAUAkvU,qBACE,OAAO7uU,KAAKu7S,kBAYdk3B,iBACE,MAAM/L,WACJA,GACE1mU,KAGJ,GAAI0mU,GAAcmK,KAAanK,GAAc1mU,KAAK+hU,OAAQ,CACxD,OAAO,KAGT,MAAM30R,QACFA,EAAOD,UACPA,GACEntC,KACJ0yU,EAAqB7yS,GAAWoL,UAAUkC,GAE5C,GAAIA,GAAaC,EAAS,CACxBslS,EAAmBvoS,QAAQuoS,EAAmBvlU,UAAY,GAE1D,OAAQigC,GAAWvN,GAAW9gB,IAAIouB,EAAWu5R,IAAegM,GAIhE/yU,0BAA0BktC,GACxB,GAAIA,GAAMA,EAAG+3R,QAAS,CACpB/3R,EAAKA,EAAGn7B,IAAI,aAEd,GAAIm7B,EAAI,CACNA,EAAKhN,GAAWoL,UAAU4B,EAAI,MAEhC,OAAOA,EAETltC,wBAAwBktC,GACtB,GAAIA,GAAMA,EAAG+3R,QAAS,CACpB/3R,EAAKA,EAAGn7B,IAAI,WAEd,GAAIm7B,IAAOA,EAAGz/B,WAAa,GAAKy/B,EAAGx/B,aAAe,GAAKw/B,EAAGv/B,aAAe,GAAKu/B,EAAGt/B,kBAAoB,GAAI,CACvGs/B,EAAKhN,GAAWssE,QAAQt/D,EAAI,IAAK,GAEnC,OAAOA,EAETltC,iCAAiCktC,GAC/B,GAAIA,GAAMA,EAAG+3R,QAAS,CACpB/3R,EAAKA,EAAGn7B,IAAI,aAEd,OAAOmuB,GAAWoL,UAAU4B,EAAI,MAElCltC,+BAA+BwtC,EAAWC,GACxC,GAAID,GAAaA,EAAUy3R,QAAS,CAClCx3R,EAAUD,EAAUz7B,IAAI,WACxBy7B,EAAYA,EAAUz7B,IAAI,aAE5B,GAAI07B,EAAS,CACXD,EAAYntC,KAAKqQ,YAAYsiU,0BAA0BxlS,GAIvD,GAAItN,GAAWoL,UAAUmC,EAAS,MAAM7E,YAAc6E,EAAQ7E,UAAW,CACvE6E,EAAUvN,GAAW9gB,IAAIquB,EAASvN,GAAWm6P,KAAM,QAC9C,GAAI7sP,EAAU5E,YAAc6E,EAAQ7E,UAAW,CACpD6E,EAAUvN,GAAWoL,UAAUmC,EAAS,OAG5C,OAAOA,EAYTztC,WAAWwzC,GACT,OAAQA,GAEN,IAAK,UACL,IAAK,WACL,IAAK,eACH,OAAOnzC,KAAKkvE,OAEhB,OAAOh1D,MAAMkhJ,WAAWjoH,KAK5B,MAAMy/R,GAAgBpxB,GAsFtB,MAAMqxB,WAAqBD,GAAclqC,OAAOk9B,IAAUplT,MAAMmuT,GAAmBpU,GAAiBuW,GAAiBF,KACnH7iU,mBACE,MAAO,cAGX8kU,GAAal2P,mBACbk2P,GAAa3qU,OAAS,aAEtB,MAAM4qU,GAAgBvY,GAAgB9Y,GAAoB/Y,OAAOj8L,KAwDjE,MAAMsmO,WAAqBD,GAActyT,MAAMmjT,GAAuB6B,GAAsB7G,GAAiBwE,GAAenD,KAC1Hn+S,2BACE,MAAO,CAOL04D,WAAYs4P,KAIlB3zU,EAAgB6zU,GAAc,QAAS,cACvCA,GAAa7qU,OAAS,aAKtB,MAAM8qU,GAA2B,CAAC,KAAM,KAAM,KAAM,MAMpD,MAAMC,WAA4Bt3P,GAChC5tE,mBACE,MAAO,sBAiCTmlU,kBACE,MAAO,CACLC,aAAc,EACdC,WAAY,EACZC,WAAY,EACZC,SAAU,GAGdj6P,oBACE,MAAO,CAOP,CACE50E,KAAM,QAOR,CACEA,KAAM,MAOR,CACEA,KAAM,OACNoI,KAAM,MACNjI,aAAc,GAOhB,CACEH,KAAM,MACNG,aAAc,IAOhB,CACEH,KAAM,gBACNoI,KAAM,WAOR,CACEpI,KAAM,WACNoI,KAAM,UAOR,CACEpI,KAAM,SACNoI,KAAM,UAOR,CACEpI,KAAM,MACNoI,KAAM,SACNg5T,UAAW,KACXjhU,aAAc,GAmBhB,CACEH,KAAM,UACNoI,KAAM,SACNjI,aAAc,KACb,CACDH,KAAM,cACNm0E,QAAS,MACTE,SAAU,OA8Bdn5E,UAAUu6B,GACR,MAAMlV,EAAOkV,EAAKl6B,KAAK65B,SAAS7U,KAAKuzD,YACnChmC,EAAKrY,EAAKl6B,KAAK65B,SAAS0Y,GAAGgmC,YAE7B,GAAIvzD,GAAQ,KAAM,CAChBkV,EAAKsmR,UAAYx7R,EAEnB,GAAIutB,GAAM,KAAM,CACdrY,EAAKumR,QAAUluQ,EAEjBr4B,MAAMsB,aAAa3c,WAGrBw2S,iBACE,IAAIk+B,EACJ,OAAOvzU,KAAKq1S,cAAgBk+B,EAAwBvzU,KAAKi9E,eAAe,MAAQ,MAAQs2P,SAA+B,OAAS,EAAIA,EAAsBl+B,YAE5JrwR,SAASzlB,GACP,MAAMihT,UACJA,GACExgT,KAGJ,GAAIwgT,IAAc,MAAQA,SAAmB,GAAKA,EAAU/xO,SAAW+xO,EAAU71S,KAAOpL,EAAO,CAC7FS,KAAKsR,IAAI,OAAQ/R,OACZ,CACLS,KAAKwgT,UAAYjhT,GAGrBylB,WACE,OAAOhlB,KAAK0R,IAAI,QAElB6gC,OAAOhzC,GACL,MAAMkhT,QACJA,GACEzgT,KAGJ,GAAIygT,IAAY,MAAQA,SAAiB,GAAKA,EAAQhyO,SAAWgyO,EAAQ91S,KAAOpL,EAAO,CACrFS,KAAKsR,IAAI,KAAM/R,OACV,CACLS,KAAKygT,QAAUlhT,GAGnBgzC,SACE,OAAOvyC,KAAK0R,IAAI,MAQlB8hU,eACE,OAAOxzU,KAAKyzU,cAEdD,aAAa3mU,GACX7M,KAAK0zU,YAAY7mU,GAQnBlN,cACE,OAAOK,KAAK0R,IAAI,QAQlB/R,YAAYkN,GACV,IAAIV,EACJ,GAAIU,IAAS7M,KAAKwzU,SAAU,CAC1BrnU,EAASnM,KAAKsR,IAAI,CAChBzE,KAAAA,EACA8mU,SAAU,KACVC,OAAQ,OAGZ,OAAOznU,EAET0nU,UACE,OAAO7zU,KAAK0R,IAAI,OAElBmiU,QAAQA,GACN7zU,KAAK8zU,OAAOD,GASdl0U,OAAOk0U,EAAKE,EAAU/zU,KAAK+zU,SAGzB,GAAIl1U,UAAUC,SAAW,EAAG,CAC1B,UAAW+0U,IAAQ,SAAU,CAC3B7zU,KAAK6zU,IAAMA,MACN,CACLA,EAAMh0S,GAAWiK,cAAc+pS,GAC/B7zU,KAAKsR,IAAI,CACPuiU,IAAKA,EAAI9pS,UACTgqS,QAASF,EAAI5rS,OAGjB,OAGF4rS,EAAM5xU,WAAW4xU,GACjB7zU,KAAKsR,IAAI,CACPuiU,IAAAA,EACAE,QAAAA,IAGJp0U,SACE,GAAIK,KAAK6zU,IAAK,CACZ,MAAO,GAAG7zU,KAAK6zU,IAAM,EAAI,IAAM,MAAMz/T,KAAK41B,IAAIhqC,KAAK6zU,OAAOh0S,GAAW4J,mBAAmBzpC,KAAK+zU,WAE/F,MAAO,GAUTC,cACE,OAAO,IAAIvsP,GAAS,CAClBx/C,KAAMjoC,KAAK+zU,QACXhqS,UAAW/pC,KAAK6zU,MAGpBG,YAAYH,GACV,UAAWA,IAAQ,SAAU,CAC3B7zU,KAAK8zU,OAAOD,OACP,CACL7zU,KAAK8zU,OAAOD,EAAI9pS,UAAW8pS,EAAI5rS,OAUnCs7C,oBACE,MAAMxjF,EAAKC,MACTsuE,OACEA,EAAM2O,eACNA,GACEl9E,EACJ6rE,EAAQ0C,EAAO,GACjB,IAAIniE,EACJ,GAAIy/D,EAAO,CACT,MAAM40O,UACFA,EAASC,QACTA,GACE1gT,EACJm8P,EAActwL,EAAMswL,YAGtB/vP,EAASq0S,IAActkD,IAAgBskD,EAAU72O,iBAAmB82O,IAAYvkD,IAAgBukD,EAAQ92O,oBACnG,CACLx9D,EAASjM,QAAQ+8E,EAAe,IAElC,OAAO9wE,GAAU+N,MAAMqpE,cAEzB5jF,eACE,MAAM6gT,UACJA,EAASC,QACTA,GACEzgT,KACJ,GAAIwgT,IAAc,MAAQA,SAAmB,GAAKA,EAAU8e,aAAe7e,IAAY,MAAQA,SAAiB,GAAKA,EAAQ6e,YAAa,CACxI,MAAM4T,EAAOD,GAAoBC,KACjC,IAAI/nS,EAAYD,EAChB,OAAQlrC,KAAK6M,MACX,KAAKqmU,EAAKC,aACRhoS,EAAaq1Q,EAAUimB,YACvBv7R,EAAau1Q,EAAQgmB,YACrB,MACF,KAAKyM,EAAKE,WACRjoS,EAAaq1Q,EAAUimB,YACvBv7R,EAAau1Q,EAAQ+hB,UACrB,MACF,KAAK0Q,EAAKI,SACRnoS,EAAaq1Q,EAAUgiB,UACvBt3R,EAAau1Q,EAAQ+hB,UACrB,MACF,KAAK0Q,EAAKG,WACRloS,EAAaq1Q,EAAUgiB,UACvBt3R,EAAau1Q,EAAQgmB,YACrB,MACF,QACE,MAAM,IAAI/1T,MAAM,4BAA8B1Q,KAAK6M,MAEvD,MAAO,CACL2b,MAAOpU,KAAKuU,IAAIwiB,EAAYD,GAC5BxnB,IAAKtP,KAAKC,IAAI82B,EAAYD,IAG9B,OAAO,KAQTvrC,UAAUmW,GACR,IAAIm+T,EAAuBC,EAC3B,MAAMv2R,GAAWs2R,GAAyBC,EAAoBl0U,KAAKm0U,eAAiB,MAAQD,SAA2B,OAAS,EAAIA,EAAkB7uU,MAAM,QAAU,MAAQ4uU,SAA+B,EAAIA,EAAwB,GACzO,IAAKt2R,EAAQ/xC,SAASkK,GAAM,CAC1B9V,KAAKm0U,YAAcx2R,EAAQh3B,OAAO7Q,GAAK7L,KAAK,MAShDtK,YAAYmW,GACV,MAAMq+T,YACJA,GACEn0U,KACJ,GAAIm0U,EAAa,CACf,MAAMx2R,EAAUw2R,EAAY9uU,MAAM,KAChC6K,EAAQytC,EAAQl4C,QAAQqQ,GAC1B,GAAI5F,GAAS,EAAG,CACdytC,EAAQzlC,OAAOhI,EAAO,GACtBlQ,KAAKm0U,YAAcx2R,EAAQ1zC,KAAK,OAWtCtK,kBAAkBmW,GAChB,OAAO9V,KAAKm0U,aAAen0U,KAAKm0U,YAAY9uU,MAAM,KAAKuG,SAASkK,GAElEnW,mBAAmBozD,GACjB,MAAM68I,EAAWojI,GAAyBhzU,KAAK6M,MAC/C,GAAIkmD,EAAK,CACP,OAAO68I,EAGT,GAAI5vM,KAAK6M,OAASomU,GAAoBC,KAAKG,WAAY,CACrD,MAAO,GAET,OAAOzjI,EAgCTjwM,WACE,MAAO,GAAGK,KAAKglB,OAAOhlB,KAAKo0U,uBAAuBp0U,KAAKq0U,WAUzD5tP,cACE,MAAM+5N,UACJA,EAASC,QACTA,EAAO5zS,KACPA,GACE7M,KACJ,cAAc6M,IAAS,UAAY2zS,GAAaC,GAAWD,IAAcC,EAE3E6zB,oBACE,IAAIC,EACJ,QAASA,EAAkBv0U,KAAKwgT,aAAe,MAAQ+zB,SAAyB,OAAS,EAAIA,EAAgB9vU,OAAS,GAExH+vU,kBACE,IAAIC,EACJ,QAASA,EAAgBz0U,KAAKygT,WAAa,MAAQg0B,SAAuB,OAAS,EAAIA,EAAchwU,OAAS,GAGhH9E,wBAAwBwzC,EAAWt5B,EAAUrB,GAC3C,IAAK0B,MAAMgzD,wBAAwB/5B,EAAWt5B,EAAUrB,GAAW,CACjE,OAAO,MAET,GAAI26B,IAAc,QAAUA,IAAc,MAAQA,IAAc,aAAeA,IAAc,UAAW,CACtG,IAAI8iQ,EACJ,MAAMZ,GAAcY,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAcZ,WAChH,GAAIA,GAAcA,EAAWzoO,SAAS/yD,KAAcw7R,EAAWxoO,QAAQr0D,GAAW,CAChF,OAAO,OAGX,OAAO,MAKXy6T,GAAoBt2P,mBACpBs2P,GAAoB/qU,OAAS,sBAE7B,MAAMwsU,GAAgBp0B,GA4DtB,MAAMq0B,WAA0Bpa,GAAgBma,GAAchsC,OAAOuqC,MACnEllU,mBACE,MAAO,kBAGTpO,iBAAiBg0U,EAAUC,EAAQn+R,GACjC,MAAMshC,EAAQk8P,GAAoBC,KAChC0B,EAAYn/R,EAAM,QAAU,OAC5Bo/R,EAAUp/R,EAAM,OAAS,QAC3B,GAAIk+R,IAAaiB,EAAW,CAC1B,OAAOhB,IAAWgB,EAAY79P,EAAMo8P,aAAep8P,EAAMq8P,WAE3D,OAAOQ,IAAWiB,EAAU99P,EAAMu8P,SAAWv8P,EAAMs8P,YAGvDsB,GAAkBh4P,mBAClBg4P,GAAkBzsU,OAAS,kBAY3B,IAAI4sU,GAAwB5nT,GAAU,MAAM4nT,UAA6B5nT,EACvEnf,mBACE,MAAO,uBAmGT8T,2BACE,MAAO,CAKL8wS,aAAc,IAKdC,aAAc,IACd5rN,QAAS,gBAIbrnG,wBAAwBwwB,EAAO4kT,EAAU5oU,EAAQqtM,EAAO,KAAMw7H,GAC5DA,EAAeA,GAAY,CAAK7kT,GAASnwB,KAAKi1U,qBAAqB9kT,IACnEA,EAAQrN,GAAYm7B,QAAQ9tB,GAC5BA,EAAM1kB,QAAO,CAACU,EAAQgkB,KACpB,GAAIA,EAAMk3B,WAAamyJ,EAAM,CAC3BrpL,EAAM+gD,UAASgkQ,IACb/oU,EAAS6oU,EAAaE,GAAKzpU,OAAOspU,EAAU5oU,UAEzC,CACLA,EAAS6oU,EAAa7kT,GAAO1kB,OAAOspU,EAAU5oU,MAE/CA,GACH,OAAOA,EAGTxM,qBAAqBwwB,EAAOnY,EAAIu7E,EAAUimH,EAAMw7H,GAC9C,OAAOh1U,KAAKm1U,wBAAwBhlT,GAAO,CAAChkB,EAAQowS,KAClDhpN,EAASgpN,IAAepwS,EAAO3N,KAAK+9S,GACpC,OAAOpwS,IACN,GAAIqtM,EAAMw7H,GAGfr1U,qBAAqBwwB,EAAOnY,EAAIu7E,EAAUimH,GACxC,OAAOx5M,KAAKo1U,wBAAwBjlT,GAAO,CAAChkB,EAAQowS,KAClDhpN,EAASgpN,IAAepwS,EAAO3N,KAAK+9S,GACpC,OAAOpwS,IACN,GAAIqtM,GAGT75M,mBAAmBwwB,EAAOnY,EAAIu7E,EAAUimH,GACtC,OAAOx5M,KAAKq1U,sBAAsBllT,GAAO,CAAChkB,EAAQowS,KAChDhpN,EAASgpN,IAAepwS,EAAO3N,KAAK+9S,GACpC,OAAOpwS,IACN,GAAIqtM,GAQT75M,qBAAqBwwB,GACnB,MAAO,GAAGxJ,OAAOwJ,EAAM+hT,cAAgB,GAAI/hT,EAAMiiT,YAAc,IAGjEzyU,wBAAwBwwB,GACtBnwB,KAAK8B,OAAO9B,KAAKi1U,qBAAqB9kT,IAGxCxwB,wBAAwBwwB,GACtBnwB,KAAK8B,OAAOquB,EAAM+hT,cAGpBvyU,sBAAsBwwB,EAAOqpL,GAC3Bx5M,KAAK8B,OAAOquB,EAAMiiT,YAEpBzyU,oBAAoBV,GAElB,OAAOe,KAAKiyE,QAAQlhD,MAAKb,GAAKjxB,GAAOe,KAAKqQ,YAAYilU,uCAAuCplT,EAAElL,KAAMkL,EAAEqiB,MAUzG5yC,sCAAsC41U,EAAaC,GACjDD,EAAc55P,GAAM6F,KAAK+zP,GACzBC,EAAc75P,GAAM6F,KAAKg0P,GACzB,OAAOx1U,KAAKy1U,oBAAoBz1U,KAAKqQ,YAAYilU,uCAAuCC,EAAaC,IAUvG71U,2BAA2B41U,EAAaC,GACtC,OAAOx1U,KAAK01U,sCAAsCH,EAAaC,IAAgBx1U,KAAK01U,sCAAsCF,EAAaD,GAezI51U,wBAAwBg2U,EAAoBxyD,EAAMt2Q,GAChD,IAAI2zS,EAAYm1B,EACdl1B,EAAUt9B,EACZ,GAAIwyD,GAAsB,KAAM,CAC9B,OAAO,MAGT,GAAIA,EAAmBC,kBAAmB,GAEtCp1B,UAAAA,EACAC,QAAAA,GACEk1B,GAGNn1B,EAAYxgT,KAAKq1S,WAAWxoO,QAAQ2zO,GAEpCC,EAAUzgT,KAAKq1S,WAAWxoO,QAAQ4zO,GAGlC,GAAID,GAAaC,EAAS,CAExB,IAAKD,EAAUj1M,UAAYk1M,EAAQl1M,QAAS,CAC1C,OAAO,MAGT,OAAOvrG,KAAKurG,QAAQsqO,kBAAkBr1B,EAAWC,EAAS5zS,GAE5D,OAAO8oU,IAAuBxyD,EAWhCxjR,0BAA0BujR,EAAQC,EAAMt2Q,GACtC,OAAO7M,KAAK61U,kBAAkB3yD,EAAQC,EAAMt2Q,GAQ9ClN,2BAA2BmW,GACzB,OAAO9V,KAAKiyE,QAAQxmE,QAAO,CAACU,EAAQ2pU,KAClC,GAAIA,EAAIC,kBAAkBjgU,GAAM3J,EAAO3N,KAAKs3U,GAC5C,OAAO3pU,IACN,IAELxM,8CAA8CqlB,EAAMutB,GAClD,MAAO,UAAUvtB,aAAgButB,KAGnC5yC,wBAAwB6yE,GACtB,OAAOxyE,KAAKi1U,qBAAqBziQ,KAKrC,MAAMwjQ,GAAgBzb,GAAgB1Z,GAAyBnY,OAAOj8L,KAyCtE,MAAMwpO,WAA0BnB,GAAqBkB,GAActtC,OAAOj8L,MACxE5qF,2BACE,MAAO,CACL04D,WAAYo6P,KAIlBsB,GAAkB/tU,OAAS,kBAa3B,IAAIguU,GAA+BhpT,GAAU,MAAMipT,WAA4BjpT,GAAU7R,IAAQmF,MAAMkwS,GAA0BgI,GAAeW,KAE9Ix3S,2BACE,MAAO,CACL0pF,QAAS,MAGb5rG,eAAewY,GAEbnY,KAAKme,UAAU,WACfjE,MAAM0D,eAAezF,GACrBnY,KAAKo2U,gBAAkB,IAAI5kU,IAE7B7R,mBACE,MAAM4rG,QACJA,GACEvrG,KAEJ,GAAIurG,EAAS,OACLA,EAAQ6wJ,cAEhB,OAAOliP,MAAMi4S,aAEfxyT,qBAAqBg1B,GACnB,MAAM50B,EAAKC,MACTurG,QACEA,GACExrG,EACNA,EAAGs2U,wBAA0B,KAC7B,MAAMC,EAAiB/qO,EAAQ1xE,SAASsT,UACtCopS,EAAehrO,EAAQ1xE,SAASuT,QAChCD,EAAY6D,GAAat0B,QAAQiY,EAAU2hT,EAAe/9P,YAC1DnrC,EAAU4D,GAAat0B,QAAQiY,EAAU4hT,EAAah+P,YAExD,UAAWprC,IAAc,SAAU,CACjC6D,GAAahX,QAAQrF,EAAU2hT,EAAe/9P,WAAY+9P,EAAen4P,QAAQhxC,IAEnF,UAAWC,IAAY,SAAU,CAC/B4D,GAAahX,QAAQrF,EAAU4hT,EAAah+P,WAAYg+P,EAAap4P,QAAQhxC,IAE/ElvC,OAAOmZ,OAAOm0F,EAAS52E,GACvB50B,EAAGs2U,wBAA0B,MAE/B12U,oBAAoBg1B,EAAU/nB,EAAU,IACtC,MAAM7M,EAAKC,MACTurG,QACEA,GACExrG,EAENA,EAAGs1T,yBACHn7S,MAAMq9S,uBAAuB14T,WAE7B,GAAI81B,IAAa,MAAQA,SAAkB,GAAKA,EAAS42E,QAAS,CAMhE,GAAIA,EAAQirO,qBAAsB,CAChCjrO,EAAQp8E,GAAG,mBAAmB,KAC5BpvB,EAAGs1T,yBACHt1T,EAAG02U,qBAAqB9hT,EAAS42E,SACjCxrG,EAAGw1T,0BACF,CACD3oS,KAAM,WAEH,CACL7sB,EAAG02U,qBAAqB9hT,EAAS42E,UAGrCxrG,EAAGw1T,wBAEL51T,aACE,MAAM4rG,QACJA,GACEvrG,KAEJA,KAAK63T,kBAEL,GAAItsN,EAAS,OACLA,EAAQ6wJ,cAEhB,GAAIp8P,KAAKmZ,aAAc,CACrB,OAGFnZ,KAAK+3T,eAAe,OACpB,OAAO79S,MAAMorG,OAEf3lH,oBAAoB2mI,EAAS3xG,EAAU/nB,GACrC,IAAIsqT,EACJ,MAAMn3T,EAAKC,KACX,GAAID,EAAGmc,cAAgBg7S,EAAcn3T,EAAGwrG,WAAa,MAAQ2rN,SAAqB,GAAKA,EAAYh7S,YAAa,CAC9G,OAEFnc,EAAGwtB,QAAQ,sBAGXxtB,EAAG22U,uBAAuB,CACxBC,uBAAwB,cAEpBz8T,MAAMs6S,cAAcluL,EAAS3xG,EAAU/nB,GAE7C7M,EAAG22U,uBAAuB,CACxBE,mBAAoB,MACpBC,qBAAsB,MACtBC,wBAAyB,MACzBH,uBAAwB,OAG1B,GAAIhiT,IAAa,MAAQA,SAAkB,GAAKA,EAAS42E,QAAS,CAChExrG,EAAG02U,qBAAqB9hT,EAAS42E,SAGnC,GAAIxrG,EAAGwrG,QAAS,CACd,IAAIwrO,EACJ,IAAI5iB,EAAc7tL,EAAQz5H,KAE1B,GAAI9M,EAAGmxT,kBAAmB,CACxBiD,EAAcx/R,EAAS9nB,MAAQsnT,EAGjC,MAAM6iB,EAAkB,cAAc5sU,EAAaK,WAAW0pT,YAC9Dp0T,EAAGi3U,GAAmB,WAEhBj3U,EAAGwrG,QAAQ6wJ,cACjBr8P,EAAGi3U,GAAmB,OAErBD,EAAwBh3U,EAAGk3U,0BAA4B,MAAQF,SAA+B,OAAS,EAAIA,EAAsBlwU,KAAK9G,IAG3IJ,yBAEEK,KAAKo2U,gBAAgBp3U,SAAQ,CAACuzE,EAASC,KACrCv0E,OAAO6I,QAAQyrE,GAASvzE,SAAQ,EAAEC,EAAKM,MACrC,MAAMgX,EAAQi8D,EAAOvG,mBAAmBhtE,GACtC4a,EAAW24D,EAAOvzE,GAGpB,GAAIsX,IAAU,MAAQA,SAAe,GAAKA,EAAMi1B,QAAUj1B,EAAMi1B,QAAQ3xB,EAAUta,GAASyxC,GAAaxF,QAAQ3xB,EAAUta,GAAQ,QACzHizE,EAAOryD,KAAKqzD,SAASv0E,UAIlCe,KAAKo2U,gBAAgB33R,QAEvB9+C,oBAAoB2yT,EAAWkE,EAAeC,GAC5C,MAAMygB,EAAah9T,MAAMo9S,oBAAoBhF,EAAWkE,EAAeC,GAGvE,GAAIygB,EAAW3lU,MAAQvR,KAAKurG,QAAS,CACnC,IAAK,MAAO5gG,EAAI4nE,KAAY2kQ,EAAY,CACtC,MAAM1kQ,EAAS8/O,EAAU1mP,MAAMiB,QAAQliE,GACvC6nE,GAAUxyE,KAAKo2U,gBAAgB9kU,IAAIkhE,EAAQD,IAG/C,OAAO2kQ,EAETv3U,uBAAuBkL,EAAQ,CAC7B+rU,mBAAoB,KACpBC,qBAAsB,KACtBC,wBAAyB,KACzBH,uBAAwB,OAExB,MAAMC,mBACJA,EAAkBC,qBAClBA,EAAoBC,wBACpBA,EAAuBH,uBACvBA,GACE9rU,EAGJ7K,KAAKivT,kBAAiBrjP,IACpB,GAAIgrQ,EAAoB,CAEtBhrQ,EAAM9pE,OAAO9B,KAAK60E,MAAO,MAE3B,GAAIiiQ,EAAyB,CAC3BlrQ,EAAM4H,SAASx0E,SAAQkxB,GAAKA,EAAEi1D,aAAa,KAAM,SACjDvZ,EAAM4H,SAAS/0B,QAEjB,GAAIo4R,EAAsB,CACxBjrQ,EAAMiJ,MAAMp2B,QAEd,GAAIk4R,EAAwB,CAC1B/qQ,EAAM1oD,QAAQu7B,cAkDtB,MAAM04R,WAA+BvR,GACnC73T,mBACE,MAAO,yBAGTsrE,oBACE,MAAO,CAKP,aAKA,kBAEF4G,4BACE,MAAO,CAOP,CACEI,aAAc,WACdltC,UAAW,aACXy4B,MAAO,gBACP+vB,eAAgB,aAChBra,kBAAmB,OAGvBiG,YACE,MAAO,GAAGvnF,KAAKqQ,YAAY+mU,eAAep3U,KAAK2K,KAIjD0sU,0BACE,OAAO,KAGT1a,gBACE,OAAO38T,KAAKm6S,SAAW,CAACn6S,KAAKm6S,UAAY,GAG3Cw3B,uBACE,OAAO3xU,KAAK28T,WAGhBz9T,EAAgBi4U,GAAwB,cAAe,qBACvDA,GAAuBjvU,OAAS,yBA8ChC,MAAMovU,WAA+B7qO,GACnC5qF,2BACE,MAAO,CAKL8wS,aAAc,IAKdC,aAAc,IAKdtd,cAAe,KACf/6N,WAAY48P,GACZnwO,QAAS,sBAGbsuM,kBAAkB1pO,GAChB5rE,KAAK0rT,eAAiB9/O,EAEtB,IAAK5rE,KAAKwd,cAAe,CACvBxd,KAAK6gF,cAAc,OAGvBy0N,oBACE,OAAOt1S,KAAK0rT,eAGd/rT,qBAAqB43U,GACnB,MAAO,CAACA,EAAkBp9B,UAa5Bx6S,WAAUq0N,eACRA,EAAc7mL,UACdA,EAASC,QACTA,IAEA,MAAMoqS,EAAoBxjH,EAAeyjH,WAAWh7E,SAAQ1qE,IAC1D,GAAIA,EAAM4zI,kBAAmB,CAC3B,OAAO5zI,EAAMwvI,2BAA2Bp0R,EAAWC,GAErD,GAAI2kJ,EAAMg1I,gBAAgB55R,EAAWC,GAAU,CAC7C,OAAO2kJ,EAET,MAAO,MAET,OAAOylJ,EAAkBv/T,MAAK,CAACy/T,EAAOC,IAAUD,EAAMvqS,UAAYwqS,EAAMxqS,aAG5EjuC,EAAgBo4U,GAAwB,QAAS,0BACjDA,GAAuBpvU,OAAS,yBAShC,IAAI0vU,GAAqB1qT,GAAU,MAAM0qT,UAA2B1qT,GAAUyuD,IAC5E5tE,mBACE,MAAO,oBAGT8T,2BACE,MAAO,CAYL8pD,IAAK,GACLksQ,oBAAqBjS,GACrBkS,4BAA6BX,GAQ7BY,oBAAqBnxO,GAQrBoxO,4BAA6BV,GAgB7BjiC,WAAY,GACZF,gBAAiB,GACjBC,gBAAiB,GACjBE,cAAe,GACf2iC,eAAgB,MAGpBz4U,0BACE,MAAO,CAaLq1B,KAAM,KAcNqjT,eAAgB,CACd34U,MAAO,CACLoL,GAAI,aAEJ4vE,WAAYqrP,IAEdpkT,QAAS,WAeX22T,uBAAwB,CACtB54U,MAAO,GACPiiB,QAAS,WAGXyM,OAAQ,KACR0uS,UAAW,KACXH,YAAa,KACb8V,aAAc,KACdmF,WAAY,KACZW,mBAAoB,MAqDxB3f,iBACE,OAAOruT,EAAa4wF,cAAc9gF,MAAM2a,MAE1C4jS,eAAeA,GACbz4T,KAAK60B,KAAO4jS,EA0Dd94T,UAAUwY,EAAS,IACjB+B,MAAMsB,aAAa3c,WAEnB,GAAIsZ,EAAO8/T,eAAgB,CACzBj4U,KAAKk4U,eAAeh+S,KAAO/hB,EAAO8/T,eAEpC,GAAI9/T,EAAOkgU,uBAAwB,CACjCr4U,KAAKm4U,uBAAuBj+S,KAAO/hB,EAAOkgU,wBAG9C14U,iBACEua,MAAMuB,iBACN,MAAM1b,EAAKC,MACVD,EAAGm4U,eAAevsQ,KAAO5rE,EAAG4rE,IAAIo6B,SAAShmG,EAAGm4U,iBAC5Cn4U,EAAGo4U,uBAAuBxsQ,KAAO5rE,EAAG4rE,IAAIo6B,SAAShmG,EAAGo4U,wBAKvDx4U,YAAYisE,GACVA,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMz8C,GAAG,CACrD1qB,KAAMmnE,EAAMxvD,OACZgpE,OAAQ,mBACR9oE,QAAStc,OAIbL,YAAYisE,GACVA,GAAS5rE,KAAKupE,gBAAgBqC,EAAMxvD,QAEtCzc,iBAAiBwwB,GAyBf,OAAOnwB,KAAKutB,QAAQ,SAAU7uB,EAAeA,EAAe,CAC1DktE,MAAOz7C,EAAMpxB,QACZoxB,GAAQ,GAAI,CACbpxB,OAAQiB,QAGZL,qBAAqBisE,EAAOq0H,GAC1BjgM,KAAKokT,YAAYnkH,GACjBjgM,KAAK0kT,YAAY94O,GAEnBjsE,kBAAkBisE,GAChB5rE,KAAKk4U,eAAiBtsQ,EAExBjsE,qBAAqBisE,GAEnB,GAAIA,IAAUA,EAAMuP,QAAS,CAC3BvP,EAAQ5rE,KAAK+3U,oBAAoBlnN,IAAI,CACnCt2C,WAAYv6E,KAAK63U,qBAChBjsQ,GAEL,OAAOA,EAETjsE,6BAA6BisE,EAAOq0H,GAClCjgM,KAAKokT,YAAYnkH,GACjBjgM,KAAK0kT,YAAY94O,GAEnBjsE,6BAA6BisE,GAE3B,GAAIA,IAAUA,EAAMuP,QAAS,CAC3BvP,EAAQ5rE,KAAKg4U,4BAA4BnnN,IAAI,CAC3Ct2C,WAAYv6E,KAAK83U,6BAChBlsQ,GAEL,OAAOA,EAETjsE,0BAA0BisE,GACxB5rE,KAAKm4U,uBAAyBvsQ,EAIhC39C,aACE,OAAOjuB,KAAKq1S,WAAWpjO,QAEzBtyE,aAAasuB,GACXjuB,KAAKq1S,WAAWn7Q,KAAOjM,EAEzB0uS,gBACE,OAAO38T,KAAKs1S,cAAcrjO,QAE5BtyE,gBAAgBg9T,GACd38T,KAAKs1S,cAAcp7Q,KAAOyiS,EAE5BH,kBACE,OAAOx8T,KAAKm1S,gBAAgBljO,QAE9BtyE,kBAAkB68T,GAChBx8T,KAAKm1S,gBAAgBj7Q,KAAOsiS,EAE9B8V,mBACE,OAAOtyU,KAAKo1S,gBAAgBnjO,QAE9BtyE,mBAAmB2yU,GACjBtyU,KAAKo1S,gBAAgBl7Q,KAAOo4S,EAE9BmF,iBACE,OAAOz3U,KAAKk4U,eAAejmQ,QAE7BtyE,iBAAiB83U,GACfz3U,KAAKk4U,eAAeh+S,KAAOu9S,EAE7BW,yBACE,OAAOp4U,KAAKm4U,uBAAuBlmQ,QAErCtyE,yBAAyBy4U,GACvBp4U,KAAKm4U,uBAAuBj+S,KAAOk+S,EAErCz4U,qBAAqBu6B,GAEnBl6B,KAAKqiT,oBAAsB,KAE3B,GAAInoR,EAAKm+S,uBAAwB,CAC/Br4U,KAAKm4U,uBAAuBj+S,KAAOA,EAAKm+S,uBAE1C,GAAIn+S,EAAK+9S,eAAgB,CACvBj4U,KAAKk4U,eAAeh+S,KAAOA,EAAK+9S,eAElC,OAAO/9T,MAAM0pS,eAAe1pR,GA6C9Bv6B,SACE,MAAMI,EAAKC,KACTmM,EAAS,CACPo3S,WAAYxjT,EAAGs1S,WAAW5vN,SAC1B+9N,cAAezjT,EAAGu1S,cAAc7vN,SAChC69N,iBAAkBvjT,EAAGq1S,gBAAgB3vN,SACrCwyP,eAAgBl4U,EAAGm4U,eAAezyP,SAClC4yP,uBAAwBt4U,EAAGo4U,uBAAuB1yP,UAEtD,IAAK1lF,EAAGs1S,WAAW4nB,qBAAsB,CACvC9wT,EAAOi3S,gBAAkBrjT,EAAGo1S,gBAAgB1vN,SAE9C,OAAOt5E,EAgCT0oB,WACE,OAAO3a,MAAM2a,KAEfl1B,WAAWk1B,GACT,UAAWA,IAAS,SAAU,CAC5BA,EAAOzqB,EAAa4wF,cAAcnmE,GAEpC,OAAOA,EAETl1B,WAAWk1B,GACTA,GAAQ70B,KAAK4jT,eAAe/uR,GAG9Bl1B,YAAY2zE,EAAOxG,GACjB5yD,MAAMy5D,eAAe90E,WACrB,GAAIiuE,EAAOmjO,SAAU,CACnBjwS,KAAKutB,QAAQ,mBAGjB5tB,YACEK,KAAKk4U,eAAen8T,UACpB/b,KAAKm4U,uBAAuBp8T,UAC5B7B,MAAM8B,cAaV,IAAIs8T,GAAwBprT,GAAU,MAAMorT,UAA6BprT,EAGvEvtB,iBAAiBiN,GACf,MAAM7M,EAAKC,KACTmM,EAAS+N,MAAMuE,iBAAiB7R,GAClC,GAAIT,EAAQ,CACV,IAAK,MAAMkuE,IAAa,CAAC,aAAc,gBAAiB,kBAAmB,kBAAmB,iBAAkB,0BAA2B,CACzI,MAAMzO,EAAQ7rE,EAAGs6E,GACjB,GAAIzO,EAAO,CACT,GAAIA,EAAM5nD,MAAO,CACf7X,EAAOy/D,EAAMjhE,GAAK,QAAUihE,EAAM8/B,cAAc9+F,GAGlD,MAAMsrR,EAAatsN,EAAMntD,iBAAiB7R,GAC1C,GAAIsrR,GAAcj6R,OAAOD,KAAKk6R,GAAYp5R,OAAS,EAAG,CACpDqN,EAAOkuE,GAAap8E,OAAOmZ,OAAOjL,EAAOkuE,IAAc,GAAI69M,QAGxD,GAAI/rR,EAAOkuE,IAAcp8E,OAAOD,KAAKmO,EAAOkuE,IAAYv7E,SAAW,EAAG,QAClEqN,EAAOkuE,KAIpB,GAAIluE,EAAO+rU,eAAgB,CAEzB,GAAIn4U,EAAGm4U,eAAehvO,qBAAuBnpG,EAAG83U,qBAAuB93U,EAAGm4U,eAAehvO,mBAAmBn7F,QAAU,WAAY,QACzH5B,EAAO+rU,eAAe39P,WAG/B,GAAIpuE,EAAO+rU,eAAelxO,UAAY,aAAc,QAC3C76F,EAAO+rU,eAAelxO,QAG/B,GAAI/oG,OAAOD,KAAKmO,EAAO+rU,gBAAgBp5U,SAAW,EAAG,QAC5CqN,EAAO+rU,gBAIlB,GAAIn4U,EAAGw4U,UAAUC,YAAa,QACrBrsU,EAAOu2S,uBACPv2S,EAAO42S,uBACP52S,EAAOk7C,SAEhB,OAAOl7C,KAcb,MAAMssU,WAAgCp9T,GAEpCg6R,eAAeqjC,GACb,MAAM34U,EAAKC,KACXD,EAAG44U,oBAAsB54U,EAAG44U,qBAC5B54U,EAAG+lU,YAAc4S,EACjB,GAAIA,GAAiBA,EAActnP,WAAY,CAC7CrxF,EAAG44U,mBAAqBD,EAAcvpT,GAAG,CACvCypT,aAAc74U,EAAG84U,uBACjBv8T,QAASvc,EACT4sB,WAAY,KAEZE,KAAM,OAIZwoR,iBACE,OAAOr1S,KAAK8lU,YAEdxwB,kBAAkBwjC,GAChB,MAAM/4U,EAAKC,KACXD,EAAG6rT,uBAAyB7rT,EAAG6rT,wBAC/B7rT,EAAG2rT,eAAiBotB,EACpB,GAAIA,GAAoBA,EAAiB1nP,WAAY,CACnDrxF,EAAG6rT,sBAAwBktB,EAAiB3pT,GAAG,CAC7CypT,aAAc74U,EAAGg5U,0BACjBz8T,QAASvc,EACT4sB,WAAY,KAEZE,KAAM,OAIZyoR,oBACE,OAAOt1S,KAAK0rT,eAEdvW,oBAAoB6jC,GAClB,MAAMj5U,EAAKC,KACXD,EAAGk5U,yBAA2Bl5U,EAAGk5U,0BACjCl5U,EAAGm5U,iBAAmBF,EACtB,GAAIA,GAAsBA,EAAmB3nB,SAAU,CACrDtxT,EAAGk5U,wBAA0BD,EAAmB7pT,GAAG,CACjDypT,aAAc74U,EAAGo5U,4BACjB78T,QAASvc,EACT4sB,WAAY,KAEZE,KAAM,OAIZsoR,sBACE,OAAOn1S,KAAKk5U,iBAEd9jC,oBAAoBgkC,GAClB,MAAMr5U,EAAKC,KACXD,EAAGs5U,yBAA2Bt5U,EAAGs5U,0BACjCt5U,EAAGu5U,iBAAmBF,EACtB,GAAIA,GAAsBA,EAAmB/nB,SAAU,CACrDtxT,EAAGs5U,wBAA0BD,EAAmBjqT,GAAG,CACjDypT,aAAc74U,EAAGw5U,4BACjBj9T,QAASvc,EACT4sB,WAAY,KAEZE,KAAM,OAIZuoR,sBACE,OAAOp1S,KAAKs5U,iBAId35U,wBAAuB4yE,QACrBA,IAEA,MAAMxyE,EAAKC,KACXD,EAAGy5U,oCAAoCjnQ,GACvC,OAAOxyE,EAAG05U,kBAAkBlnQ,GAE9B5yE,2BAA0B4yE,QACxBA,IAEA,MAAMxyE,EAAKC,KACXD,EAAGy5U,oCAAoCjnQ,GACvC,OAAOxyE,EAAG05U,kBAAkBlnQ,GAE9B5yE,6BAA4B4yE,QAC1BA,IAEA,MAAMxyE,EAAKC,KACXD,EAAGy5U,oCAAoCjnQ,GACvC,OAAOxyE,EAAG05U,kBAAkBlnQ,GAE9B5yE,6BAA4B4yE,QAC1BA,IAEA,MAAMxyE,EAAKC,KACXD,EAAGy5U,oCAAoCjnQ,GACvC,OAAOxyE,EAAG05U,kBAAkBlnQ,GAI9B5yE,oCAAoC4yE,GAClC,MAAMmnQ,EAAkBnnQ,EAAQsC,OAAS,GACzC,IAAI3kD,EAAGtxB,EAEP,IAAKA,EAAI86U,EAAgB56U,OAAS,EAAGF,GAAK,IAAKA,EAAG,CAChDsxB,EAAIwpT,EAAgB96U,GACpB,IAAKsxB,EAAEqzD,cAAe,CACpBm2P,EAAgBxhU,OAAOwhU,EAAgBj0U,QAAQyqB,GAAI,IAIvD,GAAIwpT,EAAgB56U,SAAW,EAAG,CAChCyzE,EAAQsC,MAAM/1E,OAAS,GAG3Ba,kBAAkBiN,GAChB,OAAO1M,QAAQ0M,EAAQioE,OAASjoE,EAAQioE,MAAM/1E,OAAS,GAAK8N,EAAQ4mE,UAAY5mE,EAAQ4mE,SAAS10E,OAAS,GAAK8N,EAAQsW,SAAWtW,EAAQsW,QAAQpkB,OAAS,IAK/J25U,GAAwBvwU,OAAS,0BAEjC,MAAMyxU,GAAcl3B,GA2HpB,MAAMm3B,WAAuBtB,GAAqBV,GAAkB+B,MAClE5rU,mBACE,MAAO,eAoMT8T,2BACE,MAAO,CASL6gS,gBAAiBmwB,GASjBhwB,qBAAsB8xB,GAStB/xB,mBAAoB4b,GASpB7b,qBAAsB+Y,GAQtB3Y,gBAAiBgwB,GAQjB7vB,qBAAsB+yB,GAQtBhzB,mBAAoByb,GAQpB1b,qBAAsB0a,IAqD1B/9T,aAAa4b,GACXrB,MAAMsB,aAAaD,GACnB,GAAI7I,EAAcoC,UAAW,CAC3B1S,WAAW0F,QAAQ+xU,YAAc75U,KAGnCA,KAAK85U,wBAA0B95U,KAAK+5U,gCAQtCp6U,gCACE,OAAO,IAAI84U,GAAwB,CACjCpjC,WAAYr1S,KACZs1S,cAAet1S,KAAKs1S,cACpBH,gBAAiBn1S,KAAKm1S,gBACtBC,gBAAiBp1S,KAAKo1S,kBAG1Bz1S,YACEK,KAAK85U,wBAAwB/9T,UAC7B7B,MAAM8B,YAGRu8T,gBACE,OAAOv4U,KAAKq1S,YAGhBukC,GAAen9P,aAAe,KAC9Bm9P,GAAehjQ,YACfgjQ,GAAe1xU,OAAS,eA2JxB,MAAM8xU,WAAoBzhB,GAAoB/3S,MAAM01T,GAA6Bxd,GAAeW,KAE9Fx3S,2BACE,MAAO,CACLo4T,aAAcL,GACd32B,mBAAoByb,GACpB3b,gBAAiBgwB,GACjB/vB,qBAAsB0a,GACtBxa,qBAAsB+yB,GAKtB3gC,cAAe,GAafD,WAAY,GAKZF,gBAAiB,GAKjBC,gBAAiB,GAKjB7pM,QAAS,MAIb5rG,eACE,OAAO,IAAIK,KAAKi6U,aAAaj6U,KAAKk6U,sBAEpCv6U,qBACE,OAAOqxC,GAAamwD,kBAAkB,CACpCk0M,WAAYr1S,KAAKq1S,WACjBC,cAAet1S,KAAKs1S,cACpBH,gBAAiBn1S,KAAKm1S,gBACtBC,gBAAiBp1S,KAAKo1S,gBACtB+iC,uBAAwBn4U,KAAKm4U,yBAIjC5sO,YAAYA,GACV,MAAMxrG,EAAKC,KACX,GAAIurG,IAAYxrG,EAAGo6U,SAAU,CAC3Bp6U,EAAGwpE,gBAAgB,mBACnBxpE,EAAGwpE,gBAAgB,kBACnBxpE,EAAGo6U,SAAW5uO,EACd,GAAIA,EAAS,CACXxrG,EAAGs1S,WAAa9pM,EAAQ8pM,WACxBt1S,EAAGu1S,cAAgB/pM,EAAQ+pM,cAC3Bv1S,EAAGo1S,gBAAkB5pM,EAAQ4pM,gBAC7Bp1S,EAAGq1S,gBAAkB7pM,EAAQ6pM,gBAC7Br1S,EAAGm4U,eAAiB3sO,EAAQ2sO,eAC5Bn4U,EAAGo4U,uBAAyB5sO,EAAQ4sO,uBAIpC5sO,EAAQp8E,GAAG,CACT1qB,KAAM,kBACN21U,UAAW,IAAMr6U,EAAGs1T,yBACpBxoS,KAAM,IACNvQ,QAASvc,IAEXwrG,EAAQp8E,GAAG,CACT1qB,KAAM,iBACN21U,UAAW,IAAMr6U,EAAGw1T,wBACpB1oS,MAAO,IACPvQ,QAASvc,IAGb,IAAKA,EAAGs1S,WAAY,CAClBt1S,EAAGs1S,WAAa,GAElB,IAAKt1S,EAAGu1S,cAAe,CACrBv1S,EAAGu1S,cAAgB,GAErB,IAAKv1S,EAAGo1S,gBAAiB,CACvBp1S,EAAGo1S,gBAAkB,GAEvB,IAAKp1S,EAAGq1S,gBAAiB,CACvBr1S,EAAGq1S,gBAAkB,KAI3B7pM,cACE,OAAOvrG,KAAKm6U,SAMdjC,qBACE,IAAImC,EACJ,OAAQA,EAAwBr6U,KAAKs6U,mBAAqB,MAAQD,SAA+B,OAAS,EAAIA,EAAsBzuQ,MAEtIssQ,mBAAmBtsQ,GACjB,IAAIqqO,EACJj2S,KAAKu6U,iBAAiB,kBAAmB3uQ,GAAQqqO,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAc8hC,qBAM/II,6BACE,IAAIqC,EACJ,OAAQA,EAAwBx6U,KAAKy6U,2BAA6B,MAAQD,SAA+B,OAAS,EAAIA,EAAsB5uQ,MAE9IusQ,2BAA2BvsQ,GACzB,IAAI8qO,EACJ12S,KAAKu6U,iBAAiB,0BAA2B3uQ,GAAQ8qO,EAAiB12S,KAAKurG,WAAa,MAAQmrM,SAAwB,OAAS,EAAIA,EAAeshC,6BAM1J1iC,oBACE,IAAIolC,EACJ,OAAQA,EAAuB16U,KAAK0rT,kBAAoB,MAAQgvB,SAA8B,OAAS,EAAIA,EAAqB9uQ,MAElI0pO,kBAAkB1pO,GAChB,MAAM7rE,EAAKC,KACXD,EAAGw6U,iBAAiB,iBAAkB3uQ,EAAO7rE,EAAGkjT,oBAMlD5N,iBACE,IAAIslC,EACJ,OAAQA,EAAoB36U,KAAK8lU,eAAiB,MAAQ6U,SAA2B,OAAS,EAAIA,EAAkB/uQ,MAEtHypO,eAAezpO,GACb,MAAM7rE,EAAKC,KACXD,EAAGw6U,iBAAiB,cAAe3uQ,EAAO7rE,EAAGgjT,iBAM/C5N,sBACE,IAAIylC,EACJ,OAAQA,EAAwB56U,KAAKk5U,oBAAsB,MAAQ0B,SAA+B,OAAS,EAAIA,EAAsBhvQ,MAEvIupO,oBAAoBvpO,GAClB5rE,KAAKu6U,iBAAiB,mBAAoB3uQ,EAAO5rE,KAAKgjT,sBAMxD5N,sBACE,IAAIylC,EACJ,OAAQA,EAAwB76U,KAAKs5U,oBAAsB,MAAQuB,SAA+B,OAAS,EAAIA,EAAsBjvQ,MAEvIwpO,oBAAoBxpO,GAClB5rE,KAAKu6U,iBAAiB,mBAAoB3uQ,EAAO5rE,KAAKkjT,sBAExDvjT,iBAAiBwS,EAAUy5D,EAAO4O,GAChC,IAAIsgQ,EACJ,MAAM/6U,EAAKC,KACTigM,GAAY66I,EAAe/6U,EAAGoS,MAAe,MAAQ2oU,SAAsB,OAAS,EAAIA,EAAalvQ,MAEvG,GAAIq0H,IAAar0H,EAAO,CACtB,IAAIqvH,EAEJrvH,EAAQg7B,GAAMM,SAASt7B,IAASqvH,EAASrvH,KAAW,MAAQqvH,SAAgB,OAAS,EAAIA,EAAOzgH,aAAeA,GAC/G,GAAIylH,EAAU,CACZlgM,EAAG+lG,YAAYm6F,GAEjBlgM,EAAGoS,GAAYy5D,GAAS,CACtBA,MAAAA,IACG,KAGL7rE,EAAGg7U,oBAAoBh7U,EAAGoS,IAE5B,OAAOpS,EAAGoS,GAEZxS,sBACE,MAAMmwT,EAAO51S,MAAM+9S,sBAEnB,GAAInI,GAAQ9vT,KAAKq1S,WAAW4nB,qBAAsB,QACzCnN,EAAK9vT,KAAKm1S,gBAAgBnuM,SAEjC,IAAKhnG,KAAK8wT,WAAWnpT,MAAKinT,GAAakB,EAAKlB,EAAU5nN,WAAW,CAC/D,OAAO,MAGX,OAAO8oN,EAGTnB,wCACE,MAAO,CAAC3uT,KAAK8lU,YAAY9+N,QAAShnG,KAAK0rT,eAAe1kN,UAG1D9nG,EAAgB86U,GAAa,QAAS,eACtCA,GAAY9xU,OAAS,cAqHrB,MAAM8yU,WAAmBr/P,GACvBtC,oBACE,MAAO,CAKP,CACE50E,KAAM,OACNoI,KAAM,UAOR,CACEpI,KAAM,YACNG,aAAc,IAOhB,CACEH,KAAM,YACNG,aAAc,IAOhB,CACEH,KAAM,aACNG,aAAc,IAOhB,CACEH,KAAM,oBACNG,aAAc,SAQhB,CACEH,KAAM,YACNG,aAAc,QAOhB,CACEH,KAAM,iBACNG,aAAc,GAOhB,CACEH,KAAM,cACNG,aAAc,IAMhB,CACEH,KAAM,YAiBR,CACEA,KAAM,SAiBR,iBAMA,UAMA,kBAMA,kBAEF9E,UAAUu6B,GACRhgB,MAAMsB,aAAa3c,WACnBmB,KAAKi7U,iBAEPt7U,WAAWgZ,GACT,MAAM5Y,EAAKC,MACTk0B,QACEA,GACEn0B,EACJ8lC,EAAQ,GAEV,IAAI15B,EAASlO,OAAO4S,eAAe9Q,EAAGm6B,MAAMvvB,GAC5C,IAAKwB,EAAQ,CACX,IAAK,IAAIrN,OACLA,GACEo1B,EAASt1B,EAAIE,EAAS,EAAGF,GAAK,EAAGA,IAAK,CAC1C,MAAMqpC,KACFA,EAAI2E,UACJA,GACE1Y,EAAQt1B,GACZ6hN,EAAW7zK,EAAY,EACzB/G,EAAMrnC,KAAK,GAAGiiN,EAAW7zK,EAAY,KAAKhuC,EAAIqpC,EAAO79B,EAAaK,WAAWw9B,KAAQw4K,EAAW,IAAM,MAGxGt0M,EAAS05B,EAAM57B,KAAK,OAMtB,GAAI0O,EAAMqL,OAASrL,EAAM/M,SAASO,GAAS,CACzCA,GAAU,IAAIpM,EAAGm7U,cAAcn7U,EAAGo7U,YAAcp7U,EAAGm7U,YAEnD,GAAIviU,EAAM/M,SAASO,GAAS,CAC1BA,GAAU,IAAIpM,EAAGq7U,aAAaxuS,YAE9B,GAAIj0B,EAAM/M,SAASO,GAAS,CAC1BA,EAASi+E,GAASjf,WAAW,GAAGh/D,QAItC,OAAOA,EAETxM,iBACE,MAAMI,EAAKC,MACTq7U,eACEA,EAAcnnT,QACdA,GACEn0B,EAEN,IAAK,IAAInB,EAAI,GAAGE,OACZA,GACEo1B,EAASt1B,EAAIE,EAAQF,IAAK,CAC9B,MAAMghJ,EAAS1rH,EAAQt1B,GACvBghJ,EAAO33G,KAAOpI,GAAW0J,cAAcq2G,EAAO33G,MAC9C,GAAI23G,EAAO07L,UAAW,CACpB17L,EAAO07L,UAAYz7S,GAAW0J,cAAcq2G,EAAO07L,WAErD,KAAM,cAAe17L,GAAS,CAC5B1rH,EAAQt1B,GAAKX,OAAOmZ,OAAO,CACzBw1B,UAAW,GACVgzG,IAGP,GAAIy7L,EAAgB,CAClBA,EAAepzS,KAAOpI,GAAW0J,cAAc8xS,EAAepzS,MAEhE,GAAIloC,EAAGw7U,UAAW,CAChBx7U,EAAGw7U,UAAY17S,GAAW0J,cAAcxpC,EAAGw7U,YAI/C57U,6BAA6Bu6B,GAC3B,MAAM+2H,aACFA,EAAYuqL,eACZA,EAAc/xB,gBACdA,GACEvvR,EACJhG,EAAUgG,EAAKhG,QAAU,GAC3B,GAAI+8H,EAAa97G,IAAK,CACpB,GAAIqmS,IAAmB,MAAO,CAC5BthT,EAAKshT,eAAiB,EAExB,GAAI/xB,IAAoB,MAAO,CAC7BvvR,EAAKuvR,gBAAkB,EAEzBv1R,EAAQ,GAAK+8H,EAAa97G,IAE5B,GAAI87G,EAAartI,OAAQ,CACvB,GAAI43T,IAAmB,SAAU,CAC/BthT,EAAKshT,eAAiBtnT,EAAQp1B,OAEhC,GAAI2qT,IAAoB,SAAU,CAChCvvR,EAAKuvR,gBAAkBv1R,EAAQp1B,OAEjCo1B,EAAQ11B,KAAKyyJ,EAAartI,YACrB,CACL,MAAM,IAAIlT,MAAM,4DAElB,GAAIugJ,EAAa57G,OAAQ,CAEvBnb,EAAKuvR,gBAAkBv1R,EAAQp1B,OAAS,EAGxC,GAAI08U,GAAkB,KAAM,CAC1BthT,EAAKshT,eAAiBtnT,EAAQp1B,OAAS,OAClC,GAAI08U,IAAmB,SAAU,CACtCthT,EAAKshT,eAAiBtnT,EAAQp1B,OAIhC,GAAI2qT,GAAmB,KAAM,CAC3BvvR,EAAKuvR,gBAAkBv1R,EAAQp1B,OAAS,EAE1C,GAAI2qT,IAAoB,SAAU,CAChCvvR,EAAKuvR,gBAAkBv1R,EAAQp1B,OAEjCo1B,EAAQ11B,KAAKyyJ,EAAa57G,SAI9B11C,OACAA,SACA67U,qBACE,MAAO,mBAAoBx7U,KAAKk6B,KAAOl6B,KAAKk6B,KAAKshT,eAAiBx7U,KAAKk0B,QAAQp1B,OAAS,EAE1F28U,eACE,OAAOz7U,KAAK07U,WAAa17U,KAAKk7U,UAEhCA,gBACE,MAAO,cAAel7U,KAAKk6B,KAAOl6B,KAAKk6B,KAAKghT,UAAY,GAE1DC,iBACE,MAAO,eAAgBn7U,KAAKk6B,KAAOl6B,KAAKk6B,KAAKihT,WAAa,GAE5DlqL,mBAEE,GAAIjxJ,KAAKk6B,KAAK+2H,aAAc,CAC1B,OAAOjxJ,KAAKk6B,KAAK+2H,aAGnB,MAAM9kJ,EAAS,IACb+nB,QACEA,GACEl0B,MACJlB,OACEA,GACEo1B,EACN,OAAQp1B,GACN,KAAK,EACHqN,EAAOyX,OAASsQ,EAAQ,GACxB,MACF,KAAK,EACH,GAAIl0B,KAAKypT,kBAAoB,EAAG,CAC9Bt9S,EAAOyX,OAASsQ,EAAQ,GACxB/nB,EAAOkpC,OAASnhB,EAAQ,OACnB,CACL/nB,EAAOgpC,IAAMjhB,EAAQ,GACrB/nB,EAAOyX,OAASsQ,EAAQ,GAE1B,MACF,KAAK,EACH/nB,EAAOgpC,IAAMjhB,EAAQ,GACrB/nB,EAAOyX,OAASsQ,EAAQ,GACxB/nB,EAAOkpC,OAASnhB,EAAQ,GACxB,MACF,QACE,MAAM,IAAIxjB,MAAM,0DAEpB,OAAOvE,EAETs9S,oBAAoBA,GAClBzpT,KAAKk6B,KAAKuvR,gBAAkBA,EAE9BA,sBACE,GAAI,oBAAqBzpT,KAAKk6B,KAAM,CAClC,OAAOl6B,KAAKk6B,KAAKuvR,gBAGnB,GAAIzpT,KAAKk6B,KAAKhG,QAAQp1B,SAAW,EAAG,CAClC,OAAO,EAIT,OAAOkB,KAAKk0B,QAAQp1B,OAAS,EAE/B68U,iBACE,OAAO37U,KAAKk0B,QAAQl0B,KAAKypT,iBAE3B2xB,mBACE,OAAOp7U,KAAKk0B,QAAQl0B,KAAKk0B,QAAQp1B,OAAS,GAE5C88U,eACE,OAAO57U,KAAKo7U,aAAanzS,KAE3B4zS,oBACE,OAAO77U,KAAKo7U,aAAaxuS,UAE3BkvS,eACE,GAAI,aAAc97U,KAAKk6B,KAAM,CAC3B,OAAOl6B,KAAKk6B,KAAK4hT,SAEnB,OAAO97U,KAAK27U,WAAW1zS,KAEzB8zS,iBACE,MAAMX,aACJA,GACEp7U,KACJ,OAAOoU,KAAKkxB,MAAMzF,GAAW4M,eAAe2uS,EAAaxuS,WAAa,EAAGwuS,EAAanzS,MAAQjoC,KAAKk7U,WAErGz0P,cACE,MAAM1mF,EAAKC,KACX,IAAIy2I,EAAQ,KAEZ,IAAK,MAAMmJ,KAAU7/I,EAAGm0B,QAAS,CAC/BuiH,EAAQA,GAASv2I,QAAQ2/B,GAAW0J,cAAcq2G,EAAO33G,OAE3D,GAAIloC,EAAGs7U,eAAgB,CACrB5kM,EAAQA,GAAS52G,GAAW0J,cAAcxpC,EAAGs7U,eAAepzS,MAE9D,GAAIloC,EAAGw7U,UAAW,CAChB9kM,EAAQA,GAAS52G,GAAW0J,cAAcxpC,EAAGw7U,WAE/C,OAAO9kM,GAGXv3I,EAAgB87U,GAAY,QAAS,cACrCA,GAAW9yU,OAAS,aAkCpB,MAAM8zU,WAAoBljT,GAAY8tE,KACpC74F,mBACE,MAAO,cAET8T,2BACE,MAAO,CACL66D,WAAY,KACZnC,WAAYygQ,GAWZiB,UAAW,GAGf/3U,YAAYA,GACVgW,MAAMhW,QAAUA,EAEhBlE,KAAKkE,QAAQm0P,WAAU,CAACv0O,EAAKC,KAC3B,MAAMm4T,EAAmBp4T,EAAIs3T,aAC3Be,EAAoBp4T,EAAIq3T,aAM1B,MAAM9qH,EAAQvsM,EAAIg4T,WAAaj4T,EAAIi4T,YAAc52S,GAAe+2S,EAAiBj0S,MAAQ9C,GAAeg3S,EAAkBl0S,OAASi0S,EAAiBtvS,UAAYuvS,EAAkBvvS,UAClL,OAAO0jL,EAAQtwN,KAAKi8U,aAGxB/3U,cACE,OAAOgW,MAAMhW,QAEfvE,QAAQgL,GAEN,OAAOuP,MAAM2yD,QAAQliE,KAAQ3K,KAAKo8U,iBAAmB1qI,GAAG7kI,QAAQliE,GAElEhL,aAAau6B,KAAS3e,GACpB,IAAIpP,EACJ,GAAI+tB,EAAKmiT,aAAc,CACrB,OAAOniT,EAET,UAAWA,IAAS,SAAU,CAC5B/tB,EAASnM,KAAK6sE,QAAQ3yC,QACjB,UAAWA,IAAS,SAAU,CACnC/tB,EAASnM,KAAKgzF,MAAM94D,OAGjB,CAGH,GAAIA,EAAK5jB,KAAM,CACb,IAAIA,EAAOtW,KAAK6sE,QAAQ3yC,EAAK5jB,MAC7B,IAAKA,EAAM,CACT,MAAM,IAAI5F,MAAM,oBAAoBwpB,EAAK5jB,yBAE3CA,EAAO06B,GAAazhC,MAAM+G,EAAK4jB,aACxB5jB,EAAK3L,UACL2L,EAAK7R,KAGZy1B,EAAO8W,GAAaxhC,MAAM8G,EAAM4jB,GAGlC,OAAOhgB,MAAMw0D,aAAax0C,KAAS3e,GAErC,IAAKpP,EAAQ,CACX,MAAM,IAAIuE,MAAM,cAAcwpB,oBAEhC,OAAO/tB,EAETxM,qBACEua,MAAMsf,qBACN,MAAMz5B,EAAKC,KAEX,IAAIs8U,EAAUv8U,EAAGg7E,WAEjB,GAAIh7E,EAAGq8U,gBAAiB,CACtBE,EAAU,IAAIz9T,IAAIy9T,EAAQ31T,OAAO1oB,OAAO4N,OAAO9L,EAAGw8U,eAEpDD,EAAQt9U,SAAQw9U,IACd,IAAIxmT,EAASj2B,EAAGq6B,UAAU,mBAAmBoiT,EAAO7xU,MAAO,KAAM,MAEjE,UAAWqrB,IAAW,UAAYwmT,EAAOC,OAAQ,CAC/CzmT,EAASj2B,EAAGq6B,UAAU,mBAAmBoiT,EAAOC,UAAW,KAAM,MAGnE,GAAIzmT,UAAiBA,IAAW,SAAU,CACxC,IAAKwmT,EAAOE,0BAA2B,CACrCF,EAAOE,0BAA4BF,EAAOG,kBAM5C,GAAIH,EAAO/yB,kBAAoB,GAAKzzR,EAAO4mT,cAAe,CACxD5mT,EAAO6mT,iBAAmB7mT,EAAO6mT,kBAAoB7mT,EAAO4mT,cAE9DJ,EAAOznQ,QAAQ,oBAAqB/+C,EAAO2mT,mBAAqBH,EAAOE,2BACvE,CAAC,MAAO,SAAU,UAAU19U,SAAQiP,IAClC,MAAM6yQ,EAAc07D,EAAOvrL,aAAahjJ,GACtC6uU,EAAwB9mT,EAAO/nB,EAAQ,cACzC,GAAI6yQ,EAAa,CACf,IAAKA,EAAYi8D,mBAAoB,CACnCj8D,EAAYi8D,mBAAqBj8D,EAAYvzJ,WAG/C,GAAIuvN,GAAyBh8D,EAAYphD,SAAU,CACjDohD,EAAYphD,SAAW,KAEzBohD,EAAYvzJ,WAAauvN,GAAyBh8D,EAAYi8D,uBAIlE,GAAI/mT,EAAOvxB,KAAM,CACf,IAAK+3U,EAAOQ,gBAAiB,CAC3BR,EAAOQ,gBAAkBR,EAAO/3U,KAElC+3U,EAAOznQ,QAAQ,OAAQ/+C,EAAOvxB,WACzB,GAAI+3U,EAAOQ,iBAAmBR,EAAOQ,kBAAoBR,EAAO/3U,KAAM,CAC3E+3U,EAAO/3U,KAAO+3U,EAAOQ,gBACrBR,EAAOQ,gBAAkB,UAOjCr9U,iBAAiBiN,GACf,OAAOsN,MAAMuE,iBAAiB7R,GAASstB,MAG3C8hT,GAAY9zU,OAAS,cA4JrB,MAAM+0U,WAAsBjB,GAC1BjuU,mBACE,MAAO,gBAET8T,2BACE,MAAO,CAELilF,wBAAyB,KACzBy1O,YAAa,CAgBXW,gBAAiB,CACfz4U,KAAM,UACNy2U,UAAW,GAEXC,WAAY,GACZwB,kBAAmB,SAEnBQ,eAAgB,GAEhB5B,UAAW,SAEX6B,YAAa,GAEb/B,eAAgB,CAEdpzS,KAAM,SAEN2E,UAAW,GAIb1Y,QAAS,CAAC,CACR+T,KAAM,SACNslF,WAAY,QACX,CACDtlF,KAAM,SACN2E,UAAW,GACX2gF,WAAY,QAGhB8vN,cAAe,CACb54U,KAAM,UACNy2U,UAAW,GAEXC,WAAY,GACZwB,kBAAmB,QAEnBQ,eAAgB,EAEhB5B,UAAW,OAEX6B,YAAa,GAEb/B,eAAgB,CAEdpzS,KAAM,SAEN2E,UAAW,IAEb1Y,QAAS,CAAC,CACR+T,KAAM,OACNslF,WAAY,iBACX,CACDtlF,KAAM,SACN2E,UAAW,GACX2gF,WAAY,QAGhB+vN,WAAY,CACV74U,KAAM,MACNy2U,UAAW,GACXC,WAAY,GACZwB,kBAAmB,QACnBQ,eAAgB,EAChB5B,UAAW,MACX6B,YAAa,GACb/B,eAAgB,CACdpzS,KAAM,SACN2E,UAAW,IAEb1Y,QAAS,CAAC,CACR+T,KAAM,MACNslF,WAAY,aACX,CACDtlF,KAAM,OACNslF,WAAY,QAGhB/vF,IAAK,CACH/4B,KAAM,YACNk4U,kBAAmB,KACnBQ,eAAgB,EAChB5B,UAAW,MACX6B,YAAa,EACb/B,eAAgB,CACdpzS,KAAM,SACN2E,UAAW,IAEb68Q,gBAAiB,EACjBv1R,QAAS,CAAC,CACR+T,KAAM,MACNslF,WAAY,YAEZ+tN,UAAW,OACV,CACDrzS,KAAM,OACNtoC,SAASJ,GACP,MAAO,uHAC+FsgC,GAAW/C,OAAOv9B,EAAO,gGAC5DsgC,GAAW/C,OAAOv9B,EAAO,2DAKlGqkC,KAAM,CACJn/B,KAAM,aACNk4U,kBAAmB,KACnBQ,eAAgB,EAChB5B,UAAW,OACX6B,YAAa,GACb/B,eAAgB,CACdpzS,KAAM,SACN2E,UAAW,IAEb68Q,gBAAiB,EACjBv1R,QAAS,CAAC,CACR+T,KAAM,OACNslF,WAAY,MACZ+tN,UAAW,OACV,CACDrzS,KAAM,OACNslF,WAAY,KAEZ5tH,SAASJ,GACP,MAAO,yJAEwDsgC,GAAW/C,OAAOv9B,EAAO,8FACvBsgC,GAAW/C,OAAOv9B,EAAO,iGAMhGg+U,WAAY,CACV94U,KAAM,eACNy2U,UAAW,IACXC,WAAY,GACZwB,kBAAmB,QACnBpB,UAAW,MACX4B,eAAgB,EAChBC,YAAa,EACb/B,eAAgB,CACdpzS,KAAM,OACN2E,UAAW,GAEb1Y,QAAS,CAAC,CACR+T,KAAM,OACNtoC,SAAS6oB,GACP,OAAOqX,GAAW4J,mBAAmB,QAAU,IAAM5J,GAAW/C,OAAOtU,EAAO,iBAE/E,CACDyf,KAAM,MACNslF,WAAY,WA2BhBiwN,YAAa,CACX/4U,KAAM,QACNy2U,UAAW,IACXC,WAAY,GACZwB,kBAAmB,QACnBpB,UAAW,QACX4B,eAAgB,EAChBC,YAAa,EACbtB,SAAU,QACVT,eAAgB,CACdpzS,KAAM,OACN2E,UAAW,GAEb1Y,QAAS,CAAC,CACR+T,KAAM,QACNslF,WAAY,aACX,CACDtlF,KAAM,MACNslF,WAAY,QAGhBkwN,WAAY,CACVh5U,KAAM,OACNy2U,UAAW,IACXC,WAAY,GACZwB,kBAAmB,aACnBpB,UAAW,OACX4B,eAAgB,EAChBC,YAAa,EACb/B,eAAgB,CACdpzS,KAAM,MACN2E,UAAW,GAEb68Q,gBAAiB,EACjBv1R,QAAS,CAAC,CACR+T,KAAM,OACNslF,WAAY,gBACX,CACDtlF,KAAM,MACN2E,UAAW,EACX2gF,WAAY,YAGhBmwN,aAAc,CACZj5U,KAAM,QACNy2U,UAAW,IACXC,WAAY,IACZwB,kBAAmB,KACnBpB,UAAW,OACX4B,eAAgB,EAChBC,YAAa,EACb/B,eAAgB,CACdpzS,KAAM,MACN2E,UAAW,GAEb1Y,QAAS,CAAC,CACR+T,KAAM,QACNslF,WAAY,YACX,CACDtlF,KAAM,OACNslF,WAAY,YAGhBowN,iBAAkB,CAChBl5U,KAAM,iBACNy2U,UAAW,GACXC,WAAY,GACZwB,kBAAmB,KACnBpB,UAAW,OACX4B,eAAgB,EAChBC,YAAa,GACb/B,eAAgB,CACdpzS,KAAM,MACN2E,UAAW,GAEb68Q,gBAAiB,EACjBv1R,QAAS,CAAC,CACR+T,KAAM,OACNslF,WAAY,kBACZqwN,oBAAqB,KACpB,CACD31S,KAAM,MACNslF,WAAY,KACZqwN,oBAAqB,MAGzBC,iBAAkB,CAChBp5U,KAAM,eACNy2U,UAAW,GACXC,WAAY,GACZwB,kBAAmB,KACnBpB,UAAW,OACX4B,eAAgB,EAChBC,YAAa,GACb/B,eAAgB,CACdpzS,KAAM,MACN2E,UAAW,GAEb1Y,QAAS,CAAC,CACR+T,KAAM,QACNslF,WAAY,aACX,CACDtlF,KAAM,OACNslF,WAAY,QAGhBuwN,aAAc,CACZr5U,KAAM,SACNy2U,UAAW,IACXC,WAAY,IACZwB,kBAAmB,KACnBQ,eAAgB,EAChB5B,UAAW,QACX6B,YAAa,GACb/B,eAAgB,CACdpzS,KAAM,MACN2E,UAAW,GAEb1Y,QAAS,CAAC,CACR+T,KAAM,OACNslF,WAAY,QACX,CACDtlF,KAAM,QACNslF,WAAY,cAIhBvrF,KAAM,CACJv9B,KAAM,QACNy2U,UAAW,IACXC,WAAY,IACZrd,oBAAqB,IACrB6e,kBAAmB,KACnBpB,UAAW,OACX4B,eAAgB,EAChBC,YAAa,EACb/B,eAAgB,CACdpzS,KAAM,QACN2E,UAAW,GAEb1Y,QAAS,CAAC,CACR+T,KAAM,OACNslF,WAAY,QACX,CACDtlF,KAAM,UACNtoC,SAAS6oB,EAAO9E,EAAKxN,GACnB,OAAO2pB,GAAW4J,mBAAmB,WAAWn/B,eAAiB8J,KAAK+oB,MAAM3U,EAAMtb,WAAa,GAAK,OAI1G6wU,UAAW,CACTt5U,KAAM,iBACNy2U,UAAW,GACXC,WAAY,GACZwB,kBAAmB,KACnBpB,UAAW,OACX4B,eAAgB,EAChBC,YAAa,GACb/B,eAAgB,CACdpzS,KAAM,OACN2E,UAAW,GAEb68Q,gBAAiB,EACjBv1R,QAAS,CAAC,CACR+T,KAAM,OACN2E,UAAW,EACX8yL,SAAU,CAACl3M,EAAO9E,IAAQ8E,EAAMvb,cAAgB,MAAQyW,EAAIzW,eAC3D,CACDg7B,KAAM,OACNslF,WAAY,KACZ3gF,UAAW,MAMjBoxS,eAAgB,CAEhB,YAAa,CACX92U,MAAO,GACP0lC,UAAW,EACXqxS,WAAY,EACZ3nU,KAAM,YACN4nU,eAAgB,QAGlB,OAAQ,CACNh3U,MAAO,GACP0lC,UAAW,EACXqxS,WAAY,EACZ3nU,KAAM,OACN4nU,eAAgB,SACf,CACDh3U,MAAO,GACP0lC,UAAW,EACXqxS,WAAY,EACZ3nU,KAAM,OACN4nU,eAAgB,SACf,CACDh3U,MAAO,IACP0lC,UAAW,EACXqxS,WAAY,EACZ3nU,KAAM,OACN4nU,eAAgB,SAGlB,eAEA,mBAEA,eAEA,mBAEA,cAEA,aAAc,CACZh3U,MAAO,GACP0lC,UAAW,EACXqxS,WAAY,EACZ3nU,KAAM,aACN4nU,eAAgB,QAGlB,aAAc,CACZh3U,MAAO,GACP0lC,UAAW,EACXqxS,WAAY,GACZ3nU,KAAM,aACN4nU,eAAgB,UACf,CACDh3U,MAAO,IACP0lC,UAAW,EACXqxS,WAAY,GACZ3nU,KAAM,aACN4nU,eAAgB,UACf,CACDh3U,MAAO,GACP0lC,UAAW,EACXqxS,WAAY,GACZ3nU,KAAM,aACN4nU,eAAgB,UAGlB,gBAAiB,CACfh3U,MAAO,GACP0lC,UAAW,GACXqxS,WAAY,EACZ3nU,KAAM,iBACL,CACDpP,MAAO,IACP0lC,UAAW,GACXqxS,WAAY,EACZ3nU,KAAM,iBACL,CACDpP,MAAO,GACP0lC,UAAW,EACXqxS,WAAY,EACZ3nU,KAAM,iBACL,CACDpP,MAAO,IACP0lC,UAAW,EACXqxS,WAAY,EACZ3nU,KAAM,iBAGR,kBAAmB,CACjBpP,MAAO,GACP0lC,UAAW,GACXqxS,WAAY,EACZ3nU,KAAM,mBACL,CACDpP,MAAO,IACP0lC,UAAW,EACXqxS,WAAY,EACZ3nU,KAAM,oBAER+W,UAAW,CACT2I,OAAQ,uBAIdumT,gBAAgBA,GACd,MAAM4B,EAAcn+U,KAAKo+U,aAAe,GACxC,IAAK,MAAMzzU,KAAM4xU,EAAa,CAC5BA,EAAY5xU,GAAIA,GAAKA,EACrBwzU,EAAYxzU,GAAM3K,KAAK0uE,aAAa6tQ,EAAY5xU,KAGpD4xU,kBACE,OAAOv8U,KAAKo+U,aAEdJ,mBAAmBA,GACjB,IAAK,IAAIp/U,EAAI,GAAGE,OACZA,GACEk/U,EAAgBp/U,EAAIE,EAAQF,IAAK,CACrC,MAAMy/U,EAAmBL,EAAep/U,GACtCoT,SAAgBqsU,IAAqB,SACrCC,EAAWtsU,EAASqsU,EAAmBA,EAAiB/nU,KAC1D,IAAIkmU,EAEJ,GAAIxqU,EAAQ,CACVwqU,EAASx8U,KAAKu8U,YAAY+B,OAGvB,CACH,MAAMnmU,EAASla,OAAOge,eAAe+0B,GAAazhC,MAAMvP,KAAKu8U,YAAY+B,GAAUpkT,MAAO,CACtFvvB,GAAI2zU,KAENjD,eACEA,GACEljU,EACJijU,EAAejjU,EAAO+b,QAAQ/b,EAAO+b,QAAQp1B,OAAS,GACxDqZ,EAAOxN,GAAK/H,UACZ,GAAI,UAAWy7U,EAAkB,CAC/BlmU,EAAO+iU,UAAYmD,EAAiBn3U,MAEtC,GAAI,WAAYm3U,EAAkB,CAChClmU,EAAOgjU,WAAakD,EAAiBp3U,OAEvC,GAAI,cAAeo3U,EAAkB,CACnCjD,EAAaxuS,UAAYyxS,EAAiBzxS,UAE5C,GAAI,eAAgByxS,EAAkB,CACpChD,EAAezuS,UAAYyxS,EAAiBJ,WAE9C,GAAI,mBAAoBI,EAAkB,CACxChD,EAAepzS,KAAOpI,GAAW0+S,cAAcF,EAAiBH,gBAElE1B,EAASx8U,KAAK0uE,aAAav2D,GAE3BqkU,EAAOC,OAAS6B,EAElBt+U,KAAK+e,IAAIy9T,IAGb78U,QAAQgL,GAGN,OAAOuP,MAAM2yD,QAAQliE,IAAO3K,KAAKu8U,YAAY5xU,GAQ/ChL,eAAegL,EAAIwN,GACjB,MAAMqkU,EAASx8U,KAAK0uE,aAAazwE,OAAOmZ,OAAO,CAC3CzM,GAAAA,GACCwN,IACHqmU,EAAoBx+U,KAAK+wB,MAAKpgB,GAAKA,EAAE+6G,OAAO8wN,KAC9C,GAAIgC,EAAmB,CACrB,OAAOA,EAET,GAAIhC,EAAO/1P,QAAS,CAClBzmF,KAAK+e,IAAIy9T,OACJ,CACL,MAAM,IAAI9rU,MAAM,mDAElB,OAAO8rU,EAET78U,UAAU68U,GACR,UAAWA,IAAW,SAAU,CAC9BA,EAASx8U,KAAKgzF,MAAMwpP,GAEtB,UAAWA,IAAW,SAAU,CAC9BA,EAASx8U,KAAK6sE,QAAQ2vQ,QACjB,KAAMA,aAAkBxB,IAAa,CAC1CwB,EAASx8U,KAAK0uE,aAAa8tQ,GAE7B,OAAOA,EAOT78U,gBAAgB68U,GACd,MAAMz8U,EAAKC,KACX,KAAMw8U,aAAkBxB,IAAa,CACnC,UAAWwB,IAAW,SAAU,CAC9BA,EAASz8U,EAAG0+U,UAAUjC,GACtB,IAAKA,EAAQ,CACX,MAAM,IAAI9rU,MAAM,8EAEb,UAAW8rU,IAAW,SAAU,CAErC,GAAIA,EAAOlmU,KAAM,CACf,MAAMA,EAAOtW,KAAK6sE,QAAQ2vQ,EAAOlmU,MACjC,IAAKA,EAAM,CACT,MAAM,IAAI5F,MAAM,oBAAoB8rU,EAAOlmU,wBAG7CkmU,EAASxrS,GAAaxhC,MAAMwhC,GAAazhC,MAAM+G,EAAK4jB,MAAOsiT,GAI7D,GAAIA,EAAO7xU,GAAI,CACb6xU,EAASz8U,EAAG2uE,aAAa8tQ,OACpB,CACLA,EAASz8U,EAAG2uE,aAAa19B,GAAa55B,OAAO,GAAIolU,IACjDA,EAAO7xU,GAAK6xU,EAAOrxQ,WAAWqxQ,KAIpC,OAAOA,EAMT78U,aAAa++U,GACX,UAAWA,IAAe,SAAU,CAClCA,EAAa1+U,KAAK6sE,QAAQ6xQ,QACrB,UAAWA,IAAe,SAAU,CACzCA,EAAa1+U,KAAKgzF,MAAM0rP,GAE1B,GAAIA,EAAY,CACd1+U,KAAK8B,OAAO48U,UAEL1+U,KAAKu8U,YAAYmC,EAAW/zU,MAIzC,MAAM+mM,GAAK,IAAIurI,GAQf,MAAM0B,WAAa/Y,GAEjBz4R,gBACE,OAAOntC,KAAKk6B,KAAKiT,UAEnBC,cACE,OAAOptC,KAAKk6B,KAAKkT,SAmBrB,MAAMwxS,WAAiBh4O,GA2BrB/kF,2BACE,MAAO,CACL04D,WAAYokQ,GAMZE,WAAY,KACZC,mBAAoB,KAwBpB5oQ,QAAS,KAOT6oQ,WAAY,KAIZC,cAAe,KACfC,YAAa,KAEbC,iBAAkB,KAElBC,eAAgB,KAChBC,UAAW,GACX51B,WAAY,KACZ9sO,WAAY,CACV0rB,wBAAyB,KACzBxqB,oBAAqB,KACrBC,sBAAuB,OAI7Br+E,0BACE,MAAO,CAoBL6/U,cAAe,KACfp3S,KAAM,KACN2E,UAAW,KACXsxS,eAAgB,KAChBoB,oBAAqB,KACrBxD,SAAU,KACVP,UAAW,KACX4B,eAAgB,EAChBC,YAAa,EACbxyS,aAAc,KAEd20S,eAAgB,MAMpB5/U,UAAUwY,GACR,MAAMpY,EAAKC,KACXka,MAAMsB,UAAUrD,GAChBpY,EAAG++U,mBAAqB/+U,EAAG8+U,WAC3B9+U,EAAGovB,GAAG,CACJi2D,OAAQ,EACNhzB,OAAAA,MAIA,GAAIA,IAAW,SAAU,CACvBryD,EAAGwtB,QAAQ,cAAe,CACxBiyT,eAAgB,UAItB1mJ,QAAS,IAAM/4L,EAAGwtB,QAAQ,cAAe,CACvCiyT,eAAgB,QAElBC,eAAgBtvT,GAASpwB,EAAGwtB,QAAQ,cAAe4C,KAErD,GAAIpwB,EAAGotC,UAAW,CAChBptC,EAAG2/U,wBACH3/U,EAAGwtB,QAAQ,oBACN,GAAIxtB,EAAGypT,WAAY,CACxB,MAAMz3H,EAAQhyL,EAAG4/U,iBAAiB,IAAInxU,MACtCzO,EAAGotC,UAAY4kJ,EAAM5kJ,UACrBptC,EAAGqtC,QAAU2kJ,EAAM3kJ,SAGvBwyS,iBACE,OAAO,KAUTjgV,YAAYwY,EAAQ0nU,EAAkB,MAAOvkT,EAAe,OAC1D,MAAMv7B,EAAKC,KACT8/U,EAAa//U,EAAG4/U,iBAAiBxnU,EAAOg1B,UAAWh1B,EAAOi1B,SAC1D2yS,EAAY,GACd,GAAIhgV,EAAGwtB,QAAQ,oBAAqB,CAClC4f,UAAW2yS,EAAW3yS,UACtBC,QAAS0yS,EAAW1yS,QACpBj1B,OAAAA,MACK,MAAO,CACZpY,EAAGwtB,QAAQ,oBACXxtB,EAAGigV,qBAAuB7nU,EAAOg1B,UACjCptC,EAAGkgV,mBAAqB9nU,EAAOi1B,QAE/B,IAAK,MAAM2oB,KAAY59C,EAAQ,CAC7B4nU,EAAUhqR,GAAYh2D,EAAGg2D,GAE3B93D,OAAOmZ,OAAOrX,EAAIoY,GAClB,GAAIpY,EAAG2/U,sBAAsBpkT,KAAkB,MAAO,CACpD,OAAO,MAETv7B,EAAGwtB,QAAQ,iBAAkB,CAC3BsyT,gBAAAA,EACA1nU,OAAAA,EACA4nU,UAAAA,KAINpgV,sBAAsB27B,EAAe,OACnC,MAAMv7B,EAAKC,KACXD,EAAGmgV,aAAe,KAClB,MAAMC,EAAWpgV,EAAG4/U,iBAAiB5/U,EAAGotC,UAAWptC,EAAGqtC,QAAS,MAC7D0yS,EAAa//U,EAAG4/U,iBAAiB5/U,EAAGotC,UAAWptC,EAAGqtC,SAClD5kB,EAAQs3T,EAAW3yS,UACnBzpB,EAAMo8T,EAAW1yS,QACnB,GAAI5kB,GAAS9E,EAAK,CAChB,MAAM,IAAIhT,MAAM,4EAA4E8X,gBAAoB9E,MAElH,MAAMukB,KACFA,EAAI2E,UACJA,EAAY,GACV7sC,EACJqgV,EAAQrgV,EAAGs/U,cAAc72T,EAAO9E,EAAKukB,EAAM2E,GAE7C7sC,EAAG40E,gBACH50E,EAAGm6B,KAAOkmT,EACV,MAAMp8T,MACJA,GACEjkB,EACJ,GAAIikB,IAAU,EAAG,CACf,GAAIsX,EAAc,CAChBv7B,EAAG60E,eACH,OAAO,MAET,MAAM,IAAIlkE,MAAM,4EAGlB3Q,EAAGotC,UAAYptC,EAAGurC,MAAM6B,UACxBptC,EAAGqtC,QAAUrtC,EAAGqmC,KAAKgH,QACrBrtC,EAAG60E,eACH,GAAI70E,EAAGsgV,aAAc,CACnBtgV,EAAGi/U,cAAgBmB,EAAShzS,UAC5BptC,EAAGk/U,YAAcp/S,GAAWssE,QAAQnoF,EAAQ,EAAIo8T,EAAMp8T,EAAQ,GAAGmpB,UAAYgzS,EAAShzS,UAAWlF,EAAM2E,EAAW7sC,EAAG6qC,kBAChH,CACL7qC,EAAGi/U,cAAgBj/U,EAAGotC,UACtBptC,EAAGk/U,YAAcl/U,EAAGqtC,QAEtBrtC,EAAGugV,8BACHvgV,EAAGwgV,gBAAgB,MAErB5gV,8BACE,MAAMI,EAAKC,MACTgkB,MACEA,EAAKikB,KACLA,EAAIkF,UACJA,EAASC,QACTA,EAAOxC,aACPA,EAAYgC,UACZA,EAAY,GACV7sC,EAMN,MAAMygV,EAAmB3gT,GAAW4gT,0BAA0BtzS,EAAWlF,GAAQ2E,EAC/E8zS,EAAiB7gT,GAAW4gT,0BAA0BrzS,EAASnF,GAAQ2E,EAGzE,EAAG,CACD7sC,EAAGm/U,kBAAoB/xS,EAAYptC,EAAGi/U,eAAiBwB,EAEvD,GAAIzgV,EAAGg/U,WAAYh/U,EAAGm/U,iBAAmB9qU,KAAK+oB,MAAMp9B,EAAGm/U,kBACvD,GAAIn/U,EAAGm/U,kBAAoB,EAAGn/U,EAAGi/U,cAAgBn/S,GAAWssE,QAAQpsG,EAAGi/U,cAAe/2S,EAAM2E,EAAWhC,SAChG7qC,EAAGm/U,kBAAoB,GAChC,EAAG,CACDn/U,EAAGo/U,eAAiBn7T,GAASjkB,EAAGk/U,YAAc7xS,GAAWszS,EACzD,GAAI18T,EAAQjkB,EAAGo/U,gBAAkB,EAAGp/U,EAAGk/U,YAAcp/S,GAAWssE,QAAQpsG,EAAGk/U,YAAah3S,GAAO,EAAG2C,SAC3F5mB,EAAQjkB,EAAGo/U,gBAAkB,GAGtCp/U,EAAG4gV,WAAa5gV,EAAGm/U,kBAAoBn/U,EAAGo/U,iBAAmBn7T,EAM/DwlS,iBACE,OAAOxpT,KAAK4gV,YAEdp3B,eAAegzB,GACb,MAAMz8U,EAAKC,KACXw8U,EAAS9qI,GAAG+sI,UAAUjC,GACtB,KAAMA,aAAkBxB,IAAa,CACnC,MAAM,IAAItqU,MAAM,wFAElB3Q,EAAG6gV,YAAcpE,EACjBv+U,OAAOmZ,OAAOrX,EAAI,CAChBkoC,KAAMu0S,EAAOpB,aAAanzS,KAC1B2E,UAAW4vS,EAAOpB,aAAaxuS,WAAa,EAC5CsxS,eAAgB1B,EAAOnB,eAAepzS,KACtCq3S,oBAAqB9C,EAAOnB,eAAezuS,UAC3CkvS,SAAUU,EAAOb,WAAW1zS,KAC5BszS,UAAWiB,EAAOjB,WAAaiB,EAAOb,WAAW1zS,KACjDk1S,eAAgBX,EAAOW,gBAAkB,EACzCC,YAAaZ,EAAOY,aAAe,EACnCyD,WAAYrE,EAAO7xU,GAGnBupB,QAASsoT,EAAOtoT,UAKpB0W,mBACE,IAAIk2S,EACJ,OAAQA,EAAsB9gV,KAAKosC,iBAAmB,MAAQ00S,SAA6B,EAAIA,EAAsBjhT,GAAW+K,aAGlIqzS,iBACE,MAAO,CACLh2S,KAAMjoC,KAAKk+U,eACXtxS,UAAW5sC,KAAKs/U,qBAIpBrB,eAAeA,GACbj+U,KAAKk+U,eAAiBD,EAAWh2S,KACjCjoC,KAAKs/U,oBAAsBrB,EAAWrxS,UAExCsxS,qBACE,OAAOl+U,KAAKu/U,eAAiBv/U,KAAKioC,KAAOjoC,KAAK+gV,gBAEhDzB,0BACE,OAAOt/U,KAAKu/U,eAAiBv/U,KAAK4sC,UAAY5sC,KAAKghV,qBAarDrhV,YAAYshV,EAAcC,EAAY5lT,EAAe,OAEnD,GAAI4lT,GAAcD,EAAeC,IAAe,EAAG,CACjDA,EAAa,KAEf,MAAMnhV,EAAKC,MACTmtC,UACEA,EAASC,QACTA,GACErtC,EAAG4/U,iBAAiBsB,EAAcC,GACxC,GAAInhV,EAAGotC,UAAYA,IAAc,GAAKptC,EAAGqtC,QAAUA,IAAY,EAAG,CAChE,OAAOrtC,EAAG03E,YAAY,CACpBtqC,UAAAA,EACAC,QAAAA,GACC,MAAO9R,IAcd37B,MAAMqoC,EAAQC,EAAOjoC,KAAKu7U,WACxB,MAAMx7U,EAAKC,KACX,IAAImtC,UACFA,EAASC,QACTA,GACErtC,EAGJ,GAAIA,EAAGqsF,WAAY,CACjBj/C,EAAYptC,EAAGg7E,WAAW,GAAG5tC,UAC7BC,EAAUrtC,EAAGg7E,WAAWh7E,EAAGqlG,SAAW,GAAGh4D,QAG3C,IAAI+zS,EAAQ,EACZ,EAAG,CACDh0S,EAAYtN,GAAW9gB,IAAIouB,EAAWnF,EAAQC,GAC9CmF,EAAUvN,GAAW9gB,IAAIquB,EAASpF,EAAQC,SACnCk5S,IAAU,KAAOphV,EAAGqhV,YAAYj0S,EAAWC,EAAS,CAC3D9R,aAAc,SACT,OAaT37B,UAAUqoC,EAAShoC,KAAKm9U,gBACtBn9U,KAAK04D,MAAM1wB,GAYbroC,cAAcqoC,EAAShoC,KAAKm9U,gBAC1Bn9U,KAAK04D,OAAO1wB,GAYdroC,SAASqY,EAAIsE,EAAUtc,MACrB,MAAMD,EAAKC,KACXD,EAAGiqF,QAAQvrC,QACXvkC,MAAMiuE,UAAS,CAACqrI,EAAMtjN,IAAU8H,EAAGnR,KAAKyV,EAASk3M,EAAKt5L,KAAMhqB,KAC5D,GAAInQ,EAAGikB,QAAU,EAAG,CAClBjkB,EAAGwtB,QAAQ,iBACXxtB,EAAGm2F,gBAGPv2F,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,KACX,IAAKmwB,EAAM65D,QAAQhmE,MAAO,CACxBjkB,EAAG8+U,WAAa9+U,EAAG++U,uBACd,CACL/+U,EAAG8+U,WAAa,MAIlB9+U,EAAGwgV,kBACHrmU,MAAM48E,mBAAmB3mE,GAM3BkwT,mBACE,OAAOrgV,KAAK6+U,aAAe,QAAU7+U,KAAK+2F,SAI5Cp3F,iBAAiBwtC,EAAWC,EAASi0S,EAAc,OACjD,MAAMthV,EAAKC,KAEX,GAAIotC,GAAWD,EAAYC,IAAY,EAAG,CACxCA,EAAU,KAEZD,EAAYA,GAAaptC,EAAGotC,UAC5BC,EAAUA,GAAWvN,GAAW9gB,IAAIouB,EAAWptC,EAAGq9U,YAAar9U,EAAG+7U,UAClE,OAAO/7U,EAAGg/U,YAAcsC,EAAc,CACpCl0S,UAAWptC,EAAGuhV,UAAUn0S,EAAW,MAAOptC,EAAGg/U,WAAah/U,EAAG+7U,SAAW/7U,EAAGkoC,KAAM,GACjFmF,QAASrtC,EAAGwhV,SAASn0S,EAAS,MAAOrtC,EAAGg/U,WAAah/U,EAAG+7U,SAAW/7U,EAAGkoC,KAAM,IAC1E,CACFkF,UAAWA,EACXC,QAASA,GAObD,gBAEE,OAAOntC,KAAKwhV,SAAWxhV,KAAKsrC,MAAQ,IAAI98B,KAAKxO,KAAKsrC,MAAM6B,WAAa,MAEvEA,cAAc3kB,GACZxoB,KAAKwhV,OAAS3hT,GAAW7zB,MAAMwc,GAMjC4kB,cACE,OAAOptC,KAAKyhV,OAASzhV,KAAKomC,KAAO,IAAI53B,KAAKxO,KAAKomC,KAAKgH,SAAW,MAEjEA,YAAY1pB,GACV,GAAIA,EAAK1jB,KAAKyhV,KAAO5hT,GAAW7zB,MAAM0X,GAGxCooT,cACE,OAAO9rU,KAAK0hV,SAGdC,YACE,OAAO3hV,KAAK4hV,OASdjiV,UAAU68B,EAAMqlT,EAAiB3D,EAAgB4D,GAC/CD,EAAkBA,IAAoB,MACtC,MAAM9hV,EAAKC,KACT02C,EAAamrS,EAAkBhiT,GAAWtwB,MAAMxP,EAAGotC,WAAa,KAChEP,EAAYk1S,GAAQ/hV,EAAGu/U,oBACvBr3S,EAAOi2S,IAAmB2D,EAAkB9hV,EAAGm+U,eAAiBn+U,EAAG+7U,UACnExtS,EAAO,CAAC/uC,EAAOqtC,IAAcx4B,KAAK+oB,MAAM59B,EAAQqtC,GAAaA,EAC/D,GAAIi1S,EAAiB,CACnB,MAAME,EAAkBzzS,EAAKzO,GAAW6K,KAAKgM,EAAYla,EAAMyL,GAAO2E,GAEtE,OAAO/M,GAAW9gB,IAAI23B,EAAYqrS,EAAiB95S,EAAM,OAE3D,MAAM4E,EAAKhN,GAAWtwB,MAAMitB,GAC5B,GAAIyL,IAAS,OAAQ,CACnB,MAAMzK,EAAMqP,EAAGzN,UAAY,EACzBsvI,EAAW3uK,EAAG6qC,cAAgB,EAChC/K,GAAW9gB,IAAI8gB,GAAW2I,QAAQqE,EAAI,MAAO,OAAQrP,GAAOkxI,EAAWA,EAAWlxI,IAAQ,EAAIkxI,EAAWlxI,GAAM,MAAO,OAEtH,GAAIqP,EAAGzN,WAAasvI,GAAY7hI,EAAGz/B,aAAe,GAAI,CACpDyyB,GAAW9gB,IAAI8tB,EAAI,EAAG,OAAQ,YAE3B,CAELhN,GAAW2I,QAAQqE,EAAI5E,EAAM,OAE7B,MAAMq0P,EAAW,CAAC,MAAO,QAAQ1wR,SAASq8B,GAAQ,EAAI,EACpD+5S,EAAU/5S,IAAS,MAAQ,OAASA,EACpCg6S,EAAe3zS,EAAKzO,GAAWnuB,IAAIm7B,EAAIm1S,GAAW1lD,EAAU1vP,GAAa0vP,EAC3Ez8P,GAAWvuB,IAAIu7B,EAAIm1S,EAASC,GAE9B,OAAOp1S,EAMTltC,UAAU68B,EAAMka,EAAYwnS,EAAiBl+U,KAAKk+U,eAAgBtxS,EAAY5sC,KAAKs/U,qBAAuB,GACxG,MAAMv/U,EAAKC,KACT6sC,EAAKhN,GAAWtwB,MAAMitB,GACxBka,EAAa7W,GAAWtwB,MAAMmnC,GAAc32C,EAAGotC,WAC/C,OAAQ+wS,GACN,IAAK,OACH,CACEr+S,GAAW2I,QAAQqE,EAAI,MAAO,OAC9B,IAAIq1S,EAAyBr1S,EAAGzN,SAAWr/B,EAAG6qC,aAC5CpmB,EACF,GAAI09T,EAAyB,EAAG,CAC9BA,EAAyB,EAAIA,EAE/B,GAAI9tU,KAAKkxB,MAAM48S,EAAyB,KAAO,EAAG,CAChD19T,EAAQ,EAAI09T,MACP,CACL19T,GAAS09T,EAEX,OAAOriT,GAAW9gB,IAAI8tB,EAAIroB,EAAO,MAAO,OAE5C,IAAK,QACH,CACE,MAAM29T,EAAYtiT,GAAW6K,KAAKgM,EAAY7J,EAAI,SAAWhN,GAAWqI,GAAG,QAAS2E,EAAGzN,SAAWS,GAAWwI,YAAYwE,IAEvHu1S,EAAgBhuU,KAAKkxB,MAAM68S,EAAYv1S,GAAaA,EACtD,OAAO/M,GAAW9gB,IAAI23B,EAAY0rS,EAAe,QAAS,OAE9D,IAAK,UACHviT,GAAW2I,QAAQqE,EAAI,QAAS,OAChC,OAAOhN,GAAW9gB,IAAI8tB,EAAI,EAAIA,EAAG3/B,WAAa,EAAG,QAAS,OAC5D,QACE,CACE,MAAMob,EAAWuX,GAAWqI,GAAGg2S,EAAgBr+S,GAAW6K,KAAKgM,EAAY7J,IAEzEiC,EAASjP,GAAWqI,GAAGg2S,EAAgBxnS,EAAWtZ,oBAAsByP,EAAGzP,oBAAqB,UAEhG2kT,EAAkB3tU,KAAKkxB,OAAOhd,EAAWwmB,GAAUlC,GAAaA,EAGlE,OAAO/M,GAAW9gB,IAAI23B,EAAYqrS,EAAkBjzS,EAAQovS,EAAgB,SAKpFv+U,SAAS68B,EAAMqlT,EAAiB3D,EAAgBtxS,GAC9C,MAAM7sC,EAAKC,KACX6hV,EAAkBA,IAAoB,MACtCj1S,EAAYA,IAAci1S,EAAkB9hV,EAAGu/U,oBAAsB,GACrE,MAAMr3S,EAAOi2S,IAAmB2D,EAAkB9hV,EAAGm+U,eAAiBn+U,EAAG+7U,UACvEjvS,EAAKhN,GAAWtwB,MAAMitB,GACxB,IAAI6lT,EAAS,MACb,OAAQp6S,GACN,IAAK,SACHo6S,GAAUxiT,GAAWyiT,UAAUz1S,EAAI,UACnC,MACF,IAAK,OACHw1S,GAAUxiT,GAAWyiT,UAAUz1S,EAAI,QACnC,MACF,IAAK,MACL,IAAK,OACHw1S,GAAUxiT,GAAWyiT,UAAUz1S,EAAI,OACnC,MACF,IAAK,OACHhN,GAAW2I,QAAQqE,EAAI,MAAO,OAC9Bw1S,EAASx1S,EAAGzN,WAAar/B,EAAG6qC,eAAiB/K,GAAW2L,QAAQqB,EAAIrQ,GACpE,MACF,IAAK,QACHqD,GAAW2I,QAAQqE,EAAI,MAAO,OAC9Bw1S,EAASx1S,EAAG1/B,YAAc,IAAM0yB,GAAW2L,QAAQqB,EAAIrQ,GACvD,MACF,IAAK,UACHqD,GAAW2I,QAAQqE,EAAI,MAAO,OAC9Bw1S,EAASx1S,EAAG3/B,WAAa,IAAM,GAAK2/B,EAAG1/B,YAAc,IAAM0yB,GAAW2L,QAAQqB,EAAIrQ,GAClF,MACF,IAAK,OACHqD,GAAW2I,QAAQqE,EAAI,MAAO,OAC9Bw1S,EAASx1S,EAAG3/B,aAAe,GAAK2/B,EAAG1/B,YAAc,IAAM0yB,GAAW2L,QAAQqB,EAAIrQ,GAC9E,MAEJ,GAAI6lT,EAAQ,CACV,OAAOxiT,GAAWssE,QAAQt/D,EAAI5E,EAAM2E,EAAW7sC,EAAG6qC,cAEpD,OAAOiC,EAITqpC,cACE,OAAOl2E,KAAKuiV,SAEdrsQ,YAAYA,GACV,MAAMn2E,EAAKC,KACXD,EAAGwiV,SAAWrsQ,EACdn2E,EAAG8+U,YAAc3oQ,EACjB,IAAKn2E,EAAGyd,cAAe,CACrBzd,EAAGotC,UAAYptC,EAAGigV,qBAClBjgV,EAAGqtC,QAAUrtC,EAAGkgV,mBAChBlgV,EAAG2/U,wBACH3/U,EAAGwtB,QAAQ,kBAIf5tB,iBAAiBwtC,EAAWC,EAASnF,GACnC,MAAMiuC,QACJA,GACEl2E,KACJ,GAAIk2E,EAAS,CACX,OAAOj4E,OAAO6I,QAAQovE,GAASvuE,MAAK,EAAE66U,EAAa5U,MACjD,IAAKA,EAAM,CACT,OAAO,MAET,MAAM5oT,KACJA,EAAIutB,GACJA,GACEq7R,EAGJ,GAAI/tS,GAAW+5C,aAAa,MAAO3xC,IAAS,GAAKpI,GAAW4iT,cAAcD,KAAiBv6S,EAAM,CAC/F,GAAIjjB,EAAM,CACR6a,GAAWvuB,IAAI67B,EAAWq1S,EAAax9T,GAEzC,GAAIutB,EAAI,CACN,IAAImwS,EAAWz6S,EAEf,GAAIA,IAAS,MAAO,CAClBy6S,EAAW,OAIb7iT,GAAWvuB,IAAI87B,EAAS,CACtBztC,CAAC+iV,GAAW7iT,GAAWnuB,IAAI07B,EAASs1S,GAAY,EAChD/iV,CAAC6iV,GAAcjwS,KAMrB,GAAI1S,GAAW+5C,aAAa4oQ,EAAav6S,IAAS,EAAG,CACnD,MAAM06S,EAAWH,IAAgB,MAAQr1S,EAAU/N,SAAWS,GAAWnuB,IAAIy7B,EAAWq1S,GACxF,GAAIx9T,GAAQ29T,EAAW39T,GAAQutB,GAAMowS,GAAYpwS,EAAI,CACnD,OAAO,UAKf,OAAO,MAGT5yC,gBACE1B,OAAO6I,QAAQ9G,KAAKk2E,SAASl3E,SAAQ,EAAEipC,EAAM2lS,MAC3C,GAAIA,EAAM,CACR,MAAM5oT,KACJA,EAAIutB,GACJA,GACEq7R,EAMJA,EAAKgV,aAAe/iT,GAAWgjT,uBAAuB56S,EAAMpI,GAAW4iT,cAAcx6S,KAAUsK,EAAKvtB,GAEpG4oT,EAAKkV,iBAAmBjjT,GAAWgjT,uBAAuB56S,EAAMpI,GAAW4iT,cAAcx6S,KAAUsK,EAAKvtB,EAAO,GAE/G4oT,EAAKh0R,OAAS50B,EAAOA,GAAQ4oT,EAAKgV,aAAe,OAuBvDjjV,sBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAKy3E,YAAYz3E,OAGrBL,eAAeojV,EAAeC,EAAa/6S,EAAOjoC,KAAKioC,KAAM2E,EAAY5sC,KAAK4sC,WAC5E,MAAM7sC,EAAKC,KACTogV,EAAQ,GACR6C,EAAgB/iV,QAAQH,EAAGm2E,SAC7B,IAAIgtQ,EACFC,EACAC,EACAz4S,EAAU,GACVwC,UACEA,EAASC,QACTA,GACErtC,EAAG4/U,iBAAiBoD,EAAeC,GACzCjjV,EAAGq/U,UAAY,GACf,GAAI6D,EAAe,CACjBljV,EAAGsjV,gBAEL,MAAOl2S,EAAYC,EAAS,CAC1B81S,EAAcrjT,GAAWssE,QAAQh/D,EAAWlF,EAAM2E,EAAW7sC,EAAG6qC,cAChE,IAAK7qC,EAAGg/U,YAAcmE,EAAc91S,EAAS,CAC3C81S,EAAc91S,EAIhB,GAAInF,IAAS,QAAU2E,EAAY,GAAKwzS,EAAMthV,OAAS,GAAK6rC,IAAY,EAAG,CACzE,MAAMj/B,EAAO00U,EAAMA,EAAMthV,OAAS,GAClC6rC,GAAWj/B,EAAKyhC,UAAU//B,WAAaw/B,GAAa,GAAKlhC,EAAK0hC,QAAQhgC,WACtE,GAAIu9B,IAAY,EAAG,CAEjBu4S,EAAcrjT,GAAW9gB,IAAImkU,EAAav4S,EAAS,SAGvDy4S,EAAa,MACb,GAAIH,EAAe,CACjBE,EAAU,IAAI30U,KAAK00U,EAAYlzU,WAC/BozU,EAAarjV,EAAGujV,iBAAiBn2S,EAAW+1S,EAAaj7S,OACpD,CACLk7S,EAAUD,EAEZ,IAAKE,EAAY,CACfhD,EAAM5hV,KAAK,CACTmM,GAAIy1U,EAAMthV,OAAS,EACnBquC,UAAAA,EACAC,QAAS81S,IAEXnjV,EAAGq/U,UAAUjyS,EAAUn9B,WAAaowU,EAAMthV,OAAS,EAErDquC,EAAYg2S,EAEd,OAAO/C,EAUTmD,0BACE,MAAMxjV,EAAKC,KACX,OAAOD,EAAGsgV,aAAetgV,EAAGo/U,eAAiBp/U,EAAGm/U,iBAAmBn/U,EAAGikB,MAOxErkB,gBAAgB68B,GACd,IAAIgnT,EAAeC,EACnB,MAAM1jV,EAAKC,KACTogV,EAAQrgV,EAAGkyE,QACXswP,GAAUihB,GAAiBC,EAAiBjnT,EAAKxsB,WAAa,MAAQyzU,SAAwB,OAAS,EAAIA,EAAe58U,KAAK21B,MAAW,MAAQgnT,SAAuB,EAAIA,EAAgBhnT,EAC/L,IAAI/Y,EAAQ,EACVC,EAAM08T,EAAMthV,OAAS,EACrB8kB,EACA4vM,EACA+pE,EACA4lD,EAEF,IAAK/C,EAAMthV,QAAUyjU,EAAS6d,EAAM,GAAG3Z,aAAelE,EAAS6d,EAAM18T,GAAK8+S,UAAW,CACnF,OAAQ,EAEV,GAAIziU,EAAGsgV,aAAc,CA6BnB,MAAO58T,EAAQC,EAAK,CAClBE,EAASH,EAAQC,EAAM,GAAK,EAC5B,GAAI6+S,EAAS6d,EAAMx8T,GAAQ4+S,UAAW,CACpC/+S,EAAQG,EAAS,OACZ,GAAI2+S,EAAS6d,EAAMx8T,GAAQ6iT,YAAa,CAC7C/iT,EAAME,EAAS,MACV,CACLH,EAAQG,GAGZ4vM,EAAO4sH,EAAM38T,GACb85Q,EAAY/pE,EAAKizG,YAEjB,GAAIlE,EAAShlC,EAAW,CACtB4lD,EAAU3vH,EAAKgvG,UACf/+S,IAAU8+S,EAAShlC,IAAc4lD,EAAU5lD,GAE7C,OAAOnpR,KAAKuU,IAAIvU,KAAKC,IAAIoP,EAAO1jB,EAAGm/U,kBAAmBn/U,EAAGo/U,oBACpD,CACL,IAAK,IAAIvgV,EAAI,EAAGA,GAAK8kB,EAAK9kB,IAAK,CAC7BukV,EAAU/C,EAAMxhV,GAAG4jU,UACnB,GAAID,GAAU4gB,EAAS,CACrB5lD,EAAY6iD,EAAMxhV,GAAG6nU,YAErBjzG,EAAO50N,GAAK2jU,EAAShlC,GAAaglC,EAAShlC,IAAc4lD,EAAU5lD,GAAa,GAChF,OAAO/pE,KAYf7zN,gBAAgB6zN,EAAMkwH,GACpB,MAAM3jV,EAAKC,KACX,GAAIwzN,IAASzzN,EAAGo/U,eAAgB,CAC9B,OAAOp/U,EAAGqtC,QAEZ,MAAMu2S,EAAYvvU,KAAK+oB,MAAMq2L,GAC3BlrL,EAAWkrL,EAAOmwH,EAClB17T,EAAIloB,EAAGizF,MAAM2wP,GACf,IAAK17T,EAAG,CACN,OAAO,KAET,MAAMO,EAAQm7T,IAAc,EAAI5jV,EAAGi/U,cAAgB/2T,EAAEklB,UAEnDzpB,EAAMigU,IAAc5jV,EAAGikB,MAAQ,GAAKjkB,EAAGsgV,aAAetgV,EAAGk/U,YAAch3T,EAAEmlB,QAC3E,IAAI5Q,EAAOqD,GAAW9gB,IAAIyJ,EAAO8f,GAAY5kB,EAAM8E,GAAQ,eAC3D,GAAIk7T,EAAgB,CAClBlnT,EAAOz8B,EAAG2jV,EAAiB,QAAQlnT,GAErC,OAAOA,EAMT4jT,YACE,OAAOpgV,KAAKiyE,QAMdtyE,gBAAgBikV,EAAe,OAC7B,MAAM7jV,EAAKC,KACX,GAAID,EAAGikB,MAAO,CACZjkB,EAAGyhV,OAASzhV,EAAGurC,MAAM6B,UACrBptC,EAAG0hV,KAAO1hV,EAAGqmC,KAAKgH,QAClBrtC,EAAG2hV,SAAW3hV,EAAGotC,UAAUn9B,UAC3BjQ,EAAG6hV,OAAS7hV,EAAGqtC,QAAQp9B,cAClB,CACLjQ,EAAGyhV,OAASzhV,EAAG0hV,KAAO1hV,EAAG8jV,SAAW9jV,EAAG6hV,OAAS,KAIlD,IAAKgC,EAAc,CACjB7jV,EAAGq/U,UAAY,GACfr/U,EAAGf,SAAQ,CAACw0N,EAAM50N,IAAMmB,EAAGq/U,UAAU5rH,EAAKrmL,UAAUn9B,WAAapR,KAUrEe,WAAW68B,EAAMsnT,EAAe,OAC9B,MAAM/jV,EAAKC,KACT+jV,EAAYhkV,EAAGotC,UACf62S,EAAUjkV,EAAGqtC,QAEf,GAAIrtC,EAAGsgV,aAAc,CACnB,OAAOyD,EAAejkT,GAAW+gS,mBAAmBpkS,EAAMunT,EAAWC,GAAWnkT,GAAWgM,cAAcrP,EAAMunT,EAAWC,OACrH,CACL,MAAMllV,EAASiB,EAAGkkV,WAClB,IAAI1mD,EAAW4lD,EAAS3vH,EACxB,IAAK,IAAI50N,EAAI,EAAGA,EAAIE,EAAQF,IAAK,CAC/B40N,EAAOzzN,EAAGizF,MAAMp0F,GAChB2+R,EAAY/pE,EAAKrmL,UACjBg2S,EAAU3vH,EAAKpmL,QACf,GAAI02S,GAAgBtnT,GAAQ2mT,IAAYW,GAAgBtnT,EAAO2mT,EAAS,CACtE,OAAO3mT,GAAQ+gQ,IAIrB,OAAO,MAQT59R,eAAe6oB,EAAO9E,GACpB,MAAM3jB,EAAKC,KACX,IAAK0jB,GAAOA,EAAI1T,YAAcwY,EAAMxY,UAAW,CAC7C,OAAOhQ,KAAKkkV,WAAW17T,EAAO,MAEhC,GAAIzoB,EAAGsgV,aAAc,CACnB,OAAOxgT,GAAW0/R,eAAe/2S,EAAO9E,EAAK3jB,EAAGotC,UAAWptC,EAAGqtC,SAEhE,OAAO5kB,EAAQzoB,EAAGotC,WAAazpB,EAAM3jB,EAAGqtC,SAAWrtC,EAAGokV,gBAAgB37T,KAAWzoB,EAAGokV,gBAAgBzgU,GAGtG/jB,iBAAiB0lU,GACf,MAAMtlU,EAAKC,MACT8rU,QACEA,EAAO6V,MACPA,GACE5hV,GACJ0mU,YACEA,EAAWjE,UACXA,GACE6C,EAEN,IAAKoB,IAAgBjE,EAAW,OAAO,MACvC,GAAIA,IAAciE,EAAa,CAC7B,OAAO1mU,EAAGmkV,WAAW7e,EAASl4R,UAAW,MAE3C,GAAIptC,EAAGsgV,aAAc,CACnB,OAAO7d,EAAYsJ,GAAWrF,EAAckb,EAE9C,MAAMyC,EAAYrkV,EAAGokV,gBAAgB9e,EAASl4R,WAC5Ck3S,EAAUtkV,EAAGokV,gBAAgB9e,EAASj4R,SAGxC,GAAIg3S,IAAcrkV,EAAGikB,OAAS6b,GAAW2L,QAAQ65R,EAASl4R,UAAWptC,EAAGqmC,KAAKgH,UAAYi3S,IAAY,GAAKxkT,GAAW2L,QAAQ65R,EAASj4R,QAASrtC,EAAGurC,MAAM6B,WAAY,CAClK,OAAO,MAET,OAEEs5R,EAAcqF,GAAWtJ,EAAYmf,GAErCyC,IAAcC,EAalB1kV,mBAAmBsoC,EAAM2E,EAAY,EAAG03S,EAAYhoU,EAAUtc,MAC5D,MAAM0jB,EAAM1jB,KAAKotC,QACjB,IAAIP,EAAK7sC,KAAKmtC,UACZvuC,EAAI,EACJskV,EACF,GAAIr2S,EAAKnpB,EAAK,MAAM,IAAIhT,MAAM,mCAC9B,MAAOm8B,EAAKnpB,EAAK,CACfw/T,EAAcrjT,GAAWlX,IAAIkX,GAAWssE,QAAQt/D,EAAI5E,EAAM2E,EAAW5sC,KAAK4qC,cAAelnB,GACzF4gU,EAAWz9U,KAAKyV,EAASuwB,EAAIq2S,EAAatkV,EAAGskV,GAAex/T,GAC5DmpB,EAAKq2S,EACLtkV,MAMNggV,GAAS12U,OAAS,WAiBlB,MAAMq8U,WAAyBzrT,MAC7B/qB,mBACE,MAAO,mBAETy2U,iCACE,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAE9CC,0BACE,OAAOzkV,KAAKwkV,oBAAoBv6U,KAAK,KAEvCy6U,8BACE,OAAO1kV,KAAKwkV,oBAAoBpmV,QAAO,CAACo/B,EAAKttB,KAAW2vB,GAAWwM,eAAen8B,KAAQjG,KAAK,KAEjG06U,iCACE,OAAO3kV,KAAKwkV,oBAAoBpmV,QAAO,CAACo/B,EAAKttB,IAAU2vB,GAAWwM,eAAen8B,KAAQjG,KAAK,KAWhGtK,iBAAiB2lU,EAAY4I,GAC3B,MAAMnuU,EAAKC,MACTqlU,SACEA,EAAQ9pL,SACRA,EAAQv3G,KACRA,EAAIqoS,UACJA,EAAShoS,OACTA,EAAMsmS,UACNA,GACErF,EACJn4R,EAAY+gS,GAAqB7I,EAASl4R,UAC1Cy3S,EAAU,CACRrpM,SAAAA,GAEJ,IAAIvjI,EACJ,OAAQstT,EAAWsE,WACjB,IAAK,QACH,OAAOruL,IAAa,EAAIx7I,EAAGo7B,EAAE,YAAcp7B,EAAGo7B,EAAE,oBAAqBypT,GACvE,IAAK,SACH,GAAI5gT,GAAQA,EAAKllC,OAAQ,CACvB8lV,EAAQ5gT,KAAOjkC,EAAG8kV,cAAc7gT,QAC3B,GAAImJ,EAAW,CACpBy3S,EAAQ5gT,KAAOnE,GAAWilT,WAAW33S,EAAU/N,UAEjD,OAAOr/B,EAAGo7B,EAAEogH,IAAa,EAAI,mBAAqB,4BAA6BqpM,GACjF,IAAK,UACH,GAAI5gT,GAAQA,EAAKllC,QAAU6rU,GAAaA,EAAU7rU,OAAQ,CACxD8lV,EAAQ5gT,KAAOjkC,EAAG8kV,cAAc7gT,EAAM2mS,QACjC,GAAI0B,GAAaA,EAAUvtU,OAAQ,CAExCutU,EAAUp0T,MAAK,CAACpS,EAAGye,IAAMze,EAAIye,IAC7BsgU,EAAQ5gT,KAAOjkC,EAAGglV,YAAY1Y,QACzB,GAAIl/R,EAAW,CACpBy3S,EAAQ5gT,KAAOmJ,EAAUhgC,UAE3B,OAAOpN,EAAGo7B,EAAEogH,IAAa,EAAI,oBAAsB,6BAA8BqpM,GACnF,IAAK,SACH,GAAI5gT,GAAQA,EAAKllC,QAAU6rU,GAAaA,EAAU7rU,OAAQ,CACxD8lV,EAAQ5gT,KAAOjkC,EAAG8kV,cAAc7gT,EAAM2mS,OACjC,CACLia,EAAQ5gT,KAAOmJ,EAAUhgC,UAE3B,GAAIk3B,GAAUA,EAAOvlC,OAAQ,CAE3BulC,EAAOpsB,MAAK,CAACpS,EAAGye,IAAMze,EAAIye,IAC1B,GAAI+f,EAAOvlC,OAAS,EAAG,CACrBkZ,EAAKwmB,GAASqB,GAAWmlT,kBAAkBxmT,EAAQ,OAC9C,CACLxmB,EAAKwmB,GAASqB,GAAWolT,aAAazmT,EAAQ,GAEhDomT,EAAQvgT,OAAStkC,EAAGglV,YAAY1gT,EAAQrsB,OACnC,CACL4sU,EAAQvgT,OAASxE,GAAWolT,aAAa93S,EAAUjgC,YAErD,OAAOnN,EAAGo7B,EAAEogH,IAAa,EAAI,0BAA4B,mCAAoCqpM,IAGnGjlV,qBAAqBqkC,EAAM2mS,GACzB,MAAM5qU,EAAKC,KACT4kV,EAAU,CACRxpS,SAAU,IAEd,IAAIpjC,EACJ,GAAI2yT,GAAaA,EAAU7rU,OAAQ,CAQjC8lV,EAAQxpS,SAAWr7C,EAAGglV,YAAYpa,GAAWvvR,GAAYr7C,EAAGo7B,EAAE,aAAaigB,QAE7E,GAAIpX,EAAKllC,OAAQ,CACfklC,EAAK/rB,MAAK,CAACpS,EAAGye,IAAM8kT,GAAyBI,UAAU3jU,GAAG,GAAKujU,GAAyBI,UAAUllT,GAAG,KACrG,OAAQ0f,EAAK/5B,KAAK,MAChB,KAAKlK,EAAG0kV,aACNG,EAAQ5gT,KAAOjkC,EAAGo7B,EAAE,UACpB,MACF,KAAKp7B,EAAG2kV,iBACNE,EAAQ5gT,KAAOjkC,EAAGo7B,EAAE,cACpB,MACF,KAAKp7B,EAAG4kV,oBACNC,EAAQ5gT,KAAOjkC,EAAGo7B,EAAE,kBACpB,MACF,QACE,GAAI6I,EAAKllC,OAAS,EAAG,CACnBkZ,EAAKwlB,GAAOqC,GAAWqlT,gBAAgB9b,GAAyBI,UAAUhsS,GAAK,QAC1E,CACLxlB,EAAKwlB,GAAOqC,GAAWilT,WAAW1b,GAAyBI,UAAUhsS,GAAK,IAE5EonT,EAAQ5gT,KAAOjkC,EAAGglV,YAAY/gT,EAAMhsB,IAG1C,OAAOjY,EAAGo7B,EAAE,gBAAiBypT,GAK/BjlV,mBAAmBkS,EAAOmG,GACxB,GAAIA,EAAI,CACNnG,EAAQA,EAAMhI,IAAImO,GAEpB,OAAOnG,EAAM5H,KAAK,MAAMO,QAAQ,cAAexK,KAAKm7B,EAAE,cAG1DopT,GAAiBr8U,OAAS,mBAU1B,IAAIi9U,GAAwBj4T,GAAU,MAAMi4T,UAA6Bj4T,EACvEnf,mBACE,MAAO,uBAETpO,uBACEua,MAAMuB,iBACN,MAAM1b,EAAKC,KACTolV,EAAgBrlV,EAAG8/D,QAAU9/D,EAAGk2N,MAChC1qH,QACEA,GACE65O,EACNA,EAAcC,mBAAmB7mV,KAAKuB,GAEtC,GAAIwrG,EAAS,CACXxrG,EAAGulV,gBAAgB/5O,GACnBxrG,EAAGwlV,sBAAsBh6O,EAAQ+pM,eACjCv1S,EAAGylV,mBAAmBj6O,EAAQ8pM,YAC9Bt1S,EAAGikU,wBAAwBz4N,EAAQ4pM,iBACnCp1S,EAAG0lV,wBAAwBl6O,EAAQ6pM,iBACnCr1S,EAAG2lV,6BAA6Bn6O,EAAQgqM,uBAQ5C51S,gBAAgB4rG,GACdvrG,KAAKupE,gBAAgB,WACrBvpE,KAAKm6U,SAAW5uO,EAQlB5rG,mBAAmBisE,GACjB5rE,KAAKupE,gBAAgB,cAQvB5pE,sBAAsBisE,GACpB5rE,KAAKupE,gBAAgB,iBAQvB5pE,wBAAwBisE,GACtB5rE,KAAKupE,gBAAgB,mBAQvB5pE,wBAAwBisE,GACtB5rE,KAAKupE,gBAAgB,mBASvB5pE,6BAA6BisE,GAC3B5rE,KAAKupE,gBAAgB,wBAEvBgiC,cACE,OAAOvrG,KAAKm6U,SAEd5kC,2BACE,OAAOv1S,KAAKurG,QAAQgqM,qBAEtBJ,sBACE,OAAOn1S,KAAKurG,QAAQ4pM,gBAEtBG,oBACE,OAAOt1S,KAAKurG,QAAQ+pM,cAEtBD,iBACE,OAAOr1S,KAAKurG,QAAQ8pM,WAEtBD,sBACE,OAAOp1S,KAAKurG,QAAQ6pM,kBAaxB,IAAIuwC,GAAmBz4T,GAAU,MAAMy4T,UAAyBz4T,GAAU7R,IACxEtN,mBACE,MAAO,kBAGTuN,wBACE,MAAO,CAAC,iBAEV9b,0BACE,MAAO,CACLomV,kBAAmBhM,GAkBnBruO,QAAS,GAMTs6O,cAAe,KAEfR,mBAAoB,IAIxB1lV,eAAewY,GAEbnY,KAAKme,UAAU,WACfjE,MAAM0D,eAAezF,GAOvBxY,cAAc4rG,EAASu6O,GACrB,MAAM/lV,EAAKC,MACT+lV,kBACEA,EAAiBC,iBACjBA,GACEjmV,EAAGsQ,YACTtQ,EAAGkmV,iBAAmB,IAAIpnU,IAC1B,GAAI0sF,EAAS,CAEXxrG,EAAGmmV,sBAAwB,KAC3B,IAAK36O,EAAQ98B,QAAS,CAepB,GAAI1uE,EAAGyd,cAAe,CAEpBzd,EAAGo6U,SAAW5uO,EAEd,MAAM2wJ,YACJA,GACEn8P,EAEJ,GAAIm8P,EAAa,CACf,MAAM41D,cACJA,GACE51D,EACJ,IAAK,MAAM7hL,KAAa0rQ,EAAmB,CACzC,GAAI7pF,EAAY7hL,GAAY,CAG1Bt6E,EAAGs6E,GAAa6hL,EAAY7hL,GAI5B,IAAKy3O,EAAe,QACX51D,EAAY7hL,MAO3Bt6E,EAAGoe,UAAU,iBAGb,IAAK,MAAMq6S,KAAYwtB,EAAkB,CACvCjmV,EAAGoe,UAAUq6S,IAGjB,MAAMnjB,WACJA,GACE9pM,EAEJ,GAAI8pM,IAAeA,EAAW8wC,mBAAqB9wC,EAAWznM,WAAaynM,EAAWrxR,MAAO,CAC3FqxR,EAAWznM,SAAW,MACtB7tG,EAAGqmV,cAAgB,KAGrB76O,EAAUxrG,EAAGsmV,gBAAkB,IAAItmV,EAAG6lV,kBAAkBr6O,UAEjDxrG,EAAGo6U,SAGZp6U,EAAGmmV,sBAAwB,MAE7B,OAAO36O,EAUT5rG,cAAc4rG,EAASu6O,GACrB,MAAM/lV,EAAKC,MACTsmV,iBACEA,EAAgBpqF,YAChBA,GACEn8P,EACNA,EAAGwpE,gBAAgB,0BAEZxpE,EAAGwmV,aACV,GAAIh7O,EAAS,CACX+6O,EAAiBhqU,QAAUvc,EAC3BwrG,EAAQp8E,GAAGm3T,GAEX,GAAI/6O,EAAQumN,cAAe,CACzB/xT,EAAGm8P,YAAc3wJ,OAGd,GAAI2wJ,EAAa,CACpBA,EAAY3wJ,QAAUA,EAGtBxrG,EAAGm8P,YAAcA,EAGnBn8P,EAAGslV,mBAAmBrmV,SAAQwnV,GAAcA,EAAWlB,gBAAgB/5O,KAEvE,IAAK,MAAMlxB,KAAat6E,EAAGsQ,YAAY01U,kBAAmB,CACxDhmV,EAAGs6E,GAAakxB,EAAQlxB,GAG1B,GAAIt6E,EAAGqmV,cAAe,CAEpB76O,EAAQ8pM,WAAWznM,SAAW,KAC9BrC,EAAQ8pM,WAAWxnM,QAGvB9tG,EAAGwtB,QAAQ,gBAAiB,CAC1Bg+E,QAAAA,IAIJ5rG,kBAAkBu8P,GAGhB,GAAIl8P,KAAKkmV,sBAAuB,CAC9BlmV,KAAKumV,aAAerqF,EAAY41D,cAAgB51D,EAAcj+P,OAAOmZ,OAAO,GAAI8kP,OAC3E,CACL,OAAOhiP,MAAMusU,kBAAkBvqF,IAInCv8P,qBACE,MAAMI,EAAKC,KAEXD,EAAG22R,aAAY,KACb,GAAI32R,EAAGkmV,iBAAiB10U,KAAM,CAC5BxR,EAAGkmV,iBAAiBjnV,SAAQwvB,GAAYA,MACxCzuB,EAAGkmV,iBAAiBxnS,WAErB,KAAM,KAAM,sBAQjB9+C,iBAAiB6uB,GAEf,GAAIxuB,KAAK61S,cAAe,CACtBrnR,QACK,CACLxuB,KAAKimV,iBAAiBlnU,IAAIyP,IAO9BqnR,oBACE,IAAI6wC,EAAuBzwC,EAE3B,OAAO/1S,SAASwmV,GAAyBzwC,EAAgBj2S,KAAKurG,SAASsqM,iBAAmB,MAAQ6wC,SAA+B,OAAS,EAAIA,EAAsB7/U,KAAKovS,IAK3Kt2S,YACEua,MAAM8B,YACN,GAAIhc,KAAK6lV,cAAe,EAErB7lV,KAAKurG,QAAQrvF,aAAelc,KAAKurG,QAAQxvF,WAI9C4qU,oBACE,MAAMZ,kBACJA,GACE/lV,KAAKqQ,YACT,OAAO01U,EAAkBl8U,KAAIwwE,GAAar6E,KAAKq6E,KAEjD0rQ,+BACE,OAAO9nV,OAAOD,KAAKgC,KAAK2mV,eAE1BX,8BACE,OAAOhmV,KAAK+lV,kBAAkBt6U,QAAO,CAACU,EAAQkuE,KAC5C,MAAMm+O,SACJA,GACEx4T,KAAK2mV,cAActsQ,GACvB,GAAIm+O,EAAU,CACZrsT,EAAO3N,KAAKg6T,GAEd,OAAOrsT,IACN,IAELxM,0BAA0BmW,EAAKqK,GAC7B,MAAMwmU,cACJA,GACE7wU,EACJ,GAAI6wU,EAAe,CACjB,MAAML,EAAmB,CACrB7hV,KAAM,kBACN21U,UAAW,qBACXh1P,OAAQ,0BAEVwhQ,EAAe,CACbN,iBAAAA,GAEJ,IAAIO,EAEJ,IAAK,MAAMxsQ,KAAassQ,EAAe,CACrC,MAAMnuB,SACJA,GACEmuB,EAActsQ,GAElBusQ,EAAavsQ,GAAausQ,EAAapuB,GAAY,KAEnD,GAAIA,EAAU,CAEZv6T,OAAOoB,eAAe8gB,EAAKD,MAAMrS,UAAW2qT,EAAU,CACpDh5T,aAAc,KAEdG,MACE,IAAImnV,EAEJ,OAAQA,EAAwB9mV,KAAKurG,QAAQlxB,MAAgB,MAAQysQ,SAA+B,OAAS,EAAIA,EAAsB70Q,WAI3IjyE,KAAK+mV,kBAAkB1sQ,EAAWm+O,EAAUquB,EAAkB1mU,GAEhEngB,KAAKgnV,sBAAsB7mU,EAAMk6D,EAAWssQ,EAActsQ,GAAYisQ,GAEtEO,EAAmBruB,EAGrBx4T,KAAK4hB,aAAazB,EAAMymU,IAG5BjnV,yBAAyB06E,EAAWm+O,EAAUquB,EAAkB1mU,GAI9DA,EAAKD,MAAMrS,UAAU,SAASzD,EAAaK,WAAW+tT,MAAe,SAAUt+R,GAC7E,MAAMqxE,QACJA,GACEvrG,KAGJ6mV,GAAoB7mV,KAAKme,UAAU0oU,GACnC,GAAI7mV,KAAKkmV,sBAAuB,CAG9B36O,EAAQ,GAAGitN,SAAkBt+R,MACxB,CAELqxE,EAAQlxB,GAAWngD,KAAOA,IAIhCv6B,6BAA6BwgB,EAAMk6D,GAAWhtD,UAC5CA,GACCi5T,GACD,MACIz4U,UAAWo5U,GACT9mU,EAAKD,MACTgnU,EAAe98U,EAAaK,WAAW4vE,GAEzCisQ,EAAiB,GAAGjsQ,WAAqB,UAAUzO,MACjDA,IAEA5rE,KAAKq6E,GAAazO,GAGpBq7Q,EAAS,SAASC,KAAkB,SAAUt7Q,EAAOq0H,GACnD,IAAIhF,EACJ,MAAMl7L,EAAKC,MACTurG,QACEA,GACExrG,EACJonV,GAAgBlsJ,EAASrvH,KAAW,MAAQqvH,SAAgB,OAAS,EAAIA,EAAO1vF,QAClF,GAAIxrG,EAAGmmV,sBAAuB,CAG5B,GAAIiB,GAAgBA,EAAaC,eAAgB,CAC/CrnV,EAAGsmV,eAAiBc,EAKtB57O,EAAQlxB,GAAazO,EACrB,OAGF,IAAK7rE,EAAGsnV,oBAAqB,CAC3B,GAAI97O,EAAQlxB,KAAezO,EAAO,CAChC2/B,EAAQ,MAAM27O,KAAgBt7Q,GAC9BA,EAAQ2/B,EAAQlxB,IAKpB,GAAIzO,IAAUq0H,EAAU,CACtB,GAAI5yK,EAAW,CACbA,EAAU/Q,QAAUvc,EACpBstB,EAAU5oB,KAAO,GAAG41E,aACpBt6E,EAAGwpE,gBAAgBl8C,EAAU5oB,MAC7BmnE,EAAMz8C,GAAG9B,GAGXttB,EAAGslV,mBAAmBrmV,SAAQwnV,IAC5B,IAAIc,GACHA,EAAcd,EAAW,WAAWU,QAAqB,MAAQI,SAAqB,OAAS,EAAIA,EAAYzgV,KAAK2/U,EAAY56Q,MAGrI,OAAOA,GAGXjsE,uBAAuBwwB,GA0BrB,OAAOnwB,KAAKutB,QAAQ,aAAc7uB,EAAeA,EAAe,CAC9D6sG,QAASp7E,EAAMpxB,QACdoxB,GAAQ,GAAI,CACbpxB,OAAQiB,QAOZwiE,qBAoBF,MAAM+kR,WAAyBlsU,GAC7BwG,2BACE,MAAO,CACL2lU,qBAAsB,GACtBC,uBAAwB,KACxBC,4BAA6B,MAGjC/nV,WAAWw6S,GACT,GAAIA,EAAU,QACLn6S,KAAKwnV,qBAAqBrtC,EAASxvS,QACrC,CACL3K,KAAKwnV,qBAAuB,IAYhC7nV,YAAYsuB,EAAQksR,GAElB,OAAOn6S,KAAKwnV,qBAAqBrtC,EAASxvS,IAAM3K,KAAK2nV,oBAAoB15T,GAS3EtuB,oBAAoBsuB,GAClB,MAAM,IAAIvd,MAAM,0BAGpB62U,GAAiBr/U,OAAS,mBAW1B,IAAI0/U,GAAa16T,GAAU,MAAM06T,UAAmB16T,GAAU7R,IAC5DtN,mBACE,MAAO,YAET8T,2BACE,MAAO,CACLgmU,UAAW,MACXv9L,SAAU,SACVw9L,gBAAiB,YACjBC,eAAgB,gBAGpBpoV,YAAYkG,EAAGye,GACb,OAAOtkB,KAAKiiP,QAAUp8O,EAAEuY,QAAUkG,EAAElG,MAAQ,KAG9Cze,kBAAkBsuB,EAAQ+5T,GACxB,MAAMjoV,EAAKC,MACT6nV,UACEA,EAASv9L,SACTA,GACEvqJ,EACN,IAAIkoV,EAAMC,EAAgBC,EAAS73S,EACnC,IAAK,IAAI1xC,EAAI,EAAGwwB,EAAInB,EAAOnvB,OAAQF,EAAIwwB,EAAGxwB,IAAK,CAC7CspV,EAAiBj6T,EAAOrvB,GACxBqpV,EAAOloV,EAAGqoV,cAAcn6T,EAAQi6T,GAChCC,EAAUpoV,EAAGsoV,WAAWp6T,EAAQrvB,GAChC,GAAIupV,EAAQrpV,OAAS,EAAG,CACtBopV,EAAeL,GAAaI,EAAKz/T,MACjC0/T,EAAe59L,GAAY29L,EAAKvkU,IAAMukU,EAAKz/T,MAE3C8nB,EAAI,EACJ,MAAOA,EAAI63S,EAAQrpV,OAAS,GAAKqpV,EAAQ73S,EAAI,GAAG9nB,MAAQ0/T,EAAe1/T,QAAU,EAAG,CAClF8nB,IAGF,MAAMg4S,EAAWvoV,EAAGqoV,cAAcn6T,EAAQk6T,EAAQ73S,IAClD,GAAIg4S,GAAYA,EAAS9/T,MAAQ,GAAK,CACpC2/T,EAAQrpV,OAASwxC,GAGrB,MAAMi4S,EAAcJ,EAAQrpV,OAC1B0pV,GAAYP,EAAKvkU,IAAMukU,EAAKz/T,OAAS+/T,EAEvC,IAAKj4S,EAAI,EAAGA,EAAIi4S,EAAaj4S,IAAK,CAChC03S,EAAeG,EAAQ73S,GAAIA,EAAG23S,EAAMO,GAEtC5pV,GAAK2pV,EAAc,EAErB,OAAO,EAET5oV,cAAcsuB,EAAQkC,GACpB,MAAM43T,eACFA,EAAcD,gBACdA,EAAeD,UACfA,EAASv9L,SACTA,GACEtqJ,KACJyoV,EAAmBzoV,KAAK0oV,0BAA0Bz6T,EAAQkC,GAC5D,IAAIvxB,EACJ,GAAI6pV,EAAiB3pV,SAAW,EAAG,CACjC,MAAO,CACL0pB,MAAO,EACP9E,IAAK,GAGT,IAAK9kB,EAAI,EAAGA,EAAI6pV,EAAiB3pV,OAAQF,IAAK,CAC5C,MAAM+S,EAAO82U,EAAiB7pV,GAC5B+pV,EAAab,KAAmBn2U,EAAOm2U,EAAkBD,EACzDe,EAAYb,KAAkBp2U,EAAOo2U,EAAiBz9L,EACxD,GAAI1rJ,IAAM,GAAK+S,EAAKg3U,GAAc,EAAG,CACnC,MAAO,CACLngU,MAAO,EACP9E,IAAK/R,EAAKg3U,QAEP,CACL,GAAIh3U,EAAKg3U,GAAch3U,EAAKi3U,IAAchqV,EAAI6pV,EAAiB3pV,OAAS,EAAI2pV,EAAiB7pV,EAAI,GAAG+pV,GAAc,GAAI,CACpH,MAAO,CACLngU,MAAO7W,EAAKg3U,GAAch3U,EAAKi3U,GAC/BllU,IAAK9kB,EAAI6pV,EAAiB3pV,OAAS,EAAI2pV,EAAiB7pV,EAAI,GAAG+pV,GAAc,KAKrF,OAAO,MAEThpV,0BAA0BsuB,EAAQkC,GAChC,MAAM3H,EAAQ2H,EAAM3H,MAClB9E,EAAMyM,EAAMzM,IACZmlU,EAAc,GAChB,IAAK,IAAIjqV,EAAI,EAAGwwB,EAAInB,EAAOxoB,QAAQ0qB,GAAQvxB,EAAIwwB,EAAGxwB,IAAK,CACrD,MAAM+S,EAAOsc,EAAOrvB,GACpB,GAAIoB,KAAK8oV,YAAYn3U,EAAMwe,IAAU0P,GAAW0/R,eAAe/2S,EAAO9E,EAAK/R,EAAK6W,MAAO7W,EAAK+R,KAAM,CAChGmlU,EAAYrqV,KAAKmT,IAGrBk3U,EAAY5wU,KAAKjY,KAAK+oV,gBAAgB/zU,KAAKhV,OAC3C,OAAO6oV,EAETlpV,gBAAgBqpB,EAAIC,GAClB,MAAM4+T,UACJA,GACE7nV,KACJ,OAAOgpB,EAAG6+T,GAAa5+T,EAAG4+T,GAE5BloV,WAAWsuB,EAAQgoP,GACjB,MAAMpyG,EAAa51I,EAAOgoP,GACxB9pQ,EAAS,CAAC03J,GACZ,GAAIoyG,GAAchoP,EAAOnvB,OAAS,EAAG,CACnC,OAAOqN,EAET,IAAIqc,MACFA,EAAK9E,IACLA,GACEmgJ,EACJ,IAAK,IAAIjlK,EAAIq3Q,EAAa,EAAG7mP,EAAInB,EAAOnvB,OAAQF,EAAIwwB,EAAGxwB,IAAK,CAC1D,MAAM+S,EAAOsc,EAAOrvB,GACpB,IAAKoB,KAAK8oV,YAAYn3U,EAAMkyJ,KAAgBhkI,GAAW0/R,eAAe/2S,EAAO9E,EAAK/R,EAAK6W,MAAO7W,EAAK+R,KAAM,CACvG,MAEFvX,EAAO3N,KAAKmT,GACZ6W,EAAQqX,GAAWxrB,IAAImU,EAAO7W,EAAK6W,OACnC9E,EAAMmc,GAAWlX,IAAIhX,EAAK+R,IAAKA,GAEjC,OAAOvX,IAeX,MAAM68U,WAA6BzB,GAAiB/mU,MAAMonU,KACxD75U,mBACE,MAAO,uBAETvO,0BACE,MAAO,CACLqN,KAAM,QAIVlN,oBAAoBsuB,GAClB,MAAM9hB,EAASnM,KAAKipV,kBAAkBh7T,GAAQ,CAACkC,EAAOmgB,EAAG23S,EAAMO,KAC7Dr4T,EAAMlpB,OAASuhV,EACfr4T,EAAMglB,IAAM8yS,EAAKz/T,MAAQ8nB,EAAIk4S,KAE/Bv6T,EAAOjvB,SAAQmxB,IACblyB,OAAOmZ,OAAO+Y,EAAOnwB,KAAKynV,uBAAuB5gV,KAAK7G,KAAK0nV,6BAA+B1nV,KAAMmwB,EAAMglB,IAAKhlB,EAAMlpB,OAAQkpB,EAAMswJ,YAAatwJ,EAAM6jM,oBAEpJ,OAAO7nN,GAGX68U,GAAqB9gV,OAAS,uBAc9B,MAAMghV,WAA8B3B,GAClCx5U,mBACE,MAAO,wBAETvO,0BACE,MAAO,CACLqN,KAAM,SAKVlN,oBAAoBsuB,EAAQk7T,EAAY,OACtC,IAAIzhF,EAAmB,EACvB,EAAG,CACD,IAAI0hF,EAAa,EACfj5T,EAAQlC,EAAO,GACjB,MAAOkC,EAAO,CACZ,IAAKg5T,EAAW,CAEdh5T,EAAMglB,IAAMn1C,KAAKynV,uBAAuB5gV,KAAK7G,KAAK0nV,6BAA+B1nV,KAAM0nQ,EAAkBv3O,EAAMswJ,YAAatwJ,EAAM6jM,gBAGpI/lM,EAAO/V,OAAOkxU,EAAY,GAC1BA,EAAappV,KAAKqpV,qBAAqBl5T,EAAOlC,GAC9CkC,EAAQlC,EAAOm7T,GAEjB1hF,UACOz5O,EAAOnvB,OAAS,GAEzB,OAAO4oQ,EAGT/nQ,qBAAqB2pV,EAAiBr7T,GACpC,MAAM0zT,MACFA,EAAKvjU,MACLA,GACEkrU,EACJ3oB,EAAc2oB,EAAgB7oK,aAAe6oK,EAAgB7oK,YAAYn4J,WAAa,EACxF,IAAIihU,EAASv6O,SACX/qD,EACAulS,EACAr5T,EACF,IAAK,IAAIvxB,EAAI,EAAGwwB,EAAInB,EAAOnvB,OAAQF,EAAIwwB,EAAGxwB,IAAK,CAC7CuxB,EAAQlC,EAAOrvB,GACf4qV,EAAMr5T,EAAM27S,QAAU6V,EACtB,GAAI6H,GAAO,GAAKA,EAAMD,IAEtBC,EAAM,GAAKr5T,EAAMwxT,MAAQxxT,EAAM27S,QAAU,IAAMnL,GAAc,CAE3D,GAAI3gU,KAAKiiP,SAAW7jO,IAAU+R,EAAM/R,MAAO,CACzC,MAEF6lC,EAAUrlD,EACV2qV,EAASC,GAGb,OAAOvlS,GAGXilS,GAAsBhhV,OAAS,wBAS/B,MAAMuhV,WAAsBpuU,GAC1BwG,2BACE,MAAO,CACL6nU,aAAc,EACdC,UAAW,EACXC,WAAY,EACZC,QAAS,EACTC,SAAU,GACV5oV,IAAKC,SAASC,cAAc,OAC5BmqT,UAAW,KAIX5rT,SAASu6B,GACP,MAAO,2CAA2CA,EAAKiqB,MAAQnkD,KAAKmkD,QAAQjqB,EAAKpkB,KAAO,kHAEpC+pB,GAAW/C,OAAO5C,EAAKsC,KAAM,6EAC3BqD,GAAW/C,OAAO5C,EAAKsC,KAAM,2JAGtCpyB,EAAaY,WAAWkvB,EAAKjvB,yCAKhFtL,gBAAgBu6B,GACd,OAAOl6B,KAAKkB,IAAIwwD,UAAY1xD,KAAK8yD,SAAS54B,GAE5Cv6B,oBAAoB+qD,EAAIluB,GACtB,MAAMutT,EAAkBr/R,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG1iD,cAAc,yBAC/EgiV,EAAoBt/R,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG1iD,cAAc,2BAC/E,GAAIw0B,GAAQutT,GAAmBC,GAAqBtqV,EAAcmD,aAAc,CAC9E,GAAI7C,KAAKmkD,OAAS,OAAQ,CACxB4lS,EAAgB1oV,MAAM8yD,UAAY,UAAU33B,EAAKpvB,WAAa,GAAK,SACnE48U,EAAkB3oV,MAAM8yD,UAAY,UAAU33B,EAAKnvB,aAAe,YAC7D,CACL08U,EAAgB1oV,MAAM8yD,UAAY,OAClC61R,EAAkB3oV,MAAM8yD,UAAY,SAI1ChQ,SAASA,GACPnkD,KAAKiqV,MAAQ9lS,EAIfA,WACE,GAAInkD,KAAKiqV,MAAO,CACd,OAAOjqV,KAAKiqV,MAEd,MAAMC,EAAkBrqT,GAAW+5C,aAAa55E,KAAKurT,UAAUX,kBAAkBywB,eAAepzS,KAAM,OAAS,EAC7GkiT,EAAyBtqT,GAAWsqT,uBAAuBnqV,KAAKurT,UAAUoxB,mBAC5E,OAAOuN,GAAmBC,EAAyB,OAAS,MAE9Dr3R,aAAaA,GACX9yD,KAAKoqV,UAAYt3R,EAMnBA,eACE,OAAO9yD,KAAKoqV,WAGhBX,GAAcvhV,OAAS,gBAYvB,MAAMmiV,WAAiB3qR,GAErB79C,2BACE,MAAO,CAELyoU,gBAAiBpwT,GAAQ,2CACSA,EAAKu8G,MAAQ,QAAU,oCACzCv8G,EAAKqwT,uCACLrwT,EAAKswT,oEAC0BtwT,EAAKzlB,sDAQpDyxM,YAAa,KAMbukI,sBAAuB,MAQvB7+Q,MAAO,KAKP8+Q,iBAAkB,KAClBC,WAAY,uBAGhBnrV,0BACE,MAAO,CAOLorV,wBAAyB,KAEzBC,wBAAyB,KAUzBrhK,IAAK,CACHhoK,QAAS,CAAC,OAAQ,WAClBjiB,MAAO,CACL82C,MAAO,CACLA,MAAO,MACP0pF,eAAgB,MAElB+nB,SAAU,KACVk/B,yBAA0B,OAS9B8jK,kBAAmB,MAIvBtqR,0BACE,MAAO,CACLC,MAAO,CAAC,YAKZ9gE,uBAAuBorV,GACrB,IAAIC,EACJ,MAAMC,SACJA,GACEjrV,MACHgrV,EAAuBhrV,KAAKkrV,kBAAoB,MAAQF,SAA8B,OAAS,EAAIA,EAAqBnkV,KAAK7G,KAAM,CAClI0kU,iBAAkBumB,EAASvmB,iBAC3BjkJ,YAAawqK,EAASxqK,YACtBuzC,eAAgBi3H,EAASnmC,aAAemmC,EAASj3H,eACjD7mL,UAAW89S,EAAS99S,UACpBC,QAAS69S,EAAS79S,QAClB29S,OAAAA,IAGJprV,wBACE,MAAMI,EAAKC,MACT6/D,OACEA,EAAM+qR,wBACNA,EAAuBC,wBACvBA,EAAuBM,wBACvBA,EAAuBT,iBACvBA,EAAmB,IACjB3qV,GACJ6qT,kBACEA,EAAiBwgC,aACjBA,GACEvrR,EACJ6+F,EAAQ0sL,EAAeP,EAA0BM,EACjD1sL,EAAQ2sL,EAAeD,EAA0BN,EAEnD,GAAI9qV,EAAGsrV,2BAA4B,CACjCX,EAAiB/mL,mBAAqB,sBAAsB5jK,EAAGsrV,6BAEjE,OAAOv+U,EAAQ0C,MAAM,CACnB/K,KAAM1E,EAAGsQ,YAAY5L,KAErBs6J,YAAa,WACbN,MAAAA,EACAC,MAAAA,EACAH,KAAM,KAEN34C,KAAM,KAENi8C,UAAW,MACXnC,aAAckrL,EAEdznL,qBAAsB,MACtB1D,WAAYmrL,EAA0B,KAAOzpV,SAAS8E,KACtDs6J,oBAAqB,KACrBoD,mBAAoB,kBAEpBC,cAAe7jK,EAAGsrV,2BAA6B,gBAAkB,GACjE56R,aAAcoP,EAAOyrR,uBACrBpsL,eAAgBr/F,EAAO0rR,cACvB1oL,cAAe+nL,EAA0B/qR,EAAOgjG,cAAgB,KAChE7C,YAAat1G,IACX,MAAMqwC,EAAQrwC,EAAGwI,UAAU,aACpB6nC,EAAMpwF,GACbowF,EAAMn8C,UAAU7/B,IAAI,SAAS8gD,EAAO1b,QACpC,OAAO42C,GAETonE,gBAAiB,EACf1rH,QAAAA,EACAozF,KAAAA,EACAC,KAAAA,MAEA,MAAMmhN,SACJA,GACElrV,EAEJ,GAAIA,EAAG6qV,0BAA4B7qV,EAAGorV,0BAA4BprV,EAAG0qV,uBAAyB7/B,EAAkBt8Q,MAAO,CACrH,MAAMk9S,EAAqBP,EAASQ,gBAAgB,GAClDC,EAAa3rV,EAAG4rV,cAAcH,EAAoB/0S,EAAS,CAACozF,EAAMC,IAClE8hN,EAAchhC,EAAkBihC,oBAAoBH,EAAY,UAChEz7C,SACEA,GACEu7C,EACN,IAAKv7C,GAAY27C,GAAe37C,EAASquB,cAAcstB,EAAa/rT,GAAW9gB,IAAI6sU,EAAaJ,EAAmBllB,eAAgB,CACjI,MAAMwlB,EAAkBF,GAAehhC,EAAkBmhC,oBAAoBH,GAC7E,GAAIA,GAAeA,GAAe/rR,EAAO1yB,WAAa2+S,GAAmB,KAAM,CAC7E,GAAIV,EAAc,CAChBvhN,EAAOiiN,MACF,CACLhiN,EAAOgiN,KAKf,MAAMf,EAAS,CACb5mV,EAAG0lI,EACHrlG,EAAGslG,GAEL/pI,EAAGisV,uBAAuBjB,GAC1B,OAAOA,GAET19T,UAAW,CACTumO,gBAAiB,oBACjB9vH,UAAW,cACXw3C,KAAM,SACN27D,KAAM,SACN/hN,MAAO,cACP+2T,eAAgB,uBAChB/wP,MAAO,cACP5+E,QAASvc,IAEV2qV,EAAkB,CACnBzrL,mBAAoB,CAACv0G,EAAIv6B,MACdu6T,IAAqBA,EAAiBzrL,oBAAsByrL,EAAiBzrL,mBAAmBv0G,EAAIv6B,KAAWpwB,EAAGk/J,mBAAmBv0G,EAAIv6B,KAQxJxwB,SAAQipI,WACNA,IAEA,IAAIsjN,EACJ,MAAMnsV,EAAKC,MACT6/D,OACEA,GACE9/D,GACLmsV,EAAWnsV,EAAGu7K,QAAU,MAAQ4wK,SAAkB,OAAS,EAAIA,EAASnwU,UACzEhc,EAAGu7K,KAAO/X,GAAW1yC,IAAI9wH,EAAGosV,yBAC5B,GAAIvjN,EAAY,CACd/oE,EAAOg3J,WAAW1nM,GAAG,CACnBu9M,kBAAmB,KACjB,IAAI0/G,EACJ,OAAOrsV,EAAGssV,mBAAmBD,EAAersV,EAAGkrV,YAAc,MAAQmB,SAAsB,OAAS,EAAIA,EAAa,GAAGvsR,EAAOysR,8BAEjIhwU,QAASvc,IAGb,GAAIA,EAAGmmN,YAAa,CAClBnmN,EAAGwsV,cAAgB,IAAI9C,GAAc,CACnCl+B,UAAW1rP,KAIjBlgE,YACE,IAAI6sV,EAAYC,EAAqB7mJ,GACpC4mJ,EAAaxsV,KAAKs7K,QAAU,MAAQkxK,SAAoB,OAAS,EAAIA,EAAWzwU,WAChF0wU,EAAsBzsV,KAAKusV,iBAAmB,MAAQE,SAA6B,OAAS,EAAIA,EAAoB1wU,WACpH6pL,EAAY5lM,KAAKwpL,OAAS,MAAQoc,SAAmB,OAAS,EAAIA,EAAU7pL,UAC7E7B,MAAM8B,YAER0wU,YACE,MAAO,GAAG1sV,KAAK6/D,OAAOl1D,oBAExBhL,UAAU6pL,EAAKmjK,GACb,MAAM5sV,EAAKC,KACX,GAAIwpL,EAAK,CACP,MAAMr9K,EAASotH,GAAQ9hD,YAAYk1Q,EAAQpzN,GAAQrhD,aAAa,CAC9D+uD,WAAYlnI,EAAG02C,QACf9rC,GAAI5K,EAAG2sV,MACP5lK,QAAS/mL,EAAG6sV,WAAW53U,KAAKjV,GAC5B+V,IAAK/V,EAAG4qV,WACRhyU,MAAO5Y,EAAG8/D,QACT2pH,GAAM,CACP7wK,MAAO5Y,EAAG8/D,OACV5d,SAAU,CACRp1C,KAAM,aAGVV,EAAOgjB,GAAG,kBAAmBpvB,EAAG8sV,oBAAqB9sV,GACrD,OAAOoM,MACF,CACLwgV,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO5wU,WAK3Dpc,mBAAkB8tE,QAChBA,EAAOt9C,MACPA,IAEA,MAAMpwB,EAAKC,MACT6/D,OACEA,GACE9/D,EACJkrV,EAAWlrV,EAAG+sV,mBAAmBr/Q,EAASt9C,GAC1CswJ,EAAcwqK,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAAS,GAAGprR,EAAOysR,4BACrFt4H,EAAiBi3H,EAASj3H,eAC5B,GAAIn0J,EAAOgZ,UAAY94E,EAAG6/D,WAAa6gH,GAAeA,EAAY6wJ,cAAgB,OAAS7wJ,EAAY5nG,UAAYm7I,IAAmB,MAAQA,SAAwB,GAAKA,EAAen7I,SAAU,CAClM,OAAO,MAKTpL,EAAQs/Q,iBAAmBltR,EAAOmtR,cAAc,CAACv/Q,EAAQ6xF,aAAc7xF,EAAQ4xF,YAAa,KAAM,OAClG,MAAMlzJ,EAASpM,EAAGktV,uBAAuB,SAASptR,EAAOqtR,2BAA4BxuV,EAAeA,EAAe,GAAIusV,GAAW,GAAI,CACpI96T,MAAAA,EAEAs9C,QAAS/uE,EAAeA,EAAe,GAAI+uE,GAAUw9Q,QAC/C,MACR,GAAI9+U,EAAQ,CACV,IAAIghV,EACJptV,EAAGssV,kBAAkB5rK,EAAauzC,IAEjCm5H,EAAUttR,EAAO,SAASA,EAAOqtR,oCAAsC,MAAQC,SAAiB,OAAS,EAAIA,EAAQtmV,KAAKg5D,EAAQ4N,EAASw9Q,GAE9I,OAAO9+U,EAOT46J,iBACE,OAAO/mK,KAAKs7K,KAAKvU,WAGnBqmL,yBACE,OAAOptV,KAAK+mK,aAAe/mK,KAAK2mK,WAMlChnK,aAAY8tE,QACVA,EAAOt9C,MACPA,IAEA,IAAIk9T,EAAuBC,EAAUC,EACrC,MAAMxtV,EAAKC,KAGT6/D,GAAUwtR,EAAwBttV,EAAGytV,qBAAqBr9T,EAAOs9C,MAAc,MAAQ4/Q,SAA+B,EAAIA,EAAwBttV,EAAG8/D,OACvJ9/D,EAAG0tV,kBAAoB5tR,EACvB9/D,EAAGu7K,KAAKja,aAAethK,EAAG2tV,YAC1B3tV,EAAG4tV,uBAAuB9tR,EAAQ,MAClC,MAAMorR,EAAWlrV,EAAGkrV,SAAWlrV,EAAG6tV,YAAYngR,GAE9C1tE,EAAG8tV,wBAAwBpgR,EAAQh3B,SACnC,GAAI12C,EAAGmmN,aAAenmN,EAAGypL,IAAK,CAC5B,MAAMskK,EAAY7C,EAASx9Q,QAAQkwF,UAAYstL,EAASx9Q,QAAQkwF,UAAUrlG,WAAamV,EAAQh3B,QAC/F12C,EAAGypL,IAAIjhD,OAAOulN,GAQhB/tV,EAAGguV,iBAAiB9C,IAEnBqC,EAAWztR,EAAO,QAAQA,EAAOqtR,oCAAsC,MAAQI,SAAkB,OAAS,EAAIA,EAASzmV,KAAKg5D,EAAQ4N,EAASw9Q,GAC9I,MAAM+C,UACFA,EAASC,SACTA,GACEpuR,EAAOkyD,SACXm8N,EAAcF,GAAaC,EAE7BC,IAAgB,MAAQA,SAAqB,OAAS,GAAKX,EAAwBW,EAAYz5F,mBAAqB,MAAQ84F,SAA+B,OAAS,EAAIA,EAAsB1mV,KAAKqnV,EAAa,OAElNvuV,sBACE,MAAMwtC,UACFA,EAASC,QACTA,GACEptC,KAAKirV,UACTzhK,IACEA,EAAG+iK,cACHA,GACEvsV,KACJmuV,EAAiB3kK,EAAI/yI,QAAQzuC,cAAc,0BAC7CukV,EAAcM,oBAAoBrjK,EAAI/yI,QAAStJ,GAC/CghT,GAAkB5B,EAAcM,oBAAoBsB,EAAgB/gT,GAEtEztC,qBAAqBwwB,EAAOs9C,GAC1B,IAAI9uE,OACFA,GACEwxB,EAEJ,GAAI,SAAS1oB,KAAK0oB,EAAMtjB,MAAO,CAC7B,MAAM+sC,EAASrD,GAAUvxB,KAAKyoD,EAAQh3B,QAAS,KAAM,MAAMmD,OAC3Dj7C,EAASs5C,GAAUkL,iBAAiBvJ,EAAOz1C,EAAGy1C,EAAOpV,GAEvD,MAAMq7B,EAASvT,GAAOC,YAAY5tD,EAAQ,gBAE1C,OAAOkhE,IAAW,MAAQA,SAAgB,GAAKA,EAAOuuR,oBAAsB,KAAOvuR,EAMrFlgE,QAAO8tE,QACLA,EAAOt9C,MACPA,IAEA,MAAMpwB,EAAKC,KACTw/B,EAAKz/B,EAAGkrV,SACRziU,EAAQgX,EAAG2N,UACb,IAAI0yB,EACJ,GAAI9/D,EAAG6qV,wBAAyB,CAC9B/qR,EAAS9/D,EAAG8/D,WACP,CACLA,EAAS9/D,EAAGytV,qBAAqBr9T,EAAOqP,EAAGiuC,SAE7C1tE,EAAGsuV,kBAAkB5gR,EAASt9C,GAC9B,IAAK0vC,EAAQ,CACX,OAEF,GAAIA,IAAW9/D,EAAG0tV,kBAAmB,CACnC1tV,EAAG4tV,uBAAuB9tR,GAI5B,GAAIrgC,EAAG8uT,QAAUvuV,EAAG+qV,kBAAmB,CACrC,MAAMr0M,EAAQj3G,EAAGi3G,MACjB12I,EAAGwuV,iBAAiB/uT,EAAIhX,GACxB,GAAIiuH,IAAUj3G,EAAGi3G,MAAO,CACtBj3G,EAAGiuC,QAAQgpE,MAAQj3G,EAAGgvT,qBAAuBhvT,EAAGi3G,OAGpD,GAAI12I,EAAGmmN,aAAenmN,EAAGypL,IAAK,CAG5BzpL,EAAGypL,IAAItqD,cAAca,gBAAkBvgG,EAAGi3G,MAC1C12I,EAAGypL,IAAI9wD,WAGX/4H,uBAAuB8uV,EAAa5mH,GAClC,MAAM9nO,EAAKC,MAEPs7K,MAAM7c,MACJA,EAAKC,MACLA,IAEA3+J,EACJwlK,EAAc,GAChBxlK,EAAG0tV,kBAAkBh3S,QAAQmI,UAAU98C,OAAO,cAAgB/B,EAAG0tV,kBAAkBnB,oBACnFmC,EAAYh4S,QAAQmI,UAAU7/B,IAAI,cAAgB0vU,EAAYnC,oBAC9D,IAAKzkH,EAAS,CACZ9nO,EAAG0tV,kBAAkB5qL,cAAcC,iBAErC,IAAKrE,EAAO,CACV8G,EAAY/mK,KAAK,CACfi4C,QAASg4S,EAAYC,gBAAgBprO,WAAW7sE,QAChD0V,UAAW,eAGf,IAAKuyG,EAAO,CACV6G,EAAY/mK,KAAK,CACfi4C,QAASg4S,EAAYnrO,WAAW7sE,QAChC0V,UAAW,aAGfsiS,EAAY5rL,cAAcyC,gBAAgB,CACxCC,YAAAA,EACA/2I,SAAUzuB,EAAGu7K,KAAKjX,gCAEpBtkK,EAAG0tV,kBAAoBgB,EAEzB9uV,+BAA+BgvV,EAAW9nG,EAAWhnL,GACnDA,EAAOtyC,QAAQohU,EAAW9nG,GAM5BlnP,QAAO8tE,QACLA,EAAOt9C,MACPA,IAEA,IAAIihM,EACJ,MAAMrxN,EAAKC,MACTytV,kBACEA,EAAiBxC,SACjBA,GACElrV,EACN,IAAIyzE,EAAW,OACd49I,EAAUrxN,EAAGypL,OAAS,MAAQ4nC,SAAiB,OAAS,EAAIA,EAAQz/F,OACrElkD,EAAQgpE,MAAQhpE,EAAQgpE,OAAS12I,EAAG6uV,YAAY3D,GAEhDlrV,EAAGu7K,KAAKnY,qBAAuBjjK,QAAQ+qV,EAAS4D,oBAChD,GAAIphR,EAAQgpE,OAASw0M,EAAS99S,WAAa89S,EAAS79S,QAAS,CAC3D69S,EAAS7xM,SAAWlxH,SAAUxhB,WACtB3G,EAAGq5I,YAAY1yI,IAEvB3G,EAAG+uV,+BAA+B,SAASrB,EAAkBP,mCAAoC,CAC/Fz/Q,QAASw9Q,EACT96T,MAAAA,GACCs9T,GAGHhgR,EAAQvlD,MAAQ+iU,EAAS/iU,MAEzB,IAAKulD,EAAQvlD,QAAU+iU,EAAS4D,mBAAoB,CAClDr7Q,EAAWy3Q,EAAS99S,UAAY89S,EAAS8D,YAAc,GAAK9D,EAASnmC,cAAgBmmC,EAASj3H,gBAGlG,IAAKvmJ,EAAQvlD,MAAO,CAClBnoB,EAAGq5I,SAAS6xM,EAASx0M,OAAShpE,EAAQgpE,OAASjjE,IAGnD7zE,aAAY8tE,QACVA,IAEA,IAAIuhR,EACJ,MAAMjvV,EAAKC,KACXD,EAAG8/D,OAAOsoJ,mBAAmB8mI,YAAY,CACvCxhR,QAAAA,EACAw9Q,SAAUlrV,EAAGkrV,WAGflrV,EAAGmvV,wBACFF,EAAWjvV,EAAGypL,OAAS,MAAQwlK,SAAkB,OAAS,EAAIA,EAASr9N,OAExE5xH,EAAGovV,iBAAiBpvV,EAAGkrV,UAGzBtrV,sBAAqB8tE,QACnBA,IAEA,IAAI5L,EAAYutR,EAChB,MAAMrvV,EAAKC,KACXD,EAAGsvV,0BAA0BtvV,EAAGkrV,WAE/BppR,GAAcutR,EAAcrvV,EAAG8/D,QAAQ,QAAQ9/D,EAAG8/D,OAAOqtR,6CAA+C,MAAQrrR,SAAoB,OAAS,EAAIA,EAAWh7D,KAAKuoV,EAAa3hR,EAAS1tE,EAAGkrV,UAG7LtrV,aACEZ,OAAQ03O,IAER,IAAI64G,EACJ,MAAMvvV,EAAKC,KACTuvV,EAAkBxvV,EAAG0tV,kBACvB8B,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgB1sL,cAAcC,iBAChG,IAAKwsL,EAAsB74G,EAAWhpK,WAAa,MAAQ6hR,SAA6B,GAAKA,EAAoBvxL,QAAS,CACxHh+J,EAAGmvV,uBACHK,EAAgBhiU,QAAQ,GAAGgiU,EAAgBjD,+BAE7CiD,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgB94S,QAAQmI,UAAU98C,OAAO,cAAgB/B,EAAG0tV,kBAAkBnB,oBAChJvsV,EAAGkrV,SAAW,KAEhBtrV,uBACE,MAAMsrV,SACFA,GACEjrV,MACJwvV,YACEA,EAAW/D,gBACXA,GACER,EACNjrV,KAAKyvV,6BAA6BxE,EAASz4Q,QAC3Ci5Q,EAAgBzsV,SAAQ,CAACwzE,EAAQ5zE,KAC/BoB,KAAKyvV,6BAA6Bj9Q,GAElCg9Q,EAAY5wV,GAAGggD,UAAU98C,OAAO9B,KAAKs7K,KAAK5d,aAC1C8xL,EAAY5wV,GAAG6pD,cAAgB,SAIjCwiS,EAASx9Q,QAAQh3B,QAAQgS,cAAgB,MAM3C9oD,sBAAsBu1B,GACpB,IAAIw6T,EACJ,MAAM3vV,EAAKC,MACTytE,QACEA,GACE1tE,EAAGu7K,MACRo0K,EAAW3vV,EAAGypL,OAAS,MAAQkmK,SAAkB,OAAS,EAAIA,EAAS/9N,OACxE5xH,EAAG4vV,iBAAiB5vV,EAAGkrV,SAAU,OACjCx9Q,EAAQgpE,MAAQ,MAChB,GAAIvhH,EAAO,CACTn1B,EAAGu7K,KAAKpmJ,SAUZv1B,eAAeiwV,GACb,MAAM7vV,EAAKC,MACTirV,SACEA,GACElrV,EAEN,IAAKkrV,EAAU,CACb,OAEF,MAAMx9Q,QACJA,EAAOg+Q,gBACPA,EAAeoD,mBACfA,GACE5D,EACJ,IAAI9+U,EACJpM,EAAG4mK,WAAa,KAChB8kL,EAAgBzsV,SAAQ,CAACwzE,EAAQ5zE,KAC/BmB,EAAG0vV,6BAA6Bj9Q,GAEhCy4Q,EAASuE,YAAY5wV,GAAGggD,UAAU98C,OAAO/B,EAAGu7K,KAAK5d,aACjDutL,EAASuE,YAAY5wV,GAAG6pD,cAAgB,SAI1CglB,EAAQh3B,QAAQgS,cAAgB,MAChC,GAAIomS,GAAsB5D,EAASx0M,OAASm5M,EAAe,CAGzDzjV,EAASpM,EAAG6vV,cAAc3E,GAG1B,IAAK4D,GAAsB/hV,EAAQwlB,UAAUnmB,GAAS,CACpDshE,EAAQvlD,MAAQ,WACV/b,EAGR,IAAK8+U,EAASx0M,MAAO,CACnB12I,EAAG8vV,sBAAsB,UACpB,CACL,GAAIpiR,EAAQvlD,MAAO,CACjBulD,EAAQ2rE,WAEV,GAAIy1M,EAAoB,CAGtB9uV,EAAG8/D,OAAOy6K,YAAY,OAExBv6O,EAAG4vV,iBAAiB1E,EAAU,WAE3B,CACLlrV,EAAG8vV,sBAAsBpiR,EAAQvlD,OAAS+iU,EAAS/iU,OAErDnoB,EAAG4mK,WAAa,MAChB,OAAOx6J,EAQTxM,kBAAkBw7H,EAAMhrG,GACtB,MAAMpwB,EAAKC,MACTs7K,KACEA,GACEv7K,EACJy/B,EAAKz/B,EAAGkrV,SACRprR,EAAS9/D,EAAG0tV,mBACZrC,aACEA,GACEvrR,GACH2S,GAAUhzC,EAAGisT,gBACdhrK,EAAcjuG,EAAO+oP,aAAe/oP,EAAOriD,MAAQqiD,EACnDs9Q,EAAoBtwT,EAAG2N,UACvB4iT,EAAsBhwV,EAAGorV,0BAA4BC,EAAe9vK,EAAK7c,MAAQ6c,EAAK5c,OACxFl/H,EAAGulB,aAAe50B,EAElBlyB,OAAOmZ,OAAOooB,EAAIz/B,EAAGiwV,sBAAsBxwT,IAC3C,GAAIuwT,EAAqB,CACvBvwT,EAAGywT,SAAW,MACT,CACL,GAAIpwR,EAAOkoP,SAASs4B,aAAc,CAChC,IAAI6P,EAAaC,EACjB,MAAMC,gBACFA,GACE5wT,EACJ6wT,EAAmBxwR,EAAOurR,cAAgB8E,EAAc/0N,EAAK15E,SAAW,MAAQyuS,SAAqB,EAAIA,EAAc/0N,EAAKikC,YAAc+wL,EAAch1N,EAAKh8E,SAAW,MAAQgxS,SAAqB,EAAIA,EAAch1N,EAAKkkC,WAG5NixL,EAAczwR,EAAO0wR,sBAAsBF,EAAkB,KAAM,MAAO,MAE1EJ,EAAWzwT,EAAGywT,SAAWK,EAAcn1N,EAAK4xN,iBAE9CvtT,EAAG2N,UAAYptC,EAAGywV,gBAAgBhxT,EAAGuvT,UAAWkB,GAChD,GAAIG,EAAiB,CACnB5wT,EAAG2N,UAAYtN,GAAWgiI,UAAUriI,EAAG2N,UAAWijT,EAAgB5nU,MAAO4nU,EAAgB1sU,IAAM,IAAIlV,KAAK4hV,EAAgB1sU,IAAM+8J,EAAYimJ,YAAc,MAE1JlnS,EAAG4N,QAAUvN,GAAW9gB,IAAIygB,EAAG2N,UAAWszI,EAAY6lJ,kBACjD,CACL,MAAMv0I,EAAQhyL,EAAG0wV,qBAAqBt1N,EAAK1kF,SAE3CjX,EAAGi3G,MAAQv2I,QAAQ6xL,EAAM5kJ,WAAa4kJ,EAAM3kJ,SAC5C,GAAI5N,EAAGi3G,MAAO,CACZj3G,EAAG2N,UAAY4kJ,EAAM5kJ,UACrB3N,EAAG4N,QAAU2kJ,EAAM3kJ,SAGvB,GAAI5N,EAAGi3G,MAAO,CACZj3G,EAAGywT,SAAWzwT,EAAG2N,UAAY3N,EAAGuvT,WAGpC,MAAMprO,EAAgBnkF,EAAG8uT,MAAQ9uT,EAAG8uT,OAASwB,EAAoBtwT,EAAG2N,YAAc,EAClF,GAAI3N,EAAGi3G,MAAO,CAEZ,GAAI12I,EAAG6qV,0BAA4BprT,EAAG4N,SAAWyyB,EAAOkoP,SAAS56Q,WAAa3N,EAAG2N,WAAa0yB,EAAOkoP,SAAS36Q,SAAU,CACtH5N,EAAGi3G,MAAQ,MACXj3G,EAAGiuC,QAAQh5D,QAAU1U,EAAGo7B,EAAE,2CACrB,GAAIwoF,GAAiBnkF,EAAGqvT,mBAAoB,CAGjD,MAAM1iV,EAASqzB,EAAGgvT,sBAAwBr+T,GAASgrG,EAAK15E,OAAS1hD,EAAG2wV,kBAAkBlxT,EAAIrP,GAC1F,IAAKhkB,UAAiBA,IAAW,UAAW,CAC1CqzB,EAAGi3G,MAAQtqI,IAAW,MACtBqzB,EAAGiuC,QAAQh5D,QAAU,OAChB,CACL+qB,EAAGi3G,MAAQtqI,EAAOsqI,QAAU,MAC5Bj3G,EAAGiuC,QAAQh5D,QAAUtI,EAAOsI,aAEzB,CACL,IAAIk8U,EAEJnxT,EAAGi3G,MAAQj3G,EAAGgvT,uBAAyB,SAAWmC,EAAwBnxT,EAAGgvT,wBAA0B,MAAQmC,SAA+B,OAAS,EAAIA,EAAsBl6M,SAAW,WAEzL,CACLj3G,EAAGi3G,MAAQ,MAEbj3G,EAAGiuC,QAAQgpE,MAAQj3G,EAAGi3G,MAExB92I,8BAA8B6yE,EAAQ1O,EAAU,MAC9C9jE,KAAK6tV,wBAAwB7tV,KAAK4wV,iBAAiBp+Q,GAAS1O,GAE5D0O,EAAOjD,aAAavvE,KAAK6/D,QAAQpX,cAAgBqb,EAEnDnkE,6BAA6B6yE,GAC3BxyE,KAAK6wV,8BAA8Br+Q,EAAQ,OAE7C7yE,wBAAwB82C,EAASqtB,EAAU,MAEzC,GAAIrtB,EAAS,CACXA,EAAQgS,cAAgBqb,GAG5BnkE,uBAAuB82C,GACrBz2C,KAAK6tV,wBAAwBp3S,EAAS,OAQxC92C,YAAYw7H,GACV,MAAMp7H,EAAKC,MACT6/D,OACEA,EAAMy7G,KACNA,GACEv7K,EACJ+wV,EAAkB/wV,EAAGgxV,qBAAqB51N,IAC1C3oD,OACEA,EAAMg9Q,YACNA,EAAW/D,gBACXA,GACEqF,GACJjtL,WACEA,GACEyX,EACJ01K,EAAWx+Q,EAAO+oP,aAAe/oP,EAAOriD,MAAQqiD,EAChDu8Q,EAAYiC,EAAS7jT,UACrB8jT,EAAUD,EAAS5jT,QACnB26Q,EAAWloP,EAAOkoP,SAClBmpC,EAAoBnC,EAAYhnC,EAAS56Q,UACzCgkT,EAAkBF,EAAUlpC,EAAS36Q,QACrC8qJ,EAAcr4H,EAAOuxR,gBAAkBvxR,EAAOwxR,iBAAmBxxR,EAAOqhN,cAAchpF,YACtFwzJ,EAAa3rV,EAAG4rV,cAAcqF,EAAU71N,EAAK1kF,QAAS,CAAC0kF,EAAKslC,cAAetlC,EAAKwlC,gBAChF2wL,EAAmBvxV,EAAG4rV,cAAcqF,EAAU71N,EAAK1kF,QAAS,CAAC0kF,EAAKmkC,aAAcnkC,EAAKokC,eACvFx/J,EAAG8wV,8BAA8Br+Q,GAEjCi5Q,EAAgBzsV,SAAQwzE,GAAUzyE,EAAG8wV,8BAA8Br+Q,KAGnE,GAAIA,EAAO+oP,aAAc,CACvB17P,EAAO0xR,iBAAiB/+Q,EAAQqxF,EAAW/gH,SAAWo1I,OACjD,CACLr4H,EAAO2xR,YAAYh/Q,EAAQqxF,EAAW/gH,SAAWo1I,GAEnD,MAAM+yJ,EAAWvsV,EAAeA,EAAe,CAC7C+uE,QAAS0tD,GACR21N,GAAkB,GAAI,CACvB3lT,WAAY+lT,EAAoBnC,EAAYlvR,EAAO0wR,sBAAsB7E,GACzE+F,iBAAkB5xR,EAAO0wR,sBAAsBe,EAAkB,KAAM,OACvEnkT,UAAW4hT,EACX3hT,QAAS6jT,EACThB,SAAU,EACVlB,UAAAA,EACAkC,QAAAA,EACAC,kBAAAA,EACAC,gBAAAA,EACA7oU,SAAU2oU,EAAUlC,EACpBhqS,aAAc8+G,IAGhB2rL,EAAYxwV,SAAQ0rD,GAAMA,EAAG9L,UAAU98C,OAAO,oBAAqB,cACnE,GAAI0tV,EAAY1wV,OAAS,EAAG,CAE1Bq8H,EAAKimC,gBAAkBouL,EAAYv9U,MAAM,GAE3C,OAAOg5U,EAKTtrV,iBAAiB+xV,EAAiBC,EAAUlW,EAAUmW,GACpD,MAAM7xV,EAAKC,KACT6xV,GAAa9xV,EAAG0qV,uBAAyBhP,EAAW,EAAIA,EAAW,EACnEqW,EAAY,EAGd,GAAIF,EAAa,CACf7xV,EAAGgyV,eAAeL,EAAgBp8S,KAAMo8S,EAAgBt8S,MAAQu8S,EAASzqV,MAAO2qV,OAG7E,CAGH9xV,EAAGgyV,eAAe,KAAM,KAAMF,GAEhC9xV,EAAGiyV,eAAeN,EAAgBv8S,IAAKu8S,EAAgBr8S,OAASs8S,EAAS1qV,OAAQ6qV,GAEnFnyV,kBAAkB8gL,EAAauzC,GAC7B,MAAMj0N,EAAKC,MACT6/D,OACEA,GACE9/D,GACJ0tE,QACEA,GACE1tE,EAAGu7K,KACPmgK,EAAW57Q,EAAO+qP,kBAAkBqnC,gBAGtC,GAAIxkR,IAAY1tE,EAAGu7K,KAAK5c,MAAO,CAC7B,IAAIgzL,EAEJ,GAAI3xV,EAAG6qV,wBAAyB,CAC9B8G,EAAkB7xR,EAAOqyR,kBAAkBl+H,EAAgBvzC,OAIxD,CACH1gL,EAAGiyV,eAAe,KAAM,KAAMvW,GAC9B,OAEF17U,EAAGiyV,eAAeN,EAAgBv8S,IAAKu8S,EAAgBr8S,OAASo4B,EAAQh3B,QAAQW,aAAcqkS,OACzF,CACL17U,EAAGiyV,eAAe,KAAM,KAAMvW,IAGlC97U,eAAewyV,EAAOC,EAAQC,GAC5B,MAAM/2K,KACJA,GACEt7K,KACJs7K,EAAK/c,KAAO4zL,EACZ72K,EAAK11D,KAAOwsO,EAEdzyV,eAAe2yV,EAAKC,EAAOF,GACzB,MAAM/2K,KACJA,GACEt7K,KACJs7K,EAAK9c,KAAO8zL,EACZh3K,EAAKz1D,KAAO0sO,EAId5yV,gBAAgBwtC,EAAW8iT,GACzB,OAAOjwV,KAAK6/D,OAAOkoP,SAASyqC,UAAU,IAAIhkV,KAAK2+B,EAAY,EAAI8iT,GAAWjwV,KAAK6/D,OAAO4yR,6BAA+BtlT,EAAY,OAEnIxtC,qBAAqB+yV,GACnB,MAAMC,EAAW3yV,KAAKytV,mBACpB1lC,SACEA,GACE4qC,EACJzyL,EAAY3pH,GAAUvxB,KAAK0tU,EAAgBC,EAASrH,wBACpD9rT,EAAKx/B,KAAKirV,UACTz4Q,GAAUhzC,EAAGisT,iBACdnlB,aACEA,GACE9zP,EAAO+oP,aAAe/oP,EAAOriD,MAAQqiD,EAG3C,IACEhqD,MAAO2kB,EACPzpB,IAAK0pB,GACHulT,EAASC,8BAA8B1yL,EAAW,QAASomK,GAAeve,EAASs4B,cAEvF,GAAIlzS,GAAaC,EAAS,CACxBD,EAAYntC,KAAKwwV,gBAAgBrjT,EAAW,GAC5C,IAAK3N,EAAG0xT,kBAAmB,CAGzB,IAAKnpC,EAASm8B,WAAW/2S,EAAW,OAAQ,CAC1C,MAAMqmL,EAAOu0F,EAASo8B,gBAAgBh3S,GACtC,GAAIqmL,GAAQ,EAAG,CACbrmL,EAAY46Q,EAAS8qC,gBAAgBr/H,IAGzCpmL,EAAUD,GAAatN,GAAW9gB,IAAIouB,EAAWm5R,QAC5C,IAAK9mS,EAAG2xT,gBAAiB,CAC9BhkT,EAAYC,GAAWvN,GAAW9gB,IAAIquB,GAAUk5R,IAGpD,MAAO,CACLn5R,UAAAA,EACAC,QAAAA,GAQJztC,aACE,MAAMI,EAAKC,MACTirV,SACEA,EAAQprR,OACRA,EAAMyqR,gBACNA,GACEvqV,GACJotC,UACEA,EAASC,QACTA,EAAOq+S,gBACPA,GACER,EACJ6H,EAAYjzR,EAAOkzR,iBAAiB5lT,GACpC6lT,EAAUnzR,EAAOozR,oBAAoB7lT,EAASD,IAC9CspG,MACEA,EAAKhiI,QACLA,EAAOgiC,QACPA,EAAOknH,UACPA,GACEstL,EAASx9Q,QACbqgR,EAAYnwL,EAAYA,EAAUrlG,WAAa7hB,EAC/Cy8S,EAAUzH,EAAgB,GAE1B0H,EAAiBD,EAAQE,OAASF,EAAUA,EAAQ/iU,MAGtDpwB,EAAGypL,IAAItqD,cAAcvgI,OAASmvV,EAC9B,OAAOxD,EAAgB,CACrB7zM,MAAAA,EACAtpG,UAAAA,EACAC,QAAAA,EACA0lT,UAAAA,EACAE,QAAAA,EACA/H,SAAAA,EACAx2U,QAASA,GAAW,GACpB9U,CAACkgE,EAAOysR,mBAAqB,UAAW6G,EACxC5I,eAAgBxqV,EAAGwsV,cAAcz5R,SAAS,CACxCt2B,KAAM2Q,EACNliC,KAAM6nV,EACNh9U,IAAK,4BAEP00U,aAAc2I,EAAexyB,YAAc,GAAK5gU,EAAGwsV,cAAcz5R,SAAS,CACxEt2B,KAAM4Q,EACNniC,KAAM+nV,EACNl9U,IAAK,4BAOXq1U,4BAA4B5rV,GAC1B,MAAM0iH,EAAOjiH,KAAK6/D,OAAOurR,aAAe,QAAU,QAClDprV,KAAKqzV,yBAA2B9zV,EAChC,GAAIS,KAAKs7K,KAAM,CACbt7K,KAAKs7K,KAAKr5D,GAAQ1iH,GAGtB4rV,8BACE,OAAOnrV,KAAKqzV,yBAGd1zV,8BAA8BkrV,GAC5B,MAAM9qV,EAAKC,KACX,GAAID,EAAGu7K,KAAM,CACX,MAAM6vK,wBACFA,GACEprV,GACJqrV,aACEA,GACErrV,EAAG8/D,OACT,GAAIgrR,EAAyB,CAC3B9qV,EAAG6qV,wBAA0B,KAE/B7qV,EAAGu7K,KAAK5c,MAAQ0sL,EAAeP,EAA0BM,EACzDprV,EAAGu7K,KAAK7c,MAAQ2sL,EAAeD,EAA0BN,GAG7DlrV,8BAA8BirV,GAC5B,IAAK5qV,KAAKwd,cAAe,CACvBvf,OAAOmZ,OAAOpX,KAAKs7K,KAAM,CACvB5b,aAAckrL,EACdnrL,WAAYmrL,EAA0B,KAAOzpV,SAAS8E,KACtD48J,cAAe+nL,EAA0B5qV,KAAK6/D,OAAOgjG,cAAgB,QAM3EljK,sBAAsB8tE,GACpB,OAAOA,EAAQkyF,SAAWlyF,EAAQkwF,WAAalwF,EAAQh3B,QAGzD92C,kBAAkB6yE,GAChB,MAAO,GAET7yE,mBAAmBw7H,EAAMhrG,GAEvB,MAAO,GAGTxwB,YAAYsrV,GACV,MAAM,IAAIv6U,MAAM,yBAGlB/Q,kBAAkBsrV,GAChB,MAAM,IAAIv6U,MAAM,yBAGlB/Q,cAAc8tE,GACZ,MAAM,IAAI/8D,MAAM,yBAGlB/Q,mBAAmB+qD,EAAIv6B,GACrB,MAAM,IAAIzf,MAAM,yBAGlB/Q,cAAc6yE,EAAQ/7B,EAAS0zQ,GAC7B,MAAM,IAAIz5S,MAAM,yBAGlB/Q,qBAAqBw7H,GACnB,MAAM,IAAIzqH,MAAM,yBAGlB/Q,sBAAsB6/B,GACpB,MAAM,IAAI9uB,MAAM,yBAElB/Q,iBAAiB6yE,GACf,MAAM,IAAI9hE,MAAM,0BAKpB25U,GAASniV,OAAS,WAKlB,MAAMorV,GAAW,CACfn+S,IAAK,MACLC,MAAO,YACPC,OAAQ,MACRC,KAAM,SAmCR,MAAMi+S,WAAsB7zR,GAAel/C,MAAM+6J,GAAWyC,KAkE1DjwK,mBACE,MAAO,cAETvO,0BACE,MAAO,CACLw8K,gBAAiB,4BACjBw3K,qBAAsB,uBAMtB9rL,WAAY,KAMZC,YAAa,KAMbC,UAAW,KAMXC,aAAc,KAMdT,WAAY,GAQZC,kBAAmB,KAMnBosL,kBAAmB,KAOnBnsL,cAAe,EAMfC,gBAAiB,GAMjB9D,cAAe,EACfsY,oBAAqB,EACrBP,oBAAqB,mBAMrB0qC,YAAa,KAMbwtI,wBAAyB,MAYzBC,YAAa,IAAM,KAKnBC,mBAAoB,KAapBpqK,IAAK,CACHhoK,QAAS,CAAC,OAAQ,WAClBjiB,MAAO,CACLuoJ,SAAU,MACV7sG,SAAU,KACV8rI,WAAY,MACZC,yBAA0B,KAC1BK,UAAW,IAWfijK,gBAAiB78Q,GAAW,2CACMA,EAAQgpE,MAAQ,QAAU,oCAC5ChpE,EAAQ88Q,uCACR98Q,EAAQ+8Q,oEACuB/8Q,EAAQh5D,sDAGvDyoJ,eAAgB,kBAChB22L,cAAe,oBAGnBrzR,0BACE,MAAO,CACLC,MAAO,CAAC,SAAU,uBAAwB,4BAK9C9gE,YACE,IAAIm0V,EACJ55U,MAAM8B,aACL83U,EAAiB9zV,KAAK49J,YAAc,MAAQk2L,SAAwB,OAAS,EAAIA,EAAe/3U,UAEnGpc,SACE,MAAMI,EAAKC,MACT6/D,OACEA,GACE9/D,EAENA,EAAG+7K,aAAe/7K,EAAG27K,iBAAmB77G,EAAO0rR,cAE/CxrV,EAAGk7K,gBAAkBl7K,EAAGi6K,gBAAkBn6G,EAAOyrR,uBAEjD,IAAKvrV,EAAGulI,iBAAmB5lI,EAAcgD,kBAAmB,CAC1D3C,EAAGqnK,WAAarnK,EAAGwnK,gBAErBxnK,EAAGioK,0BAA4BjoK,EAAGioK,2BAA6B,EAAIjoK,EAAGqnK,WAEtErnK,EAAGi7K,SAAWn7G,EAAOopP,WAAa,IAAM,IAG1CtpT,wBAAwBo0V,EAActzK,EAAa/1H,EAAIv6B,GACrD,MAAMpwB,EAAKC,KACTg0V,EAAiBvzK,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY6hD,UAIzF,GAAIviO,EAAG6/D,WAAao0R,GAAkBvzK,EAAYkgJ,YAAa,CAC7D,OAAO,KAGT,OAAQqzB,IAAmB,MAAQA,IAAmB,UAAYj0V,EAAGk0V,kBAAkB9jU,EAAO4jU,MAAmBC,IAAmB,MAAQA,IAAmB,QAAUj0V,EAAGm0V,gBAAgB/jU,EAAO4jU,IAGrMp0V,sBAAqB8gL,YACnBA,EAAWqrH,WACXA,EAAUh2R,IACVA,IAEA,IAAIq+U,EAAiBC,EACrB,GAAI3zK,MAAkB0zK,EAAkBn0V,KAAK49J,YAAc,MAAQu2L,SAAyB,OAAS,GAAKC,EAAwBD,EAAgB1mR,WAAa,MAAQ2mR,SAA+B,OAAS,EAAIA,EAAsB3zK,aAAc,CACrPqrH,EAAW,YAAcA,EAAW9rS,KAAKg8K,iBAAmB8vH,EAAW,wBAA0Bh2R,EAAI,mBAAqBA,EAAI9V,KAAKwzV,sBAAwB,GAI/J7zV,kBAAkBwwB,GAChB,IAAIkkU,EACJ,MAAMx0R,OACFA,EAAM+9F,SACNA,GACE59J,MACJs0V,iBACEA,EAAgBlJ,aAChBA,GACEvrR,EACJpqB,EAAM21S,GAAgBvrR,EAAOpqB,IAC7B2sE,EAAYgpO,EAAe,IAAM,IACjCmJ,EAAanyV,WAAW,OAAOggH,WAC/B+nM,EAAQh6R,EAAM,OAAOiyF,QAAkBiyO,EAAoBz2L,EAASnwF,WAAa,MAAQ4mR,SAA2B,OAAS,EAAIA,EAAkBvlT,SAAW,GAC9J0nO,EAAajgO,GAAUvxB,KAAK66C,EAAOyrR,uBAAwB,KAAM,MACjEkJ,EAAah+E,EAAWwoB,SAASvpP,EAAK21S,GACtCqJ,EAAWj+E,EAAWk+E,OAAOj/S,EAAK21S,GACpC,IAAI5uT,EAAOqjC,EAAO80R,iBAAiB,CACjCxqC,MAAAA,EACA3iP,MAAO,QAET,GAAI/xB,EAAK,CAEP,GAAI00Q,EAAQoqC,EAAaC,EAAY,CACnCh4T,EAAO83T,EAAiBnnT,eAGrB,GAAIg9Q,EAAQsqC,EAAU,CACzBj4T,EAAO83T,EAAiBlnT,cAIvB,GAAI+8Q,EAAQoqC,EAAaC,EAAY,CACxCh4T,EAAO83T,EAAiBnnT,eAGrB,GAAIg9Q,EAAQoqC,EAAaE,EAAU,CACtCj4T,EAAO83T,EAAiBlnT,QAE1BwwH,EAASg3L,iBAAmBJ,EAC5B52L,EAASi3L,eAAiBJ,EAC1B72L,EAASphI,KAAOA,EAChBtiB,MAAM46U,kBAAkB3kU,GAE1B4kU,iBACE,OAAO70V,QAAQF,KAAK49J,UAEtBj+J,WAAW27K,GACT,MAAMz7G,OACFA,GACE7/D,KACJygL,EAAc5gH,EAAOm1R,sBAAsB15K,EAAKtC,aAChDg7C,GAAkBn0J,EAAOkxL,aAAelxL,EAAOo1R,sBAAsBp1R,EAAOopP,WAAa3tI,EAAKzX,WAAayX,EAAKtC,aAElH,GAAIh5K,KAAK4/D,UAAYC,EAAOgZ,UAAYm7I,IAAmB,MAAQA,SAAwB,GAAKA,EAAen7I,UAAY4nG,IAAgBA,EAAY5nG,YAAc4nG,EAAYl1E,SAAWk1E,EAAYw7I,gBAAkB/hT,MAAMigK,WAAWmB,KAAU,MAAO,CAC1P,OAAO,MAETA,EAAK45K,cAAgB55K,EAAK9+I,KAAOqjC,EAAO0wR,sBAAsBj1K,EAAKnrJ,MAAM,OAAO0vC,EAAOurR,aAAe,IAAM,OAAQ,KAAM,OAE1H,OAAOprV,KAAKm1V,oBAAoB75K,GAElC37K,UAAU27K,GACR,IAAI85K,EAAuBC,EAC3B,MAAMt1V,EAAKC,MACT6/D,OACEA,EAAM2pH,IACNA,GACEzpL,GACJ8jK,WACEA,EAAUmV,YACVA,GACEsC,EACJ72K,EAAOo7D,EAAOysR,mBACd7rK,EAAc5gH,EAAOy1R,mBAAmBt8K,IACxCroG,gBACEA,EAAeygQ,cACfA,EAAaC,YACbA,GACE5wJ,EACJ80K,GAAkBH,EAAwBv1R,EAAOkyD,SAASyjO,eAAiB,MAAQJ,SAA+B,OAAS,EAAIA,EAAsBh1R,QACrJogQ,EAAiB7vP,EAAkB8vG,EAAY/uK,IAAI,aAAe+uK,EAAYtzI,UAC9EuzR,EAAe/vP,EAAkB8vG,EAAY/uK,IAAI,WAAa+uK,EAAYrzI,QAC1E4M,EAAaj6C,EAAGi7K,WAAa,IAC7BvlI,EAAMuE,GAAc6lB,EAAOpqB,IAC3BggT,EAAc11V,EAAGm0V,gBAAgBrwL,EAAYmV,GAC7C1lG,EAAQmiR,EAAc,UAAY,YAClCC,GAAaH,EAAiB,KAAOE,EAAc,cAAgB,gBACnEE,EAAWF,EAAc,YAAc,UACvCG,EAAYH,EAAc,aAAe,eACzCI,EAAiBJ,EAAc,eAAiB,aAChD5/R,EAAStf,GAAUvxB,KAAKg0J,GACxBw7K,EAAax6S,EAAa6pH,EAAW5iH,QAAU4iH,EAAW3iH,QAC1DuzS,EAAWgB,EAAc5/R,EAAO6+R,OAAOj/S,EAAKuE,GAAc6b,EAAOmpO,SAASvpP,EAAKuE,GAC/EyzB,EAAU6tG,EAAK7tG,QAAU,CACvBgzG,YAAAA,EACAhqI,QAASuiI,EACT88K,eAAgBr1K,EAChBs1K,WAAYt1K,EACZ9nK,MAAO5Y,EACP02I,MAAO,KACP58H,SAAU47U,EAAc/0B,EAAeF,EACvCrzR,UAAWqzR,EACXpzR,QAASszR,EACT5xR,OAAQymT,EAAiB,EAAId,EAAWD,EACxC74S,KAAM3B,EAAay7S,EAAc,QAAU,OAASA,EAAc,SAAW,MAC7Er8M,SAAUr5I,EAAGq5I,SACbjpH,MAAOmrJ,EAAKnrJ,MACZ6lU,kBAAmBx1B,EACnBy1B,gBAAiBv1B,EACjB0Q,cAAAA,EACAC,YAAAA,EACAokB,YAAAA,EACAniR,MAAAA,EACAoiR,UAAAA,EACAC,SAAAA,EACAC,UAAAA,EACAC,eAAAA,GAGJp1K,EAAYtgK,KAAK40U,WAAa,KAC9Bl1R,EAAOppB,QAAQmI,UAAU7/B,OAAOhf,EAAG8zV,cAAcxuV,MAAM,MAGvD,IAAKw6D,EAAOq2R,uBAAwB,CAClCr2R,EAAOs2R,kCAIT,IAAKxlR,EAAiB,CACpB5wE,EAAGq2V,sBAAsB31K,GAG3B1gL,EAAGs2V,0BAA0B5oR,EAASo2F,GAGtC9jK,EAAGu2V,wBAAwB,GAAG7xV,eAAmB/F,EAAe,CAC9DiB,CAAC,GAAG8E,WAAeg8K,EACnBtwJ,MAAO0zI,GACN9jK,EAAGw2V,qBAAqB9oR,IAAWA,GAEtCA,EAAQ+oR,gBAAkBnB,EAAwBx1R,EAAO42R,2BAA6B,MAAQpB,SAA+B,OAAS,EAAIA,EAAsBxuV,KAAKg5D,EAAQ4N,EAAQh3B,WAAagqI,EAClM,GAAI+I,EAAK,CAEPA,EAAIp5D,OACJo5D,EAAInzI,MAAQi9S,GAAS7lR,EAAQ9xB,MAC7B6tI,EAAIjhD,OAAOxoI,EAAG22V,iBAAiBp7K,KAInC37K,oBAAoB27K,GAClB,MAAMz7G,OACFA,GACE7/D,KACJygL,EAAc5gH,EAAOm1R,sBAAsB15K,EAAKtC,aAClD,OAAOn5G,EAAOtyC,QAAQ,SAASsyC,EAAOqtR,6BAA8BxuV,EAAe,CACjFiB,CAAC,GAAGkgE,EAAOysR,4BAA6B7rK,EACxCtwJ,MAAOmrJ,EAAKnrJ,OACXnwB,KAAK22V,sBAAsB,CAC5BxmU,MAAOmrJ,EAAKzX,WACZptH,QAAS6kI,EAAKtC,gBAIlBr5K,wBAAwBgvV,EAAWx+T,EAAOs9C,GACxC,IAAIpN,EAAcw8F,EAClB78J,KAAK6/D,OAAOtyC,QAAQohU,EAAWx+T,IAE9BkwC,GAAgBw8F,EAAgB78J,KAAK6/D,QAAQ,QAAQz1D,EAAaK,WAAWkkV,SAAmB,MAAQtuR,SAAsB,OAAS,EAAIA,EAAax5D,KAAKg2J,EAAepvF,EAASt9C,GAExLxwB,sBAAsBgvV,EAAWx+T,GAC/BnwB,KAAK6/D,OAAOtyC,QAAQohU,EAAWx+T,GAEjCxwB,0BAA0BgvV,EAAWx+T,GAEnCnwB,KAAK6/D,OAAOtyC,QAAQohU,EAAWx+T,GAEjCxwB,iCAAiCgvV,EAAWx+T,GAC1CnwB,KAAK6/D,OAAOtyC,QAAQohU,EAAWx+T,GAEjCxwB,UAAU27K,GACR,IAAIs7K,EAEJ,QAASA,EAAgBt7K,EAAK7tG,WAAa,MAAQmpR,SAAuB,OAAS,EAAIA,EAAcj+U,SAAW3Y,KAElHL,6BAA6B8gL,EAAahzG,GACxC,IAAIopR,EACJ,MAAMh3R,OACFA,GACE7/D,MACJszE,MACEA,GACE7F,EACN,IAAKopR,EAAyBh3R,EAAOkyD,SAASyjO,eAAiB,MAAQqB,SAAgC,GAAKA,EAAuBz2R,QAAS,CAC1I,GAAIkT,IAAU,YAAa,CACzB,MAAM5oC,EAAO+iC,EAAQtgC,UAAUn9B,UAAYy9D,EAAQuoR,kBAAkBhmV,UACrEywK,EAAY2wJ,cAAgB,IAAI5iU,KAAKi/D,EAAQ2jQ,cAAcphU,UAAY06B,QAClE,GAAI4oC,IAAU,UAAW,CAC9B,MAAM5oC,EAAO+iC,EAAQrgC,QAAQp9B,UAAYy9D,EAAQwoR,gBAAgBjmV,UACjEywK,EAAY4wJ,YAAc,IAAI7iU,KAAKi/D,EAAQ4jQ,YAAYrhU,UAAY06B,IAGvE+1I,EAAYnvK,IAAIgiE,EAAO7F,EAAQ6F,IAEjC3zE,qBAAqB68B,EAAMikJ,EAAahzG,GACtC,IAAIqpR,EAAuBC,EAC3B,MAAMlsJ,GAAWisJ,EAAwBrpR,EAAQ2iR,mBAAqB,MAAQ0G,SAA+B,OAAS,EAAIA,EAAsBtuU,MAC9IsiL,GAAWisJ,EAAyBtpR,EAAQ2iR,mBAAqB,MAAQ2G,SAAgC,OAAS,EAAIA,EAAuBrzU,IAE/I,GAAImnL,GAAWC,EAAS,CACtBtuK,EAAOqD,GAAWgiI,UAAUrlI,EAAMquK,EAASC,GAC3Cr9H,EAAQm+Q,YAAc/rT,GAAWgiI,UAAUp0F,EAAQm+Q,YAAa/gJ,EAASC,GAE3E,OAAOtuK,EAIT78B,SAAS27K,GACP,MAAMv7K,EAAKC,MACT6/D,OACEA,EAAM2pH,IACNA,GACEzpL,EACJi6C,EAAaj6C,EAAGi7K,WAAa,IAC7B54D,EAAYpoE,EAAa,IAAM,IAC/Bv1C,EAAOo7D,EAAOysR,oBACdgI,iBACEA,EAAgB1nC,sBAChBA,EAAqB7E,SACrBA,EAAQn9Q,aACRA,GACEi1B,EACJpqB,EAAMuE,GAAc6lB,EAAOpqB,KAC3ByoS,eACEA,EAAcoB,oBACdA,GACEv3B,GACJ53R,MACEA,EAAKs9C,QACLA,GACE6tG,GACJmF,YACEA,GACEhzG,EACJ3+B,EAAS2+B,EAAQ3+B,QAAU2G,GAAO,EAAI,IACtCwmR,aACEA,GACEx7I,EACJu2K,EAAav2K,EAAY/uK,IAAI,aAC7BulV,EAAWx2K,EAAY/uK,IAAI,WAC3By4S,EAAQh6R,EAAM,SAASiyF,KAAetzE,EACtC0nO,EAAajgO,GAAUvxB,KAAK66C,EAAOyrR,uBAAwB,KAAM,MACjEkJ,EAAah+E,EAAWwoB,SAASvpP,EAAKuE,GACtCy6S,EAAWj+E,EAAWk+E,OAAOj/S,EAAKuE,GACpCyzB,EAAQt9C,MAAQA,EAEhB,GAAIA,EAAM01I,SAAU,CAClByV,EAAK9+I,KAAOqjC,EAAO0wR,sBAAsBpgU,EAAM,OAAOiyF,KAAetzE,EAAQ,KAAM,OAErF,IAAIooT,EACFC,GAEA36T,KACEA,GACE8+I,GACJhoG,MACEA,EAAKqiR,SACLA,EAAQF,YACRA,GACEhoR,EACN,GAAIh4B,EAAK,CAEP,GAAI00Q,EAAQqqC,EAAY,CACtBh4T,EAAO8+I,EAAK9+I,KAAO83T,EAAiBnnT,eAGjC,GAAIg9Q,EAAQsqC,EAAU,CACzBj4T,EAAO8+I,EAAK9+I,KAAO83T,EAAiBlnT,cAInC,GAAI+8Q,EAAQqqC,EAAY,CAC3Bh4T,EAAO8+I,EAAK9+I,KAAO83T,EAAiBnnT,eAGjC,GAAIg9Q,EAAQsqC,EAAU,CACzBj4T,EAAO8+I,EAAK9+I,KAAO83T,EAAiBlnT,QAGtC,GAAIkmC,IAAU,UAAW,CACvB,GAAI92C,EAAOw6T,EAAY,CACrBE,GAAe,OAEZ,CACL,GAAI16T,EAAOy6T,EAAU,CACnBC,EAAc,GAKlB,GAAIA,GAAen3V,EAAGq3V,gBAAiB,CACrCr3V,EAAGq3V,gBAAgB3pR,EAASjxC,EAAM06T,GAClCvB,EAAWloR,EAAQkoR,SACnBriR,EAAQ7F,EAAQ6F,MAElB,GAAIzT,EAAO4yR,6BAA8B,CACvCj2T,EAAOurR,EAASyqC,UAAUh2T,EAAMixC,EAAQ5zD,UAG1C4zD,EAAQm+Q,YAAc/rT,GAAWyF,MAAM9I,EAAMurR,EAASk2B,WAAY,KAAMrzS,GACxE,MAAMtiB,EAAWuX,GAAW6K,KAAKlO,EAAMixC,EAAQkoR,GAAWzX,IAAmBuX,GAAe,EAAI,GAEhG,GAAI11V,EAAGs3V,kBAAmB,CACxB5pR,EAAQ6pR,UAAYhvU,EAAWg3T,EAAsB,OAIlD,GAAIh3T,EAAWg3T,EAAqB,CAEvC,GAAIv/U,EAAG0zV,kBAAmB,CACxBhmR,EAAQm+Q,YAAcpvT,EAAOixC,EAAQkoR,OAChC,CACL,MAAMryT,EAAOqyT,IAAa,YAAc,GAAK,EAC7CloR,EAAQm+Q,YAAcpvT,EAAOurR,EAASyqC,UAAU3yT,GAAW9gB,IAAI0hK,EAAY/uK,IAAIikV,GAAWrW,EAAsBh8S,EAAM46S,IACtHiZ,EAAkB,MAItB36T,EAAOz8B,EAAGw3V,qBAAqB/6T,EAAMikJ,EAAahzG,GAElD,IAAKA,EAAQjxC,MAAQA,EAAOixC,EAAQjxC,MAAQ26T,EAAiB,CAC3D1pR,EAAQjxC,KAAOA,EAGfixC,EAAQ6F,GAASvzE,EAAG2zV,yBAA2B7zR,EAAO+qP,kBAAkBt8Q,KAAOm/B,EAAQm+Q,YAAcpvT,EAErG,KAAMixC,EAAQ6F,GAAS7F,EAAQ6F,IAAU,YAAc,UAAY,gBAAkBvzE,EAAG0zV,kBAAmB,CACzGhmR,EAAQgpE,MAAQ,MAChB,OAGF,GAAIgqC,EAAY/uK,IAAI4hE,GAAS7F,EAAQ6F,GAAQ,CAC3C7F,EAAQgpE,MAAQ12I,EAAGy3V,cAAc/pR,EAASt9C,GAC1Cs9C,EAAQh5D,QAAU,GAClB,GAAIg5D,EAAQgpE,cAAgBhpE,EAAQgpE,QAAU,UAAW,CACvDhpE,EAAQh5D,QAAUg5D,EAAQgpE,MAAMhiI,QAChCg5D,EAAQgpE,MAAQhpE,EAAQgpE,MAAMA,MAGhChpE,EAAQgpE,MAAQhpE,EAAQgpE,QAAU,MAElC,GAAIhpE,EAAQgpE,MAAO,CACjB,MAAMghN,EAAqB,CACzB93V,CAAC,GAAG8E,WAAeg8K,EACnBtzI,UAAW6pT,EACX5pT,QAAS6pT,EACTxgT,QAAS6kI,EAAKtC,YACdvrG,QAAAA,GAGFgqR,EAAmBnkR,GAAS7F,EAAQ6F,GAEpCvzE,EAAG23V,0BAA0B,GAAGjzV,iBAAqBgzV,GAIrD,GAAIx7B,EAAc,CAChBx7I,EAAYnyG,OAAO9vE,KAAKqhE,EAAOw1O,YAMjCx1O,EAAO+sP,sBAAwB,MAC/B5sT,KAAK23V,6BAA6Bl3K,EAAahzG,GAC/C5N,EAAO+sP,sBAAwBA,EAC/B,GAAIqP,EAAc,CAChBx7I,EAAYnyG,OAAOxvE,OAAS,GAKhC,GAAI2uE,EAAQ6pR,UAAW,CACrB7pR,EAAQgpE,MAAQ,QAItB,GAAI+yC,EAAK,CAEPA,EAAInzI,MAAQi9S,GAAS7lR,EAAQ9xB,MAC7B6tI,EAAIltI,QAAQv8C,EAAG22V,iBAAiBp7K,IAElCphK,MAAM0iK,SAAStB,GAEjB37K,QAAQ27K,GACN,MAAM7tG,QACJA,GACE6tG,EACJ,GAAI7tG,EAAS,CACXA,EAAQt9C,MAAQmrJ,EAAKnrJ,MAEvB,GAAImrJ,EAAKvY,QAAS,CAChBt1F,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ2rE,SAAS,YAIhE,IAAKp5I,KAAKq3V,oBAAsB/7K,EAAKvd,UAAYj9G,GAAYkqH,aAAasQ,EAAKnrJ,OAAOu7F,OAAO5qE,GAAYkqH,aAAasQ,EAAKzX,aAAc,CAC5I7jK,KAAK08K,UAAUpB,GACft7K,KAAK23E,QAAQ2jG,EAAK7tG,QAAS,QAG/B9tE,gBAAe8tE,QACbA,EAAOt9C,MACPA,IAEA,IAAIy1K,EAGJn4H,EAAQA,EAAQ6F,OAAS7F,EAAQm+Q,YACjC,MAAM/rR,OACFA,GACE7/D,MACJmtC,UACEA,EAASC,QACTA,GACEqgC,EACN,IAAI+F,GACHoyH,EAAY5lM,KAAKwpL,OAAS,MAAQoc,SAAmB,OAAS,EAAIA,EAAUj0E,OAC7ElkD,EAAQgpE,MAAQtpG,GAAaC,IAAYptC,KAAKyzV,mBAAqBrmT,EAAUD,EAAY,IAEzFsgC,EAAQA,EAAQ6F,OAAS7F,EAAQ5zD,UAEjC4zD,EAAQgpE,QAAU,MAClB,GAAIhpE,EAAQgpE,MAAO,CAIjBz2I,KAAK43V,iCAAiC,SAAS/3R,EAAOqtR,qCAAsC,CAC1Fz/Q,QAAAA,EACAt9C,MAAAA,EACAxwB,CAAC,GAAGkgE,EAAOysR,4BAA6B7+Q,EAAQgzG,cAElDjtG,EAAW,KAIb,IAAK/F,EAAQvlD,MAAO,OACZulD,EAAQ2rE,SAAS5lE,IAM3B7zE,eAAeqmO,GACb,MAAMjmO,EAAKC,KAAK2Y,MACd80D,EAAUztE,MACVygL,YACEA,EAAW5mK,SACXA,EAAQy5D,MACRA,GACE7F,GACJglR,6BACEA,EAA4B1qC,SAC5BA,GACEhoT,EAAG8/D,OACT,IAAIg4R,EAAa,MACjB,GAAI7xH,EAAc,CAChB,GAAIysH,EAA8B,CAChChlR,EAAQ6F,GAAS7F,EAAQm+Q,YAAc7jC,EAASyqC,UAAU/kR,EAAQjxC,KAAM3iB,GAG1Eg+U,QAAmB93V,EAAG+3V,qBAAqBrqR,EAASgzG,OAC/C,CAEL1gL,EAAGg4V,uBAAuBt3K,GAE1B,GAAIA,EAAYw7I,aAAc,CAC5Bx7I,EAAYk8I,UAAU39T,SAAQm7S,GAAYp6S,EAAG8/D,OAAOm4R,yBAAyB79C,MAGjFp6S,EAAG43E,QAAQlK,EAASoqR,GAGtBl4V,QAAQ8tE,EAASxU,GACf,IAAIm4J,EACJ,MAAMrxN,EAAKC,MACT6/D,OACEA,GACE9/D,GACJ02C,QACEA,EAAOgqI,YACPA,GACEhzG,EACJhpE,EAAOo7D,EAAOysR,mBAEhB7rK,EAAYtgK,KAAK40U,WAAa,MAC9Bl1R,EAAOo4R,iCACN7mI,EAAUrxN,EAAGypL,OAAS,MAAQ4nC,SAAiB,OAAS,EAAIA,EAAQz/F,OACrE5xH,EAAGuqK,kBAAkB7zH,GACrBopB,EAAOppB,QAAQmI,UAAU98C,UAAU/B,EAAG8zV,cAAcxuV,MAAM,MAQ1DtF,EAAGm4V,sBAAsB,GAAGzzV,aAAiB/F,EAAe,CAC1Du6D,QAAAA,EACAt5D,CAAC,GAAG8E,WAAeg8K,GAClB1gL,EAAGo4V,mBAAmB1qR,KAE3B9tE,2BAA2B8tE,EAASqoR,GAClC,MAAMj2R,OACFA,GACE7/D,MACJq9E,WACEA,GACEy4Q,EAEN,GAAIA,EAAe75B,aAAc,CAC/Bp8P,EAAOo4R,gCAEPnC,EAAeA,EAAe18Q,SAAW,EAAI,WAAa,iBAC1D08Q,EAAexkV,IAAIs0T,GAAS/3T,UAAU84T,eAAe9/T,KAAKivV,EAAgB,CACxE3oT,UAAWsgC,EAAQtgC,UACnBC,QAASqgC,EAAQrgC,eAEd,CACL,MAAMkmC,EAAQ,CACZ3zE,CAAC8tE,EAAQ6F,OAAQ7F,EAAQA,EAAQ6F,QAInC,GAAIwiR,EAAesC,SAAU,CAC3B,IAAIC,EACJ,MAAMlrT,UACJA,EAASC,QACTA,EAAOqoT,YACPA,GACEhoR,EAEJA,EAAQnlD,SAAWgrD,EAAMhrD,SAAWwtU,EAAev8M,IAAI,6BAA8BpsG,EAAWC,GAEhGkmC,EAAM7F,EAAQ6F,OAASwiR,EAAev8M,IAAI,sCAAuCk8M,EAActoT,EAAYC,EAASqoT,EAAahoR,EAAQnlD,UACzI,MAAMgwU,GAAexC,EAAeroR,EAAQkoR,UAG5C,GAAI2C,EAAa,CACfhlR,EAAM7F,EAAQkoR,UAAYloR,EAAQA,EAAQkoR,UAO5CG,EAAexkV,IAAIgiE,GAGnBzT,EAAOo4R,gCACPj4V,KAAK+3V,uBAAuBjC,GAE5B,IAAKuC,EAAyBx4R,EAAOkyD,SAASyjO,eAAiB,MAAQ6C,SAAgC,GAAKA,EAAuBj4R,QAAS,CAC1I01R,EAAeroR,EAAQioR,WAAa,KAEtC,MAAM6C,EAAiB,GAEvB,GAAID,EAAa,CACfC,EAAe/5V,KAAKs3V,EAAeroR,EAAQooR,gBAAgBviR,EAAM7F,EAAQkoR,UAAW,QAEtF4C,EAAe/5V,KAAKs3V,EAAeroR,EAAQmoR,WAAWtiR,EAAM7F,EAAQ6F,OAAQ,cACtE/iE,QAAQ/G,IAAI+uV,GAClBzC,EAAex9P,eACV,CAEL,MAAM1nB,EAAe3yE,OAAOmZ,OAAO,GAAI0+U,EAAe31U,KAAKywD,qBACpDA,EAAanD,EAAQ6F,OAC5BzT,EAAOo4R,gCACPj4V,KAAK+3V,uBAAuBjC,GAC5BA,EAAexkV,IAAIs/D,GACnBklR,EAAeroR,EAAQmoR,WAAWtiR,EAAM7F,EAAQ6F,OAAQ,QAI5D,OAAOwiR,EAAez4Q,aAAeA,EAEvC19E,oBAAoBwwB,GAClB,GAAIA,EAAMw0I,cAAgB,UAAY3kK,KAAKslI,eAAgB,CACzDtlI,KAAKkpK,mBAAmB/4I,IAQ5BxwB,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,MACTk5J,SACEA,GACEn5J,EAEN,GAAIm5J,IAAan5J,EAAG8/D,OAAOgZ,YAAc94E,EAAGynK,aAAeznK,EAAGynK,YAAYtO,EAAU/oI,IAAS,CAC3F,MAAMswJ,EAAc1gL,EAAG8/D,OAAOm1R,sBAAsB97L,GACpD,GAAIunB,IAAgB,MAAQA,SAAqB,GAAKA,EAAY5nG,SAAU,CAC1E,OAEF,GAAI94E,EAAGy4V,gBAAgBroU,EAAO+oI,GAAW,CACvCn5J,EAAGsqK,sBACE,CACLtqK,EAAGuqK,sBAKT3qK,qBAAqBwwB,EAAOstJ,GAC1Bz9K,KAAKsqK,kBAAkBmT,GAMzB99K,kBACE,IAAI84V,EAAuBC,EAC3B,MACIx/L,SAAUvnJ,EAAIkuD,OACdA,GACE7/D,KACJ24V,GAAuBF,GAAyBC,EAAkB/mV,EAAK2gD,aAAe,MAAQomS,SAAyB,OAAS,EAAIA,EAAgB74R,EAAOysR,uBAAyB,MAAQmM,SAA+B,EAAIA,EAAwB9mV,EAAK3J,cAAc63D,EAAO+4R,oBAEnRD,EAAoB/5S,UAAU7/B,IAAI,mBAClCpN,EAAKitC,UAAU7/B,IAAI,wBAMrBpf,kBAAkBgS,EAAO3R,KAAKk5J,UAC5B,GAAIvnJ,EAAM,CACR,IAAIknV,EAAuBC,EAC3B,MAAM/4V,EAAKC,KACT0tD,GAASmrS,GAAyBC,EAAmBnnV,EAAK2gD,aAAe,MAAQwmS,SAA0B,OAAS,EAAIA,EAAiB/4V,EAAG8/D,OAAOysR,uBAAyB,MAAQuM,SAA+B,EAAIA,EAAwBlnV,EAAK3J,cAAcjI,EAAG8/D,OAAO+4R,oBAC9Q,GAAIlrS,EAAO,CACTA,EAAM9O,UAAU98C,OAAO,kBAAmB/B,EAAGyzV,sBAE/C7hV,EAAKitC,UAAU98C,OAAO,uBAAwB/B,EAAGi8K,kBAGrDr8K,gBAAgBwwB,EAAOxxB,GACrB,OAAOqB,KAAKi0V,kBAAkB9jU,EAAOxxB,IAAWqB,KAAKk0V,gBAAgB/jU,EAAOxxB,GAE9EgB,kBAAkBwwB,EAAOxxB,GACvB,OAAOqB,KAAKg7K,WAAa,IAAMh7K,KAAK,SAASA,KAAK6/D,OAAOpqB,IAAM,QAAU,gBAAgBtlB,EAAOxxB,GAAUqB,KAAK+4V,gBAAgB5oU,EAAOxxB,GAExIgB,gBAAgBwwB,EAAOxxB,GACrB,OAAOqB,KAAKg7K,WAAa,IAAMh7K,KAAK,SAASA,KAAK6/D,OAAOpqB,IAAM,OAAS,iBAAiBtlB,EAAOxxB,GAAUqB,KAAKg5V,mBAAmB7oU,EAAOxxB,GAE3IgB,qBAAqBkrK,EAAUouL,GAC7B,MAAMnuL,EAAcD,EAAW,EAAI,GACjCzD,WACEA,GACEpnK,KAEN,GAAIA,KAAKqnK,mBAAqBD,EAAa0D,EAAcmuL,EAAaj5V,KAAKsnK,cAAe,CACxF,OAAOlzJ,KAAKC,IAAID,KAAK+oB,OAAO87T,EAAaj5V,KAAKsnK,eAAiBwD,GAAc,GAE/E,OAAO1D,EASTznK,iBAAiBwwB,EAAOxxB,GACtB,IAAIu6V,EACJ,MAAMn5V,EAAKC,KAEX,IAAKk5V,EAAwBn5V,EAAG8/D,OAAOkyD,SAASyjO,eAAiB,MAAQ0D,SAA+B,GAAKA,EAAsB94R,QAAS,CAC1IzhE,EAASA,EAAOqJ,cAAc,IAAIjI,EAAG8/D,OAAOs5R,YAE9C,MAAMn2S,YACFA,GACErkD,EACJm3V,EAAiB/1V,EAAG8/D,OAAOm1R,sBAAsBr2V,GACjD2jO,EAAYwzH,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAevkB,YAC7F,IAAKxxU,EAAG6/D,UAAY7/D,EAAG2nK,aAAe1kH,GAAejjD,EAAGioK,2BAA6BjoK,EAAGsnK,qBAAuBi7D,IAAc,MAAQA,IAAc,SAAU,CAC3J,MAAM56D,EAAanxH,GAAUvxB,KAAKrmB,GAClC+oK,EAAWxgK,MAAQnH,EAAGgrK,qBAAqBhrK,EAAG4nK,YAAa3kH,GAC3D,OAAO0kH,EAAWxgK,MAAQ,GAAKwgK,EAAW3vH,SAAS+I,GAAYkqH,aAAa76I,IAE9E,OAAO,MASTxwB,kBAAkBwwB,EAAOxxB,GACvB,IAAIy6V,EACJ,MAAMr5V,EAAKC,KAEX,IAAKo5V,EAAyBr5V,EAAG8/D,OAAOkyD,SAASyjO,eAAiB,MAAQ4D,SAAgC,GAAKA,EAAuBh5R,QAAS,CAC7IzhE,EAASA,EAAOqJ,cAAc,IAAIjI,EAAG8/D,OAAOs5R,YAE9C,MAAMn2S,YACFA,GACErkD,EACJm3V,EAAiB/1V,EAAG8/D,OAAOm1R,sBAAsBr2V,GACjD2jO,EAAYwzH,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAevkB,YAC7F,IAAKxxU,EAAG6/D,UAAY7/D,EAAG4nK,cAAgB3kH,GAAejjD,EAAGioK,2BAA6BjoK,EAAGsnK,qBAAuBi7D,IAAc,MAAQA,IAAc,OAAQ,CAC1J,MAAM36D,EAAcpxH,GAAUvxB,KAAKrmB,GACnCgpK,EAAYxjK,EAAIiQ,KAAK+oB,MAAMwqI,EAAYvyH,MAAQr1C,EAAGgrK,qBAAqBhrK,EAAG2nK,WAAY1kH,IACtF,OAAO2kH,EAAYzgK,MAAQ,GAAKygK,EAAY5vH,SAAS+I,GAAYkqH,aAAa76I,IAEhF,OAAO,MASTxwB,gBAAgBwwB,EAAOxxB,GACrB,IAAI06V,EACJ,MAAMt5V,EAAKC,KAEX,IAAKq5V,EAAyBt5V,EAAG8/D,OAAOkyD,SAASyjO,eAAiB,MAAQ6D,SAAgC,GAAKA,EAAuBj5R,QAAS,CAC7IzhE,EAASA,EAAOqJ,cAAc,IAAIjI,EAAG8/D,OAAOs5R,YAE9C,MAAM/hT,aACFA,GACEz4C,EACJm3V,EAAiB/1V,EAAG8/D,OAAOm1R,sBAAsBr2V,GACjD2jO,EAAYwzH,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAevkB,YAC7F,IAAKxxU,EAAG6/D,UAAY7/D,EAAG6nK,YAAcxwH,GAAgBr3C,EAAGioK,2BAA6BjoK,EAAGsnK,qBAAuBi7D,IAAc,MAAQA,IAAc,SAAU,CAC3J,MAAM16D,EAAYrxH,GAAUvxB,KAAKrmB,GACjCipK,EAAU3gK,OAASlH,EAAGgrK,qBAAqBhrK,EAAG8nK,aAAczwH,GAC5D,OAAOwwH,EAAU3gK,OAAS,GAAK2gK,EAAU7vH,SAAS+I,GAAYkqH,aAAa76I,IAE7E,OAAO,MASTxwB,mBAAmBwwB,EAAOxxB,GACxB,IAAI26V,EACJ,MAAMv5V,EAAKC,KAEX,IAAKs5V,EAAyBv5V,EAAG8/D,OAAOkyD,SAASyjO,eAAiB,MAAQ8D,SAAgC,GAAKA,EAAuBl5R,QAAS,CAC7IzhE,EAASA,EAAOqJ,cAAc,IAAIjI,EAAG8/D,OAAOs5R,YAE9C,MAAM/hT,aACFA,GACEz4C,EACJm3V,EAAiB/1V,EAAG8/D,OAAOm1R,sBAAsBr2V,GACjD2jO,EAAYwzH,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAevkB,YAC7F,IAAKxxU,EAAG6/D,UAAY7/D,EAAG8nK,eAAiBzwH,GAAgBr3C,EAAGioK,2BAA6BjoK,EAAGsnK,qBAAuBi7D,IAAc,MAAQA,IAAc,OAAQ,CAC5J,MAAMz6D,EAAetxH,GAAUvxB,KAAKrmB,GACpCkpK,EAAarjI,EAAIpwB,KAAK+oB,MAAM0qI,EAAaxyH,OAASt1C,EAAGgrK,qBAAqBhrK,EAAG8nK,aAAczwH,IAC3F,OAAOywH,EAAa5gK,OAAS,GAAK4gK,EAAa9vH,SAAS+I,GAAYkqH,aAAa76I,IAEnF,OAAO,MAETxwB,iBAAiBwwB,GACf,MAAMpwB,EAAKC,KAEX,GAAID,EAAGm5J,UAAYn5J,EAAGy4V,gBAAgBroU,EAAOpwB,EAAGm5J,WAAan5J,EAAG0nK,mBAAmB1nK,EAAGm5J,SAAU/oI,GAAQ,CACtG,MAAMhkB,EAAS+N,MAAM6jK,iBAAiB5tJ,GACtChkB,EAAO02J,cAAgB9iK,EAAG8/D,OAAOgjG,cACjC,OAAO12J,GAGXxM,UAAU6pL,EAAKmjK,GACb,MAAM5sV,EAAKC,KACX,IAAKD,EAAGmmN,YAAa,CACnB,OAAO,KAET,GAAI18B,EAAK,CACP,GAAIA,EAAI1iD,UAAW,CACjB0iD,EAAI7wK,MAAQ5Y,MACP,CACLypL,EAAMjwD,GAAQ9hD,YAAYk1Q,EAAQpzN,GAAQrhD,aAAa,CACrDvtE,GAAI5K,EAAG2sV,OACNljK,EAAK,CACN1C,QAAS/mL,EAAG6sV,WAAW53U,KAAKjV,GAC5B4Y,MAAO5Y,EAAG8/D,QACT9/D,EAAGypL,KAAM,CACV7wK,MAAO5Y,EACPkiD,SAAU,CACRp1C,KAAM,aAIZ28K,EAAIr6J,GAAG,CACLoqU,gBAAiB,sBACjBj9U,QAASvc,IAEXA,EAAGwsV,cAAgB,IAAI9C,GAAc,CACnCl+B,UAAWxrT,EAAG8/D,cAEX,GAAI8sR,EAAQ,CACjB,IAAI6M,EACJ7M,EAAO5wU,WACNy9U,EAAoBz5V,EAAGwsV,iBAAmB,MAAQiN,SAA2B,OAAS,EAAIA,EAAkBz9U,UAE/G,OAAOytK,EAIT7pL,mBAAmB82C,EAAStmB,GAC1B,IAAIspU,EAAuB5qS,EAC3B,MAAM9uD,EAAKC,MACT6/D,OACEA,GACE9/D,EACJ+1V,EAAiBj2R,EAAOm1R,sBAAsBv+S,GAChD,GAAIopB,EAAOgZ,SAAU,CACnB,OAAO,MAET,IAAIypJ,EAAYwzH,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAevkB,YAG/F,MAAMmoB,GAAwBD,GAAyB5qS,EAAWpY,KAAa,MAAQoY,SAAkB,OAAS,EAAIA,EAASyD,UAAUuN,EAAOysR,uBAAyB,MAAQmN,SAA+B,EAAIA,EAAwBhjT,EAC1OkjT,EAAWxpU,EAAMxxB,OAAOslD,QAAQ,sBAClC,IAAKq+K,GAAaq3H,GAAYA,IAAaD,EAAsB,CAC/D,OAAO,MAETjjT,EAAUtmB,EAAMxxB,OAAOslD,QAAQlkD,EAAG+7K,cAClC,MAAM89K,EAAgBnjT,EAAQmI,UAAU7G,SAAS,6BAC/C8hT,EAAcpjT,EAAQmI,UAAU7G,SAAS,2BAC3C,GAAIuqL,IAAc,KAAM,CACtB,GAAIs3H,GAAiBC,EAAa,CAChC,OAAO,WACF,GAAID,EAAe,CACxBt3H,EAAY,WACP,GAAIu3H,EAAa,CACtBv3H,EAAY,YACP,CACL,OAAOviO,EAAGk0V,kBAAkB9jU,EAAOsmB,IAAY12C,EAAGm0V,gBAAgB/jU,EAAOsmB,IAG7E,GAAImjT,GAAiBt3H,IAAc,SAAWu3H,GAAev3H,IAAc,MAAO,CAChF,OAAO,MAET,GAAIviO,EAAGk0V,kBAAkB9jU,EAAOsmB,IAAY6rL,IAAc,SAAWviO,EAAGm0V,gBAAgB/jU,EAAOsmB,IAAY6rL,IAAc,MAAO,CAC9H,OAAO,KAET,OAAO,MAET3iO,sBACE,MAAM4sV,cACFA,GACEvsV,MACJygL,YACEA,EAAWg1K,YACXA,EAAW7J,YACXA,GACE5rV,KAAK49J,SAASnwF,QAClBtgC,EAAYsoT,EAAch1K,EAAY/uK,IAAI,aAAek6U,EACzDx+S,EAAUqoT,EAAc7J,EAAcnrK,EAAY/uK,IAAI,YACtD+kC,QACEA,GACEz2C,KAAKwpL,IACX+iK,EAAcM,oBAAoBp2S,EAAQzuC,cAAc,4BAA6BmlC,GACrFo/S,EAAcM,oBAAoBp2S,EAAQzuC,cAAc,0BAA2BolC,GAErFztC,kBAAiBq5K,YACfA,EAAWvrG,QACXA,IAEA,MAAM1tE,EAAKC,MACTy1C,IACEA,GACE11C,EAAG8/D,OACPlhE,EAAS43C,GAAUvxB,KAAKg0J,EAAa,KAAM,MAC7C,GAAIj5K,EAAGi7K,WAAa,IAAK,CAEvB,IAAKvlI,GAAOg4B,EAAQ9xB,OAAS,SAAWlG,GAAOg4B,EAAQ9xB,OAAS,OAAQ,CACtEh9C,EAAOwF,EAAIxF,EAAOy2C,MAAQ,MACrB,CACLz2C,EAAOwF,GAAKpE,EAAGypL,IAAItuI,WAAW,GAAK,EAErCv8C,EAAOuI,MAAQnH,EAAGypL,IAAItuI,WAAW,GAAK,MACjC,CAEL,GAAIuyB,EAAQ9xB,OAAS,SAAU,CAC7Bh9C,EAAO6lC,EAAI7lC,EAAO02C,OAAS,EAE7B12C,EAAOsI,OAASlH,EAAGypL,IAAItuI,WAAW,GAAK,EAEzC,MAAO,CACLv8C,OAAAA,GAGJgB,mBAAmB8tE,EAASt9C,GAC1B,OAAOs9C,EAAQtgC,YAAcsgC,EAAQrgC,QAAUqgC,EAAQtgC,WAAantC,KAAKyzV,oBAAsBzzV,KAAK2zV,YAAY9sV,KAAK7G,KAAK4zV,oBAAsB5zV,KAAMytE,EAASt9C,GAIjKxwB,YAAW6pL,IACTA,IAEA,MAAMzpL,EAAKC,MACTmtC,UACEA,EAASC,QACTA,EAAOkmC,MACPA,EAAKs4Q,YACLA,EAAWn1M,MACXA,EAAKhiI,QACLA,EAAU,GAAEqhV,eACZA,GACE/1V,EAAG69J,SAASnwF,QAElB,IAAKtgC,IAAcC,EAAS,CAC1B,OAAOo8I,EAAI7gI,KAGb,MAAMmxS,EAAU,CACdtnR,OAAQsjR,EACRr/M,MAAAA,EACAhiI,QAAAA,EACA04B,UAAAA,EACAC,QAAAA,EACAztC,CAAC2zE,GAAQs4Q,GAIXkO,EAAQhH,UAAY/yV,EAAG8/D,OAAOkzR,iBAAiB+G,EAAQ3sT,WACvD2sT,EAAQ9G,QAAUjzV,EAAG8/D,OAAOkzR,iBAAiB+G,EAAQ1sT,SACrD0sT,EAAQvP,eAAiBxqV,EAAGwsV,cAAcz5R,SAAS,CACjDt2B,KAAMs9T,EAAQ3sT,UACdliC,KAAM6uV,EAAQhH,UACdh9U,IAAK,4BAEPgkV,EAAQtP,aAAezqV,EAAGwsV,cAAcz5R,SAAS,CAC/Ct2B,KAAMs9T,EAAQ1sT,QACdniC,KAAM6uV,EAAQ9G,QACdl9U,IAAK,0BAEP,OAAO/V,EAAGuqV,gBAAgBwP,GAI5Bn6V,sBAAsB8gL,GACpBA,EAAYpoF,aAEd14F,uBAAuB8gL,GAErBA,EAAYz4E,cAEdroG,sBAAsB8tE,GACpB,MAAM5N,OACJA,GACE7/D,KACJ,MAAO,CACLg0N,eAAgBn0J,EAAOo1R,sBAAsBp1R,EAAOopP,WAAax7O,EAAQt9C,MAAQs9C,EAAQh3B,UAG7F92C,qBAAqB8tE,GACnB,MAAO,CACLumJ,eAAgBvmJ,EAAQumJ,gBAG5Br0N,mBAAmB8tE,GACjB,MAAO,CACLumJ,eAAgBvmJ,EAAQumJ,eACxB7jM,MAAOs9C,EAAQt9C,OAGnBxwB,0BAA0B8tE,EAASt9C,GACjC,IAAI4pU,EAAuBC,EAAwBC,EACnD,MAAMp6R,OACFA,GACE7/D,MACJy2C,QACEA,GACEg3B,EACJgzG,EAAc5gH,EAAOy1R,mBAAmB7+S,GACxCu9K,GAAkB+lI,EAAwBl6R,EAAOo1R,yBAA2B,MAAQ8E,SAA+B,OAAS,EAAIA,EAAsBlzV,KAAKg5D,EAAQppB,GACnKiuR,GAAoBs1B,EAAyBn6R,EAAO42R,2BAA6B,MAAQuD,SAAgC,OAAS,EAAIA,EAAuBnzV,KAAKg5D,EAAQppB,GAC5Kx4C,OAAOmZ,OAAOq2D,EAAS,CACrBgzG,YAAAA,EACAs1K,WAAYt1K,EACZuzC,eAAAA,EACA0wG,iBAAAA,EACA0rB,iBAAkB6J,EAAwBp6R,EAAOq6R,sBAAwB,MAAQD,SAA+B,OAAS,EAAIA,EAAsBpzV,KAAKg5D,EAAQm0J,EAAgBvzC,KAGpL9gL,cAAc8tE,EAASt9C,GACrB,OAAQnwB,KAAK6/D,OAAOs6R,cAAgBn6V,KAAK6/D,OAAOo+P,qBAAqBxwP,EAAQtgC,UAAWsgC,EAAQrgC,QAASqgC,EAAQgzG,YAAahzG,EAAQumJ,kBAAoBh0N,KAAKo6V,mBAAmB3sR,EAASt9C,GAE7Lu8T,YACE,MAAO,GAAG1sV,KAAK6/D,OAAOl1D,uBAK1B4oV,GAAcrrV,OAAS,cACvBijO,GAAmB2F,gBAAgByiH,GAAe,KAAM,aACxDpoH,GAAmB2F,gBAAgByiH,GAAe,MAAO,qBAKzD,MAAM8G,GAA4B,SAAUlqU,GAC1C,IAAImqU,EAAcC,EAIlB,IAAKD,EAAet6V,KAAKjB,UAAY,MAAQu7V,SAAsB,IAAMC,EAAwBD,EAAaz6R,OAAOkyD,SAASyoO,YAAc,MAAQD,SAA+B,GAAKA,EAAsBE,WAAY,CACxN,OAAO,MAET,OAAO35S,GAAYmkH,mBAAmBjlK,KAAK6jK,WAAY1zI,IAOzD,MAAMuqU,WAAuBnH,GAG3B5zV,UAAU4rT,EAAWpzS,GACnB,IAAKA,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO+tM,eAAiB,MAAO,CAClF/tM,EAAOqxK,IAAM,KAEftvK,MAAMsB,aAAa3c,WAGrBc,kBAAkBg0V,GAGhB3zV,KAAK26V,kBAAoBhH,EAE3Bh0V,SACE,MAAMI,EAAKC,MACT6/D,OACEA,GACE9/D,EAENA,EAAGk7K,gBAAkBl7K,EAAGi6K,gBAAkBn6G,EAAOyrR,uBAEjDvrV,EAAGi7K,SAAWn7G,EAAOopP,WAAa,IAAM,IAE1CtpT,gBAAgB8tE,GACd,MAAM5N,OACFA,GACE7/D,MACJ4sT,sBACEA,GACE/sP,GACJ4gH,YACEA,EAAWg1K,YACXA,GACEhoR,EACJzzB,EAAah6C,KAAKg7K,WAAa,KAC/B4/K,YACEA,GACE56V,KAAK49J,SAEX/9F,EAAO+sP,sBAAwB,MAE/BnsI,EAAYnvK,IAAI,CACd67B,UAAWytT,EACXxtT,QAASwtT,IAGX,GAAInF,EAAa,CACfx3V,OAAOmZ,OAAOq2D,EAAS,CACrBrgC,QAASwtT,EACTtnR,MAAO,YACPqiR,SAAU,UACVC,UAAW,eACXC,eAAgB,aAChBl6S,KAAM3B,EAAa,OAAS,YAEzB,CACL/7C,OAAOmZ,OAAOq2D,EAAS,CACrBtgC,UAAWytT,EACXtnR,MAAO,UACPqiR,SAAU,YACVC,UAAW,aACXC,eAAgB,eAChBl6S,KAAM3B,EAAa,QAAU,WAGjCyzB,EAAQgoR,YAAcz1V,KAAKy1V,aAAeA,EAC1C51R,EAAO+sP,sBAAwBA,EAEjCjtT,WAAW27K,GACT,MAAMv7K,EAAKC,KACTmM,EAAS+N,MAAMigK,WAAWmB,IAC1Bu/K,IACEA,EAAGC,gBACHA,GACE/6V,EAAG8/D,OAAOkyD,SAEhB,GAAI5lH,IAAW,QAEfpM,EAAGg7V,kBAAoBh7V,EAAGi7V,WAAW1/K,EAAK2/K,YAAcl7V,EAAG6/D,UAE3Di7R,IAAQA,EAAIj7R,UAEZk7R,IAAoBA,EAAgBl7R,UAAW,CAC7C,OAAO,MAET,OAAOzzD,EAETxM,UAAU27K,GACR,MAAMnvK,EAAS+N,MAAMghK,UAAUI,GAE/B,GAAInvK,IAAW,MAAO,CACpB,MAAMshE,QACJA,GACE6tG,EAEJA,EAAKs/K,YAAcntR,EAAQgzG,YAAY/uK,IAAI1R,KAAKy1V,YAAc,YAAc,WAC5Ez1V,KAAK6/D,OAAOtyC,QAAQ,kBAAmB,CACrC2tU,aAAc5/K,EAAK7kI,QACnBs9S,aAAcz4K,EAAK7kI,QACnBgqI,YAAahzG,EAAQgzG,YACrBuzC,eAAgBvmJ,EAAQumJ,iBAG1B14C,EAAK7tG,QAAQ3+B,OAAS,EACtBwsI,EAAK7tG,QAAQ5zD,SAAWyhK,EAAK45K,cAE/B,OAAO/oV,EAGTxM,kBACE,OAAOK,KAAKy1V,YAEd91V,iBAAiBwwB,GACf,MAAM0vC,OACJA,GACE7/D,KAEJ,GAAI6/D,EAAOs7R,kBAAkBhrU,EAAMxxB,QAAS,CAC1C,IAAIo7V,EACJ,MAAM/lI,GAAkB+lI,EAAwBl6R,EAAOo1R,sBAAsB9kU,MAAY,MAAQ4pU,SAA+B,OAAS,EAAIA,EAAsBrkR,UAEnK,GAAIs+I,IAAmBA,EAAe3tI,aAAc,CAElD,MAAMl6E,EAASovK,KAAY1tK,UAAUkwK,iBAAiBl3K,KAAK7G,KAAMmwB,GAC/Do1I,EAAc,GAChB,GAAI1lG,EAAOopP,WAAY,CACrB1jJ,EAAY/mK,KAAK,CACfi4C,QAASopB,EAAOyjD,WAAW7sE,QAC3B0V,UAAW,iBAER,CACLo5G,EAAY/mK,KAAK,CACfi4C,QAASopB,EAAO6uR,gBAAgBprO,WAAW7sE,QAC3C0V,UAAW,eAGfhgD,EAAO02J,cAAgBhjG,EAAOgjG,cAC9B12J,EAAOu3J,iBAAmB,CACxB6B,YAAAA,GAEFp5J,EAAO6nN,eAAiB7nN,EAAO8uV,UAAYjnI,EAK3C7nN,EAAO0uK,YAAcw/K,GACrB,OAAOluV,IAIbxM,gBAAe8tE,QACbA,EAAOt9C,MACPA,IAEA,IAAIy1K,EAGJn4H,EAAQA,EAAQ6F,OAAS7F,EAAQm+Q,YACjC,MAAM/rR,OACFA,GACE7/D,MACJmtC,UACEA,EAASC,QACTA,EAAOqzI,YACPA,GACEhzG,GACJ4P,WACEA,GACEojG,EACN,IAAIjtG,GACHoyH,EAAY5lM,KAAKwpL,OAAS,MAAQoc,SAAmB,OAAS,EAAIA,EAAUj0E,aAMvE9xD,EAAO0rC,QAAQ6wJ,cAGrB,GAAI37E,EAAYpjG,aAAeA,EAAY,CACzC5P,EAAQgzG,YAAYhzG,EAAQ6F,OAAS7F,EAAQ5zD,SAC7C4zD,EAAQgzG,YAAYhzG,EAAQ6F,OAAS7F,EAAQA,EAAQ6F,OAEvD7F,EAAQgpE,MAAQtpG,GAAaC,GAAWA,EAAUD,EAAY,GAE9DsgC,EAAQA,EAAQ6F,OAAS7F,EAAQ5zD,UAEjC4zD,EAAQgpE,QAAU,MAClB,GAAIhpE,EAAQgpE,MAAO,CAGjB52E,EAAOtyC,QAAQ,2BAA4B,CACzCkgD,QAAAA,EACAt9C,MAAAA,EACA+qU,aAAcztR,EAAQh3B,QACtBs9S,aAActmR,EAAQh3B,QACtBgqI,YAAahzG,EAAQgzG,YACrBuzC,eAAgBvmJ,EAAQumJ,iBAE1BxgJ,EAAW,KAIb,IAAK/F,EAAQvlD,MAAO,OACZulD,EAAQ2rE,SAAS5lE,IAG3B7zE,oBAAoBy7V,GAClBp7V,KAAKyjK,cAAgB23L,EAGvBz7V,UAAU6pL,EAAKmjK,GACb,OAAOzyU,MAAMmhV,WAAW7xK,GAAOA,EAAI1iD,UAAY0iD,EAAMx4I,GAAa55B,OAAO,CACvEzM,GAAI,GAAG3K,KAAK6/D,OAAOl1D,sBAClB6+K,GAAMmjK,GAIXhtV,eAAe27V,GACb,MAAMv7V,EAAKC,KAAK2Y,MACd80D,EAAUztE,KACVu7V,EAAuB,KACrB,IAAKx7V,EAAGmc,YAAa,CACnBnc,EAAG8/D,OAAOtyC,QAAQ,kBAAmB,CACnC2tU,aAAcztR,EAAQh3B,QACtBs9S,aAActmR,EAAQh3B,QACtBgqI,YAAahzG,EAAQgzG,YACrBuzC,eAAgBvmJ,EAAQumJ,iBAE1Bj0N,EAAG43E,QAAQlK,KAGjB,GAAI6tR,EAAU,OAENv7V,EAAGy7V,mBAAmB/tR,GAC5B8tR,QAGG,CACH,IAAIE,GACHA,EAAgB17V,EAAG27V,aAAe,MAAQD,SAAuB,OAAS,EAAIA,EAAc50V,KAAK9G,EAAI0tE,GACtG8tR,KAGJ57V,yBAAyB8tE,GACvB,IAAIpN,QAEErgE,KAAK83V,qBAAqBrqR,EAASA,EAAQgzG,aACjDzgL,KAAK6/D,OAAOtyC,QAAQ,gBAAiB,CACnCkzJ,YAAahzG,EAAQgzG,YACrBuzC,eAAgBvmJ,EAAQumJ,eACxB7jM,MAAOs9C,EAAQt9C,MACf4jU,aAActmR,EAAQh3B,WAKvB4pB,EAAergE,KAAK6/D,UAAY,MAAQQ,SAAsB,OAAS,EAAIA,EAAa9yC,QAAQ,mBAAoB,CACnHkzJ,YAAahzG,EAAQgzG,YACrBuzC,eAAgBvmJ,EAAQumJ,iBAG5Br0N,QAAQ8tE,GACN,IAAIkuR,EACJ,MAAM97R,OACFA,GACE7/D,MACJygL,YACEA,GACEhzG,EAINgzG,EAAYtgK,KAAK40U,WAAa,MAC9Bl1R,EAAOo4R,iCACN0D,EAAa37V,KAAKwpL,OAAS,MAAQmyK,SAAoB,OAAS,EAAIA,EAAWhqO,OAChF9xD,EAAOppB,QAAQmI,UAAU98C,UAAU9B,KAAK6zV,cAAcxuV,MAAM,MAS9D1F,uBACE,GAAIK,KAAK+6F,MAAO,CACd,OAAO,OAGXp7F,oCAAoCi8V,EAAezrU,EAAOipH,EAAUlxH,EAAQ,OAC1E,OAAOxpB,EAAeA,EAAe,GAAIk9V,GAAgB,GAAI,CAC3D1zU,MAAAA,EACAiI,MAAAA,EACAipH,SAAAA,IAIJz5I,qBAAqBqzN,GACnB,IAAI8gI,EAAgB+H,EACpB,KAAM/H,EAAiB9zV,KAAK49J,YAAc,MAAQk2L,SAAwB,OAAS,GAAK+H,EAAwB/H,EAAermR,WAAa,MAAQouR,SAA+B,OAAS,EAAIA,EAAsBp7K,eAAiBuyC,EAAWvyC,YAAa,CAE7PuyC,EAAW84E,WAAW,sBAAwB,KAE9C94E,EAAW84E,WAAW,gBAAkB9rS,KAAK49J,SAASnwF,QAAQ6pR,WAMlE33V,uBAEAA,2BACAA,cAAc8tE,EAASt9C,GACrB,MAAM,IAAIzf,MAAM,yBAElB/Q,qBAAqBozE,EAAWtF,GAC9B,MAAM,IAAI/8D,MAAM,yBAElB/Q,uBAAuBm8V,EAAU3rU,GAC/B,MAAM,IAAIzf,MAAM,yBAElB/Q,WAAWs7V,GACT,MAAM,IAAIvqV,MAAM,0BAIpBxR,EAAgBw7V,GAAgB,eAAgB,CAM9Cx0I,YAAa,KAMbk1I,cAAe,EAEfL,gBAAiB,MACjBh/K,oBAAqB,IAKrB63K,mBAAoB,KAOpBmI,SAAU,0BACVC,YAAa9hU,GAAQ,uCACaA,EAAKu8G,MAAQ,QAAU,gCACzCv8G,EAAKqwT,mCACLrwT,EAAKswT,gEAC0BtwT,EAAKzlB,8CAGpDo/U,cAAe,mBAEjB30V,EAAgBw7V,GAAgB,eAAgB,CAC9Cj6R,MAAO,CAAC,SAAU,wBAClBtF,OAAQ,CAAC,0BAEXu/R,GAAexyV,OAAS,iBAKxB,MAAM+zV,GAAKp8T,GACTq8T,GAAiB,CAAC,YAAa,UAAW,WAAY,kBACtDC,GAAW9iR,IAET,GAAIA,EAAOv6E,SAAW,EAAG,OAAOu6E,EAAO,GAAG95E,WAErC,GAAI85E,EAAOv6E,SAAW,EAAG,CAC5B,MAAO09B,EAAM2L,GAAQkxC,EAAO,aAAcgwC,GAAYhwC,EAASA,EAAO8qB,UACpEi4P,EAAYH,GAAGjwV,MAAMwwB,EAAKj9B,OAC5B,GAAI68V,GAAaj0T,EAAK5oC,MAAO,CAC3B68V,EAAUhyT,SAASjC,EAAK5oC,MAAM6N,WAAY+6B,EAAK5oC,MAAM8N,aAAc86B,EAAK5oC,MAAM+N,aAAc66B,EAAK5oC,MAAMgO,mBAGzG,OAAO6uV,EAAYv8T,GAAWtwB,MAAM6sV,GAAa,KAGnD,OAAO,MAETC,GAAW,CAACC,EAAQC,KAClB,MAAMp9T,EAAI,IAAI3wB,KAAK8tV,EAAOtsV,WAC1BmvB,EAAEiL,SAASmyT,EAASnvV,WAAYmvV,EAASlvV,cACzC,OAAO8xB,GAETq9T,GAAgB,CAACrvT,EAAW2qG,EAAW/3I,KAErC,GAAIotC,GAAa2qG,GAAa/3I,EAAGw2U,cAAgBx2U,EAAG08V,aAAc,CAChE,MAAMvb,EAAa+a,GAAGl9U,IAAIs9U,GAASt8V,EAAGu2U,eAAe/2U,MAAOQ,EAAG28V,eAAen9V,OAAQQ,EAAG0gL,YAAYimJ,WAAY,gBACjH3mU,EAAGw2U,aAAah3U,MAAQ2hV,EACxBnhV,EAAG08V,aAAal9V,MAAQ08V,GAAG1sV,MAAM2xU,KAQvC,MAAMyb,WAAiBj9R,GAErBlgE,0BACE,MAAO,CAOLo9V,oBAAqB,KACrB3hN,aAAc,KAOd1tB,WAAY,IAQZ2gF,WAAY,KA4CZ6pF,aAAc,KAuCd90Q,MAAO,KAOP2nB,aAAc,MAKlBjrC,UAAUkgE,EAAQ1nD,GAChB,MAAMpY,EAAKC,KACX6/D,EAAOg9R,UAAY98V,EACnBma,MAAMsB,UAAUqkD,EAAQ7uB,GAAa55B,OAAO,CAC1CwzB,aAAci1B,EAAOj1B,cACpBzyB,IACHpY,EAAG+8V,wBAA0Bj9R,EAAO1wC,GAAG,CACrCxvB,CAACI,EAAGk7I,cAAe,mBACnB8hN,cAAe,kBAGfC,iBAAkB,qBAClB1gV,QAASvc,IAGbJ,YACE,IAAIs9V,EACJj9V,KAAK88V,2BACJG,EAAgBj9V,KAAKk9V,WAAa,MAAQD,SAAuB,OAAS,EAAIA,EAAclhV,UAC7F7B,MAAM8B,YAMRrc,sBACAA,mBAAmBo4R,GACjB,MAAM90Q,MACJA,GACEjjB,KAEJ,GAAIijB,EAAO,CACT80Q,EAAejrR,EAAQyC,MAAMwoR,GAC7BA,EAAa90Q,MAAQlN,EAAOvG,MAAMyT,EAAO80Q,EAAa90Q,OAExD,OAAO80Q,EAETp4R,YAAYsjB,GACVjjB,KAAKm9V,iBAAiBl6U,GACtB,OAAOA,EAGTtjB,iBAAiBsjB,GACf,IAAK,MAAMgrC,KAAOhrC,EAAO,CACvB,MAAMm6U,EAAUn6U,EAAMgrC,GACtB,GAAImvS,IAAY,KAAM,QACbn6U,EAAMgrC,QACR,GAAImvS,IAAY,MAAQA,SAAiB,GAAKA,EAAQn6U,MAAO,CAClEjjB,KAAKm9V,iBAAiBC,EAAQn6U,SAIpCtjB,cAAc+G,GACZ,IAAI22V,EAAoBC,EACxB,MAAMv9V,EAAKC,KACTuW,EAAQ7P,EAAO3H,OACfQ,EAAQmH,EAAOnH,MAEjB,GAAIQ,EAAGu2U,gBAAkBv2U,EAAGw2U,aAAc,CACxCx2U,EAAGw2U,aAAa5tT,IAAM5oB,EAAGu2U,eAAe/2U,MAE1C,GAAIQ,EAAG08V,aAAc,CACnB,IAAIc,EAAoBC,EAGxB,GAAIvB,GAAGzwT,QAAQywT,GAAGhxT,WAAWsyT,EAAqBx9V,EAAGu2U,kBAAoB,MAAQinB,SAA4B,OAAS,EAAIA,EAAmBh+V,OAAQ08V,GAAGhxT,WAAWuyT,EAAmBz9V,EAAGw2U,gBAAkB,MAAQinB,SAA0B,OAAS,EAAIA,EAAiBj+V,QAAS,CAClRQ,EAAG08V,aAAa9zU,IAAM5oB,EAAG28V,eAAen9V,UACnC,CACLQ,EAAG08V,aAAa9zU,IAAM,MAG1B,OAAQpS,EAAM03C,KACZ,IAAK,mBACDovS,EAAqBt9V,EAAG28V,kBAAoB,MAAQW,SAA4B,OAAS,EAAIA,EAAmB99V,QAAUi9V,GAAcj9V,EAAOQ,EAAG28V,eAAen9V,MAAOQ,GAC1K,MACF,IAAK,mBACDu9V,EAAsBv9V,EAAGu2U,kBAAoB,MAAQgnB,SAA6B,OAAS,EAAIA,EAAoB/9V,QAAUi9V,GAAcz8V,EAAGu2U,eAAe/2U,MAAOA,EAAOQ,GAC7K,OAKNJ,aACE,MAAM,IAAI+Q,MAAM,yBAElB7E,aACE,MAAM9L,EAAKC,MACT06N,OACEA,GACE36N,EACJ09V,EAAc,GACdC,EAAY,IACZ7xV,OACEA,GACE6uN,EAGNwhI,GAAel9V,SAAQmpB,UAAYtc,EAAOsc,KAC1CuyM,EAAOhgG,YAAWhZ,IAChB,IAAIi8O,EACJ,MAAMl5V,KACJA,GACEi9G,EAEJ,IAAKj9G,GAAQi9G,EAAOlf,QAAUkf,EAAO9iD,IAAG36B,GAAKA,IAAMlkC,EAAG69V,mBAAmB,QAChE/xV,EAAOpH,GACd,OAEF,OAAQA,GACN,IAAK,YACHg5V,EAAYj/V,KAAKkjH,GACjB,MACF,IAAK,UACHg8O,EAAUl/V,KAAKkjH,GACf,MACF,IAAK,WACH71G,EAAOpH,GAAQi9G,EAAOlvC,OACtB,MACF,IAAK,iBAGH3mE,EAAOpH,KAAUk5V,EAAwBjjI,EAAOpvF,UAAUuyN,mBAAqB,MAAQF,SAA+B,OAAS,EAAIA,EAAsBp+V,SAAW,OAAS,GAAKmiH,EAAOniH,MACzL,SAKH,MAEH,GAAIsM,EAAOk2T,SAAWhiU,EAAG0gL,YAAYshJ,OAAQ,CAC3C07B,EAAYj/V,KAAKuB,EAAG28V,gBACpBgB,EAAUl/V,KAAKuB,EAAG08V,cAGpB,GAAIgB,EAAY3+V,OAAQ,CACtB+M,EAAOshC,UAAYgvT,GAASsB,GAE9B,GAAIC,EAAU5+V,OAAQ,CACpB+M,EAAOuhC,QAAU+uT,GAASuB,GAM5B,GAAI,cAAe7xV,GAAU,YAAaA,EAAQ,CAChDA,EAAOyc,SAAW2zU,GAAGvxT,KAAK7+B,EAAOshC,UAAWthC,EAAOuhC,QAASrtC,EAAG26N,OAAOloJ,OAAOsrO,aAAc,MAE7F,OAAOjyS,EAOTlM,aAAa8gL,IAMb9gL,YAAY8gL,IAKZ9gL,aAAa6yE,GACX,MAAM3mE,OACJA,GACE7L,KAEJ,GAAIA,KAAKm1S,gBAAiB,QACjBtpS,EAAOsuS,SAEhB,OAAO3nO,EAAOlhE,IAAIzF,GAIpBlM,qBACE,MAAM8gL,YACFA,EAAWi6C,OACXA,GACE16N,KAAK89V,gBACTp4Q,UACEA,GACEg1I,EAAOpvF,UAKb,GAAI5lD,GAAa+6F,EAAYnjG,WAAY,CAEvCo9I,EAAO9jF,gBAAkB,KACzBlxD,EAAUnmF,MAAQ,GAClBm7N,EAAO9jF,gBAAkB,MAEzBlxD,EAAUq4Q,uBAAyBr4Q,EAAUwgD,YAC7CxgD,EAAUwgD,YAAcu6C,EAAYh8K,MAGxC9E,sBACE,MAAMI,EAAKC,MACTygL,YACEA,EAAW5gH,OACXA,GACE9/D,GACJs1S,WACEA,GACEx1O,GACJ6lB,UACEA,GACE3lF,EAAG26N,OAAOpvF,UAEhB,GAAIm1C,EAAYnjG,WAAY,CAI1B,GAAIzd,EAAOm+R,eAAgB,CACzB,IAAIC,GACHA,EAAwBl+V,EAAG+9V,eAAe/J,gBAAkB,MAAQkK,SAA+B,OAAS,EAAIA,EAAsBh6S,QAAQ,mBAAmBrF,UAAU7/B,IAAI,cAElLs2R,EAAWvzS,OAAO2+K,GAGlBA,EAAYnjG,WAAa,MAI3B,GAAIoI,EAAW,CACbA,EAAUwgD,YAAcxgD,EAAUq4Q,uBAEpCh+V,EAAGm+V,mBAAqB,KACxBr+R,EAAOppB,QAAQmI,UAAU98C,OAAO,yBAElCnC,gBAAewwB,MACbA,IAEA,MAAMpwB,EAAKC,KACX,IAAKD,EAAG84E,UAAY1oD,EAAMlxB,MAAQ,SAAWc,EAAG68V,qBAAuBzsU,EAAMxxB,OAAOi6D,QAAQ3vD,gBAAkB,QAAS,CAErHknB,EAAM21B,iBAEN,GAAI31B,EAAMxxB,OAAO8F,OAAS,YAAa,CACrC1E,EAAG28V,gBAAkBF,GAAcz8V,EAAGu2U,eAAe/2U,MAAOQ,EAAG28V,eAAen9V,MAAOQ,GAEvFA,EAAGo+V,eAGPx+V,oBAGEK,KAAK06N,OAAO5lK,QACZ,MAAMuT,QAAcroE,KAAKo+V,OACzB,GAAI/1R,EAAO,CACTroE,KAAK06N,OAAOxvG,QAOZlrH,KAAK6/D,OAAOtyC,QAAQ,kBAEtB,OAAO86C,EAET1oE,sBACE,MAAMujB,QAAgBljB,KAAKq+V,cAC3B,GAAIn7U,EAAS,CACX,MAAMw3M,OACJA,GACE16N,KAGJ,IAAK06N,EAAOhrG,WAAagrG,EAAOlvF,cAAe,CAC7CkvF,EAAOxvG,QAETlrH,KAAK6/D,OAAOtyC,QAAQ,mBAGxB5tB,gBACEK,KAAK06N,OAAOxvG,QACZlrH,KAAK6/D,OAAOtyC,QAAQ,mBAKxBovU,GAASz0V,OAAS,WAYlB,MAAMo2V,WAA+B5+R,GAAel/C,MAAM2kU,KAGxD3kR,0BACE,MAAO,CACLC,MAAO,CAAC,oBAAqB,uBAAwB,2BACrDC,SAAU,CAAC,0BAIf/gE,0BACE,MAAMooT,SACJA,GACE/nT,KAAK6/D,OACT,OAAQ7/D,KAAKu+V,cAAgBv+V,KAAK4rE,QAAU5rE,KAAK4rE,MAAM1nE,QAAQ2H,OAAOlE,MAAKsgB,GAAK8/R,EAASy2C,iBAAiBv2U,KAI5GtoB,UAAUgiE,GACR,GAAI3hE,KAAK6/D,OAAOgpE,UAAW,CACzB7oI,KAAK6/D,OAAOi5H,UAEd5+K,MAAM6nD,UAAUJ,GAElBhiE,iBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAK6/D,OAAOi5H,WAIhBn5L,kBAAkBw6S,EAAUlsR,GAC1B,MAAM,IAAIvd,MAAM,yBAIlB/Q,qBAAqBqzN,GACnB,MAAMjzN,EAAKC,MACTygL,YACEA,EAAWn4B,QACXA,GACE0qE,EACN,GAAIjzN,EAAG0+V,cAAch+K,GAAc,CACjC,GAAI1gL,EAAG8/D,OAAOopP,WAAY,CACxBj2F,EAAW9rN,MAAQ8rN,EAAWgB,eAAeo3F,aAAerrT,EAAG8/D,OAAOi+P,wBACjE,CACL9qG,EAAW79K,IAAM,EAGnB69K,EAAW0rI,SAAW,KAEtB1rI,EAAW84E,WAAW/rS,EAAG4+V,UAAY,EACrC3rI,EAAW84E,WAAW,eAAerrH,EAAYm+K,kBAAoBn+K,EAAYm+K,eAEjF5rI,EAAW6rI,aAAa5zV,KAAOw1K,EAAYh8K,KAC3CuuN,EAAW3rK,SAAS7oD,KAAKw0N,EAAW6rI,cAEpC7rI,EAAWhjE,SAAWjwJ,EAAGiwJ,UAAY,KAAO9mJ,OAAOnJ,EAAGiwJ,UAAY,KAElE,IAAK1H,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQxpJ,QAAU,EAAG,CAC1Ek0N,EAAW3rK,SAAS8mC,QAAQ,CAC1B1tE,IAAK,IACLi+B,UAAW4pG,EAAQt+I,aAIvBgpN,EAAW0sF,QAAU3/S,EAAG++V,kBAAkBr+K,IAS9C9gL,kBAAkB6yE,GAChB,OAAOA,EAAO+U,MAEhB5nF,+BAA+Bo/V,GAC7B,IAAIC,EACJ,OAAOD,IAAiB,MAAQA,SAAsB,OAAS,GAAKC,EAAwBD,EAAa96S,QAAQ,IAAIjkD,KAAK2+V,eAAiB,MAAQK,SAA+B,OAAS,EAAIA,EAAsBz2S,YAAYk4H,YAEnO9gL,sCAAsC6yE,GAEpC,OAAOxyE,KAAK6/D,OAAOo/R,iBAAiB3sS,UAAUkgB,EAAO+U,OAEvD5nF,sBAAsBwwB,GACpB,IAAI+uU,EACJ,MAAM1sR,EAASxyE,KAAKihE,WAAWg0R,yBAAyBp2V,WACxD,OAAO2zE,KAAY0sR,EAAwBl/V,KAAKm/V,+BAA+BhvU,EAAMxxB,QAAUwxB,MAAY,MAAQ+uU,SAA+B,OAAS,EAAIA,EAAsB/kD,UAEvLx6S,cAAc8gL,GACZ,MAAM,IAAI/vK,MAAM,yBAGlB/Q,cAAcwwB,GAEZ,GAAIA,EAAMiiC,SAAW,aAAejiC,EAAMiiC,SAAW,UAAW,CAC9DpyD,KAAKu+V,aAAe,KAEtBv+V,KAAK6/D,OAAOu/R,2BAA2BjvU,GACvCnwB,KAAKu+V,aAAe,OAIxBr/V,EAAgBo/V,GAAwB,eAAgB,CAMtDtuM,SAAU,OAEZsuM,GAAuB18R,aAAe,GACtC08R,GAAuBp2V,OAAS,yBAkBhC,MAAMm3V,WAAyBxkM,IAC/BwkM,GAAiBn3V,OAAS,mBAW1B,MAAMo3V,WAAoB5/R,GAExB79C,2BACE,MAAO,CAQL09U,WAAY,MAMZp4K,WAAY,IASZE,UAAW,IAEXv0H,SAAU,KACVh9C,IAAK,KACLugC,MAAO,CACLA,MAAO,OAETk2S,cAAe,KAEfiT,oBAAqB,KACrBv9U,WAAY,CACVklK,WAAY,IAKlB3mH,0BACE,MAAO,CACLC,MAAO,CAAC,YAoBZ9gE,UAAUkgE,EAAQ1nD,GAChB,MAAMpY,EAAKC,KAEXmY,EAASpY,EAAG2xO,cAAcv5N,GAC1B+B,MAAMsB,UAAUqkD,EAAQ1nD,GAExB,IAAKpY,EAAGmnI,YAAa,CACnBnnI,EAAGmnI,YAAc,GAAGrnE,EAAO+4R,uCAE7B74V,EAAGwsV,cAAgB,IAAI9C,GAAc,CACnCl+B,UAAW1rP,IAEbA,EAAO1wC,GAAG,CACRxvB,CAAC,SAASkgE,EAAOysR,0BAA2B,KAC1C,IAAI5lI,EACJ,OAAQA,EAAc3mN,EAAG6oD,WAAa,MAAQ89J,SAAqB,OAAS,EAAIA,EAAY/0F,UAMlGhyH,cAAcwY,GACZ,UAAWA,IAAW,WAAY,CAChC,MAAO,CACL26C,SAAU36C,GAGd,OAAOA,EAGTxY,UAAUwY,GACR+B,MAAMV,UAAUxZ,KAAK0xO,cAAcv5N,IAErCxY,YACEK,KAAKy/V,kBAAkB,gBAAiB,WACxCvlV,MAAM8B,YAERrc,UAAUgiE,GACR,GAAI3hE,KAAK4oD,QAAS,CAChB5oD,KAAK4oD,QAAQgX,SAAW+B,EAE1BznD,MAAM6nD,UAAUJ,GAGlBhiE,SAAQipI,WACNA,IAEA,GAAIA,EAAY,CACd,IAAI82N,EACJ,MAAM3/V,EAAKC,MACT6/D,OACEA,GACE9/D,EACJm9J,EAAiB,CAAC,mBAAoB,yBAA0B,wBAAyB,oBAAqB,kBAAmB,eAAer9F,EAAOysR,qBAAsB,yBAA0B,gBAAgBziV,KAAIiM,GAAO,QAAQA,OAAQ7L,KAAK,KACxPy1V,EAAe3/V,EAAG6oD,WAAa,MAAQ82S,SAAsB,OAAS,EAAIA,EAAa3jV,UAQxFhc,EAAG6oD,QAAU,IAAI2wE,GAAQ76H,EAAeA,EAAe,CACrDu8C,SAAU,WACVtwC,GAAI5K,EAAG2sV,OAAS,GAAG3sV,EAAG8/D,OAAOl1D,eAC7BmL,IAAK/V,EAAG4/V,OACRz4N,YAAa,kBAAkBg2B,8CAA2Dn9J,EAAGmnI,cAC7FzQ,aAAc,UACdwQ,WAAYpnE,EAAOyrR,uBACnBnkN,YAAa,KACb+/C,eAAgB,KAChBJ,QAAS/mL,EAAG6sV,WAAW53U,KAAKjV,GAC5B6/D,SAAU7/D,EAAG6/D,UACZ7/D,EAAGoY,QAAS,GAAI,CACjBkV,UAAWttB,EAAG0tB,uBAEhB1tB,EAAG6oD,QAAQz5B,GAAG,CACZoqU,gBAAiB,sBACjBqG,WAAY,kBACZxvO,KAAM,YACNuB,KAAM,YACNr1G,QAASvc,KAMfJ,8BACAA,eAAe4b,GACb,IAAI+vK,EACJ,MAEEu0K,EAAkB3lV,MAAM6T,eAAexS,GAEvCukV,GAAmBx0K,EAAgBtrL,KAAK4oD,WAAa,MAAQ0iI,SAAuB,OAAS,EAAIA,EAAcv9J,eAAexS,GAChI,GAAIskV,GAAmBC,EAAiB,CACtC,MAAO,KACLD,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,IAClEC,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,MAIxEngW,kBAAkB4b,GAChB,IAAIwkV,EACJ7lV,MAAM6U,kBAAkBxT,IAEvBwkV,EAAiB//V,KAAK4oD,WAAa,MAAQm3S,SAAwB,OAAS,EAAIA,EAAehxU,kBAAkBxT,GAGpH5b,sBACE,MAAMI,EAAKC,KACTwpL,EAAMzpL,EAAG6oD,QACTulS,EAAiB3kK,EAAI/yI,QAAQzuC,cAAc,0BAC7C,IAAKjI,EAAGyyE,OAAQ,CACd,OAEFzyE,EAAGwsV,cAAcM,oBAAoBrjK,EAAI/yI,QAAS12C,EAAGyyE,OAAOrlC,WAC5DghT,GAAkBpuV,EAAGwsV,cAAcM,oBAAoBsB,EAAgBpuV,EAAGyyE,OAAOplC,SAEnFztC,sBAAsBsnI,GACpB,OAAOjnI,KAAK6/D,OAAOm1R,sBAAsB/tN,GAE3CtnI,YAAW6pL,IACTA,EAAG5iD,aACHA,IAEA,MAAM7mI,EAAKC,MACT6/D,OACEA,GACE9/D,EACJigW,EAAajgW,EAAGkgW,YAAc,GAAGpgS,EAAOysR,2BACxC6G,EAAiBpzV,EAAGi1V,sBAAsBpuN,GAI5C,IAAKusN,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAehmT,qBAAsB3+B,KAAM,CAC9G,MAAM2+B,UACFA,EAASC,QACTA,GACE+lT,EACJL,EAAYjzR,EAAOkzR,iBAAiB5lT,GACpC+yT,EAAergS,EAAOsgS,kBAAkB/yT,EAASD,GACjD6lT,EAAUnzR,EAAOkzR,iBAAiBmN,GACpC12K,EAAI/I,YAAc0yK,EAClB,OAAOpzV,EAAG+yD,SAAS,CACjB02H,IAAAA,EAEA7pL,CAAC,GAAGqgW,KAAe7M,EACnBhmT,UAAAA,EACAC,QAAAA,EACA0lT,UAAAA,EACAE,QAAAA,EACAzI,eAAgBxqV,EAAGwsV,cAAcz5R,SAAS,CACxCt2B,KAAM2Q,EACNliC,KAAM6nV,EACNh9U,IAAK,4BAEP00U,aAAc2I,EAAexyB,YAAc,GAAK5gU,EAAGwsV,cAAcz5R,SAAS,CACxEt2B,KAAM0jU,EACNj1V,KAAM+nV,EACNl9U,IAAK,gCAGJ,CACL0zK,EAAI73D,OACJ,MAAO,IAGXn/C,aACE,OAAOxyE,KAAK4oD,QAAQ63H,YAEtB9gL,YACE,MAAMI,EAAKC,KACX,GAAID,EAAGy/V,sBAAwBz/V,EAAGqgW,eAAgB,CAChDrgW,EAAGqgW,eAAiBrgW,EAAG8/D,OAAOw1O,WAAWlmR,GAAG,CAC1Cw+E,OAAQ5tG,EAAGsgW,eACX/jV,QAASvc,KAIfJ,YACE,IAAI2gW,EAEJtgW,KAAK4oD,QAAQ63H,YAAc,MAC1B6/K,EAAuBtgW,KAAKogW,kBAAoB,MAAQE,SAA8B,OAAS,EAAIA,EAAqBz5V,KAAK7G,MAC9HA,KAAKogW,eAAiB,KAExBzgW,iBAAgBiqI,UACdA,IAEA5pI,KAAK4oD,QAAQ63H,YAAczgL,KAAKg1V,sBAAsBprN,GAExDjqI,gBAAe6yE,OACbA,IAGA,GAAIA,IAAWxyE,KAAKwyE,OAAQ,CAE1BxyE,KAAK4oD,QAAQtM,UACbt8C,KAAK4oD,QAAQ8/H,kBAInB42K,GAAYp3V,OAAS,cAWrB,MAAMq4V,WAA2B7gS,GAAel/C,MAAMwjD,KA0BpDniD,2BACE,MAAO,CAEL88U,SAAU,cAEV6B,QAAS,aAQTC,eAAgB,MAQhBv6I,YAAa,KAmBbokI,gBAAiB,KACjBoW,gBAAiBxmU,GAAQ,2CACSA,EAAKu8G,MAAQ,QAAU,gEACbrsI,EAAaY,WAAWkvB,EAAKz1B,OAAS,iCAClEy1B,EAAKqwT,uCACLrwT,EAAKswT,cAAgB,2CAGrCn6M,QAAS,kBAmBTk0D,eAAgB,KAmBhBo8J,aAAc,KAEd7qV,IAAK,KACL8qV,gBAAiB,IAKrBjhW,UAAUkgE,EAAQ1nD,GAChB,MAAMpY,EAAKC,KACXka,MAAMsB,UAAUqkD,EAAQ1nD,GACxB,GAAI0nD,EAAOopP,WAAY,CACrBppP,EAAO1wC,GAAG,CACRq9M,WAAYzsO,EAAG8gW,UACfvkV,QAASvc,EACT6sB,KAAM,WAEH,CAGLizC,EAAOkoP,SAAS54R,GAAG,CACjBsoD,YAAa,wBACb5qD,MAAO,IACPvQ,QAASvc,IAKbA,EAAG+V,IAAM/V,EAAG+V,KAAO,SAAS/V,EAAGsQ,YAAY+L,OAAOnT,gBAClDlJ,EAAG+gW,aAAe,IAAI/gW,EAAGswI,WAAWtwI,EAAG+V,MAEvC,GAAI/V,EAAG0gW,eAAgB,CACrB1gW,EAAGghW,mBAAqB,MAG5BphW,YACE,IAAI65V,EAAmBpoI,EAAS86H,EAAU8U,EAC1C,MAAMjhW,EAAKC,KACXD,EAAGwpE,gBAAgB,qBACnBxpE,EAAGwpE,gBAAgB,aAClBiwR,EAAoBz5V,EAAGwsV,iBAAmB,MAAQiN,SAA2B,OAAS,EAAIA,EAAkBz9U,WAC5Gq1M,EAAUrxN,EAAGypL,OAAS,MAAQ4nC,SAAiB,OAAS,EAAIA,EAAQr1M,WACpEmwU,EAAWnsV,EAAGu7K,QAAU,MAAQ4wK,SAAkB,OAAS,EAAIA,EAASnwU,WACxEilV,EAAajhW,EAAGqxH,UAAY,MAAQ4vO,SAAoB,OAAS,EAAIA,EAAWjlV,UACjF7B,MAAM8B,YAERrc,UAAUgiE,GACR3hE,KAAKihW,eACL/mV,MAAM6nD,UAAUJ,GAElBhiE,kCACE,MAAMI,EAAKC,KACXD,EAAGwpE,gBAAgB,qBACnBxpE,EAAGwpE,gBAAgB,YACnBxpE,EAAG8/D,OAAO+qP,kBAAkBz7R,GAAG,CAC7B1qB,KAAM,oBACNkpG,OAAQ,4BACRrxF,QAASvc,IAEXA,EAAG8/D,OAAOkoP,SAAS54R,GAAG,CACpB1qB,KAAM,WACNy8V,cAAe,eACf5kV,QAASvc,IAGbJ,YACE,MAAMI,EAAKC,MACT6/D,OACEA,GACE9/D,EAEN8/D,EAAO1wC,GAAG,CACRgyU,wBAAyBphW,EAAGqhW,gCAC5B9kV,QAASvc,IAEXA,EAAGqhW,kCACH,IAAKvhS,EAAO42J,YAAa,CACvB,GAAI12N,EAAG6hP,uBAAwB,CAC7B9gM,GAAY3xB,GAAG,CACbjpB,MAAOnG,EAAGshW,iBACV/6S,SAAUvmD,EAAGshW,iBACb96S,YAAaxmD,EAAGshW,iBAChB9hT,SAAUx/C,EAAG+gW,aACbrqT,QAAS12C,EAAG6hP,uBACZtlO,QAASvc,IAGb,GAAIA,EAAG0gW,eAAgB,CACrB1gW,EAAGu7K,KAAO/X,GAAW1yC,IAAI,CACvBpsH,KAAM,YACNg6J,MAAO5+F,EAAOopP,WACdvqJ,MAAO7+F,EAAOurR,aACdvpL,UAAW,KACXpxG,aAAc1wD,EAAG6hP,uBACjB1iF,eAAgB,GAAGn/J,EAAG+gW,eACtB7hM,mBAAoB,CAACv0G,EAAIv6B,KAAW0vC,EAAOgZ,UAAY94E,EAAGk/J,mBAAmBv0G,EAAIv6B,GACjFszB,UAAWoc,EACXxyC,UAAW,CACTy2G,UAAW,cACXw3C,KAAM,SACN27D,KAAM,SACN/7I,MAAO,cACPhmE,MAAO,gBACP5Y,QAASvc,IAEVA,EAAG2qV,kBACN3qV,EAAGqxH,OAAS81C,GAAar2C,IAAI,CAC3B1kE,UAAW0T,EAAO1b,KAClB+6G,eAAgB,GAAGn/J,EAAG+gW,2BACtBrwS,aAAc1wD,EAAG6hP,uBACjBn6E,mBAAoB/8G,IAAOA,EAAGpoD,QAAQ,2BACtC+qB,UAAW,CACT2qN,YAAa,gBACbE,SAAU,eACV9mH,OAAQ,WACRzpG,OAAQ,kBACRuzE,MAAO,gBACP5+E,QAASvc,IAEVA,EAAGuhW,qBAGVvhW,EAAGkhW,eACH,GAAIlhW,EAAGuqV,gBAAiB,CACtBvqV,EAAGwhW,aAAe,IAAIhoO,GAAQ,CAC5B0N,WAAYlnI,EAAG6hP,uBACfjiP,SAAQinI,aACNA,IAEA,MAAM25C,EAAYxgL,EAAGyhW,uBAAuB56N,GAC5C,OAAO7mI,EAAGuqV,gBAAgB,CACxB/pK,UAAAA,KAGJr5C,YAAa,IAAMnnI,EAAGswI,SAAWtwI,EAAG+V,IAAM,IAAM/V,EAAG+V,IAAM,OAM/DnW,UACEK,KAAKyhW,YAAc,KACnBzhW,KAAKihW,eAEPthW,aAAawtC,EAAWC,GACtB,MAAMrtC,EAAKC,KACT0hW,EAAc,GACdC,EAAgB,GAClB,IAAK5hW,EAAG6/D,SAAU,CAGhB7/D,EAAG6hW,kBAAoB,GACvB,IAAK,MAAM7vK,KAAShyL,EAAG03U,WAAY,CACjC,MAAMtrU,EAASpM,EAAG8hW,YAAY9vK,EAAO5kJ,EAAWC,GAChD,GAAIjhC,EAAQ,CACVu1V,EAAYljW,KAAK2N,EAAOqkJ,YACxBmxM,EAAcnjW,KAAK2N,EAAO8kJ,gBAIhC,MAAO,CAACywM,EAAaC,GAEvBhiW,eACE,MAAMI,EAAKC,MACTi/V,iBACEA,GACEl/V,EAAG8/D,OAET,GAAIo/R,GAAoBl/V,EAAG8/D,OAAOgpE,UAAW,CAC3C,MAAM+4G,uBACFA,GACE7hP,EACJ+hW,EAAsB,IACrBJ,EAAaC,GAAiB5hW,EAAGgiW,eACpC,IAAKhiW,EAAGiiW,WAAY,CAClBjiW,EAAGiiW,WAAa/pT,GAAU72C,cAAc,CACtCs9C,UAAW,GAAG3+C,EAAG+V,aACjBxD,OAAQ2sV,EACRx2S,cAAe,OAGnB8xD,GAAQ+K,KAAK,CACX1jE,cAAe7hD,EAAGiiW,WAClBC,aAAc,KACd7kT,UAAW,CACTiK,SAAUq6S,EACVv4S,YAAa,CACXgzD,iBAAkB,EAClB7qD,YAAa,OAGjB9iC,SAAUzuB,EAAGghW,mBAAqB,KAAO,EACvCn/S,cAAAA,EACAwQ,OAAAA,MAGA,GAAIA,IAAW,gBAAkBA,IAAW,cAAgBA,IAAW,kBAAmB,CAExF0vS,EAAoBtjW,KAAKojD,OAI/B,GAAI7hD,EAAGghW,qBAAuBhhW,EAAGmiW,aAAc,CAC7CniW,EAAGmiW,aAAejqT,GAAU72C,cAAc,CACxCs9C,UAAW,GAAG3+C,EAAG+V,aACjBxD,OAAQsvO,EACRn5L,cAAe,OAGnB,GAAI1oD,EAAGmiW,aAAc,CACnB3nP,GAAQ+K,KAAK,CACX1jE,cAAe7hD,EAAGmiW,aAClBD,aAAc,KACd7kT,UAAW,CACTiK,SAAUs6S,EACVx4S,YAAa,CACXgzD,iBAAkB,EAClB7qD,YAAa,SAMrB,IAAK,MAAMwiG,KAAeguM,EAAqB,CAC7C/hW,EAAGoiW,cAAcruM,EAAYvrG,YAAYg4H,UAAWzsB,GAGtD,IAAK,MAAMA,KAAeguM,EAAqB,CAC7C/hW,EAAGqiW,cAActuM,EAAYvrG,YAAYg4H,UAAWzsB,KAK1D2jL,iBACE,MAAO,GAaT93U,kBAAkBoyL,EAAO5kJ,EAAYntC,KAAK6/D,OAAOy0R,iBAAiBnnT,UAAWC,EAAUptC,KAAK6/D,OAAOy0R,iBAAiBlnT,SAClH,MACED,UAAW8hQ,EACX7hQ,QAASi1T,EAAQ/5U,SACjBA,GACEypK,EACJ,OAAO7xL,QAAQ+uS,GAAcpvQ,GAAW0/R,eAAepyR,EAAWC,EAAS6hQ,EAE3E3mR,EAAW+5U,EAAWxiU,GAAW9gB,IAAIkwR,EAAYjvS,KAAKsiW,yBAExD3iW,kBAAkB4gL,EAAWsqB,EAASC,EAASp0J,EAAa,GAC1D,MAAM32C,EAAKC,MACT6/D,OACEA,GACE9/D,GACJ01C,IACEA,GACEoqB,EACJimO,EAAWjmO,EAAO0iS,sBAAsB1iU,GAAWxrB,IAAIksK,EAAUpzI,UAAW09J,GAAU,CACpF23J,iBAAkB,OACf9rT,EACLqvP,EAASxlH,EAAUnzI,QAAUyyB,EAAO0iS,sBAAsB1iU,GAAWlX,IAAI43J,EAAUnzI,QAAS09J,GAAU,CACpG03J,iBAAkB,KAClBz+O,MAAO,OACJrtE,EAAaovP,EAClBv0R,EAAO6C,KAAK41B,IAAI+7P,EAASD,GACzB/H,EAAUxsR,EAAO,EACjBkxV,EAAahtT,EAAM,QAAQqwP,cAAuB,GAAGA,MACvD,MAAO,CACLpnP,UAAW,CACT/+C,CAACI,EAAGswI,SAAU,EACd1wI,CAACI,EAAG+V,KAAM/V,EAAG+V,IACbnW,CAACI,EAAG4+V,UAAW5gE,EACfp+R,CAACI,EAAGygW,UAAWziE,EACfp+R,CAAC4gL,EAAUzqK,KAAMyqK,EAAUzqK,IAC3B4sV,iBAAkB3kE,GAAWxsR,EAAOxR,EAAG6gW,gBACvCnwK,aAAclQ,EAAU1nG,SACxB8pR,QAASltT,GAEX/e,QAAS,CACP/rB,GAAI41K,EAAU51K,IAEhB49C,YAAa,CACXg4H,UAAAA,GAEFl/K,MAAOw+D,EAAOopP,WAAa,yBAAyBw5C,OAAgB1kE,EAAU,UAAUxsR,MAAW,MAAQ,yBAAyBkxV,OAAgB1kE,EAAU,SAASxsR,MAAW,OAGtL5R,YAAY4gL,EAAWpzI,EAAWC,GAChC,MAAMrtC,EAAKC,MACT6/D,OACEA,GACE9/D,GACJgoT,SACEA,GACEloP,EACN,GAAI9/D,EAAG6iW,kBAAkBriL,EAAWpzI,EAAWC,IAAY26Q,EAAS56Q,UAAW,CAC7E,MAAMh1B,EAASpY,EAAG8iW,kBAAkBtiL,EAAWwnI,EAAS56Q,UAAW46Q,EAAS36Q,SAC1EwiF,EAAO2wD,EAAUj4B,SAAWl+I,EAAa04V,GAAG,aAAaviL,EAAUj4B,gBACnE7jJ,EAAO87K,EAAU97K,MAAQ2F,EAAaY,WAAWu1K,EAAU97K,MAC3Ds+V,EAAWt+V,GAAQmrH,EAAO,UAAUA,GAAQ,KAAKnrH,GAAQ,mBAAqB,GAC9E+rJ,EAAa9xJ,EAAeA,EAAe,GAAIyZ,GAAS,GAAI,CAC1D9W,MAAO8W,EAAO9W,OAASk/K,EAAUl/K,OAAS,IAC1CsnD,KAAM5oD,EAAG4gW,aAAe5gW,EAAG4gW,aAAa,CACtCpgL,UAAAA,IACGxgL,EAAGghW,qBAAuBhhW,EAAGijW,gBAAkB,GAAKD,IAE7D,IAAI9xM,EACJ,GAAIlxJ,EAAGghW,mBAAoB,CACzB9vM,EAAevyJ,EAAeA,EAAe,GAAIyZ,GAAS,GAAI,CAC5DwwC,KAAM5oD,EAAGwkM,eAAiBxkM,EAAGwkM,eAAe,CAC1ChkB,UAAAA,IACGxgL,EAAGijW,gBAAkB,GAAKD,IAGnC,MAAO,CACLvyM,WAAAA,EACAS,aAAAA,IAKNtxJ,cAAcoyL,EAAOj+B,GAEnB,IAAKi+B,EAAMzpC,UAAYypC,EAAMttL,OAASstL,EAAMzpK,SAAU,CACpD,OAEF,MAAMwgI,EAAQgL,EAAYngG,kBAC1B,GAAIm1F,IAAUipC,EAAMwpH,kBAAmB,CACrCv7S,KAAK4hW,kBAAkB7vK,EAAMpnL,IAAM3K,KAAK6/D,OAAOopP,WAAangK,EAAM1xG,aAAe08G,EAAY18G,aAAe0xG,EAAM9lG,YAAc8wG,EAAY9wG,aAGhJrjD,cAAcoyL,EAAOj+B,GACnB,IAAImvM,EAAuBC,EAAwBC,EACnD,MAAM9mN,EAASr8I,KAAK4hW,mBAAmBqB,GAAyBC,EAAyBnxK,EAAMwpH,qBAAuB,MAAQ2nD,SAAgC,OAAS,EAAIA,EAAuBv4V,MAAQ,MAAQs4V,SAA+B,EAAIA,EAAwBlxK,EAAMpnL,KAClRw4V,EAAwBrvM,EAAYngG,qBAAuB,MAAQwvS,SAA+B,OAAS,EAAIA,EAAsBvkT,UAAU8X,OAAO,aAAcx2D,QAAQm8I,IAE/K18I,uBAAuB8iG,GACrB,MAAM93F,SAAY83F,IAAe,SAAWA,EAAaA,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAW93F,GAC5H,OAAOA,GAAM,MAAQ4vG,GAAQzqD,SAAS9vD,KAAKgiW,WAAYr3V,GAGzDhL,uBAAuB+qD,IACvBk3L,6BACE,MAAM7hP,EAAKC,MACTipT,WACEA,EAAUm6C,SACVA,EAAQ5+G,eACRA,GACEzkP,EAAG8/D,OACT,IAAK9/D,EAAGsjW,wBAAyB,CAE/B,GAAIp6C,GAAcm6C,EAAS3sT,QAAS,CAClC12C,EAAGsjW,wBAA0BD,EAAS3sT,QAAQe,mBACzC,IAAKyxQ,EAAY,CACtBlpT,EAAGsjW,wBAA0B7+G,EAAe/tM,SAGhD,OAAO12C,EAAGsjW,wBAIZtC,yBACE,OAAQ/gW,KAAK6/D,OAAO42J,aAAez2N,KAAKsjW,oBAE1C3jW,yBAAyBywH,GACvB,MAAMvwD,OACJA,GACE7/D,KACJ,IAAKA,KAAKwd,cAAe,CACvBqiD,EAAOppB,QAAQmI,UAAU8X,OAAO,uCAAwCx2D,QAAQkwH,IAChFpwH,KAAKihW,gBAYTthW,4BAA2Bo3M,OACzBA,EAAM9zL,MACNA,KAIFtjB,SAAQipI,WACNA,IAEA,GAAIA,GAAc5oI,KAAK6/D,OAAOurR,aAAc,CAC1CprV,KAAK6gW,aAGTlhW,8BAEEK,KAAK6/D,OAAOurR,cAAgBprV,KAAKihW,eAEnCthW,wBAEE,IAAKK,KAAKwd,eAAiBxd,KAAK6/D,OAAO6uR,gBAAgBprO,WAAWsC,OAAS,EAAG,CAC5E5lH,KAAKihW,gBAGTthW,cACEK,KAAK6/D,OAAOopP,YAAcjpT,KAAKihW,eAEjCthW,iBAAiB82C,EAAS82F,EAAUC,EAAWH,EAAUC,GACvD,GAAIttI,KAAK6/D,OAAOopP,YAAc37K,IAAcE,EAAW,CACrDxtI,KAAKihW,gBAGTthW,2BAA0BZ,OACxBA,IAIAiB,KAAKsiW,sBAAwBvjW,EAAO8sV,oBAAoB,IAAM9sV,EAAO8sV,oBAAoB,GACzF7rV,KAAK84L,UAEPn5L,iBAAiBwwB,GACf,MAAMozU,EAAkBvjW,KAAKwhW,uBAAuBrxU,EAAMxxB,QAC1DqB,KAAK6/D,OAAOtyC,QAAQ,kBAAkBnjB,EAAaK,WAAW0lB,EAAMtjB,QAAS,CAC3EsjB,MAAAA,EACAozU,gBAAAA,IAKJ5jW,QAAQ8tE,GACN,MAAM1tE,EAAKC,KACX,GAAID,EAAGmmN,YAAa,CAClBnmN,EAAGwsV,cAAgB,IAAI9C,GAAc,CACnCl+B,UAAWxrT,EAAG8/D,SAEhB9/D,EAAGypL,IAAM,IAAIjwD,GAAQvoF,GAAa55B,OAAO,CACvCzM,GAAI,GAAG5K,EAAG8/D,OAAOl1D,oBACjBmL,IAAK,wBACLugC,MAAO,MACPyxG,SAAU,KACVk/B,yBAA0B,KAC1B//C,WAAYx5D,EAAQh3B,QACpBqwI,QAAS,IAAM/mL,EAAG6sV,WAAWn/Q,EAAQ+E,OAAQ/E,EAAQh3B,UACpD12C,EAAGmmN,eAGVvmN,aACE,GAAIK,KAAKwpL,IAAK,CACZxpL,KAAKwpL,IAAIztK,UACT/b,KAAKwpL,IAAM,MAGf7pL,mBAAmB+qD,GACjBA,EAAKA,EAAGzG,QAAQjkD,KAAK8gW,aAAe,sCACpC,OAAOp2S,IAAOA,EAAG9L,UAAU7G,SAAS,wBAEtCp4C,aAAY8tE,QACVA,IAEA,MAAM5N,OACJA,EAAMy7G,KACNA,GACEt7K,KACJ,GAAI6/D,EAAOopP,WAAY,CACrB3tI,EAAK9c,KAAO,EAEZ8c,EAAKz1D,KAAOhmD,EAAO+qP,kBAAkB+C,UAAYlgP,EAAQh3B,QAAQW,aAEjEkkI,EAAK/c,KAAO,EACZ+c,EAAK11D,KAAO3xG,OAAO89H,qBACd,CACLupC,EAAK/c,KAAO,EAEZ+c,EAAK11D,KAAO/lD,EAAO+qP,kBAAkB+C,UAAYlgP,EAAQh3B,QAAQuM,YAEjEs4H,EAAK9c,KAAO,EACZ8c,EAAKz1D,KAAO5xG,OAAO89H,iBAErBlyE,EAAOppB,QAAQmI,UAAU7/B,IAAI,wBAE/Bpf,QAAO8tE,QACLA,IAEAztE,KAAK6/D,OAAOppB,QAAQmI,UAAU98C,OAAO,wBAEvCnC,gBACEK,KAAKs7K,KAAKpgF,QACVl7F,KAAK6/D,OAAOppB,QAAQmI,UAAU98C,OAAO,wBACrC9B,KAAKwjW,aAEP7jW,UACAA,eAGAA,iBACAA,gBACAA,YACAA,mBACAA,iBAOAA,WAAW6yE,EAAQ/7B,GACjB,MAAM12C,EAAKC,MACT6/D,OACEA,GACE9/D,EACJoyI,EAAM57F,GAAUvxB,KAAKyxB,GACrBqvP,EAAW3zJ,EAAI6sJ,SAASn/N,EAAOpqB,IAAKoqB,EAAOurR,cAC3CrlD,EAAS5zJ,EAAIuiN,OAAO70R,EAAOpqB,IAAKoqB,EAAOurR,cACvCj+S,EAAY0yB,EAAO0wR,sBAAsBzqD,EAAU,QAAS,OAC5D14P,EAAUolC,EAAOplC,SAAWyyB,EAAO0wR,sBAAsBxqD,EAAQ,QAAS,OAC1E+sD,EAAYjzR,EAAOkzR,iBAAiB5lT,GACpC6lT,EAAU5lT,GAAWyyB,EAAOozR,oBAAoB7lT,EAASD,GAC3D,OAAOptC,EAAG2gW,gBAAgB,CACxBj8V,KAAM+tE,EAAO/tE,MAAQ,GACrB0oC,UAAAA,EACAC,QAAAA,EACA0lT,UAAAA,EACAE,QAAAA,EACAzI,eAAgBxqV,EAAGwsV,cAAcz5R,SAAS,CACxCt2B,KAAM2Q,EACNliC,KAAM6nV,EACNh9U,IAAK,4BAEP00U,aAAcwI,GAAWjzV,EAAGwsV,cAAcz5R,SAAS,CACjDt2B,KAAM4Q,EACNniC,KAAM+nV,EACNl9U,IAAK,6BAMb5W,EAAgBqhW,GAAoB,eAAgB,CAOlDQ,mBAAoB,OAEtB7hW,EAAgBqhW,GAAoB,eAAgB,CAClD9/R,MAAO,CAAC,UAAW,6BAA8B,8BAA+B,cAAe,sBAEjG8/R,GAAmBr4V,OAAS,qBAK5B,MAAMu7V,GAAgBxlW,OAAOmR,OAAO,IAqBpC,MAAMs0V,WAAoB1/R,GAAUtE,KAElC3xD,mBACE,MAAO,cAET6a,uBACE,MAAO,CACLkwK,QAAS,CACPjsL,KAAM,MACN6hB,kBAAmB,OAKzB8xC,0BACE,MAAO,CACL9iB,MAAO,CAAC,SAAU,mBAAoB,2BAA4B,iCAKtE/9C,UAAUkgE,EAAQ1nD,GAChB0nD,EAAO8jS,oBAAsB,KAC7BzpV,MAAMsB,UAAUqkD,EAAQ1nD,GAE1BxY,UAAUgiE,GACRznD,MAAM6nD,UAAUJ,GAChB,IAAK3hE,KAAKwd,cAAe,CACvBxd,KAAK84L,WASTn5L,SACEK,KAAK84L,UAEPn5L,wBAAwBwtC,EAAWC,GACjC,MAAMrtC,EAAKC,MACT6/D,OACEA,GACE9/D,GACJ01C,IACEA,GACEoqB,EACJ92D,EAAI0sC,GAAO,EAAI,GACfm1Q,kBACEA,EAAiBwgC,aACjBA,EAAY91C,cACZA,EAAayW,qBACbA,GACElsP,GACJ0qP,aACEA,GACEK,EACN,MAAMg5C,EAAgBh5C,EAAkB4wB,eACtCqoB,EAAqBzvV,KAAKC,IAAIuvV,EAAgB,EAAG,GACjDp7U,EAAQ2kB,EAAUn9B,UAClB0T,EAAM0pB,EAAQp9B,UACd8zV,EAAa,GACbj8T,EAAQ,IAAIhpB,IACZujG,EAAYgpO,EAAe,IAAM,IACnC,IAAKrrV,EAAG6/D,SAAU,CAChB,MAAMmkS,EAAgB,CAACvwI,EAAMwwI,KAC3B,MAAMzmE,EAAY/pE,EAAKhrM,MAAMxY,UAK7B,GAAIutR,EAAY/0Q,GAAS+0Q,EAAY75Q,IAAQmkB,EAAM5pB,IAAIs/Q,GAAY,CACjE11P,EAAM9oB,IAAIw+Q,GACVumE,EAAWtlW,KAAK,CACdkgD,UAAWslT,EAAU,sBAAwB,gBAC7C3iW,MAAO,CACL8yD,UAAW,YAAYiuD,KAAaoxG,EAAK22F,MAAQphT,QAEnD2tB,QAAS,CACPutU,KAAMD,EAAU,SAASxwI,EAAKtjN,QAAU,QAAQsjN,EAAKtjN,aAM7D,GAAI0zV,IAAkBC,EAAoB,CACxC,IAAK,IAAIjlW,EAAI,EAAGA,GAAK2rT,EAAas5C,GAAoB/kW,OAAS,EAAGF,IAAK,CACrEmlW,EAAcx5C,EAAas5C,GAAoBjlW,GAAI,OAIvD,IAAK,IAAIA,EAAI,EAAGA,GAAK2rT,EAAaq5C,GAAe9kW,OAAS,EAAGF,IAAK,CAChEmlW,EAAcx5C,EAAaq5C,GAAehlW,GAAI,OAGhD,IAAKwsV,GAAgBvrR,EAAOuwN,YAAa,CACvC,MAAMg7B,YACFA,GACEvrP,EAAO2tP,iBAETliR,MAAO+/Q,EACPjlR,KAAMklR,GACJzrP,EAAOsoJ,mBAAmB+7I,iBAAiB,MACjD,GAAI74C,GAAiB,EAAG,CACtB,IAAK,IAAIzsT,EAAIysT,EAAezsT,EAAI0sT,EAAe,EAAG1sT,IAAK,CACrD,MAAMo1N,EAAiBshF,EAActiN,MAAMp0F,GACzC2wE,EAAeykJ,EAAezkJ,aAAa1P,GAC3CvqB,EAAOy2Q,EAAuBx8O,EAAa09O,WAAaj5F,EAAeo3F,YAAc,GAAKxsT,EAAI,GAAKwsT,EAAc,EACnH04C,EAAWtlW,KAAK,CACdkgD,UAAW,uCACXr9C,MAAO,CACL8yD,UAAW,cAAc7e,EAAOvsC,QAElC2tB,QAAS,CACPutU,KAAM,YAAYrlW,UAO9B,OAAOklW,EAMTnkW,UACE,MAAMI,EAAKC,MACT6/D,OACEA,GACE9/D,GACJgoT,SACEA,GACEloP,GACJ1yB,UACEA,EAASC,QACTA,GACEyyB,EAAOy0R,kBAAoBmP,GAC/B1f,EAAYh8B,EAAS56Q,UAEvB,IAAK42S,IAAc52S,EAAW,CAC5B,OAEF,IAAKptC,EAAG02C,QAAS,CACf12C,EAAG02C,QAAUwB,GAAU72C,cAAc,CACnCkR,OAAQutD,EAAOskS,iBACfzlT,UAAW,0BAGf,MAAMolT,EAAa/jW,EAAGqkW,wBAAwBj3T,EAAWC,GACzDmtE,GAAQ+K,KAAK,CACX1jE,cAAe7hD,EAAG02C,QAClBwS,aAAc,KACd7L,UAAW,CACTiK,SAAUy8S,EACV36S,YAAa,CAEXgzD,iBAAkB,IAGtB7qD,YAAa,SAMjB3xD,2BACEK,KAAK84L,UAGPn5L,8BAA6B0rT,cAC3BA,EAAaC,aACbA,IAEAtrT,KAAK84L,UAEPn5L,mBACEK,KAAK84L,WAKT4qK,GAAYx7V,OAAS,cACrBijO,GAAmB2F,gBAAgB4yH,GAAa,KAAM,CAAC,YAAa,UAYpE,IAAIW,GAAsBn3U,GAAU,MAAMm3U,UAA4Bn3U,GAAU7R,IAC9EtN,mBACE,MAAO,qBAGT8T,2BACE,MAAO,CAgBLyiV,oBAAqB,KAMrBC,oBAAqB,KAKrBC,gBAAiB,KAkBjBC,YAAa,iBAMbC,cAAe,CAAC,QAAS,MAAO,MAAO,UAMvCC,YAAa,MAKjBhlW,UAAUwuT,EAAMh2S,GACd+B,MAAMsB,UAAU2yS,EAAMh2S,GACtB,MAAMpY,EAAKC,KACXD,EAAGouT,KAAOA,EACVpuT,EAAGqtB,UAAY+gS,EAAKm+B,mBACpBn+B,EAAKh/R,GAAG,YAAY,IAAMpvB,EAAG6kW,0BAC7B7kW,EAAG6kW,wBAELjlW,YACE,IAAIklW,EAAuBC,EAC3B,MAAM/kW,EAAKC,KACXD,EAAGwpE,gBAAgB,QACnBxpE,EAAGglW,aAAe,MACjBF,EAAwB9kW,EAAGilW,yBAA2B,MAAQH,SAA+B,OAAS,EAAIA,EAAsBh+V,KAAK9G,IACrI+kW,EAAsB/kW,EAAGykW,mBAAqB,MAAQM,SAA6B,OAAS,EAAIA,EAAoB/oV,UACrH7B,MAAM8B,YAERrc,wBACE,MAAMI,EAAKC,KACX,IAAKD,EAAGouT,KAAM,CACZ,OAEFpuT,EAAGwpE,gBAAgB,QACnB,GAAIxpE,EAAGklW,gBAAiB,CACtBllW,EAAGouT,KAAKh/R,GAAG,CACT1qB,KAAM,OACN9E,CAAC,GAAGI,EAAGqtB,uBAAwB,uBAC/BztB,CAAC,GAAGI,EAAGqtB,uBAAwB,uBAC/B9Q,QAASvc,KAIf4kW,gBAAgBplW,GACdS,KAAKklW,aAAe3lW,EACpBS,KAAK4kW,wBAEPD,kBACE,OAAO3kW,KAAKklW,aAEdD,sBACE,OAAOjlW,KAAK2kW,cAAgB3kW,KAAKmuT,KAAKt1O,WAAa74E,KAAK4/D,SAQ1DjgE,sBAAqBwwB,MACnBA,EAAKpxB,OACLA,EACAY,CAAC,GAAGK,KAAKotB,mBAAoBolD,EAC7B7yE,CAAC,GAAGK,KAAKotB,oBAAqBqpB,IAE9B,IAAK+7B,EAAO8K,aAAe9K,EAAOqG,YAAc74E,KAAK6/D,OAAOkyD,SAASozO,cAAgB3yR,EAAOlgE,OAAO68D,QAAS,CAC1G,MAAMpvE,EAAKC,KACTolW,EAAkBntT,GAAUmzF,KAAK30F,EAAS13C,EAAO65V,oBACnD74V,EAAGslW,cAAc7yR,EAAQ4yR,GACzB,GAAIrlW,EAAGglW,cAAgB50U,EAAMxxB,OAAOslD,QAAQlkD,EAAG8/D,OAAO0rR,eAAgB,CACpExrV,EAAGglW,aAAaO,gBAAkBF,EAClCrlW,EAAGwlW,qBAAqBp1U,KAQ9BxwB,qBAAqBwwB,GACnB,MAAMpwB,EAAKC,MACT+kW,aACEA,GACEhlW,EACJ02C,EAAUtmB,EAAM,GAAGpwB,EAAGqtB,oBACtBzuB,EAASwxB,EAAMA,MAAMkzB,cACrBiiT,EAAkBP,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAaO,gBAC7F,IAAKP,IAAiBO,IAAoBrtT,GAAUmY,aAAak1S,EAAiB3mW,GAAS,CACzFoB,EAAGylW,cAAc/uT,GAEnB,GAAIsuT,IAAiBA,EAAap+L,WAAY,CAC5Co+L,EAAaO,gBAAkB,KAC/BvlW,EAAG0lW,6BAA6B7iW,UAAWA,UAAWutB,IAG1DxwB,oBAAoBwwB,GAClB,GAAInwB,KAAK+kW,aAAc,CACrB/kW,KAAKulW,qBAAqBp1U,IAQ9BxwB,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,MACT+kW,aACEA,GACEhlW,EACJg0V,EAAe5jU,EAAMxxB,OAAOslD,QAAQlkD,EAAGouT,KAAKo9B,eAC9C,GAAIwI,KAAkBh0V,EAAG2lW,sBAAwBztT,GAAUmY,aAAa2jS,EAAch0V,EAAG2lW,yBAA2BX,GAAgBhR,IAAiBgR,EAAaO,iBAAkB,CAClLvlW,EAAGylW,cAAczR,GACjBh0V,EAAGouT,KAAKw3C,QAAQ5R,EAAc5jU,GAEhC,GAAI40U,EAAc,CAChBhlW,EAAG0lW,6BAA6Bt1U,EAAMkzB,cAAe0hT,EAAapmW,OAAQwxB,IAO9ExwB,sBAAsBwwB,GACpB,MAAMpwB,EAAKC,KAEX,GAAImwB,EAAM+yH,SAAW,IAAMnjJ,EAAGglW,aAAc,CAC1C,IAAIa,EACJ,MAAMr6C,EAAYxrT,EAAGouT,KACnBm9B,EAAyB//B,EAAU+/B,uBACnCua,EAAe11U,EAAMxxB,OACrB2mW,EAAkBO,EAAa5hT,QAAQsnQ,EAAUqtC,oBACjDkN,EAAavvT,GAAUvxB,KAAKumS,EAAU90Q,QAASt1C,SAAS8E,MAC1DkqB,EAAM+sH,kBACNn9I,EAAGglW,aAAe,CAChBhmW,OAAQwsT,EAAUypC,sBAAsBsQ,GAAiB5vR,UACzDi+P,SAAUkyB,EAAanvU,QAAQqvU,KAC/BC,WAAYzvT,GAAUvxB,KAAK6gV,EAAcva,GAAwB1xS,OACjE4uH,OAAQr4I,EAAMsxB,MAAQqkT,EAAW3hW,EAAIonT,EAAUv0Q,WAC/CyxH,OAAQt4I,EAAMgvB,MAAQ2mT,EAAWthU,EAAI+mR,EAAUt0Q,UAC/Cw/F,MAAO,MACPwvN,gBAAiBL,EAAwBr6C,EAAU0pC,yBAA2B,MAAQ2Q,SAA+B,OAAS,EAAIA,EAAsB/+V,KAAK0kT,EAAWp7R,GACxKy4B,QAAS7oD,EAAGykW,iBAEdzkW,EAAGilW,sBAAwBlkT,GAAY3xB,GAAG,CACxCs2B,UAAW,CACThP,QAAS80Q,EAAUnkQ,YACnBv3C,QAAS,aAEX21C,YAAa,CACX/O,QAAS60S,EACTz7U,QAAS,eAEXyM,QAASvc,IAIXA,EAAGmmW,0BAA4BplT,GAAY3xB,GAAG,CAC5Cs2B,UAAW,CACThP,QAASt1C,SACT0O,QAAS,qBAEX82C,QAAS,CACPlQ,QAASt1C,SACT0O,QAAS,EACP5Q,IAAAA,MAEA,GAAIA,IAAQ,SAAU,CACpBc,EAAGm1B,WAIT5Y,QAASvc,KASfJ,YAAYwwB,GACV,MAAMpwB,EAAKC,MACTmuT,KACEA,EACA42C,aAAc7qU,GACZn6B,EACJ+lW,EAAavvT,GAAUvxB,KAAKmpS,EAAK13Q,QAASt1C,SAAS8E,MACnDm/C,EAASj1B,EAAMsxB,MAAQqkT,EAAW3hW,EAAIgqT,EAAKn3Q,WAAa9c,EAAKsuI,OAC7DnjH,EAASl1B,EAAMgvB,MAAQ2mT,EAAWthU,EAAI2pR,EAAKl3Q,UAAY/c,EAAKuuI,OAC5D3pK,EAASsV,KAAKkxB,MAAMlxB,KAAKkX,KAAK85B,EAASA,EAASC,EAASA,IAAW,EACpE8gT,EAAQ/xV,KAAKgyV,MAAM/gT,EAAQD,GAC7B,IAAIuxH,UACFA,GACE52K,EACJ,IAAK42K,EAAW,CACd,GAAI52K,EAAGsmW,oBAAoBl2U,KAAW,MAAO,CAC3C,OAEFwmJ,EAAY52K,EAAG42K,UAEjBA,EAAUt1K,MAAM6F,MAAQ,GAAGpI,MAC3B63K,EAAUt1K,MAAM8yD,UAAY,UAAUgyS,QACtCpmW,EAAG6lK,mBAAqBz1I,EAE1BxwB,oBAAoBwwB,GAClB,MAAMpwB,EAAKC,MACTmuT,KACEA,EACA42C,aAAc7qU,GACZn6B,EAQN,GAAIouT,EAAK5gS,QAAQ,6BAA8B,CAC7C2M,KAAAA,EACAn7B,OAAQm7B,EAAKn7B,WACR,MAAO,CACZgB,EAAGm1B,QACH,OAAO,MAETi5R,EAAK13Q,QAAQmI,UAAU7/B,IAAI,yBAC3Bhf,EAAGumW,gBAAgBpsU,EAAK8rU,WAAW7hW,EAAG+1B,EAAK8rU,WAAWxhU,GAOtD2pR,EAAK5gS,QAAQ,4BAA6B,CACxC2M,KAAAA,EACAn7B,OAAQm7B,EAAKn7B,SAEf,GAAIgB,EAAGwkW,oBAAqB,CAC1B,MAAM/6K,EAAMzpL,EAAGykW,kBAAoBzkW,EAAGykW,gBAAkBzkW,EAAGwmW,qBAC3DxmW,EAAGglW,aAAan8S,QAAU4gI,EAC1BA,EAAI5pH,SAAW,MACf4pH,EAAIp5D,OACJo5D,EAAIg9K,YAAYr2U,GAElBg+R,EAAKtrJ,cAAcyC,gBAAgB,CACjCC,YAAa,CAAC,CACZ9uH,QAAS03Q,EAAKugC,gBAAgBprO,WAAW7sE,QACzC0V,UAAW,cACV,CACD1V,QAAS03Q,EAAK7qM,WAAW7sE,QACzB0V,UAAW,aAEb39B,SAAU,IAAMzuB,EAAG6lK,oBAAsB7lK,EAAGymW,YAAYzmW,EAAG6lK,sBAG/DjmK,qBAAqBwwB,GACnB,IAAIs2U,EACJ,MAAM1mW,EAAKC,MACTmuT,KACEA,EACA42C,aAAc7qU,EAAIoqU,oBAClBA,GACEvkW,GACJpB,OACEA,GACEwxB,EACN,IAAIu2U,EAAkBv4C,EAAK6mC,sBAAsBr2V,GAAQ+2E,UAEzD,IAAK+wR,EAAmBC,KAAqB,MAAQD,SAA0B,GAAKA,EAAiBE,eAAgB,CACnHD,EAAkBA,EAAgBv2U,MAEpC,GAAIrjB,EAAQwlB,UAAU4H,EAAKu8G,SAAW6tN,IAAwB3lW,EAAOigD,UAAU7G,SAASh4C,EAAG0kW,aAAc,CACvG,OAEF,GAAIiC,IAAoBxsU,EAAKn7B,OAAQ,CACnCgB,EAAG0lW,6BAA6B9mW,EAAQ+nW,EAAiBv2U,IAG7DxwB,mCAAmCiiD,EAAe8kT,EAAiBv2U,GACjE,MAAMpwB,EAAKC,MACTmuT,KACEA,EACA42C,aAAc7qU,EAAIoqU,oBAClBA,EAAmB3tL,UACnBA,GACE52K,EACN,GAAI+M,EAAQwlB,UAAU4H,EAAKu8G,OAAQ,CACjC,OAGF,GAAIv8G,EAAKysI,WAAY,CACnB,OAKF,IAAKgQ,EAAW,CACd,OAEFA,EAAU/3H,UAAU98C,OAAO,UAAW,aACtCo4B,EAAKorU,iBAAmBrtT,GAAUiP,kBAAkBhtB,EAAKorU,gBAAiB,yBAC1E,IAAKoB,GAAmBA,IAAoBxsU,EAAKn7B,SAAWulW,IAAwB1iT,EAAchD,UAAU7G,SAASh4C,EAAG0kW,aAAc,CACpIvqU,EAAKv7B,OAASu7B,EAAK05S,OAAS,KAC5B15S,EAAKu8G,MAAQ,MACbkgC,EAAU/3H,UAAU7/B,IAAI,iBACnB,CACL,IAAI6nV,EAAuBC,EAC3B,MAAMloW,EAASu7B,EAAKv7B,OAAS+nW,GAC3B3nW,OACEA,GACEm7B,EACN,IAAI05S,EAAShyR,EAAclrB,QAAQqvU,KAGnC,GAAIzB,IAAwB1iT,EAAchD,UAAU7G,SAASh4C,EAAG0kW,aAAc,CAC5E7wB,EAAS7zU,EAAG+mW,sBAAsB/mW,EAAGq1S,gBAAgB76N,WAAW1gD,SAAShtB,KAAKjI,cAAgBquU,GAAoBC,KAAKG,YAEzH,GAAIllB,EAAK8mC,sBAAuB,CAC9B/6T,EAAK6sU,eAAiB54C,EAAK8mC,sBAAsB9kU,GAEnD,IAAI62U,EACJ9sU,EAAK05S,OAASA,EACd,MAAMD,EAAWz5S,EAAKy5S,SACpBszB,EAAiBxwN,IACf,IAAK12I,EAAGmc,YAAa,CACnBge,EAAKu8G,MAAQA,EACb70F,EAAchD,UAAU7/B,IAAI03H,EAAQ,UAAY,aAChDkgC,EAAU/3H,UAAU7/B,IAAI03H,EAAQ,UAAY,aAS5C03K,EAAK5gS,QAAQ,+BAAgC,CAC3C2M,KAAAA,EACAn7B,OAAAA,EACAJ,OAAAA,EACAqoW,eAAAA,MAQR,OAAQ,MACN,KAAKrzB,IAAa,SAAWC,IAAW,QACtCozB,EAAiB/zB,GAAoBC,KAAKC,aAC1C,MACF,KAAKQ,IAAa,SAAWC,IAAW,MACtCozB,EAAiB/zB,GAAoBC,KAAKE,WAC1C,MACF,KAAKO,IAAa,OAASC,IAAW,QACpCozB,EAAiB/zB,GAAoBC,KAAKG,WAC1C,MACF,KAAKM,IAAa,OAASC,IAAW,MACpCozB,EAAiB/zB,GAAoBC,KAAKI,SAC1C,MAUJnlB,EAAK5gS,QAAQ,4BAA6B,CACxC2M,KAAAA,EACAn7B,OAAAA,EACAJ,OAAAA,EACAqoW,eAAAA,IAEF,MAAMvwN,EAAQv8G,EAAKu8G,MAAQ12I,EAAGq1S,gBAAgBygC,kBAAkB92U,EAAQJ,EAAQqoW,GAEhF,GAAIl6V,EAAQwlB,UAAUmkH,GAAQ,CAC5B,MAAMywN,QAAmBzwN,EACzBwwN,EAAeC,OACV,CACLD,EAAexwN,GAEjB,MAAM0wN,EAAc1wN,EAAQ,UAAY,YACxCkgC,EAAU/3H,UAAU7/B,IAAIooV,IACvBP,EAAwB1sU,EAAKorU,mBAAqB,MAAQsB,SAA+B,OAAS,GAAKC,EAAyBD,EAAsB5+V,cAAc,6BAA6B4rU,SAAgB,MAAQizB,SAAgC,OAAS,EAAIA,EAAuBjoT,UAAU7/B,IAAI,wBAAyBooV,GAEvUpnW,EAAGqnW,wBAMLznW,kBACE,IAAI0nW,EACJ,MAAMtnW,EAAKC,KACTk6B,EAAOn6B,EAAGglW,aACZ7qU,EAAKysI,WAAa,MACjB0gM,EAAyBtnW,EAAGilW,yBAA2B,MAAQqC,SAAgC,OAAS,EAAIA,EAAuBxgW,KAAK9G,GACzI,GAAIm6B,EAAKu8G,MAAO,CAad,MAAMtqI,QAAepM,EAAGouT,KAAK5gS,QAAQ,iCAAkC2M,GACvE,GAAI/tB,IAAW,MAAO,CACpB+tB,EAAKu8G,MAAQ,WAGV,GAAI3pI,EAAQwlB,UAAU4H,EAAKu8G,OAAQ,CACtCv8G,EAAKu8G,YAAcv8G,EAAKu8G,MAE1B,GAAIv8G,EAAKu8G,MAAO,CACd,IAAI8lK,EAAax8S,EAAGunW,iBAAiBptU,GACrC,GAAIqiR,IAAe,KAAM,CACvB,GAAIzvS,EAAQwlB,UAAUiqR,GAAa,CACjCA,QAAmBA,EAErBriR,EAAKqiR,WAAaA,EASlBx8S,EAAGouT,KAAK5gS,QAAQ,uBAAwB,CACtC2M,KAAAA,EACAn7B,OAAQm7B,EAAKn7B,OACbJ,OAAQu7B,EAAKv7B,OACb49S,WAAAA,IAEFx8S,EAAGwnW,sBAAsBrtU,QAEtB,CACLn6B,EAAGwnW,sBAAsBrtU,QAEtB,CACLA,EAAKu8G,MAAQ,MACb12I,EAAGwnW,sBAAsBrtU,GAE3Bn6B,EAAGm1B,QAELv1B,sBAAsBu6B,GASpBl6B,KAAKmuT,KAAK5gS,QAAQ,4BAA6B7uB,EAAe,CAC5Dw7B,KAAAA,GACCA,IAELv6B,mBAAkBhB,OAChBA,IAEA,IAAKqB,KAAKmuT,KAAKm9B,uBAAuBvzS,SAASp5C,GAAS,CACtDqB,KAAKk1B,SAMTv1B,QACE,IAAI6nW,EAAwBC,EAC5B,MAAM1nW,EAAKC,MACTmuT,KACEA,EAAI42C,aACJA,GACEhlW,EAEN,GAAIglW,EAAc,CAChB,MAAMhmW,OACJA,EAAMknW,eACNA,EAActnW,OACdA,EAAMooW,eACNA,GACEhC,EACJ,GAAIhmW,EAAQ,CACV,MAAM2rD,EAAKyjQ,EAAKu5C,0BAA0B3oW,EAAQknW,GAClD,GAAIv7S,EAAI,CACN3qD,EAAGylW,cAAc96S,IAGrB,GAAI/rD,EAAQ,CACV,MAAM+rD,EAAKyjQ,EAAKu5C,0BAA0B/oW,EAAQooW,GAClD,GAAIr8S,EAAI,CACN3qD,EAAGylW,cAAc96S,KAIvB,GAAI3qD,EAAGykW,gBAAiB,CACtBzkW,EAAGykW,gBAAgB5kS,SAAW,KAEhC7/D,EAAGglW,aAAehlW,EAAG6lK,mBAAqB,MACzC4hM,EAAyBznW,EAAGilW,yBAA2B,MAAQwC,SAAgC,OAAS,EAAIA,EAAuB3gW,KAAK9G,IACxI0nW,EAAwB1nW,EAAGmmW,6BAA+B,MAAQuB,SAA+B,OAAS,EAAIA,EAAsB5gW,KAAK9G,GAC1IA,EAAG4nW,kBAQLhoW,gBAAgBwE,EAAGqgC,GACjB,MAAMzkC,EAAKC,MACTmuT,KACEA,GACEpuT,EACNA,EAAG2nB,aAAa3nB,EAAG6nW,wBACnB7nW,EAAG42K,UAAY1+H,GAAU72C,cAAc,CACrCkR,OAAQ67S,EAAKm9B,uBACb5sS,UAAW,GAAG3+C,EAAGswI,oBACjBhvI,MAAO,QAAQ8C,WAAWqgC,QAE5B2pR,EAAK13Q,QAAQmI,UAAU7/B,IAAI,yBAE7Bpf,oBACE,MAAMI,EAAKC,MACTmuT,KACEA,GACEpuT,EACN,OAAOA,EAAGykW,gBAAkBjrO,GAAQ1I,IAAI,CACtClmH,GAAI,GAAGwjT,EAAKxjT,yBACZmL,IAAK,oCACLwxK,WAAY,GACZJ,eAAgB,MAEhBjgD,WAAYknL,EAAKm9B,uBACjBvkK,WAAY,KAEZ1sI,YAAa,KACbulG,OAAQ,CACNnqB,KAAM,SAERpoG,UAAW,CAETg8H,WAAY,wBACZ/sI,QAASvc,IAEVA,EAAGykW,iBAMR7kW,kBACE,MAAMI,EAAKC,MACT22K,UACEA,EAASw3I,KACTA,GACEpuT,EACN,GAAI42K,EAAW,CACbA,EAAU/3H,UAAU7/B,IAAI,cACxB43J,EAAUt1K,MAAM6F,MAAQ,IACxBnH,EAAG6nW,uBAAyB7nW,EAAGgd,YAAW,KACxC45J,EAAU70K,SACV/B,EAAG42K,UAAY,OACd,KAELw3I,EAAK13Q,QAAQmI,UAAU98C,OAAO,yBAC9B/B,EAAGykW,iBAAmBzkW,EAAGykW,gBAAgB7yO,OACzCw8L,EAAKtrJ,cAAcC,iBASrBnjK,cAAcwzV,EAAgB18S,GAC5B,MAAM12C,EAAKC,KAEX,IAAKD,EAAGklW,kBAAoB9R,EAAe5nP,QAAS,CAClD,OAEF,MAAMz1F,EAAM/V,EAAG0kW,YACboD,EAAsB,GAAG/xV,aAE3B2gC,EAAUwB,GAAUmzF,KAAK30F,EAAS12C,EAAGouT,KAAKyqC,oBAG1C,IAAKniT,EAAQmI,UAAU7G,SAAS8vT,KAAyB9nW,EAAGouT,KAAK13Q,QAAQmI,UAAU7G,SAAS,sBAAwBh4C,EAAGouT,KAAKt1O,SAAU,CAEpI94E,EAAG2kW,cAAc1lW,SAAQ+mW,IAEvBA,EAAOhmW,EAAG+nW,QAAQ/B,GAClB,MAAMgC,EAAW9vT,GAAU72C,cAAc,CACvCkR,OAAQmkC,EACRiI,UAAW,GAAG5oC,KAAOA,KAAOiwV,IAC5BrvU,QAAS,CACPqvU,KAAAA,EACA/pM,QAAS,QAGb+rM,EAASvlV,SAAWs+B,GAAY3xB,GAAG,CACjCsnB,QAASsxT,EACTvhT,UAAW,sBACXC,SAAU,qBAEV89G,YAAa,CACX10J,QAAS,wBACT2vC,QAAS,MAEXljC,QAASvc,OAGb02C,EAAQmI,UAAU7/B,IAAI8oV,GACtB1U,EAAejtB,YAAYnnT,IAAI8oV,GAC/B9nW,EAAG2lW,oBAAsBjvT,GAG7B92C,QAAQomW,GACN,GAAIA,IAAS,OAAQ,CACnB,MAAO,QAET,GAAIA,IAAS,QAAS,CACpB,MAAO,MAET,OAAOA,EAMTpmW,cAAco0V,GAEZ,MAAMh0V,EAAKC,KACT48J,EAAc78J,EAAG8/D,OAAOmoS,4BAA4BjU,GACpDZ,EAAiBv2L,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY,GAAG78J,EAAGqtB,mBAC7Fy6U,EAAsB,GAAG9nW,EAAG0kW,uBAC9BxsT,GAAUsY,gBAAgBwjS,EAAc,IAAIh0V,EAAG0kW,eAAesD,IAC5DA,EAASvlV,UAAYulV,EAASvlV,WAC9BulV,EAASjmW,YAEXm2C,GAAUmzF,KAAK2oN,EAAch0V,EAAGouT,KAAKyqC,oBAAoBh6S,UAAU98C,OAAO+lW,GAC1E1U,EAAejtB,YAAYpkU,OAAO+lW,GAClC9nW,EAAG2lW,oBAAsB,KAQ3B/lW,iBAAiBu6B,GACf,MAAMn7B,OACFA,EAAMJ,OACNA,EAAMg1U,SACNA,EAAQC,OACRA,GACE15S,EACJrtB,GAAQ8mU,IAAa,QAAU,EAAI,IAAMC,IAAW,MAAQ,EAAI,GAClE,MAAMq0B,EAAgBjoW,KAAKo1S,gBAAgBr2R,IAAI,CAC7CiG,KAAMjmB,EAAO4L,GACb4nC,GAAI5zC,EAAOgM,GACXkC,KAAAA,EACA8mU,SAAAA,EACAC,OAAAA,IAEF,OAAOq0B,IAAkB,KAAOA,EAAc,GAAK,KAErDtoW,sBAAsBkN,GACpB,GAAIA,IAASomU,GAAoBC,KAAKC,cAAgBtmU,IAASomU,GAAoBC,KAAKG,WAAY,CAClG,MAAO,QAET,MAAO,MAQT1zU,wBACE,MAAMI,EAAKC,KACTk6B,EAAOn6B,EAAGglW,cACVtuN,MACEA,GACEv8G,EACJsvJ,EAAMzpL,EAAGykW,iBACT5lT,UACEA,GACE4qI,EAAI/yI,QAEV,GAAI3pC,EAAQwlB,UAAUmkH,GAAQ,CAC5B73F,EAAU98C,OAAO,aACjB88C,EAAU7/B,IAAI,cACd,OAAO,IAAIxO,SAAQC,GAAWimI,EAAMhmI,MAAKgmI,IACvCv8G,EAAKu8G,MAAQA,EACb,IAAK+yC,EAAIttK,YAAa,CACpB1L,EAAQzQ,EAAGqnW,+BAIjB59K,EAAI7gI,KAAO5oD,EAAGmoW,wBAAwBhuU,GAExCv6B,wBAAwBu6B,GACtB,IAAIiuU,EAAmBC,EACvB,MAAMroW,EAAKC,MACT4oD,QACEA,EAAO6tF,MACPA,GACEv8G,GACJ0kB,UACEA,GACEgK,EAAQnS,QACdx4C,OAAOmZ,OAAO8iB,EAAM,CAClBmuU,SAAUj+V,EAAaY,WAAWkvB,EAAKn7B,OAAO0F,MAC9C6jW,OAAQl+V,EAAaY,YAAYm9V,GAAqBC,EAAeluU,EAAKv7B,UAAY,MAAQypW,SAAsB,OAAS,EAAIA,EAAa3jW,QAAU,MAAQ0jW,SAA2B,EAAIA,EAAoB,IACnNx0B,SAAUz5S,EAAKy5S,SACfC,OAAQ15S,EAAK05S,QAAU,KAEzB,IAAI20B,EAAuBC,EAC3B5pT,EAAU8X,OAAO,aAAc+/E,GAC/B73F,EAAU98C,OAAO,cAEjB,GAAI20I,IAAU,KAAM,CAClB8xN,EAAwB,QACxBC,EAAezoW,EAAGo7B,EAAE,6BAGjB,CACHotU,EAAwB,UACxBC,EAAezoW,EAAGo7B,EAAE,2BAEtBytB,EAAQupD,MAAQ,2BAA2Bo2P,UAA8BC,IACzE,MAAO,CACLnhT,SAAU,CAAC,CACT3I,UAAW,2BACX2I,SAAU,CAAC,CACT3wB,QAAS,CACPu3B,IAAK,aAEPxtC,IAAK,QACLxV,KAAMlL,EAAGo7B,EAAE,yBACV,CACDzE,QAAS,CACPu3B,IAAK,YAEPhjD,KAAMivB,EAAKmuU,UACV,CACD3xU,QAAS,CACPu3B,IAAK,WAEPvP,UAAW,eAAexkB,EAAKy5S,YAC9B,CACDj9S,QAAS,CACPu3B,IAAK,WAEPxtC,IAAK,QACLxV,KAAMlL,EAAGo7B,EAAE,uBACV,CACDzE,QAAS,CACPu3B,IAAK,UAEPhjD,KAAMivB,EAAKouU,QACV,CACD5xU,QAAS,CACPu3B,IAAK,SAEPvP,UAAW,eAAexkB,EAAK05S,gBAQzC,MAAM60B,GAAiB,GAErBC,GAAgB,GAyClB,IAAIC,GAAuBz7U,IACzB,IAAIy7C,EACJ,OAAOA,EAAS,MAAMggS,UAA4Bz7U,EAChDvtB,eAAe4b,GACbrB,SAASqB,GACTrc,EAAgBc,KAAM,YAAa,MAGrCL,0BAA0BmsU,EAAS6V,EAAO1rE,EAAYmN,GACpD,MAAMrjR,EAAKC,MACT4oW,UACEA,GACE7oW,GACJgoT,SACEA,GACEhoT,EAAG8/D,OACT,GAAI+oS,EAAW,CACb,MAAMt2B,EAAe,IAAIzzT,IACvBgqV,EAAaz0V,KAAK+oB,OAAO2uS,EAAU/jB,EAAS+jB,SAAW/rU,EAAG+oW,aAC1DC,EAAW30V,KAAK+oB,OAAOwkT,EAAQ55B,EAAS+jB,SAAW/rU,EAAG+oW,aACtDE,EAAc50V,KAAK+oB,MAAM84O,EAAayyF,IACtCO,EAAY70V,KAAK+oB,MAAMimP,EAAWslF,IACpC,IAAK,IAAI9pW,EAAIiqW,EAAYjqW,GAAKmqW,EAAUnqW,IAAK,CAC3C,MAAMsqW,EAASN,EAAUhqW,GACzB,GAAIsqW,EAAQ,CACV,IAAK,IAAI54T,EAAI04T,EAAa14T,GAAK24T,EAAW34T,IAAK,CAC7C,MAAM64T,EAA2BD,EAAO54T,GACxC,GAAI64T,EAA0B,CAC5B,IAAK,IAAIvqW,EAAI,EAAGA,EAAIuqW,EAAyBrqW,OAAQF,IAAK,CACxD0zU,EAAavzT,IAAIoqV,EAAyBvqW,QAMpD,OAAO0zU,GAIX3yU,oBAAoB48S,EAAYj2D,EAAWC,EAAS6iH,EAAYC,GAC9D,MAAMtpW,EAAKC,KACX,GAAID,EAAGupW,mBAAoB,CACzB,MAAMvhD,SACFA,GACEhoT,EAAG8/D,OACPgpS,EAAaz0V,KAAK+oB,OAAOisU,EAAarhD,EAAS+jB,SAAW/rU,EAAG+oW,aAC7DC,EAAW30V,KAAK+oB,OAAOksU,EAAWthD,EAAS+jB,SAAW/rU,EAAG+oW,aACzDE,EAAc50V,KAAK+oB,MAAMmpN,EAAYoiH,IACrCO,EAAY70V,KAAK+oB,MAAMopN,EAAUmiH,IACjCa,EAAcn1V,KAAKuU,IAAIkgV,EAAYE,GACnCS,EAAap1V,KAAKC,IAAIw0V,EAAYE,GAClCU,EAAer1V,KAAKuU,IAAIqgV,EAAaC,GACrCS,EAAct1V,KAAKC,IAAI20V,EAAaC,GACtC,IAAK,IAAIrqW,EAAI2qW,EAAa3qW,GAAK4qW,EAAY5qW,IAAK,CAC9C,IAAI+qW,EACJ,MAAMT,GAAUS,EAAkB5pW,EAAG6oW,UAAUhqW,MAAQ,MAAQ+qW,SAAyB,EAAIA,EAAkB5pW,EAAG6oW,UAAUhqW,GAAK,GAChI,IAAK,IAAI0xC,EAAIm5T,EAAcn5T,GAAKo5T,EAAap5T,IAAK,CAChD,IAAIs5T,EACJ,MAAMC,GAAWD,EAAYV,EAAO54T,MAAQ,MAAQs5T,SAAmB,EAAIA,EAAYV,EAAO54T,GAAK,GACnGu5T,EAAQrrW,KAAK+9S,MAMrB58S,aACE,MAAMI,EAAKC,KACX,IAAKD,EAAG6oW,UAAW,CACjB7oW,EAAGupW,mBAAqB,KAExBvpW,EAAG+oW,YAAcjpU,GAAW4M,eAAeg8T,GAAgB1oW,EAAG8/D,OAAOkoP,SAAS+zB,UAE9E/7U,EAAG6oW,UAAY,IAInBjpW,YACEK,KAAKspW,mBAAqB,MAE5B3pW,QACEK,KAAK4oW,UAAY,OAElB1pW,EAAgBypE,EAAQ,QAAS,uBAAwBA,GAI9D,MAAMmhS,GAAY11V,KAAKuU,IAAI,EAAIvmB,WAAWy2C,iBAAkB,KAC1DkxT,GAAiB,CAAC,QAAS,MAAO,MAAO,UACzCC,GAAc,CAACnkW,EAAGye,IAAMlQ,KAAK41B,IAAInkC,EAAIye,GAAK,GAQ5C,MAAM2lV,WAA8B5uV,GAClC7b,0BACE,MAAO,CAMLo1U,UAAW,QAYXs1B,iBAAkB,GAMlB7qL,WAAY,EAMZw1J,QAAS,OAYTs1B,eAAgB,GAMhBC,SAAU,EAOVC,eAAgB,EAMhBC,iBAAkB,EAMlBC,WAAY,KAMZ1qS,OAAQ,IAmDZlgE,SAAS6qW,EAASC,GAChB,MAAM1qW,EAAKC,KACT0qW,EAAkBF,EACpB,IAAIG,EAAaC,EAAUC,EAAQxrL,EAAY+qL,EAAUx1B,EAAWC,EAGlEq1B,EAAkBC,EAAgBG,EAAkBD,EAAgBS,EAAuBC,EAAqBC,EAAqBC,EAAmBC,EAAuBC,EAAqBZ,EAAYa,EAAgBC,EAAcC,EAAgBC,EAAcC,EAAgBC,EAAcC,EAAcC,EAAY11I,EAAMhmN,EAAM27V,EAClVnB,EAAmB3nV,GAAYm7B,QAAQwsT,GACvC,IAAKmB,EAAS,EAAGpB,IAAYv6V,GAAO,CAClC06V,EAAc1sW,OAAOmZ,OAAOrX,EAAGoY,OAAQqyV,GACvCI,EAAWD,EAAYC,SACvBC,EAASF,EAAYE,OACrBxrL,EAAasrL,EAAYtrL,WACzB+qL,EAAWO,EAAYP,SACvBx1B,EAAY+1B,EAAY/1B,UACxBC,EAAU81B,EAAY91B,QAGtBq1B,EAAmBS,EAAYT,iBAC/BC,EAAiBQ,EAAYR,eAC7BG,EAAmBK,EAAYL,iBAC/BD,EAAiBM,EAAYN,eAC7BS,EAAwBH,EAAY78V,eAAe,yBAA2B68V,EAAYG,sBAAwBR,EAClHS,EAAsBJ,EAAY78V,eAAe,uBAAyB68V,EAAYI,oBAAsBV,EAC5GW,EAAsBL,EAAY78V,eAAe,uBAAyB68V,EAAYK,oBAAsBV,EAC5GW,EAAoBN,EAAY78V,eAAe,qBAAuB68V,EAAYM,kBAAoBZ,EACtGa,EAAwBP,EAAY78V,eAAe,yBAA2B68V,EAAYO,sBAAwBZ,EAClHa,EAAsBR,EAAY78V,eAAe,uBAAyB68V,EAAYQ,oBAAsBd,EAC5GE,EAAaI,EAAYJ,WACzB31B,EAAY70U,EAAG8rW,cAAcj3B,GAC7BC,EAAU90U,EAAG8rW,cAAch3B,GAC3Bu2B,EAAiBrrW,EAAG+rW,yCAAyClB,EAAUh2B,EAAWv1J,GAClFgsL,EAAetrW,EAAG+rW,yCAAyCjB,EAAQh2B,EAASu1B,GAC5EsB,EAAe3rW,EAAGgsW,oCAAoCnB,EAAUh2B,EAAgCs1B,EAAkBY,EAAuBC,GACzIY,EAAa5rW,EAAGgsW,oCAAoClB,EAAQh2B,EAA4Bs1B,EAAgBa,EAAqBC,GAI7HlB,GAAe/qW,SAAQmT,IAErB,GAAIiC,KAAK41B,IAAI0hU,EAAav5V,GAAYw5V,EAAWx5V,KAAc23V,GAAW,CACxE6B,EAAWx5V,GAAYu5V,EAAav5V,OAGxC,GAAIpS,EAAGisW,kBAAkBpB,EAAUC,EAAQa,EAAcC,GAAa,CACpE,IAAIM,EACJ1B,GAAc0B,EAAc1B,KAAgB,MAAQ0B,SAAqB,OAAS,EAAIA,EAAYpiW,KAAIsoI,GAAOpyI,EAAGgsW,oCAAoC55N,EAAK,MAAe,EAAG+4N,EAAuBC,KAClMG,EAAiBvrW,EAAG+rW,yCAAyCJ,EAAc92B,EAAWv1J,GACtFksL,EAAexrW,EAAG+rW,yCAAyCH,EAAY92B,EAASu1B,GAChFn0I,EAAOl2N,EAAGmsW,cAAcR,EAAcC,EAAYL,EAAgBC,EAAc32B,EAAWC,EAAS01B,GACpGiB,EAAiBzrW,EAAGosW,8BAA8Bl2I,EAAMq1I,GACxDG,EAAe1rW,EAAGosW,8BAA8Bl2I,EAAMs1I,GACtDt7V,EAAOlQ,EAAGqsW,eAAen2I,EAAMu1I,EAAgBC,EAAc72B,EAAWC,GAO1E,IAAK21B,EAAU,OAAQv6V,IAASu6V,GAAWC,GAAoBmB,EAASnB,EAAiB3rW,OAAQ8sW,IAAU,CACzGpB,EAAUC,EAAiBmB,GAAQjB,EAAaD,IAGpD,GAAIz6V,EAAM,CACRA,EAAOlQ,EAAGssW,iCAAiCp8V,EAAMm7V,EAAqCx2B,GACtF3kU,EAAOlQ,EAAGusW,gCAAgCr8V,EAAMo7V,EAAiCx2B,GACjF5kU,EAAOlQ,EAAGwsW,aAAat8V,GAEzB,OAAOA,EASTtQ,iCAAiC6sW,EAAMC,EAAMpqP,EAAW,OACtD,MAAMqqP,EAAYrqP,EAAW,MAAQ,QACnCsqP,EAAUtqP,EAAW,SAAW,MAClC,IAAIl2G,EACJ,GAAIqgW,EAAKG,GAAWF,EAAKC,GAAY,CACnCvgW,EAAS,OACJ,GAAIqgW,EAAKG,IAAYF,EAAKE,IAAYH,EAAKG,IAAYF,EAAKC,IAAcF,EAAKE,GAAaD,EAAKC,GAAY,CAClHvgW,EAAS,OACJ,GAAIqgW,EAAKE,IAAcD,EAAKC,IAAcF,EAAKG,IAAYF,EAAKE,GAAU,CAC/ExgW,EAAS,OACJ,GAAIqgW,EAAKE,GAAaD,EAAKC,IAAcF,EAAKG,GAAWF,EAAKE,GAAU,CAC7ExgW,GAAU,OACL,GAAIqgW,EAAKE,IAAcD,EAAKE,IAAYH,EAAKG,GAAWF,EAAKE,GAAU,CAC5ExgW,EAAS,MACJ,CACLA,EAAS,EAEX,OAAOA,EAGTxM,yBAAyBirW,EAAUC,EAAQ+B,EAAcC,EAAYxqP,EAAW,OAC9E,MAAMyqP,EAAmB7C,GAAsB8C,0BAC7CC,EAAkBF,EAAiBlC,EAAUC,EAAQxoP,GACrD4qP,EAAeH,EAAiBF,EAAcC,EAAYxqP,GAC5D,OAAO2qP,IAAoBC,EAE7BttW,kBAAkBirW,EAAUC,EAAQ+B,EAAcC,GAChD,IAAI1gW,EAAS,KAEb,IAGCy+V,EAASlnV,IAAMknV,EAASpiV,OAASxoB,KAAKkqW,kBAAoBW,EAAOnnV,IAAMmnV,EAAOriV,OAASxoB,KAAKmqW,iBAAmB/1V,KAAK41B,IAAIigU,GAAsB8C,0BAA0BnC,EAAUC,EAAQ,SAAW,EAAG,CACvM1+V,GAAU89V,GAAsBiD,kBAAkBtC,EAAUC,EAAQ+B,EAAcC,GAEpF,OAAO1gW,EAETxM,yCAAyCwyI,EAAK4zN,EAAMrtS,GAClD,IAAI65J,EAGJ,OAAQwzI,GACN,IAAK,OACHxzI,EAAS,CACPpuN,EAAGguI,EAAI3pH,MACPgc,GAAI2tG,EAAIh9F,IAAMg9F,EAAI98F,QAAU,EAAIqjB,GAElC,MACF,IAAK,QACH65J,EAAS,CACPpuN,EAAGguI,EAAIzuH,IACP8gB,GAAI2tG,EAAIh9F,IAAMg9F,EAAI98F,QAAU,EAAIqjB,GAElC,MACF,IAAK,MACH65J,EAAS,CACPpuN,GAAIguI,EAAI3pH,MAAQ2pH,EAAIzuH,KAAO,EAAIg1C,EAC/Bl0B,EAAG2tG,EAAIh9F,KAET,MACF,IAAK,SACHo9K,EAAS,CACPpuN,GAAIguI,EAAI3pH,MAAQ2pH,EAAIzuH,KAAO,EAAIg1C,EAC/Bl0B,EAAG2tG,EAAI98F,QAET,MAEJ,OAAOk9K,EAET5yN,oCAAoCwyI,EAAK4zN,EAAsBoH,EAAa7C,EAAkBD,GAC5F,IAAI+C,EACJ,OAAQptW,KAAK6rW,cAAc9F,IACzB,IAAK,OACHqH,EAAU,CACR5kV,MAAO2pH,EAAI3pH,MAAQpU,KAAKC,IAAqB84V,EAAa7C,GAC1D5mV,IAAKyuH,EAAIzuH,IAAM4mV,EACfn1T,IAAKg9F,EAAIh9F,IAAMk1T,EACfh1T,OAAQ88F,EAAI98F,OAASg1T,GAEvB,MACF,IAAK,QACH+C,EAAU,CACR5kV,MAAO2pH,EAAI3pH,MAAQ8hV,EACnB5mV,IAAKyuH,EAAIzuH,IAAMtP,KAAKC,IAAqB84V,EAAa7C,GACtDn1T,IAAKg9F,EAAIh9F,IAAMk1T,EACfh1T,OAAQ88F,EAAI98F,OAASg1T,GAEvB,MACF,IAAK,MACH+C,EAAU,CACR5kV,MAAO2pH,EAAI3pH,MAAQ8hV,EACnB5mV,IAAKyuH,EAAIzuH,IAAM4mV,EACfn1T,IAAKg9F,EAAIh9F,IAAM/gC,KAAKC,IAAqB84V,EAAa9C,GACtDh1T,OAAQ88F,EAAI98F,OAASg1T,GAEvB,MACF,IAAK,SACH+C,EAAU,CACR5kV,MAAO2pH,EAAI3pH,MAAQ8hV,EACnB5mV,IAAKyuH,EAAIzuH,IAAM4mV,EACfn1T,IAAKg9F,EAAIh9F,IAAMk1T,EACfh1T,OAAQ88F,EAAI98F,OAASjhC,KAAKC,IAAqB84V,EAAa9C,IAE9D,MACF,QACE+C,EAAU,CACR5kV,MAAO2pH,EAAI3pH,MAAQ8hV,EACnB5mV,IAAKyuH,EAAIzuH,IAAM4mV,EACfn1T,IAAKg9F,EAAIh9F,IAAMk1T,EACfh1T,OAAQ88F,EAAI98F,OAASg1T,GAG3B,OAAO+C,EAETztW,cAAcomW,GACZ,MAAMtwT,IACJA,GACEz1C,KAAK6/D,OACT,GAAIkmS,IAAS,QAAS,CACpB,OAAOtwT,EAAM,QAAU,OAEzB,GAAIswT,IAAS,MAAO,CAClB,OAAOtwT,EAAM,OAAS,QAExB,OAAOswT,EAETpmW,cAAc+rW,EAAcC,EAAYL,EAAgBC,EAAc32B,EAAWC,EAASw4B,GACxF,IAAIC,EAAIC,EAAI/oU,EAAGrgC,EAAGqpW,EAAIC,EAAIC,EAAOC,EAAOC,EAAIC,EAAM17N,EAAK27N,EAAWx8N,EAClE,MAAMqgK,EAAS,GACbo8D,EAAe,GACjBT,EAAK,CAAC5B,EAAaljV,MAAOosT,IAAc,QAAUA,IAAc,SAAW82B,EAAaljV,MAAQkjV,EAAahoV,KAAO,EAAI4nV,EAAennW,EAAGunW,EAAahoV,IAAKioV,EAAWnjV,MAAOqsT,IAAY,QAAUA,IAAY,SAAW82B,EAAWnjV,MAAQmjV,EAAWjoV,KAAO,EAAI6nV,EAAapnW,EAAGwnW,EAAWjoV,KAC/R6pV,EAAK,CAAC7B,EAAav2T,IAAKy/R,IAAc,OAASA,IAAc,UAAY82B,EAAav2T,IAAMu2T,EAAar2T,QAAU,EAAIi2T,EAAe9mU,EAAGknU,EAAar2T,OAAQs2T,EAAWx2T,IAAK0/R,IAAY,OAASA,IAAY,UAAY82B,EAAWx2T,IAAMw2T,EAAWt2T,QAAU,EAAIk2T,EAAa/mU,EAAGmnU,EAAWt2T,QAChS,GAAIg4T,EAAgB,CAClBA,EAAeruW,SAAQmzI,IACrBm7N,EAAG9uW,KAAK2zI,EAAI3pH,OAAQ2pH,EAAI3pH,MAAQ2pH,EAAIzuH,KAAO,EAAGyuH,EAAIzuH,KAClD6pV,EAAG/uW,KAAK2zI,EAAIh9F,KAAMg9F,EAAIh9F,IAAMg9F,EAAI98F,QAAU,EAAG88F,EAAI98F,WAGrDi4T,EAAK,IAAI,IAAIzuV,IAAIyuV,EAAGr1V,MAAK,CAACpS,EAAGye,IAAMze,EAAIye,MACvCipV,EAAK,IAAI,IAAI1uV,IAAI0uV,EAAGt1V,MAAK,CAACpS,EAAGye,IAAMze,EAAIye,MASvC,IAAKmpV,EAAK,EAAGE,EAAQJ,EAAGzuW,OAAQ2uW,EAAKE,IAASF,EAAI,CAChD97D,EAAO87D,GAAM97D,EAAO87D,IAAO,GAC3BjpU,EAAI+oU,EAAGE,GACP,IAAKD,EAAK,EAAGE,EAAQJ,EAAGxuW,OAAQ0uW,EAAKE,IAASF,EAAI,CAChDrpW,EAAImpW,EAAGE,GACPM,GAAa3pW,GAAKunW,EAAaljV,OAASrkB,GAAKunW,EAAahoV,KAAO8gB,GAAKknU,EAAav2T,KAAO3Q,GAAKknU,EAAar2T,UAAYlxC,GAAKwnW,EAAWnjV,OAASrkB,GAAKwnW,EAAWjoV,KAAO8gB,GAAKmnU,EAAWx2T,KAAO3Q,GAAKmnU,EAAWt2T,QAC/M,GAAIg4T,EAAgB,CAClB,IAAKO,EAAK,EAAGC,EAAOR,EAAevuW,OAAQgvW,GAAaF,EAAKC,IAAQD,EAAI,CACvEz7N,EAAMk7N,EAAeO,GACrBE,EAAY3pW,GAAKguI,EAAI3pH,OAASrkB,GAAKguI,EAAIzuH,KAAO8gB,GAAK2tG,EAAIh9F,KAAO3Q,GAAK2tG,EAAI98F,QAEvElxC,IAAMmnW,EAAennW,GAAKqgC,IAAM8mU,EAAe9mU,GAAKrgC,IAAMonW,EAAapnW,GAAKqgC,IAAM+mU,EAAa/mU,GAGnG8sG,EAAQ,CACN0zB,SAAU/wJ,OAAO89H,iBACjB+7N,UAAAA,EACA3pW,EAAAA,EACAqgC,EAAAA,EACAgpU,GAAAA,EACAC,GAAAA,GAEF97D,EAAO87D,GAAID,GAAMl8N,EACjBy8N,EAAavvW,KAAK8yI,IAGtB,MAAO,CACLpqI,MAAOomW,EAAGxuW,OACVmI,OAAQsmW,EAAGzuW,OACXwuW,GAAIA,EACJC,GAAIA,EACJ57D,OAAQA,EACRo8D,aAAcA,GAGlBpuW,8BAA8Bs2N,EAAM3kF,GAClC,MAAMntI,EAAI8xN,EAAKq3I,GAAG7nW,QAAQ6rI,EAAMntI,GAC9BqgC,EAAIyxL,EAAKs3I,GAAG9nW,QAAQ6rI,EAAM9sG,GAC5B,OAAOyxL,EAAK07E,OAAOntQ,GAAGrgC,GAExBxE,eAAes2N,EAAMu1I,EAAgBC,EAAc72B,EAAWC,GAC5D,MAAM90U,EAAKC,KACX,IAAIiQ,EAAO,MACX,GAAIu7V,EAAesC,WAAarC,EAAaqC,UAAW,CACtD73I,EAAOl2N,EAAGiuW,YAAY/3I,EAAMu1I,EAAgB,GAC5Cv7V,EAAOlQ,EAAGkuW,YAAYh4I,EAAMw1I,EAAc52B,GAE5C,OAAO5kU,EAGTtQ,sBAAsBs2N,EAAMi4I,EAAWC,GACrC,MAAMX,EAAKU,EAAUV,GACnBC,EAAKS,EAAUT,GACfthW,EAAS,GACX,IAAIs8M,EAMJ,GAAIglJ,EAAKx3I,EAAKhvN,OAAS,EAAG,CACxBwhN,EAAWwN,EAAK07E,OAAO87D,EAAK,GAAGD,KAC7BW,GAAeA,EAAY1lJ,KAAct8M,EAAO3N,KAAKiqN,GAEzD,GAAIglJ,EAAK,EAAG,CACVhlJ,EAAWwN,EAAK07E,OAAO87D,EAAK,GAAGD,KAC7BW,GAAeA,EAAY1lJ,KAAct8M,EAAO3N,KAAKiqN,GAEzD,GAAI+kJ,EAAKv3I,EAAK/uN,MAAQ,EAAG,CACvBuhN,EAAWwN,EAAK07E,OAAO87D,GAAID,EAAK,KAC9BW,GAAeA,EAAY1lJ,KAAct8M,EAAO3N,KAAKiqN,GAEzD,GAAI+kJ,EAAK,EAAG,CACV/kJ,EAAWwN,EAAK07E,OAAO87D,GAAID,EAAK,KAC9BW,GAAeA,EAAY1lJ,KAAct8M,EAAO3N,KAAKiqN,GAEzD,OAAOt8M,EAETxM,YAAYs2N,EAAMu1I,EAAgBxmM,GAChC,MAAMjlK,EAAKC,KAIXgkG,GAAWoqQ,iBAEX,CAAC5C,EAAgBxmM,IAKjB,EAAE1zB,EAAO0zB,KAAcjlK,EAAGsuW,sBAAsBp4I,EAAM3kF,GAAOg9N,GAAiBA,EAAcR,WAAaQ,EAActpM,SAAWA,EAAW,IAAGn7J,KAAIykW,GAAiB,CAACA,EAAetpM,EAAW,OAGhM,EAAE1zB,EAAO0zB,KAAc1zB,EAAM0zB,SAAWA,IAGxC,OAAOixD,EAETt2N,YAAYs2N,EAAMw1I,EAAc52B,GAC9B,MAAM90U,EAAKC,KACTiQ,EAAO,GACT,IAAIs+V,EAAY,KACdC,EACAC,EACAC,EACAC,EACF,MAAOJ,GAAa9C,EAAazmM,SAAU,CACzCwpM,EAAYzuW,EAAGsuW,sBAAsBp4I,EAAMw1I,GAAcn6N,GAASA,EAAMw8N,WAAax8N,EAAM0zB,WAAaymM,EAAazmM,SAAW,IAChIupM,EAAYC,EAAU1vW,OAAS,EAC/B,GAAIyvW,EAAW,CAEbC,EAAYA,EAAUv2V,MAAK,CAACpS,EAAGye,KAC7B,IAAIoqV,EAAOC,EACXD,EAAQ7oW,EAAE2nW,GAAK/B,EAAa+B,GAC5BmB,EAAQ9oW,EAAE4nW,GAAKhC,EAAagC,GAC5B,MAAMmB,GAAW/5B,IAAY,QAAUA,IAAY,UAAY85B,IAAU,IAAM95B,IAAY,OAASA,IAAY,WAAa65B,IAAU,GAAK,EAAI,EAChJA,EAAQpqV,EAAEkpV,GAAK/B,EAAa+B,GAC5BmB,EAAQrqV,EAAEmpV,GAAKhC,EAAagC,GAC5B,MAAMoB,GAAWh6B,IAAY,QAAUA,IAAY,UAAY85B,IAAU,IAAM95B,IAAY,OAASA,IAAY,WAAa65B,IAAU,GAAK,EAAI,EAChJ,GAAIE,EAAUC,EAAS,OAAO,EAC9B,GAAID,EAAUC,EAAS,OAAQ,EAE/B,GAAID,IAAYC,EAAS,OAAOhpW,EAAE2+B,EAAIlgB,EAAEkgB,GAAK,EAAI,KAEnDiqU,EAAyBD,EAAU,GACnCv+V,EAAKzR,KAAK,CACRswW,GAAIL,EAAuBtqW,EAC3B4qW,GAAIN,EAAuBjqU,EAC3BwqU,GAAIvD,EAAatnW,EACjB8qW,GAAIxD,EAAajnU,IAGnBkqU,EAAQD,EAAuBjB,GAAK/B,EAAa+B,GACjDmB,EAAQF,EAAuBhB,GAAKhC,EAAagC,GACjD,OAAQ,MACN,KAAMkB,GAASD,EAAQ,EACrB75B,EAAU,OACV,MACF,KAAM85B,GAASD,EAAQ,EACrB75B,EAAU,QACV,MACF,KAAM65B,GAASC,EAAQ,EACrB95B,EAAU,MACV,MACF,KAAM65B,GAASC,EAAQ,EACrB95B,EAAU,SACV,MAEJ42B,EAAegD,GAGnB,OAAOF,GAAat+V,EAAKk0F,WAAa,MAExCxkG,iCAAiCsQ,EAAMm7V,EAAqCx2B,GAC1E,GAAI3kU,EAAKnR,OAAS,EAAG,CACnB,MAAMowW,EAAej/V,EAAK,GACxBk/V,EAAiB,CACfH,GAAIE,EAAaJ,GACjBG,GAAIC,EAAaH,IAErB,OAAQn6B,GACN,IAAK,OACHu6B,EAAeL,GAAK1D,EAAejnW,EACnCgrW,EAAeJ,GAAKG,EAAaH,GACjC,MACF,IAAK,QACHI,EAAeL,GAAK1D,EAAejnW,EACnCgrW,EAAeJ,GAAKG,EAAaH,GACjC,MACF,IAAK,MACHI,EAAeL,GAAKI,EAAaJ,GACjCK,EAAeJ,GAAK3D,EAAe5mU,EACnC,MACF,IAAK,SACH2qU,EAAeL,GAAKI,EAAaJ,GACjCK,EAAeJ,GAAK3D,EAAe5mU,EACnC,MAEJv0B,EAAKk+E,QAAQghR,GAEf,OAAOl/V,EAETtQ,gCAAgCsQ,EAAMo7V,EAAiCx2B,GACrE,GAAI5kU,EAAKnR,OAAS,EAAG,CACnB,MAAMswW,EAAcn/V,EAAKA,EAAKnR,OAAS,GACrCuwW,EAAgB,CACdP,GAAIM,EAAYJ,GAChBD,GAAIK,EAAYH,IAEpB,OAAQp6B,GACN,IAAK,OACHw6B,EAAcL,GAAK3D,EAAalnW,EAChCkrW,EAAcJ,GAAKG,EAAYH,GAC/B,MACF,IAAK,QACHI,EAAcL,GAAK3D,EAAalnW,EAChCkrW,EAAcJ,GAAKG,EAAYH,GAC/B,MACF,IAAK,MACHI,EAAcL,GAAKI,EAAYJ,GAC/BK,EAAcJ,GAAK5D,EAAa7mU,EAChC,MACF,IAAK,SACH6qU,EAAcL,GAAKI,EAAYJ,GAC/BK,EAAcJ,GAAK5D,EAAa7mU,EAChC,MAEJv0B,EAAKzR,KAAK6wW,GAEZ,OAAOp/V,EAETtQ,aAAasQ,GACX,MAAMq/V,EAAU,GAChB,IAAIC,EAAaC,EACjB,GAAIv/V,EAAKnR,OAAS,EAAG,CACnBywW,EAAct/V,EAAKyoD,QACnB42S,EAAQ9wW,KAAK+wW,GACb,MAAOt/V,EAAKnR,OAAS,EAAG,CACtB0wW,EAAav/V,EAAKyoD,QAElB,GAAIsxS,GAAYuF,EAAYT,GAAIU,EAAWV,KAAO9E,GAAYuF,EAAYR,GAAIS,EAAWT,KAAO/E,GAAYuF,EAAYP,GAAIQ,EAAWR,KAAOhF,GAAYuF,EAAYN,GAAIO,EAAWP,IAAK,CACxLM,EAAcC,OAGX,GAAIxF,GAAYuF,EAAYR,GAAIQ,EAAYN,KAAOjF,GAAYwF,EAAWT,GAAIS,EAAWP,IAAK,CACjGM,EAAYP,GAAKQ,EAAWR,QAGzB,GAAIhF,GAAYuF,EAAYT,GAAIS,EAAYP,KAAOhF,GAAYwF,EAAWV,GAAIU,EAAWR,IAAK,CACjGO,EAAYN,GAAKO,EAAWP,OAGzB,CACHK,EAAQ9wW,KAAKgxW,GACbD,EAAcC,IAIpB,OAAOF,GAGXrF,GAAsB/hW,OAAS,wBAI/B,SAASunW,GAAiBC,GACxB,GAAIA,EAASZ,KAAOY,EAASV,GAAI,CAC/B,OAAOU,EAAST,GAAKS,EAASX,GAAK,IAAM,IAE3C,OAAOW,EAASV,GAAKU,EAASZ,GAAK,IAAM,IAG3C,SAASa,GAAcD,GACrB,OAAOA,EAASZ,KAAOY,EAASV,GAAKU,EAAST,GAAKS,EAASX,GAAKW,EAASV,GAAKU,EAASZ,GAG1F,SAASc,GAAIF,EAAUG,EAAcj/N,GACnC,MAAMk/N,EAASL,GAAiBC,GAAYD,GAAiBI,GAE3DE,EAAKn/N,GAAUk/N,EAAOlkW,SAAS,MAAQ,EAAI,GAE3CokW,EAAKp/N,GAAUk/N,EAAOlkW,SAAS,MAAQ,EAAI,GAE3CqkW,EAAQH,IAAW,MAAQA,IAAW,MAAQA,IAAW,MAAQA,IAAW,KAAO,EAAI,EACzF,MAAO,IAAIC,KAAMC,SAAUC,KAASF,KAAMC,IAG5C,SAAS/L,GAAKyL,EAAUG,EAAc/qW,EAAU8rI,EAAQs/N,GAEtD,IAAIjM,EAAOyL,EAASZ,KAAOY,EAASV,GAAK,IAAM,IAC7CmB,EAAYv/N,EAEd,GAAIA,EAAQ,CACV,MAEE9xI,EAAS6wW,GAAcD,GAEvBU,EAAaP,EAAez7V,KAAK41B,IAAI2lU,GAAcE,IAAiB57V,OAAO89H,iBAE3EzuG,EAAOlvB,KAAKkvB,KAAKxkC,GAGnB,GAAIoxW,GAAc,KAAM,CACtBA,EAAat/N,EAIf,GAAIx8H,KAAK41B,IAAIlrC,GAAU8xI,EAAS,GAAKw/N,EAAax/N,EAAS,EAAG,CAC5Du/N,EAAY/7V,KAAKuU,IAAIvU,KAAK41B,IAAIlrC,GAASsxW,GAAc,EAEvD,MAEEC,EAAWvrW,IAAa,SAAW,EAAIA,IAAa,QAAUqrW,EAAYrrW,IAAa,UAAYorW,EAAaC,EAAoBD,EAEpII,EAAYxxW,EAASuxW,EAAW/sU,EAElC2gU,GAAQ7vV,KAAKkvB,KAAKgtU,KAAehtU,EAAO,EAAIgtU,EAE5C,GAAIxrW,IAAa,QAAUA,IAAa,UAAYqrW,EAAY,EAAG,CACjElM,GAAQ,IAAI2L,GAAIF,EAAUG,EAAcM,UAIvC,CACHlM,GAAQ0L,GAAcD,GAExB,MAAO,CACLzL,KAAAA,EACAsM,cAAe3/N,IAAWu/N,EAAYA,EAAY,MAKtD,SAASK,GAAW5/N,EAAQ+gK,GAC1B,MAAM7yS,OACJA,GACE6yS,EACJ,IAAK7yS,EAAQ,CACX,MAAO,GAET,IAAIyxW,EAAgB,KACpB,MAAO,IAAI5+D,EAAO,GAAGm9D,MAAMn9D,EAAO,GAAGo9D,MAAMp9D,EAAO9nS,KAAI,CAAC6lW,EAAU9wW,KAE/D,MAAMkG,EAAWhG,IAAW,EAAI,SAAWF,IAAME,EAAS,EAAI,OAASF,IAAM,EAAI,QAAU,UACzF6xW,EAAWxM,GAAKyL,EAAU/9D,EAAO/yS,EAAI,GAAIkG,EAAU8rI,EAAQ2/N,KAE3DA,cAAAA,GACEE,GACJ,OAAOA,EAASxM,QACfh6V,KAAK,OAGV,IAAIymW,GAA2BxjV,IAC7B,IAAIy7C,EACJ,OAAOA,EAAS,MAAM+nS,UAAgCxjV,EACpDvtB,eAAe4b,GACbrB,SAASqB,GACTrc,EAAgBc,KAAM,YAAa,IAErCL,aAEE,MAAMI,EAAKC,KACXD,EAAG4wW,WAAa,IAAI1G,GAAsBvrW,EAAeA,EAAe,GAAIqB,EAAG6wW,kBAAmB,GAAI,CACpG/wS,OAAQ9/D,EAAG8/D,UAEb9/D,EAAG8wW,iBAAmB9wW,EAAG+wW,yBACzB/wW,EAAGgxW,eAELpxW,eACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAKk7F,SAGTv7F,iBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAKk7F,SAITv7F,eACE,IAAIqxW,EAAYC,EAChB,MAAMlxW,EAAKC,MACTkxW,UACEA,GACEnxW,EACJoxW,EAAMnxW,KAAK6/D,OAAOuxS,UAElBC,EAAWH,EAAY,GAAGnxW,EAAG8/D,OAAOl1D,cAAgB,YACrDqmW,EAAajxW,EAAGuxW,UAAY,MAAQN,SAAoB,OAAS,EAAIA,EAAWlvW,SACjFqvW,EAAI9vW,MAAMm1D,YAAY,gCAAiC,QAAQ66S,MAC/DtxW,EAAGuxW,OAASr5T,GAAU72C,cAAc,CAClCkR,OAAQ6+V,EACRxmW,GAAI0mW,EAEJ5wV,IAAK,SACLi+B,UAAW,yBACXoK,GAAI,6BACJyoT,aAAc,GACdC,YAAa,GACbC,KAAM,EACNC,KAAM,EACNhhO,QAAS,UACTihO,OAAQ,qBACRC,YAAa,iBACbnpT,cAAe,KACfpB,SAAU,CAAC,CACT5mC,IAAK,OACLqoC,GAAI,6BACJ3pB,GAAI8xU,EAAgBlxW,EAAGmxW,aAAe,MAAQD,SAAuB,EAAIA,EAAgB,uBAI/FtxW,kBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAK+wW,gBAKTpxW,qBAAqBy6S,GACnB,OAAOp6S,KAAK6/D,OAAOgyS,+BAA+Bz3D,GAGpDz6S,aAAa48S,EAAYu1D,EAAgBC,EAAcC,GACrD,MAAMjyW,EAAKC,KACTf,EAAMc,EAAGkyW,iBAAiB11D,EAAYu1D,EAAgBC,GAEtDxnW,EAASxK,EAAGmyW,UAAUjzW,GAExB,GAAIc,EAAGoyW,qBAAuB5nW,GAAUynW,GAAcjyW,EAAGqyW,cAAgBryW,EAAGsyW,qBAAqBP,IAAmB/xW,EAAGsyW,qBAAqBN,IAAgB,CAC1J,MAAMvH,EAAUzqW,EAAGuyW,eAAe/1D,EAAYu1D,EAAgBC,EAAcC,GAC1ErgE,EAAS64D,GAAWzqW,EAAG4wW,WAAW4B,SAAS/H,EAASzqW,EAAG8wW,mBACvDhxS,OACEA,GACE9/D,GACJ0gT,QACEA,GACElE,EACN,GAAI5K,EAAQ,CACV,IAAI6gE,EAAYC,EAChB,MAAMt+B,EAAcp0U,EAAGo0U,YAAYziU,IAAI6qS,GACrCn/P,EAAY,CACV38B,IAAK,OACLqoC,GAAI,6BACJ3pB,EAAGqxU,IAAYgC,EAAazyW,EAAG6wI,UAAY,MAAQ4hO,SAAoB,EAAIA,EAAa,EAAG7gE,GAC3Fj7Q,QAAS,CACP27B,OAAQpzD,EACRyzW,MAAOn2D,EAAW5xS,GAClBu4Q,OAAQ4uF,EAAennW,GACvBw4Q,KAAM4uF,EAAapnW,IAErB49C,YAAa,CACXg0P,WAAAA,EACA5K,OAAAA,GAEFzxR,MAAO,CACLvgB,CAACI,EAAGswI,SAAU,EACd1wI,CAAC48S,EAAWzmS,KAAMymS,EAAWzmS,IAE7BnW,CAAC48S,EAAW43B,aAAc53B,EAAW43B,YAErCx0U,CAACw0U,GAAe,IAAIA,GAAalqU,KAAK,MAAOkqU,EAC7Cx0U,CAACI,EAAG4yW,aAAcnI,EAAQoI,WAC1BC,aAAct2D,EAAW9iJ,SAAW,MACpCq5M,2BAA4Bv2D,EAAWw2D,cACvCtiL,aAAc8rH,EAAW1jO,SAEzBm6R,iCAAkCvyD,EAAQwyD,YAAcxyD,EAAQrzQ,SAAWyyB,EAAO1yB,WAAa0yB,EAAOzyB,SAAWqzQ,EAAQtzQ,YAAcszQ,EAAQwyD,YAAcxyD,EAAQrzQ,QAAUyyB,EAAO1yB,WAAa0yB,EAAOzyB,QAAUqzQ,EAAQtzQ,cAGjOslU,EAAe1yW,EAAG2/N,YAAc,MAAQ+yI,SAAsB,OAAS,EAAIA,EAAa5rW,KAAK9G,EAAI,CAChGq9C,UAAAA,EACAu0P,OAAAA,EACAuhE,iBAAkB32D,EAClB42D,qBAAsBrB,EACtBsB,mBAAoBrB,EACpBsB,QAAS7I,EAAQI,SACjB0I,MAAO9I,EAAQK,OACfl3B,SAAU62B,EAAQ51B,UAClBhB,OAAQ42B,EAAQ31B,UAElB,OAAO90U,EAAGmyW,UAAUjzW,GAAOm+C,EAG7B,OAAOr9C,EAAGmyW,UAAUjzW,GAAO,KAE7B,OAAOsL,EAOT5K,sBAAsBwyI,EAAK4zN,GAIzB,GAAIA,IAAS,SAAU,CACrB,MAAO,CAAC,CACNv9U,MAAO2pH,EAAI78F,KACX5xB,IAAKyuH,EAAI78F,KAAO68F,EAAIjrI,MAAQ,EAC5BiuC,IAAKg9F,EAAIwiH,OACTt/M,OAAQ88F,EAAIohO,WACX,CACD/qV,MAAO2pH,EAAI78F,KAAO68F,EAAIjrI,MAAQ,EAC9Bwc,IAAKyuH,EAAI/8F,MACTD,IAAKg9F,EAAIwiH,OACTt/M,OAAQ88F,EAAIohO,gBAET,CACL,MAAO,CAAC,CACN/qV,MAAO2pH,EAAI78F,KAAOt1C,KAAK2wW,WAAWzG,iBAClCxmV,IAAKyuH,EAAI/8F,MAAQp1C,KAAK2wW,WAAWzG,iBACjC/0T,IAAKg9F,EAAIwiH,OACTt/M,OAAQ88F,EAAIohO,aAKlB5zW,oBAAoBy6S,GAClB,MAAMv6O,OACFA,GACE7/D,KACJy2C,EAAUz2C,KAAKqyW,qBAAqBj4D,GACtC,GAAI3jQ,IAAYopB,EAAOiuM,YAAa,CAClC,MAAM/tJ,EAAYxpE,GAAUvxB,KAAKyxB,EAASz2C,KAAK02C,YAC/C,GAAImpB,EAAOurR,aAAc,CACvB,IAAIz8K,EAAM9uG,EAAO64J,WAAW0hF,EAAWD,SAASxvS,IAEhD,GAAIo1G,EAAUv7E,EAAImqI,EAAIx5H,KAAO4qE,EAAU1qE,OAASs5H,EAAIt5H,OAAQ,CAC1D,MAAMm+T,EAAU3zS,EAAOg3J,WAAWiwB,SAAS/mI,EAAUnmE,OAAOpV,EAAG,MAC/D,GAAIgvU,EAAS,CACX7kM,EAAM6kM,GAGVzzP,EAAU40I,OAAShmF,EAAIx5H,IACvB4qE,EAAUwzP,UAAY5kM,EAAIt5H,OAE5B,OAAO0qE,EAET,OAAOlgD,EAAOg2O,eAAiBh2O,EAAO4zS,sBAAsBr5D,EAAY,MAI1Ez6S,sBAAsBwzV,GACpB,OAAOnzV,KAAK6/D,OAAOsoJ,mBAAmBurJ,sBAAsBvgB,GAE9DxzV,oBAAoBwzV,GAClB,OAAOnzV,KAAK6/D,OAAOsoJ,mBAAmBwrJ,oBAAoBxgB,GAE5DxzV,uBAAuB48S,GACrB,MAAMiE,UACJA,EAAS3zS,KACTA,EAAI8mU,SACJA,GACEp3B,EACJ,GAAIo3B,EAAU,CACZ,OAAOA,EAET,OAAQ,MACN,KAAK9mU,IAAS8nU,GAAkBzB,KAAKE,WACrC,KAAKvmU,IAAS8nU,GAAkBzB,KAAKC,aACnC,OAAOnzU,KAAK0zW,sBAAsBlzD,GACpC,KAAK3zS,IAAS8nU,GAAkBzB,KAAKG,WACrC,KAAKxmU,IAAS8nU,GAAkBzB,KAAKI,SACnC,OAAOtzU,KAAK2zW,oBAAoBnzD,GAClC,QAEE,OAAOxgT,KAAK2zW,oBAAoBnzD,IAGtC7gT,qBAAqB48S,GACnB,MAAMkE,QACJA,EAAO5zS,KACPA,EAAI+mU,OACJA,GACEr3B,EACJ,GAAIq3B,EAAQ,CACV,OAAOA,EAGT,OAAQ,MACN,KAAK/mU,IAAS8nU,GAAkBzB,KAAKI,SACrC,KAAKzmU,IAAS8nU,GAAkBzB,KAAKE,WACnC,OAAOpzU,KAAK2zW,oBAAoBlzD,GAClC,KAAK5zS,IAAS8nU,GAAkBzB,KAAKG,WACrC,KAAKxmU,IAAS8nU,GAAkBzB,KAAKC,aACnC,OAAOnzU,KAAK0zW,sBAAsBjzD,GACpC,QAEE,OAAOzgT,KAAK0zW,sBAAsBjzD,IAOxC9gT,yBACE,MAAMkgE,OACJA,GACE7/D,KACJ,SAAS4zW,EAAmBpJ,GAC1B,MAAMqJ,UACJA,GACEh0S,EACJ,IAAIsgR,EAAW,MACf,GAAIqqB,EAAQN,iBAAmB2J,GAAarJ,EAAQL,eAAiB0J,EAAW,CAC9ErJ,EAAQN,iBAAmBM,EAAQL,eAAiB0J,EACpD1zB,EAAW,KAEb,OAAOA,EAAWqqB,EAAUrqB,EAE9B,SAAS2zB,EAAkBtJ,GACzB,IAAIrqB,EAAW,MACf,GAAIqqB,EAAQN,iBAAmB,GAAKM,EAAQL,eAAiB,EAAG,CAC9DK,EAAQN,iBAAmBM,EAAQL,eAAiB,EACpDhqB,EAAW,KAEb,OAAOA,EAAWqqB,EAAUrqB,EAE9B,SAAS4zB,EAAuBvJ,EAASE,GACvC,IAAIvqB,EAAW,MACf,GAAIqqB,EAAQF,iBAAmB,EAAG,CAChCE,EAAQF,iBAAmB,EAC3BnqB,EAAW,KACXuqB,EAAgBkI,WAAa,KAE/B,OAAOzyB,EAAWqqB,EAAUrqB,EAE9B,MAAO,CAACyzB,EAAoBE,EAAmBC,GAGjDp0W,cAAc48S,EAAYiuD,GACxB,OAAOA,EAGT7qW,eAAe48S,EAAYu1D,EAAgBC,EAAcC,GACvD,IAAIgC,EAAkBC,EACtB,MAAMl0W,EAAKC,KACT40U,EAAY70U,EAAGm0W,uBAAuB33D,GACtCs4B,EAAU90U,EAAGo0W,qBAAqB53D,GAClC63D,GAAkBJ,EAAmBhC,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWhtV,QAAU,MAAQgvV,SAA0B,EAAIA,EAAmBj0W,EAAGs0W,oBAAoBvC,GAClMwC,GAAgBL,EAAiBjC,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWz/T,MAAQ,MAAQ0hU,SAAwB,EAAIA,EAAiBl0W,EAAGs0W,oBAAoBtC,GACxLxH,EAAa,GACf,IAAK6J,IAAmBE,EAAc,CACpC,OAAO,KAET,IAAIpK,iBACFA,EAAgBG,eAChBA,GACEtqW,EAAG4wW,WACP,GAAI5wW,EAAG8/D,OAAOurR,aAAc,CAE1B,GAAIgpB,EAAez/G,QAAU,MAAQy/G,EAAez/G,SAAW2/G,EAAa3/G,OAAQ,CAClF41G,EAAW/rW,QAAQuB,EAAGw0W,sBAAsBH,EAAgBx/B,IAG9D,IAAKr4B,EAAWw2D,cAAe,CAC7B,GAAI,eAAetrW,KAAKmtU,GAAY,CAClCs1B,EAAmBnqW,EAAG8/D,OAAOg0S,UAAY,EAE3CxJ,EAAiBtqW,EAAG8/D,OAAOg0S,UAAY,GAG3C,OAAO9zW,EAAGy0W,cAAcj4D,EAAY,CAClCquD,SAAUwJ,EACVvJ,OAAQyJ,EACR/J,WAAAA,EACAL,iBAAAA,EACAG,eAAAA,EACAc,oBAAqB,EACrBD,sBAAuB,EACvBt2B,UAAAA,EACAC,QAAAA,IAMJl1U,aACEua,MAAMu6V,aACN,IAAKx2W,OAAOD,KAAKgC,KAAKkyW,WAAWpzW,OAAQ,CACvCkB,KAAKmyW,mBAAqB,MAI9BxyW,YACEua,MAAMw6V,YACN10W,KAAKmyW,mBAAqB,MAE5BxyW,QACEua,MAAMghF,QACNl7F,KAAKkyW,UAAY,KAGlBhzW,EAAgBypE,EAAQ,QAAS,2BAA4BA,GAMlE,MAEEgsS,GAAc,CAAC,QAAS,QAAS,MAAO,OACxCC,GAAY,CAAC,QAAS,MAAO,QAAS,OAKxC,IAAIC,GAAqB3nV,IACvB,IAAIy7C,EACJ,OAAOA,EAAS,MAAMksS,UAA0B3nV,EAC9CvtB,cAAcipD,EAAS0zC,GACrB,MAAMv8F,EAAKC,KACXs8F,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAIvgF,UAC9C,IAAKhc,EAAGmmN,cAAgBt9J,EAAS,CAC/B,OAAO,KAET,OAAO2wE,GAAQ1I,IAAI,CACjBx6E,MAAO,MACP1rC,GAAI,GAAG5K,EAAG8/D,OAAOl1D,oBAEjBu8H,YAAa,+IAA+InnI,EAAGswI,UAC/JpJ,WAAYlnI,EAAG8/D,OAAOyrR,uBACtBnkN,YAAa,KACbggD,WAAY,EACZE,UAAW,EACXH,eAAgB,MAChB5vH,YAAa,MAEbyvH,WAAY,MACZD,QAAS/mL,EAAG+0W,gBAAgB9/V,KAAKjV,IAChC6oD,GAQLjpD,iBAAgBinI,aACdA,IAEA,OAAO5mI,KAAKsqV,gBAAgBtqV,KAAK+0W,wBAAwBnuO,MAE1D1nI,EAAgBypE,EAAQ,QAAS,qBAAsBzpE,EAAgBypE,EAAQ,eAAgB,CAKhGu9I,YAAa,KAQbvmN,gBAAgB48S,GACd,MAAO,CACLl1P,SAAU,CAAC,CACT3I,UAAW,2BACX2I,SAAU,CAAC,CACT5mC,IAAK,QACLxV,KAAMjL,KAAKm7B,EAAE,yBACZ,CACDlwB,KAAMsxS,EAAWiE,UAAU/7S,MAC1B,CACDi6C,UAAW,eAAe69P,EAAWo3B,UAAYghC,GAAYp4D,EAAW1vS,SACvE,CACD4T,IAAK,QACLxV,KAAMjL,KAAKm7B,EAAE,uBACZ,CACDlwB,KAAMsxS,EAAWkE,QAAQh8S,MACxB,CACDi6C,UAAW,eAAe69P,EAAWq3B,QAAUghC,GAAUr4D,EAAW1vS,cAU5E+7C,QAAS,CACPpnC,QAAS,UACTjiB,MAAO,MAEPopE,GAMN,MAAMqsS,GAA2B56D,IAC/B,IAAI66D,EACJ,MAAM9oW,EAAS,CAACiuS,GAChB,IAAK66D,EAAuB76D,EAAWD,YAAc,MAAQ86D,SAA8B,GAAKA,EAAqBl/R,SAAU,CAE7H5pE,EAAO3N,QAAQ47S,EAAWD,SAASnkO,OAAOnsE,KAAIulB,IAAC,CAC7CzkB,GAAI,GAAGykB,EAAEzkB,MAAMyvS,EAAWzvS,KAC1BwvS,SAAU/qR,EACVe,MAAOiqR,EAAWjqR,MAClB+kV,iBAAkB96D,EAAW86D,sBAGjC,OAAO/oW,GA6FT,MAAMgpW,WAAqBz1S,GAAel/C,MAAM2kU,GAAsBnhR,GAAWqgS,GAAoBsE,GAAqB+H,GAAyBmE,KACjJl1W,eAAe4b,GACbrB,SAASqB,GACTrc,EAAgBc,KAAM,aAAc,IAAIwR,KACxCtS,EAAgBc,KAAM,cAAe,OACrCd,EAAgBc,KAAM,cAAe,MACrCd,EAAgBc,KAAM,cAAe,IAAIwR,KAE3CgvD,0BACE,MAAO,CACLC,MAAO,CAAC,SAAU,UAAW,iBAAkB,oBAAqB,qBAAsB,oBAAqB,aAC/GrpD,OAAQ,CAAC,0BAA2B,2BAA4B,4BAKpEzX,UAAUkgE,EAAQ1nD,GAChB+B,MAAMsB,UAAUqkD,EAAQ1nD,GACxB,MAAMm0U,mBACJA,GACEzsR,EACJA,EAAO1wC,GAAG,CACRimV,iBAAkB,aAElBC,eAAgB,UAEhB11W,CAAC2sV,EAAqB,aAAc,UACpC3sV,CAAC2sV,EAAqB,eAAgB,UACtC3sV,CAAC2sV,EAAqB,oBAAqB,UAC3C3sV,CAAC2sV,EAAqB,sBAAuB,UAE7CvrO,OAAQ,OACRu0P,iBAAkB,CAChBt9V,GAAI,qBACJ6U,MAAO,KAKT0oV,uBAAwB,QACxBC,wBAAyB,QACzBC,WAAY,QACZn5V,QAAStc,OAEX6/D,EAAOg3J,WAAW1nM,GAAG,CACnB2pK,QAAS,QAET4zC,kBAAmB,QAEnBpwN,QAAStc,OAEXA,KAAK4nO,UAAU/nK,EAAO+L,OAExBjsE,UAAUgiE,GACR,IAAK3hE,KAAKwd,cAAe,CAEvBxd,KAAK01W,aAAe/zS,EACpB3hE,KAAK21W,OACL31W,KAAK01W,aAAe,MAEtBx7V,MAAM6nD,UAAUJ,GAIlBi0S,eACE,OAAO51W,KAAK6/D,OAAOopP,WAAajpT,KAAK6/D,OAAOy1O,cAAgBt1S,KAAK6/D,OAAO+L,MAG1EjsE,UAAUisE,GACR,MAAM7rE,EAAKC,KACX,IAAKD,EAAG8/D,OAAOopP,WAAY,CACzBlpT,EAAGwpE,gBAAgB,SACnB,GAAIxpE,EAAG8/D,OAAOg2S,iBAAkB,CAC9BjqS,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMz8C,GAAG,CACrD1qB,KAAM,QACNq0L,QAAS,iBACTx8K,QAASvc,IAEXA,EAAGm7F,UAITv7F,iBACEK,KAAKk7F,QAGPv7F,gBAAgB4rG,GACdrxF,MAAMorU,gBAAgB/5O,GACtBA,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQp8E,GAAG,CAC3D1qB,KAAM,UACNqxW,gBAAiB,QACjBx5V,QAAStc,OAGbL,sBAAsB21S,GACpBp7R,MAAMqrU,sBAAsBjwC,GAC5BA,IAAkB,MAAQA,SAAuB,OAAS,EAAIA,EAAcnmR,GAAG,CAC7E1qB,KAAM,gBACN2gF,OAAQ,QACR0zG,QAAS,QACTx8K,QAAStc,OAGbL,mBAAmB01S,GACjBn7R,MAAMsrU,mBAAmBnwC,GACzBA,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWlmR,GAAG,CACpE1qB,KAAM,aACNq0L,QAAS,QACTx8K,QAAStc,OAGbL,wBAAwBw1S,GACtBj7R,MAAM8pT,wBAAwB7uB,GAC9BA,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBhmR,GAAG,CACnF1qB,KAAM,kBACNq0L,QAAS,QACTx8K,QAAStc,OAGbL,wBAAwBy1S,GACtBl7R,MAAMurU,wBAAwBrwC,GAC9BA,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBjmR,GAAG,CACnF1qB,KAAM,kBACN2gF,OAAQ,QACR0zG,QAAS,QACTx8K,QAAStc,OAGbL,oBAAmBw8N,QACjBA,EAAOp7D,QACPA,IAEA,GAAIA,IAAY/gK,KAAK+1W,aAAe55I,IAAYn8N,KAAK6/D,OAAO6uR,gBAAiB,CAC3E1uV,KAAK+1W,YAAch1M,EACnB/gK,KAAK21W,QAGTh2W,UACEK,KAAK84L,UAKPn5L,kCAAkCkN,GAYhC,OAAOA,EAAO7M,KAAKm7B,EAAE,oBAAoBtuB,MAAW,GAItDlN,wBAAwB48S,EAAYu1D,EAAgBC,GAClD,OAAO/xW,KAAKg2W,yBAAyBz5D,EAAYu1D,EAAgBC,GAAc,GAIjFpyW,yBAAyB48S,EAAYu1D,EAAgBC,GAEnD,IAAIliT,EAAW,iBAAiB0sP,EAAW5xS,OAE3C,GAAImnW,EAAgB,CAClBjiT,GAAY,kBAAkBiiT,EAAennW,OAE/C,GAAIonW,EAAc,CAChBliT,GAAY,gBAAgBkiT,EAAapnW,OAE3C,OAAOpD,MAAMyd,KAAKhlB,KAAK6/D,OAAOuxS,UAAUrhT,iBAAiBF,IAO3DlwD,wBAAwB82C,GACtB,IAAI+vM,EACJ,OAAQA,EAAuB/vM,EAAQ8R,eAAiB,MAAQi+L,SAA8B,OAAS,EAAIA,EAAqB+1D,WAElI58S,oBAAoB82C,GAClB,OAAOA,EAAQn0C,QAAQ,IAAItC,KAAKqwI,WAIlC1wI,eAAewwB,GACb,MAAMosR,EAAav8S,KAAK+0W,wBAAwB5kV,EAAMxxB,QACtD,GAAI49S,EAAY,CACd,MAAMnvR,EAAY+C,EAAMtjB,OAAS,QAAU,QAAU,WAiBrD7M,KAAK6/D,OAAOtyC,QAAQ,aAAaH,IAAa,CAC5CmvR,WAAAA,EACApsR,MAAAA,KAINxwB,kBAAkBwwB,GAChB,OAAOnwB,KAAKi6Q,eAAe9pP,GAE7BxwB,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,KACTu8S,EAAax8S,EAAGg1W,wBAAwB5kV,EAAMxxB,QAChD,GAAI49S,EAAY,CASdx8S,EAAG8/D,OAAOtyC,QAAQ,sBAAuB,CACvCgvR,WAAAA,EACApsR,MAAAA,IAEF,GAAIpwB,EAAGk2W,QAAS,CACdl2W,EAAGm9C,UAAUq/P,GACbx8S,EAAGm2W,eAAe35D,KAIxB58S,kBAAkBwwB,GAChB,MAAMpwB,EAAKC,KACTu8S,EAAax8S,EAAGg1W,wBAAwB5kV,EAAMxxB,QAChD,GAAI49S,EAAY,CASdx8S,EAAG8/D,OAAOtyC,QAAQ,qBAAsB,CACtCgvR,WAAAA,EACApsR,MAAAA,IAEF,GAAIpwB,EAAGk2W,QAAS,CACdl2W,EAAGo2W,YAAY55D,GACfx8S,EAAGm2W,eAAe35D,KAOxB58S,oBAAoB48S,GAClB,MAAMx8S,EAAKC,MACT41W,SACEA,GACE71W,GACJygT,UACEA,EAASC,QACTA,GACElE,EAEN,IAAKiE,IAAcC,EAAS,CAC1B,OAAO,MAET,MAAM21D,EAAe51D,EAAUrG,SAC7Bk8D,EAAa51D,EAAQtG,SAEvB,IAAKy7D,EAASl7Q,YAAY07Q,KAAkBR,EAASl7Q,YAAY27Q,GAAa,CAC5E,OAAO,MAET,OAAO71D,EAAU/xO,UAAY2nS,EAAa7mS,aAAaqmS,GAAUpzQ,SAAW6zQ,EAAW9mS,aAAaqmS,GAAUpzQ,OAIhH7iG,wCAAwC01F,GACtC,MAAMt1F,EAAKC,KACX,GAAIq1F,EAAQ,CACV,MAAMx1B,OACJA,GACE9/D,EACJ8/D,EAAO1wC,GAAG,CACR1qB,KAAM,mBACN9E,CAAC,GAAGkgE,EAAOysR,gCAAiC5lV,GAAU3G,EAAGu2W,2BAA2B5vW,EAAO+5K,aAAe/5K,EAAOqvV,YACjHp2V,CAAC,GAAGkgE,EAAOysR,gCAAiC5lV,GAAU3G,EAAGw2W,6BAA6B7vW,EAAO+5K,aAAe/5K,EAAOqvV,YACnHz5U,QAASvc,QAEN,CACLA,EAAGwpE,gBAAgB,qBAGvB5pE,UAAU48S,EAAYzmS,EAAM9V,KAAKi2W,SAC/B,IAAIt4T,EAAU39C,KAAKm0U,YAAYziU,IAAI6qS,GACnC,IAAK5+P,EAAS,CACZ39C,KAAKm0U,YAAY7iU,IAAIirS,EAAY5+P,EAAU,IAAI9+B,KAEjD8+B,EAAQ5+B,IAAIjJ,GAEZ9V,KAAKkyW,UAAY,GACjBlyW,KAAK84L,UAEPn5L,YAAY48S,EAAYzmS,EAAM9V,KAAKi2W,SACjC,MAAMt4T,EAAU39C,KAAKm0U,YAAYziU,IAAI6qS,GACrC,GAAI5+P,EAAS,CACXA,EAAQrkC,OAAOxD,GACf,IAAK6nC,EAAQpsC,KAAM,CACjBvR,KAAKm0U,YAAY76T,OAAOijS,IAI5Bv8S,KAAKkyW,UAAY,GACjBlyW,KAAK84L,UAEPn5L,2BAA2BqxV,EAAUl7U,GACnCk7U,EAAS1e,aAAatzU,SAAQ82U,GAAO91U,KAAKk9C,UAAU44R,EAAKhgU,KAE3DnW,6BAA6BqxV,EAAUl7U,GACrCk7U,EAAS1e,aAAatzU,SAAQ82U,GAAO91U,KAAKm2W,YAAYrgC,EAAKhgU,KAO7DnW,0BAA0BmsU,EAAS6V,EAAO1rE,EAAYmN,GACpD,IAAIozF,EAAuBC,EAE3B,OAAQD,GAAyBC,EAAyBv8V,MAAMw8V,6BAA+B,MAAQD,SAAgC,OAAS,EAAIA,EAAuB5vW,KAAK7G,KAAM8rU,EAAS6V,EAAO1rE,EAAYmN,MAAe,MAAQozF,SAA+B,EAAIA,EAE5Qx2W,KAAKurG,QAAQ6pM,gBAAgBnjO,QAAQ7zE,QAAO+gC,GAAKA,EAAEsnD,UAGrD9mF,iBAAiB48S,EAAYu1D,EAAgBC,GAC3C,MAAO,OAAOx1D,EAAW5xS,WAAWmnW,EAAennW,SAASonW,EAAapnW,KAI3EhL,eAAe48S,EAAYj0M,EAAQ,MAAO0pQ,EAAa,MACrD,MAAMjyW,EAAKC,MACT8jW,WACEA,EAAUjkS,OACVA,EAAM+1S,SACNA,GACE71W,GACJs1S,WACEA,EAAUyX,iBACVA,EAAgB6pD,oBAChBA,GACE92S,GACJgL,MACEA,GACE+qS,EACJ92I,EAAW82I,EAASnwW,QAAQqnT,EAAiBxhR,OAC7CsoP,EAAcgiF,EAASnwW,QAAQqnT,EAAiB1mR,OAChD0lS,QACEA,EAAO6V,MACPA,GACE9hR,EAAOy0R,kBACX9zC,UACEA,EAASC,QACTA,GACElE,EACN,IAAIq6D,EAAkBp2D,EAAUlG,UAAY,IAAIkG,EAAUlG,UACxDu8D,EAAgBp2D,EAAQnG,UAAY,IAAImG,EAAQnG,UAClD,GAEAkG,EAAU8e,aAAe7e,EAAQ6e,aAEjCjqB,EAAWzpS,SAAS40S,IAAcnL,EAAWzpS,SAAS60S,IAEtDm2D,GAAmBC,EAAe,CAEhCD,EAAkBA,EAAgBn6G,QAAQu4G,IAC1C6B,EAAgBA,EAAcp6G,QAAQu4G,IACtC,IAAK,MAAMhwV,KAAQ4xV,EAAiB,CAClC,IAAK,MAAMrkU,KAAMskU,EAAe,CAC9B,IAAIC,EAAuBC,EAAgBC,EAAuBC,EAClE,MAGE3wH,GAAawwH,EAAwBjsS,GAAOksS,EAAiB/xV,EAAKm1R,YAAc,MAAQ48D,SAAwB,OAAS,EAAIA,EAAepsW,OAAS,MAAQmsW,SAA+B,OAAS,EAAIA,EAAsB5mW,MAC/Nq2O,GAAWywH,EAAwBnsS,GAAOosS,EAAe1kU,EAAG4nQ,YAAc,MAAQ88D,SAAsB,OAAS,EAAIA,EAAatsW,OAAS,MAAQqsW,SAA+B,OAAS,EAAIA,EAAsB9mW,MACrNk5V,EAAah1V,KAAKuU,IAAI63R,EAAUimB,YAAahmB,EAAQgmB,aACrD4iC,EAAWj1V,KAAKC,IAAImsS,EAAUgiB,UAAW/hB,EAAQ+hB,WAEnD,GAAI3iQ,EAAOiuM,aAAexnB,GAAa,MAAQC,GAAW,MAAQvhO,EAAKkwV,mBAAqB,OAAS3iU,EAAG2iU,mBAAqB,OAASU,EAASl7Q,YAAY11E,EAAKm1R,WAAay7D,EAASl7Q,YAAYnoD,EAAG4nQ,aAErM7zD,EAAYxnB,GAAYynB,EAAUznB,GAElCwnB,EAAYstC,GAAertC,EAAUqtC,GAErCw1E,EAAat9B,GAAWu9B,EAAWv9B,GAEnCs9B,EAAaznB,GAAS0nB,EAAW1nB,GAAQ,CACvC,MAAM1iV,EAAMc,EAAGkyW,iBAAiB11D,EAAYv3R,EAAMutB,GAChD6K,EAAYr9C,EAAGm3W,aAAa36D,EAAYv3R,EAAMutB,EAAIy/T,GACpD,GAAI50T,EAAW,CAEb,GAAIu5T,EAAqB,CACvBv5T,EAAU/7C,MAAQ,CAChBoxM,eAAgB,GAAGr+L,KAAKC,IAAIiyO,EAAWC,GAAW,GAAK,SAG3Du9G,EAAWxyV,IAAIrS,EAAKm+C,OAGjB,CACH0mT,EAAWxqV,OAAOra,IAKtBc,EAAGo3W,oBAAoB56D,EAAYj2D,EAAWC,EAAS6iH,EAAYC,KAIzE,IAAK/gQ,EAAO,CACVvoG,EAAGq3W,WAIPz3W,oBAAoB48S,EAAYj2D,EAAWC,EAAS6iH,EAAYC,GAC9D,IAAIgO,GACHA,EAAwBn9V,MAAMi9V,uBAAyB,MAAQE,SAA+B,OAAS,EAAIA,EAAsBxwW,KAAK7G,KAAMu8S,EAAYj2D,EAAWC,EAAS6iH,EAAYC,GAE3L1pW,aACE,IAAI23W,GACHA,EAAoBp9V,MAAMu6V,cAAgB,MAAQ6C,SAA2B,OAAS,EAAIA,EAAkBzwW,KAAK7G,MAEpHL,YACE,IAAI43W,GACHA,EAAmBr9V,MAAMw6V,aAAe,MAAQ6C,SAA0B,OAAS,EAAIA,EAAiB1wW,KAAK7G,MAGhHL,QAAQiiD,EAAgB5hD,KAAK6/D,OAAOuxS,WAClC72P,GAAQ+K,KAAK,CACX1jE,cAAAA,EACAxE,UAAW,CACT6L,aAAc,KACd5B,SAAU9/C,MAAMyd,KAAKhlB,KAAK8jW,WAAWj4V,WAEvCylD,YAAa,SACb6qD,iBAAkB,EAClBviG,OAAQ,KACRja,eAMJA,OACE,MAAMI,EAAKC,MACT6/D,OACEA,GACE9/D,EACN,GAAI8/D,EAAOsoL,mBAAqBtoL,EAAOo/R,mBAAqBp/R,EAAOg2O,eAAiB91S,EAAG6/D,WAAa7/D,EAAG21W,cAAgB71S,EAAOiuM,YAAa,CACzI,OAGF/tQ,EAAG22C,WAAaH,GAAUvxB,KAAK66C,EAAOo/R,kBACtCl/V,EAAG+jW,WAAWrlT,QAEd,GAAIohB,EAAO8uK,iBAAmB9uK,EAAOqlM,gBAAkBrlM,EAAOkoP,SAAS/jS,QAAUjkB,EAAG6/D,SAAU,CAC5F,MAAM00R,iBACFA,EAAgBxnC,iBAChBA,GACEjtP,EACJo2M,EAAal2Q,EAAG61W,SAASnwW,QAAQqnT,EAAiBxhR,OAClD83O,EAAWrjR,EAAG61W,SAASnwW,QAAQqnT,EAAiB1mR,MAChDksS,EAAevyU,EAAG22W,0BAA0BpiB,EAAiBxoB,QAASwoB,EAAiB3S,MAAO1rE,EAAYmN,GAG5GrjR,EAAG00W,aACH,IAAK,MAAMl4D,KAAc+1B,EAAc,CACrCvyU,EAAGm2W,eAAe35D,EAAY,MAGhCx8S,EAAG20W,YAEL30W,EAAGq3W,UACHv3S,EAAOtyC,QAAQ,qBAKjB5tB,YACE,IAAI63W,EAAkBC,EAAmBC,EAAmBC,EAC5D,MAAM53W,EAAKC,MACT6/D,OACEA,GACE9/D,GACJusV,mBACEA,GACEzsR,EACN9/D,EAAG41W,OAEH51W,EAAGqyW,YAAcvyS,EAAOklD,aAAellD,EAAO82S,uBAAyBa,EAAmB33S,EAAOkyD,SAAS,GAAGu6N,YAA+B,MAAQkrB,SAA0B,OAAS,EAAIA,EAAiBpqB,uBAAyBqqB,EAAoB53S,EAAOkyD,SAAS,GAAGu6N,cAAiC,MAAQmrB,SAA2B,OAAS,EAAIA,EAAkB1iB,eAAiB2iB,EAAoB73S,EAAOkyD,SAAS,GAAGu6N,mBAAsC,MAAQorB,SAA2B,OAAS,EAAIA,EAAkBtqB,uBAAyBuqB,EAAoB93S,EAAOkyD,SAAS,GAAGu6N,qBAAwC,MAAQqrB,SAA2B,OAAS,EAAIA,EAAkB5iB,YACzrBh1V,EAAGqyW,aAAeryW,EAAG+4L,UAKvBn5L,UAEE,IAAKK,KAAK6/D,OAAOsoL,mBAAqBnoP,KAAK4/D,UAAY5/D,KAAK6/D,OAAOgpE,UAAW,CAC5E7oI,KAAKknM,aASTvnM,QACE,IAAIi4W,GACHA,EAAe19V,MAAMghF,SAAW,MAAQ08Q,SAAsB,OAAS,EAAIA,EAAa/wW,KAAK7G,MAC9FA,KAAK84L,UAMPn5L,eACE+S,EAAcuC,UAAU,YAAa,QAAS,mDAC9CjV,KAAK84L,UAIPn5L,SAEEK,KAAK6/D,OAAO1hD,UAAU,cAI1Bjf,EAAgBi2W,GAAc,QAAS,gBACvCj2W,EAAgBi2W,GAAc,eAAgB,CAO5Cc,QAAS,wBAOT5lO,QAAS,mBAOTsiO,YAAa,8BAmBbzB,UAAW,KAsBXtgO,OAAQ,KAiCR8uF,SAAU,KAKVm4I,kCAAmC,OAErC34W,EAAgBi2W,GAAc,YAAa,CACzCjuK,UAAW,QAEbiuK,GAAajtW,OAAS,eACtBijO,GAAmB2F,gBAAgBqkI,GAAc,MAAO,CAAC,YAAa,sBACtEhqI,GAAmB2F,gBAAgBqkI,GAAc,KAAM,gBAWvD,MAAM2C,WAAyB7sP,GAC7Bl9G,mBACE,MAAO,mBAET8T,2BACE,MAAO,CACLoB,MAAO,GACPszG,UAAW,CACT+O,eAAgB,+BAGlBrqF,SAAU,YAGdt7C,oBAAoB+hH,GAClB,MAAMq2P,sBACJA,GACE/3W,KACJ,GAAI0hH,EAAOzzD,MAAQ,aAAe8pT,EAAsBC,aAAc,CACpE,OAAO,MAET,GAAIt2P,EAAOzzD,MAAQ,iBAAmB8pT,EAAsBE,iBAAkB,CAC5E,OAAO,MAET,OAAO/9V,MAAMi8H,oBAAoBz0B,GAEnC/hH,aAAa4b,GACX,MAAM28V,aACJA,GACEl4W,KAAKsrI,UAET,GAAI4sO,EAAc,CAChBA,EAAa11Q,QAAUxiG,KAAKwyE,OAAOwU,gBAErC9sE,MAAMmuH,aAAa9sH,GAErB5b,kBAAkBwwB,GAChBnwB,KAAKutB,QAAQ,UAAW,CACtB4C,MAAAA,IAEFjW,MAAM0xH,kBAAkBz7G,IAG5B2nV,GAAiB5vW,OAAS,mBAsE1B,MAAMiwW,WAAyBz4S,GAE7B3xD,mBACE,MAAO,iBAETvO,0BACE,MAAO,CAOLkwH,UAAW,KAOXktO,oBAAqB,KAOrBqb,iBAAkB,KAQlBh9N,aAAc,qBAOd+8N,aAAc,MACd9E,iBAAkB,KAMlBn7E,aAAc,CACZ5lL,MAAO,qBACPp5E,YAAa/4B,KACbk0J,SAAU,KACVjyG,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CAMLm1V,cAAe,CACbvrW,KAAM,UACN4mH,OAAQ,IACRq1B,MAAO,WAOTuvN,YAAa,CACXxrW,KAAM,UACN4mH,OAAQ,IACRq1B,MAAO,SAOTwvN,UAAW,CACTzrW,KAAM,QACN4mH,OAAQ,IACRq1B,MAAO,UACPrkJ,KAAM,OACNopL,SAAU,MACV8O,WAAY,KACZ1E,aAAc,OACdgG,sBAAuB,KACvBC,WAAY,WACV,MAAMugE,EAASz+P,KAAKsS,OACpB,OAAOrU,OAAOD,KAAK22U,GAAkBzB,MAAMrpU,KAAIgD,IAMtC,CACLlC,GAAIgqU,GAAkBzB,KAAKrmU,GAC3BpI,KAAMg6P,EAAOtjO,EAAEtuB,GACf0sB,UAAW1sB,QAUnB0rW,SAAU,CACR1rW,KAAM,WACN4mH,OAAQ,IACRq1B,MAAO,SACPrkJ,KAAM,MACN+uM,cAAe,OAGnBjkD,KAAM,CACJttG,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACLu1V,IAAK,CACH3rW,KAAM,SACNiJ,IAAK,kBAOP2iW,WAAY,CACVv8S,MAAO,UACPjxD,KAAM,WAORitW,aAAc,CACZh8S,MAAO,SACPjxD,KAAM,aAOR02M,aAAc,CACZzlJ,MAAO,SACPjxD,KAAM,wBASlBtL,UAAUkgE,EAAQ1nD,GAChB,MAAMpY,EAAKC,KACX6/D,EAAO64S,eAAiB34W,EACxBma,MAAMsB,UAAUqkD,EAAQ1nD,GACxB,IAAK0nD,EAAOkyD,SAASugN,aAAc,CACjC,MAAM,IAAI5hU,MAAM,2DAElB3Q,EAAG+8V,wBAA0Bj9R,EAAO1wC,GAAG,CACrCxvB,CAACI,EAAGk7I,cAAel7I,EAAG44W,iBACtBr8V,QAASvc,IAGbJ,YACE,IAAIu2O,EACJl2O,KAAK88V,2BACJ5mH,EAAel2O,KAAK06N,UAAY,MAAQwb,SAAsB,OAAS,EAAIA,EAAan6N,UACzF7B,MAAM8B,YAIRrc,mBAAmBwY,GACjB,MAAMpY,EAAKC,MACT0vH,UACEA,EAAS55G,IACTA,EAAG+pD,OACHA,GACE9/D,EACN,OAAOixC,GAAa55B,OAAO,CACzBuB,MAAOknD,EACPxpB,MAAO,MAEP1rC,GAAM,GAAGk1D,EAAOl1D,uBAEhBm9I,SAAU,MACV/2I,OAAQ,KACR0lH,aAAc,UACdmiP,UAAW,CAAC/4S,EAAOyrR,uBAAwBzrR,EAAOgxK,eAClDx2L,YAAaj4C,WACbstH,UAAAA,EACA55G,IAAAA,GACCqC,GAILsuE,cACE,OAAOxoF,OAAO4N,OAAO7L,KAAK06N,OAAOpvF,WAAWn7H,OAAMoG,IAChD,IAAKA,EAAM9R,MAAQ8R,EAAMisF,OAAQ,CAC/B,OAAO,KAET,OAAOjsF,EAAMkwE,UAAY,SAG7B56E,aACE,MAAMA,EAAS,GACf7L,KAAK06N,OAAOhgG,YAAWhZ,IACrB,IAAKA,EAAOj9G,MAAQi9G,EAAOlf,OAAQ,OACnC32F,EAAO61G,EAAOj9G,MAAQi9G,EAAOniH,QAC5B,MACH,OAAOsM,EAOTlM,aAAauzW,IAMbvzW,YAAYuzW,IAKZvzW,aAAauzW,GACX,MAAMrnW,OACJA,GACE7L,KAEJ,GAAI6L,EAAOgoU,IAAK,CACdhoU,EAAOkoU,QAAUloU,EAAOgoU,IAAI5rS,KAC5Bp8B,EAAOgoU,IAAMhoU,EAAOgoU,IAAI9pS,UAG1B,GAAI,SAAUl+B,EAAQ,CACpBqnW,EAAiBv/B,UAAY,OAAS9nU,EAAO8nU,SAAW,MACxDu/B,EAAiBt/B,QAAU,OAAS/nU,EAAO+nU,OAAS,MAItD5iS,GAAamwD,kBAAkBt1F,EAAQ,MACvCqnW,EAAiB5hW,IAAIzF,GAIvBlM,gBAAewwB,MACbA,IAEA,GAAIA,EAAMlxB,MAAQ,SAAWe,KAAK48V,qBAAuBzsU,EAAMxxB,OAAOi6D,QAAQ3vD,gBAAkB,QAAS,CAEvGknB,EAAM21B,iBACN9lD,KAAKm+V,eAGTx+V,cACE,GAAIK,KAAKo+V,OAAQ,CACfp+V,KAAK06N,OAAO/oG,QAGhBhyH,gBACEK,KAAK64W,mBACL74W,KAAK06N,OAAO/oG,OAEdhyH,gBACEK,KAAK06N,OAAO/oG,OAIdhyH,mBAAmBuzW,GACjB,MAAMnzW,EAAKC,MACT6/D,OACEA,GACE9/D,EACN,IAAI+4W,EAAY/4W,EAAGg5W,0BAYnB,GAAIl5S,EAAOtyC,QAAQ,uBAAwB,CACzCmrV,eAAgB34W,EAChBmzW,iBAAAA,MACK,MAAO,CACZ,OAEF,MAAMx4I,EAAS36N,EAAGi5W,UAAU9F,GAC5BnzW,EAAGk5W,WAAW/F,GAWdrzS,EAAOtyC,QAAQ,2BAA4B,CACzCmrV,eAAgB34W,EAChBmzW,iBAAAA,EACAx4I,OAAAA,IAEF,IAAKo+I,EAAW,CACd,MAAMl/T,EAASrD,GAAUvxB,KAAKjlB,EAAG8/D,OAAOppB,SAASmD,OACjDk/T,EAAY,CAACl/T,EAAOz1C,EAAIu2N,EAAOxzN,MAAQ,EAAG0yC,EAAOpV,EAAIk2L,EAAOzzN,OAAS,GAEvEyzN,EAAOnyF,OAAOuwO,GAMhBn5W,eAAeuzW,GACb,GAAIlzW,KAAK6/D,OAAOgZ,UAAYq6R,EAAiBr6R,SAAU,CACrD,OAEF74E,KAAKk5W,mBAAmBhG,GAS1BvzW,YACE,IAAIw5W,EAAgBC,EAAkBC,EACtC,MAAMt5W,EAAKC,KACX,IAAI06N,OACFA,GACE36N,EACJ,GAAI26N,EAAQ,CACV,OAAOA,EAETA,EAAS36N,EAAG26N,OAASo9I,GAAiBjnP,IAAI,CACxCknP,sBAAuBh4W,EACvB+nJ,SAAU,MACV/2I,OAAQ,KACR0lH,aAAc,UACdp8E,YAAaj4C,WACbstH,UAAW3vH,EAAG2vH,UACd55G,IAAK/V,EAAG+V,IACRsxC,YAAarnD,EAAG8/D,OAAOzY,YACvB/5B,UAAW,CACTs5B,QAAS5mD,EAAGu5W,eACZh9V,QAASvc,IAEVA,EAAGg4R,cACN,GAAIr9D,EAAOz3M,MAAMnkB,SAAW,EAAG,CAC7B8V,QAAQC,KAAK,yCAGf6lN,EAAOhgG,YAAWhZ,IAChB,MAAMzzD,EAAMyzD,EAAOzzD,KAAOyzD,EAAO/2G,GAEjC,GAAIsjD,IAAQluD,EAAGkuD,GAAM,CACnBluD,EAAGkuD,GAAOyzD,OAGby3P,EAAiBp5W,EAAG04W,cAAgB,MAAQU,SAAwB,OAAS,EAAIA,EAAehqV,GAAG,QAASpvB,EAAGo+V,YAAap+V,IAC5Hq5W,EAAmBr5W,EAAGm4W,gBAAkB,MAAQkB,SAA0B,OAAS,EAAIA,EAAiBjqV,GAAG,QAASpvB,EAAGw5W,cAAex5W,IACtIs5W,EAAmBt5W,EAAG4hN,gBAAkB,MAAQ03J,SAA0B,OAAS,EAAIA,EAAiBlqV,GAAG,QAASpvB,EAAGiiN,cAAejiN,GACvI,OAAOA,EAAG26N,OAQZ/6N,WAAW48S,GACT,MAAMx8S,EAAKC,KACXD,EAAGq4W,cAAc74W,MAAQg9S,EAAWiE,UAAU/7S,KAC9C1E,EAAGs4W,YAAY94W,MAAQg9S,EAAWkE,QAAQh8S,KAC1C,GAAI1E,EAAGw4W,SAAU,CACfx4W,EAAGw4W,SAASh5W,MAAQ,IAAIkoF,GAAS80N,EAAWs3B,IAAKt3B,EAAWw3B,SAE9Dh0U,EAAG26N,OAAOloJ,OAASzyE,EAAGmzW,iBAAmB32D,EAY3C58S,aACE,MAAMI,EAAKC,MACT6/D,OACEA,EAAMqzS,iBACNA,GACEnzW,EACN,IAAKmzW,IAAqBnzW,EAAG0mF,QAAS,CACpC,OAEF,MAAM2uN,gBACJA,EAAevpS,OACfA,GACE9L,EAUJ,GAAI8/D,EAAOtyC,QAAQ,uBAAwB,CACzC2lV,iBAAAA,EACArnW,OAAAA,MACK,MAAO,CACZ,IAAI2tW,EACJz5W,EAAG05W,aAAavG,GAChBnzW,EAAGimO,aAAaktI,GAEhB,GAAI99D,IAAoB89D,EAAiB5kS,OAAOxvE,OAAQ,CAUtD,GAAI+gE,EAAOtyC,QAAQ,sBAAuB,CACxC2lV,iBAAAA,EACAwF,eAAgB34W,MACX,MAAO,CACZ,OAEFq1S,EAAgBr2R,IAAIm0V,UAEdsG,EAAkB35S,EAAO0rC,WAAa,MAAQiuQ,SAAyB,OAAS,EAAIA,EAAgBp9G,eAQ5Gv8L,EAAOtyC,QAAQ,sBAAuB,CACpC2lV,iBAAAA,IAEFnzW,EAAG25W,YAAYxG,GAEjB,OAAOA,EAOTvzW,yBACE,MAAMkgE,OACJA,EAAM66J,OACNA,EAAMw4I,iBACNA,GACElzW,KASJ,GAAI6/D,EAAOtyC,QAAQ,yBAA0B,CAC3C2lV,iBAAAA,MACK,MAAO,CACZ,IAAIyG,EACJ,GAAIj/I,EAAOlvF,cAAe,CACxBkvF,EAAO7gG,cAETh6D,EAAOu1O,gBAAgBtzS,OAAOoxW,UACtByG,EAAmB95S,EAAO0rC,WAAa,MAAQouQ,SAA0B,OAAS,EAAIA,EAAiBv9G,eAC/G,OAAO,KAET,OAAO,MAETg5C,sBACE,OAAOp1S,KAAK6/D,OAAOu1O,gBAIrBz1S,kBAAiB48S,WACfA,EAAUpsR,MACVA,IAEA,IAAKnwB,KAAK4/D,SAAU,CAClB5/D,KAAK+4W,0BAA4B,CAAC5oV,EAAM8wB,QAAS9wB,EAAM+wB,SACvDlhD,KAAK45W,eAAer9D,KAM1B47D,GAAiBjwW,OAAS,iBAC1BijO,GAAmB2F,gBAAgBqnI,GAAkB,OAkCrD,MAAM0B,WAAwBn6S,GAAel/C,MAAMwjD,KACjDj2D,mBACE,MAAO,kBAoBTpO,UAAUkgE,EAAQ1nD,GAChB+B,MAAMsB,UAAUqkD,EAAQ1nD,GACxB,MAAM8iI,aACFA,GACEj7I,KACJqtB,EAAY,CACVysV,WAAY,qBACZC,wBAAyB,4BACzBC,aAAc,eACd19V,QAAStc,MAGb,GAAIi7I,IAAiB,YAAa,CAChC5tH,EAAU4sV,sBAAwB,8BAG/B,CAGH,GAAIh/N,IAAiB,SAAWA,IAAiB,YAAa,CAC5D5tH,EAAU6sV,oBAAsB,2BAElCj8W,OAAOmZ,OAAOiW,EAAW3uB,EAAe,CACtCiB,CAAC,WAAWs7I,KAAiB,2BAC7Bt7I,CAAC,QAAQs7I,KAAiB,4BACzB5tH,IAGLwyC,EAAO8jS,oBAAsB,KAC7B9jS,EAAO1wC,GAAG9B,GACVwyC,EAAOg3J,WAAW1nM,GAAG,CACnBgrV,UAAW,qBACX79V,QAAStc,OAGbL,mBAAmBs7I,GAEjB,GAAIA,IAAiB,SAAWA,IAAiB,YAAa,CAC5DA,EAAe,YAEjB,OAAOA,EAETxkG,cACE,OAAOz2C,KAAK6uD,WAAa7uD,KAAK6uD,SAAW5W,GAAU72C,cAAc,CAC/DkR,OAAQtS,KAAK6/D,OAAOskS,iBACpBzlT,UAAW,8BAIf/+C,yBAAwB8tE,QACtBA,IAEAztE,KAAKytE,QAAUA,EAGjB9tE,yBAAyB8tE,GACvBztE,KAAKytE,QAAUA,EAEjB9tE,2BACEZ,OAAQ6rT,IAER,IAAIjlJ,EAEJ,GAAIilJ,EAAkB7C,SAASn8S,UAAU+5J,EAAgB3lK,KAAKytE,WAAa,MAAQk4F,SAAuB,OAAS,EAAIA,EAAc6tD,MAAO,CAC1IxzN,KAAKo6W,yBAGF,CACHp6W,KAAKq6W,gBAGT16W,eACEK,KAAKytE,QAAU,KAEjB9tE,cAAc8tE,EAAS6sS,GACrBt6W,KAAKo6W,qBAEPz6W,qBACE,GAAIK,KAAKytE,QAAS,CAChB,MAAM1tE,EAAKC,MACT6/D,OACEA,EAAMppB,QACNA,EAAOg3B,QACPA,EAAOiyJ,SACPA,GACE3/N,GACJkpT,WACEA,GACEppP,GACJx+D,MACEA,GACEo1C,EACJk4H,EAAMs6I,EAAappP,EAAOg3J,WAAWnnD,KAAK,GAAK7vG,EAAOykK,UAAU72J,EAAQumJ,gBAC1E,GAAIrlD,EAAK,CACP,MAAM4rM,cACFA,EAAaC,YACbA,EAAWxmJ,eACXA,GACEvmJ,EAEJulJ,EAAanzJ,EAAOsoJ,mBAAmBsyJ,sBAAsB,CAC3DttU,UAAWotU,EACXntU,QAASotU,EACT/zC,YAAa8zC,EAAcvqW,UAC3BwyT,UAAWg4C,EAAYxqW,WACtBgkN,GACL,IAAI7+K,EAAKjuC,EAAOD,EAChB,GAAIgiT,EAAY,CACd9zQ,EAAM69K,EAAW79K,IACjBjuC,EAAQ8rN,EAAW0nJ,cACnBzzW,EAAS+rN,EAAW/rN,WACf,CACLkuC,EAAMw5H,EAAIx5H,IACVjuC,EAAQ8rN,EAAW9rN,MACnBD,EAAS0nK,EAAI1nK,OAGf5F,EAAME,QAAU,GAChBF,EAAM6F,MAAQ,GAAGA,MACjB7F,EAAM4F,OAAS,GAAGA,MAClBgxC,GAAU6d,eAAerf,EAASu8K,EAAW19K,KAAMH,GAEnDs4B,EAAQv9D,MAAQy+J,EAAIz+J,MAEpBumC,EAAQib,UAAY,GAEpBguK,GAAY3/N,EAAGyuB,SAASkxM,EAAU3/N,EAAI,CAAC0tE,EAASh3B,QAI7C,CACHp1C,EAAME,QAAU,YAEb,CACLvB,KAAKy2C,QAAQp1C,MAAME,QAAU,SAInCrC,EAAgB26W,GAAiB,YAAa,CAC5CO,mBAAoB,QAEtBl7W,EAAgB26W,GAAiB,eAAgB,CAO/C5+N,aAAc,QAQdykF,SAAU,KAMVjyJ,QAAS,CACPjsD,QAAS,CAGP7hB,MAAMigQ,EAAIC,GACR,OAAQD,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG1vP,UAAY2vP,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG3vP,SAAW0vP,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG+6G,oBAAsB96G,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG86G,sBAAwB/6G,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG26G,gBAAkB,KAAO16G,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG06G,gBAAkB,SAKlYV,GAAgBj4S,aAAe,sBAC/Bi4S,GAAgB3xW,OAAS,kBACzBijO,GAAmB2F,gBAAgB+oI,GAAiB,MAAO,CAAC,cA2F5D,MAAMe,WAAuBl7S,GAC3B//D,eAAe4b,GACbrB,SAASqB,GACTrc,EAAgBc,KAAM,mBAAoB,IAE5CL,UAAU4rT,EAAWpzS,GACnB+B,MAAMsB,UAAU+vS,EAAWpzS,GAE3B,GAAIozS,EAAUx5L,SAAS8oP,gBAAiB,CACtCtvD,EAAUx5L,SAAS8oP,gBAAgBj7S,SAAW,MAEhD2rP,EAAUp8R,GAAG,CACX2rV,WAAY96W,KAAK+6W,aACjBC,cAAeh7W,KAAKi7W,gBACpB3+V,QAAStc,OAEXA,KAAKurT,UAAYA,EAEnB5rT,qBAAqBknP,GACnB,MAAM69E,iBACJA,GACE79E,EAEJ,GAAI69E,EAAkB,CACpB79E,EAAU/wO,IAAI,cAAgB4uT,EAAiBvkT,KAAK8uO,OAGxDtvP,aAAa8tE,GACXztE,KAAKk7W,oBAAsB,KAE7Bv7W,gBAAgB8tE,GACdztE,KAAKk7W,oBAAsBztS,EAE7B9tE,kBAAkBwyH,EAAgB//D,EAAQjiC,GACxC,MAAMi2M,EAAWpmO,KAAK6/D,OAAOkyD,SAASq0G,SAKtC,OAAQpmO,KAAK4/D,UAAYx9D,WAAW0sP,eAAe9kP,WAAWlL,SAAW,KAAOsnO,IAAa,MAAQA,SAAkB,GAAKA,EAAS/K,YAAcn7N,QAAQiwB,EAAMxxB,OAAOslD,QAAQ,uBAElLtkD,OACEK,KAAKm7W,aAEPx7W,MACEK,KAAKm7W,WAAWv4W,UAAW,MAE7BjD,QACEK,KAAKo7W,cAYPz7W,WAAWsyE,EAAUjyE,KAAKurT,UAAU8vD,oBAAqBpsH,EAAQ,OAC/D,MAAMlvP,EAAKC,MACTurT,UACEA,GACExrT,EACN,KAAMkyE,IAAY,MAAQA,SAAiB,GAAKA,EAAQnzE,QAAS,CAC/D,OAEF,IAAIw8W,EAAoBrpS,EAAQhgE,QAChC,GAAIggE,EAAQ,GAAG6xP,aAAc,CAC3Bw3C,EAAoBrpS,EAAQpoE,KAAIqmB,GAAKA,EAAEssS,cAAahjH,OAGtD,GAAIy1C,EAAO,CACTqsH,EAAoBA,EAAkBl9W,QAAOyH,IAAMA,EAAEsqB,MAAM0oD,WAE7D,MAAMqrP,EAAeo3C,EAAkBzxW,KAAIhE,GAAKA,EAAEsqB,QAYlD,IAAKmrV,EAAkBx8W,QAAUysT,EAAU1yO,UAAY0yO,EAAUh+R,QAAQ,aAAc,CACrF+tV,kBAAAA,EACArpS,QAASiyP,EACTA,aAAAA,EACAj1E,MAAAA,MACK,MAAO,CACZ,OAWF,GAAIqsH,EAAkBx8W,OAAS,EAAG,CAChCysT,EAAUh+R,QAAQ,OAAQ,CACxB+tV,kBAAAA,EACAp3C,aAAAA,EACAj1E,MAAAA,IAGJlvP,EAAG8uP,OAASI,EAEZlvP,EAAGw7W,UAAY,CACbD,kBAAAA,EACAp3C,aAAAA,GAEF3Y,EAAUpW,gBAAgBn2S,SAAQo7S,IAChCA,EAAWj6R,KAAK8uO,MAAQA,GAASqsH,EAAkB1vW,SAASwuS,MAG9DmR,EAAUiwD,wBAUZ77W,YAAY68B,EAAMw3L,GAChB,MAAMj0N,EAAKC,MACTu7W,UACEA,EAAShwD,UACTA,GACExrT,GACJu7W,kBACEA,EAAiBp3C,aACjBA,GACEq3C,EACJtsH,EAAQlvP,EAAG8uP,OACb,GAAIhwP,UAAUC,SAAW,EAAG,CAC1B,MAAM2uE,EAAU1tE,EAAGm7W,qBAAuB,GAC1C1+U,EAAOixC,EAAQjxC,KACfw3L,EAAiBvmJ,EAAQumJ,eAE3B,GAAIA,EAAgB,CAElB,GAAIA,EAAen7I,SAAU,CAC3B,OAEFm7I,EAAiBA,EAAet+I,UAgBlC,IAAK6lS,GAAahwD,EAAUh+R,QAAQ,cAAe,CACjD+tV,kBAAAA,EACArpS,QAASiyP,EACTA,aAAAA,EACAlwG,eAAgBA,GAAkBsnJ,EAAkB,GAAGnhE,SACvD39Q,KAAAA,EACAyyN,MAAAA,MACK,MAAO,CACZ,OAEF,IAAIwsH,EAAU,KACd,MAAMC,EAAe,IAAI78V,IACzB,IAAK,MAAM6lT,KAAoB42C,EAAmB,CAChD,IAAInrV,MACFA,GACEu0S,EACJ,MAAMi3C,EAAuB3nJ,GAAkB0wG,EAAiBvqB,SAC9DjvQ,EAAa1O,GAAQkoS,EAAiBv0S,MAAMgd,UAG9C,GAAIuuU,EAAaz9V,IAAIkS,GAAQ,CAC3B,GAAI8+N,EAAO,CACTy1E,EAAiB5iU,SAEnB,SAEF45W,EAAa38V,IAAIoR,GAEjB,GAAI8+N,EAAO,CACTy1E,EAAiBvkT,KAAK8uO,MAAQ,MAC9By1E,EAAiBvqB,SAAWwhE,EAC5BF,EAAU/2C,OAGP,GAAInZ,EAAUlW,WAAW4nB,sBAAwBl9T,EAAG67W,kBAAoB,QAAS,CACpFzrV,EAAQA,EAAM81D,OACd91D,EAAM1rB,KAAO1E,EAAG4vP,gBAAgBx/N,GAChCo7R,EAAUlW,WAAWt2R,IAAIoR,GACzBA,EAAM/Y,OAAOukW,GACbF,EAAUlwD,EAAUpW,gBAAgB/uQ,UAIjC,IAAKjW,EAAMwsS,UAAU/wT,SAAS+vW,GAAuB,CACxD,MAAME,EAAsBn3C,EAAiBz+O,OAC7C41R,EAAoB1hE,SAAWwhE,GAC9BF,GAAWlwD,EAAUpW,gBAAgBp2R,IAAI88V,GAE5C1rV,EAAMgd,UAAYjC,EAElB,GAAI/a,EAAM2rV,eAAgB,CACxB3rV,EAAM2rV,eAAiB,MAc3B,GAAIP,EAAW,CACbhwD,EAAUh+R,QAAQ,QAAS,CACzB+tV,kBAAAA,EACAp3C,aAAAA,EACAlwG,eAAAA,EACAx3L,KAAAA,EACAyyN,MAAAA,IAIJ,MAAMzsO,EAAW+oS,EAAUp8R,GAAG,CAC5BxvB,aAAY+kU,iBACVA,EAAgBjuR,QAChBA,IAEA,GAAIiuR,IAAqB+2C,EAAS,CAChChlU,EAAQqe,QACRtyC,QAIN,GAAIysO,EAAO,CACTlvP,EAAG6vP,kBAMPjwP,iBACE,MAAMI,EAAKC,KACX,GAAID,EAAG8uP,OAAQ,CACb9uP,EAAGw7W,UAAUD,kBAAkBt8W,SAAQo7S,IACrCA,EAAWj6R,KAAK8uO,MAAQ,SAE1BlvP,EAAGwrT,UAAUiwD,wBACbz7W,EAAG8uP,OAAS,MAGd9uP,EAAGw7W,UAAY,KAEjB57W,mBAAkB+kU,iBAChBA,EAAgBzhT,MAChBA,IAEA,MAAMljB,EAAKC,KACX,IAAKD,EAAGwrT,UAAU1yO,SAAU,CAC1B51D,EAAM84V,UAAY,CAChB9wW,KAAM,eACN8tB,YAAah5B,EACb6vH,KAAM,qBACN6D,OAAQ,IACR69G,OAAQ,IAAMvxO,EAAGo7W,WAAW,CAACz2C,GAAkB/9S,OAAO5mB,EAAGwrT,UAAU8vD,oBAAoBj9W,QAAOszF,GAAOA,IAAQgzO,OAE/GzhT,EAAM+4V,SAAW,CACf/wW,KAAM,cACN8tB,YAAah5B,EACb6vH,KAAM,oBACN6D,OAAQ,IACR7zD,SAAU8kQ,EAAiBv0S,MAAM0oD,SACjCy4J,OAAQ,IAAMvxO,EAAGo7W,WAAW,CAACz2C,GAAkB/9S,OAAO5mB,EAAGwrT,UAAU8vD,oBAAoBj9W,QAAOszF,GAAOA,IAAQgzO,KAAoB,QAIvI/kU,sBAAqBsjB,MACnBA,EAAK+wM,eACLA,IAEA,MAAMj0N,EAAKC,MACTurT,UACEA,GACExrT,EACN,IAAKwrT,EAAU1yO,UAAY94E,EAAGw7W,UAAW,CACvCt4V,EAAMg5V,WAAa,CACjBhxW,KAAM,gBACN8tB,YAAah5B,EACb6vH,KAAM,sBACNhwD,SAAU2rP,EAAUjW,cAActxR,QAAU,GAAKgwM,EAAen7I,SAChE46C,OAAQ,IACR69G,OAAQ,EACN90M,KAAAA,EACAw3L,eAAAA,KACIj0N,EAAGq7W,YAAY5+U,EAAMw3L,EAAgBu3F,EAAUjnF,UAAUtQ,MAUrEr0N,gBAAgB8gL,GACd,MAAMsvE,EAAetvE,EAAYzgL,KAAK0lF,WACtC,IAAIsqK,EAAU,EACd,MAAOhwP,KAAK6/D,OAAOw1O,WAAWn0E,WAAWlhO,KAAK0lF,UAAW,GAAGqqK,OAAkBC,KAAY,CACxFA,IAEF,MAAO,GAAGD,OAAkBC,KAGhC9wP,EAAgB07W,GAAgB,QAAS,kBACzC17W,EAAgB07W,GAAgB,eAAgB,CAC9CxjW,OAAQ,CAAC,aAAc,eACvBqpD,MAAO,CAAC,oBAAqB,uBAAwB,0BAEvDvhE,EAAgB07W,GAAgB,eAAgB,CAM9Cl1R,UAAW,OAKX5lB,OAAQ,CACNyuL,SAAU,OACVC,SAAU,MACVC,SAAU,SAaZmtH,gBAAiB,UAEnBhB,GAAeh5S,aAAe,oBAC9Bg5S,GAAe1yW,OAAS,iBACxBijO,GAAmB2F,gBAAgB8pI,GAAgB,KAAM,aAsHzD,MAAMsB,WAAkB7xB,GAEtBt8U,mBACE,MAAO,YAET8T,2BACE,MAAO,CA+BLgpU,wBAAyB,MAUzBM,wBAAyB,MAKzBE,2BAA4B,KAoC5BsI,YAAa,OAKbC,mBAAoB,KAsBpBlG,YAAa,KA8BbxC,eAAgB,KAChBgC,qBAAsB,MAG1BvtV,iBACEK,KAAKktV,qBAAuBltV,KAAKktV,sBAAwBltV,KAAK6/D,OAAOqtR,qBACrEhzU,MAAMuB,kBAAkB5c,WA+G1B0sT,gBACE,OAAOvrT,KAAK6/D,OAIdlgE,oBAAoB+qD,GAClB,OAAOA,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAGzG,QAAQjkD,KAAKs7K,KAAKpc,gBAEtEv/J,mBAAmBo0V,EAAcl0R,EAAS7/D,KAAK6/D,QAC7C,OAAOA,EAAOy1R,mBAAmBvB,GAEnCp0V,mBAAmB+qD,EAAIv6B,GACrB,IAAIg9T,EACJ,MAAMptV,EAAKC,MACT6/D,OACEA,GACE9/D,EACJg0V,EAAeh0V,EAAGo8W,oBAAoBzxT,GACxC,IAAKqpS,GAAgBh0V,EAAG6/D,UAAYC,EAAOgZ,SAAU,CACnD,OAAO,MAGT,GAAInuB,EAAGpoD,QAAQ,sBAAuB,CACpC,OAAO,MAET,MAAMm+K,EAAc1gL,EAAGu1V,mBAAmBvB,EAAcl0R,GACxD,IAAK4gH,IAAgBA,EAAY6wJ,aAAe7wJ,EAAY5nG,SAAU,CACpE,OAAO,MAGT,MAAMqwH,IAAcikJ,EAAUttR,EAAO,KAAK9/D,EAAGmtV,2CAA6C,MAAQC,SAAiB,OAAS,EAAIA,EAAQtmV,KAAKg5D,EAAQk0R,EAActzK,EAAa/1H,EAAIv6B,MAAY,MAChM,OAAQ+4K,EAEVvpM,iBAAiBsrV,GACf,MAAMqwB,kBACJA,EAAiBp3C,aACjBA,EAAYlwG,eACZA,EACAjvK,aAAc50B,GACZ86T,EACJ,MAAO,CAELx9Q,QAASw9Q,EACT/mB,aAAAA,EACAlwG,eAAAA,EACAsnJ,kBAAAA,EACAnrV,MAAAA,GAGJxwB,uBAAuBgvV,EAAWx+T,GAChC,OAAOnwB,KAAK6/D,OAAOtyC,QAAQohU,EAAWx+T,GAExCxwB,iBAAiBsrV,EAAUziU,GACzBxoB,KAAK6/D,OAAOtyC,QAAQ,YAAatvB,OAAOmZ,OAAOpX,KAAKo8W,iBAAiBnxB,GAAW,CAC9E99S,UAAW89S,EAAS99S,UACpBC,QAAS69S,EAAS79S,QAClB03Q,YAAammC,EAASnmC,eAG1BnlT,iBAAiBsrV,GACfjrV,KAAK6/D,OAAOhgE,UAAUszK,cAAgB,KACtCnzK,KAAK6/D,OAAOtyC,QAAQ,iBAAkBvtB,KAAKo8W,iBAAiBnxB,IAE9DtrV,iBAAiBsrV,GACfjrV,KAAK6/D,OAAOtyC,QAAQ,iBAAkBvtB,KAAKo8W,iBAAiBnxB,IAE9DtrV,0BAA0BsrV,GACxBjrV,KAAK6/D,OAAOtyC,QAAQ,0BAA2BvtB,KAAKo8W,iBAAiBnxB,IAEvEtrV,iBAAiBsrV,EAAUx0M,GACzB,MAAM12I,EAAKC,KACXD,EAAG0tV,kBAAkBlgU,QAAQ,iBAAkBtvB,OAAOmZ,OAAOrX,EAAGq8W,iBAAiBnxB,GAAW,CAC1Fx0M,MAAAA,KAEF,IAAKA,EAAO,CAOV,MAAM0+J,gBACFA,EAAeE,WACfA,GACEt1S,EAAG8/D,OACPw8S,EAAct8W,EAAGkrV,SAASqxB,wBAAwBvrV,MAAK,EACrDopR,SAAAA,EACAC,WAAAA,GACCx7S,KACD,IAAI29W,EACJ,OAAQpnE,EAAgBvpS,SAASwuS,KAAgB/E,EAAWzpS,SAASwuS,EAAWjqR,QAAUgqR,EAASxvS,OAAS4xW,EAAwBx8W,EAAGkrV,SAASqwB,kBAAkB18W,MAAQ,MAAQ29W,SAA+B,OAAS,EAAIA,EAAsB/8D,eAExP,GAAI68D,EAAa,CACft8W,EAAG8/D,OAAOi5H,WAId/4L,EAAG8/D,OAAO9iD,YAAW,IAAMhd,EAAG8/D,OAAOhgE,UAAUszK,cAAgB,OAAO,IASxExzK,YAAYsrV,GACV,MAAMnmC,YACFA,EAAW9wF,eACXA,GACEi3H,EACJuxB,EAAevxB,EAASQ,gBAAgB,GAE1C,IAAK3mC,EAAa,CAChB,OAAQ9kT,KAAK4qV,yBAA2B5qV,KAAKqrV,2BAA6BnrV,QAAQ+qV,EAASlmS,aAAapmD,OAAOslD,QAAQjkD,KAAKqrV,6BAA+B,MAG7J,GAAIvmC,EAAYz+N,cAAgBy+N,EAAYjsO,SAAU,CACpD,OAAO,MAGT,GAAIm7I,IAAmB8wF,EAAa,CAClC,OAAQ03D,EAAarsV,MAAMwsS,UAAU/wT,SAASk5S,GAEhD,OAAO,KAETnlT,kBAAkBsrV,EAAU96T,GAC1B,IAAIssV,EACJ,MAAM18W,EAAKC,KACTurT,EAAYxrT,EAAG0tV,kBACjB,IAAIthV,EAEJ,IAAKswW,EAAwBxxB,EAASnmC,eAAiB,MAAQ23D,SAA+B,GAAKA,EAAsB5jS,SAAU,CACjI,OAAO,MAGT,IAAK0yO,EAAU4uC,eAAiB5uC,EAAU0S,qBAAqBgtB,EAAS99S,UAAW89S,EAAS79S,QAAS69S,EAASQ,gBAAgB,GAAIR,EAASnmC,aAAc,CACvJ34S,EAAS,CACPsqI,MAAO,MACPhiI,QAAS1U,EAAGo7B,EAAE,iCAEX,CACLhvB,EAASpM,EAAG4zV,YAAY9sV,KAAK9G,EAAG6zV,oBAAsB7zV,EAAIkrV,EAAU96T,GAEtE,IAAKhkB,GAAUA,EAAOsqI,MAAO,CAC3B,IAAIimO,EAAuBC,EAE3BxwW,GAAUuwW,GAAyBC,EAAyBpxD,EAAU,6BAA+B,MAAQoxD,SAAgC,OAAS,EAAIA,EAAuB91W,KAAK0kT,EAAW0/B,EAAU96T,MAAY,MAAQusV,SAA+B,EAAIA,EAAwBvwW,EAE5R,OAAOA,EASTxM,oBAAoB8tE,GAClB,MAAM1tE,EAAKC,KACT48W,EAAgB78W,EAAG8/D,OACnBg9S,EAAc98W,EAAG0tV,kBACjBqvB,EAAiB,MACnB,IAAI3wW,EACJ,IAAKshE,EAAQohR,mBAAoB,CAC/B+tB,EAAcvnE,WAAWuQ,oBACzBi3D,EAAYxnE,WAAWuQ,oBACvBz5S,QAAepM,EAAGg9W,kBAAkBH,EAAeC,EAAapvS,EAASqvS,GACzEF,EAAcvnE,WAAW0Q,mBACzB82D,EAAYxnE,WAAW0Q,mBAGzB82D,EAAYtvV,QAAQ,YAAatvB,OAAOmZ,OAAOrX,EAAGq8W,iBAAiB3uS,GAAU,CAC3EuvS,OAAQF,EACR3sV,MAAOs9C,EAAQ1oB,aACfk4T,kBAAmBxvS,EAAQwvS,kBAC3BtB,qBAAsBluS,EAAQq3O,YAC9B+pC,mBAAoBphR,EAAQohR,sBAE9B,OAAO1iV,EAMTxM,wBAAwBi9W,EAAeC,EAAapvS,EAASwY,GAE3D,MAAMlmF,EAAKC,KACTk9W,EAAmBN,IAAkBC,GACrC5zD,WACEA,GACE4zD,GAEF1nE,gBAAiBgoE,EACjB9nE,WAAY+nE,GACVR,GAEFznE,gBAAiBkoE,EACjBhoE,WAAYioE,GACVT,EAEJU,EAAoBX,EAAc3zD,WAAa2zD,EAActnE,cAAgBsnE,EAAchxS,MAC3F4xS,EAAkBv0D,EAAa4zD,EAAYvnE,cAAgBunE,EAAYjxS,OACvEs4P,aACEA,EAAYo3C,kBACZA,EAAiBrrB,SACjBA,EAAQqsB,wBACRA,EACAtoJ,eAAgBoiJ,EAChBtxD,YAAauxD,GACX5oS,GACJigR,YACEA,GACE3tV,EACJ09W,EAAa19W,EAAGywV,gBAAgB8qB,EAAkB,GAAGnrV,MAAMgd,UAAW8iT,GACtEytB,EAAc,GACdC,EAAiB,GACjBx5C,EAAmB,GACnB7G,EAAsB,GACtBsgD,EAAgB,GAChBC,EAAgB,IAAIh/V,IACtB+9V,EAAcpgH,iBACdqgH,EAAYrgH,iBACZ,IAAInoK,EAAU,MACZypR,EAAe,MACfC,EACF,GAAIb,EAAkB,CAEpBa,EAAYP,EAAgB/3W,QAAQ4wW,GAAckH,EAAkB93W,QAAQ2wW,OACvE,CACL2H,EAAYh+W,EAAG8qV,wBAA0B,EAAI0yB,EAAkB93W,QAAQ2wW,GAAgBmH,EAAkB93W,QAAQ4wW,GAEnH,GAAIptD,EAAY,CAEdib,EAAallU,SAAQ,CAACg/W,EAAcp/W,KAClC,MAAMq/W,EAAWxwS,EAAQ+hR,YAAY5wV,UAC9Bo/W,EAAazuS,aAAaqtS,GAAesB,wBAIhD,GAAID,EAASvnV,QAAQwrO,UAAW,CAC9B+7G,EAASn8W,aAIf,MAAM0tV,EAAc/hR,EAAQ+hR,YAAYv9U,QACtCksW,EAAc,GAEhB,IAAK,IAAIv/W,EAAI,EAAGA,EAAI08W,EAAkBx8W,OAAQF,IAAK,CAEjD,IAAIw/W,EAAoB9C,EAAkB18W,GACxCo/W,EAAeI,EAAkBjuV,MACnC,IAAKiuV,EAAkBliD,0BAA4BihD,EAAoBvxW,SAASwyW,KAAuBhB,EAAexxW,SAASoyW,IAAgB,CAG7IxuB,EAAY5wV,GAAGkD,SACf0tV,EAAYt3U,OAAOtZ,EAAG,GACtB08W,EAAkBpjW,OAAOtZ,EAAG,GAC5BA,IACA,SAEF,MAAMy/W,EAAe/B,EAAwB19W,GAC3C0/W,EAAsBN,EACtBhoB,EAAoBqoB,EAAalxU,UAKjCoxU,EAAyBF,EAAalkE,SAGtC8mC,EAAejhV,KAAKmrV,wBAA0B6K,EAAoBtI,EAAc+vB,EAAa19W,EAAGywV,gBAAgBwF,EAAmB/F,GACrI,GAAIhqQ,EAAM,CACRm4R,EAAoBA,EAAkBn4R,KAAK,MAC3Ck+O,EAAiB3lU,KAAK4/W,QAGnB,GAAIjB,IAAwBE,EAAmB,CAClD,MAEEmB,EAAYF,EAAoB9hD,YAAY19T,OAAS,EACrD2/W,EAAgBL,EAAkBn4R,OAGpC,GAAIw4R,EAActuV,MAAO,CACvBsuV,EAActuV,MAAQsuV,EAActuV,MAAMxlB,GAC1C8zW,EAActkE,SAAW,KAG3BmjB,EAAoB9+T,KAAK4/W,GAEzB,IAAKI,EAAW,CACdb,EAAen/W,KAAK8/W,GAGtB,IAAKhB,EAAazwS,QAAQyxS,EAAoB3zW,IAAK,CAEjDqzW,EAAet/W,EAAeA,EAAe,GAAI4/W,EAAoBpkV,MAAO,GAAI,CAC9EvvB,GAAI2zW,EAAoB3zW,GAExBslS,SAAU,OAEZytE,EAAYl/W,KAAKw/W,GAInB,IAAKV,EAAargD,qBAAsB,CACtCkH,EAAiB3lU,KAAKigX,GAExBL,EAAoBK,EAEtB,IAAI35D,EAAcuxD,EAChBqI,EAAiB,KACnB,IAAKhxB,EAAa,CAChB,IAAKwvB,EAAkB,CAGrB,GAAIa,IAAc,EAAG,CACnB,MAAMY,EAAWvqW,KAAKC,IAAID,KAAKuU,IAAI40V,EAAkB93W,QAAQ84W,GAA0BR,EAAWR,EAAkBv5V,MAAQ,GAAI,GAChI8gS,EAAcy4D,EAAkBvqR,MAAM2rR,GAEtC,GAAI75D,EAAYz+N,aAAc,CAC5By+N,EAAcy4D,EAAkBpxQ,QAAQ24M,EAAa,MAAO,OAASy4D,EAAkBqB,YAAY95D,EAAa,MAAO,MAEzHA,EAAcA,EAAYpvO,cACrB,CACLovO,EAAcy5D,QAIb,GAAI3/W,EAAI,EAAG,CACd,MAAMigX,EAA4BtB,EAAkB93W,QAAQ84W,GAC5Dz5D,EAAc04D,EAAgBxqR,MAAM6rR,EAA4Bd,IAAcj5D,GAIlF,GAAIs5D,EAAkBjkE,WAAa2K,EAAa,CAC9C45D,EAAiBN,EAAkBjkE,SACnCikE,EAAkBjkE,SAAW2K,EAE7Bk5D,EAAap5C,SAAWi5C,EAAc9+V,IAAIi/V,GAC1C3pR,EAAU,KAIV,GAAI2pR,EAAa/hD,aAAc,CAC7B+hD,EAAa1sW,IAAI,cAAewzS,GAGlC,GAAIo4D,GAAoBI,EAAargD,qBAAsB,CAGzD+gD,EAAax+D,WAAasF,EAAYn6S,IAI1C,IAAKizW,EAAc7sV,MAAKy+F,GAAMA,EAAGwuP,eAAiBA,MAAkBn+U,GAAW2L,QAAQwyU,EAAa7wU,UAAW8zS,GAAe,CAE5H,OAAQ+8B,EAAa/hD,cAAgB+hD,EAAartS,gBAAiB,CACjEqtS,EAAa1lR,SAAS,MAExB0lR,EAAa7wU,UAAY8zS,EACzB28B,EAAcp/W,KAAK,CACjBw/W,aAAAA,EACAhoB,kBAAAA,IAEFgoB,EAAap5C,SAAWi5C,EAAc9+V,IAAIi/V,GAC1CF,EAAe,KAGjBjB,EAAYiC,iBAAiB,CAC3Br+L,YAAau9L,EACbhqJ,eAAgB8wF,EAChBruQ,QAAS73C,IAAM,EAAI6uE,EAAQA,QAAQh3B,QAAUg3B,EAAQA,QAAQ2zF,gBAAgBxiK,EAAI,GAEjF6uE,QAAAA,EACAovS,YAAAA,EACA6B,eAAAA,EACAhB,YAAAA,EACAS,YAAAA,EACAC,kBAAAA,IAGJjB,EAAoBr7W,OAAOw7T,GAC3B8/C,EAAet7W,OAAO67W,GACtBN,EAAkBt+V,IAAIolT,GACtBu5C,EAAY5+W,QAAUq/W,EAAY3/W,QAAQ8+W,EAAav+V,IAAI2+V,IAG3D,IAAK39W,EAAG6qV,wBAAyB,CAG/B,IAAK,IAAIhsV,EAAI,EAAGA,EAAI08W,EAAkBx8W,OAAQF,IAAK,CACjD,MAAMmgX,EAAuBzD,EAAkB18W,GAAGuxB,MAGhD6tV,GAAgBG,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYptV,MAAKb,GAAKA,EAAEvlB,KAAOo0W,EAAqBp0W,OAAQo0W,EACtId,EAAWxwS,EAAQ+hR,YAAY5wV,GAC/B63C,EAAU73C,IAAM,EAAI6uE,EAAQA,QAAQh3B,QAAUg3B,EAAQA,QAAQ2zF,gBAAgBxiK,EAAI,GAElFogX,EAAanC,EAAYoC,aAAajB,GAExCzjQ,GAAQp0G,YAAY83W,EAASzmU,cAAeymU,GAC5C,GAAID,EAAa7jE,UAAY0iE,EAAYhmJ,WAAWyN,UAAU05I,EAAa7jE,WAAa6kE,EAAY,CAElG,IAAKhB,EAAa1rW,QAAU0rW,EAAa1rW,OAAO68D,OAAQ,CACtD,MAAMtZ,EAAStf,GAAUvxB,KAAKyxB,EAASomU,EAAY5d,iBAAkB,MAGrEhnT,GAAUinU,WAAWzoU,EAASof,EAAOrxB,EAAGqxB,EAAO1xD,GAE/Co2G,GAAQ1oD,SAASgrT,EAAY5d,iBAAkBxoT,EAASunU,EAAaxhD,YAAY,GAAG7xT,IACpFuyW,GAAoBL,EAAYsC,+BAA+B,CAC7D1+L,YAAau9L,EACbnB,YAAAA,IAGJpmU,EAAQmI,UAAU98C,OAAO,oBAAqB,WAAY,eAAgB,cAC1E20C,EAAQgS,cAAgB,QAI9B01T,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYn/W,SAAQ61E,GAASgpS,EAAc9+V,IAAI81D,KAGzG,GAAIyoP,EAAoBx+T,QAAU6+W,EAAe7+W,QAAUqlU,EAAiBrlU,QAAU4+W,EAAY5+W,OAAQ,CACxGu1F,EAAU,KAGZ,GAAIA,GAAWypR,EAAc,CAG3BR,EAAargD,sBAAwB4gD,EAAc7+W,SAAQyhL,GAAeA,EAAYpoF,qBAChF9nF,QAAQ/G,IAAI,CAACqzW,EAAYtxQ,UAAYqxQ,EAAcrxQ,QAAUsxQ,EAAYtxQ,QAAQ6wJ,cAAgB,KAAMwgH,EAAcrxQ,QAAQ6wJ,gBAEnIkhH,EAAargD,sBAAwB4gD,EAAc7+W,SAAQyhL,GAAeA,EAAYnoF,SAAS,MAAO,QAExG,IAAKjE,EAAS,CAEZA,EAAUupR,EAAcj2W,MAAK,EAC3Bq2W,aAAAA,EACAhoB,kBAAAA,MACKn2T,GAAW2L,QAAQwyU,EAAa7wU,UAAW6oT,KAGpD6mB,EAAYhgH,gBACZ+/G,EAAc//G,gBACd,GAAIy+G,EAAkBx8W,OAAS,EAAG,CAChC,IAAKu1F,EAAS,CACZ5mB,EAAQgpE,MAAQ,UACX,CAIL,GAAIomO,EAAYuC,UAAW,CACzB5vB,EAAYxwV,SAAQ0rD,UAAaA,EAAGmI,gBAGtCgqT,EAAYrB,wBACZ,GAAI0B,EAAkB,CACpBN,EAAcpB,wBACdqB,EAAYwC,eAAiBlB,KAOrCx+W,sBAAsBsrV,GACpB,MAAMlrV,EAAKC,MAEPytV,kBAAmBliC,GACjBxrT,EACJpB,EAASssV,EAASlmS,aAAapmD,OAC/B2gX,EAA2Br0B,EAASnmC,aAAemmC,EAASj3H,eAC5DurJ,EAA4Bt0B,EAASgyB,kBACvC,IAAIA,EAAoB1xD,EAAYxrT,EAAGu1V,mBAAmB32V,EAAQ4sT,GAAa,KAC7EzG,EACA+pC,EAEF,GAAI5D,EAAS/mB,aAAat4T,SAASqxW,GAAoB,CACrDA,EAAoB,KAEtB,GAAIl9W,EAAG8qV,wBAAyB,CAC9B/lC,EAAcmmC,EAASj3H,oBAClB,IAAKj0N,EAAG6qV,wBAAyB,CACtC9lC,EAAc/kT,EAAGy/W,uBACZ,GAAIj0D,EAAW,CACpBzG,EAAc/kT,EAAGy/W,mBAAqBv0B,EAASnmC,aAAemmC,EAASj3H,eAEzE,MAAMsnJ,kBACFA,EAAiBp3C,aACjBA,GACE+mB,EACJw0B,EAAoBH,IAA6Bx6D,EACnD,IAAIruK,EAAQv2I,QAAQ4kT,IAAgBA,EAAYz+N,cAChD,IAAKy+N,GAAe/kT,EAAGsrV,2BAA4B,CACjDwD,EAAqBlwV,EAAOslD,QAAQlkD,EAAGsrV,4BACvC50M,EAAQv2I,QAAQ2uV,GAElB,MAAO,CACLp4M,MAAAA,EACAo4M,mBAAAA,EACA3qB,aAAAA,EACAo3C,kBAAAA,EACAx2D,YAAAA,EACAm4D,kBAAAA,EACA3uB,MAAOmxB,GAAqBxC,IAAsBsC,GAGtD5/W,mBAAmBw7H,GACjB,MAAMp7H,EAAKC,MACTurT,UACEA,GACExrT,EACJ02C,EAAU12C,EAAG2/W,sBAAsBvkP,GACnCslD,EAAc1gL,EAAGu1V,mBAAmB7+S,EAAS80Q,GAC7Cv3F,EAAiBu3F,EAAU0pC,sBAAsBx+S,GACjDiuR,EAAmBnZ,EAAUkrC,wBAAwBhgT,GACrD6kU,EAAoB52C,EAAmB,CAACA,GAAoB,GAE9D,GAAIA,IAAqBnZ,EAAUo0D,qBAAqBrE,EAAkB,KAAOv7W,EAAGu7K,KAAKzX,WAAW/gH,SAAU,CAC5Gw4T,EAAkB98W,KAAKC,MAAM68W,EAAmBv7W,EAAG6/W,kBAAkBl7C,IAEvE,MAAMR,EAAe,IAAI,IAAIrlT,IAAIy8V,EAAkBzxW,KAAIuwS,GAAcA,EAAWjqR,UAChF,MAAO,CACLswJ,YAAAA,EACAuzC,eAAAA,EACA0wG,iBAAAA,EACAR,aAAAA,EACAo3C,kBAAAA,GAGJ37W,qBAAqBw7H,GACnB,IAAI0kP,EACJ,MAAM9/W,EAAKC,MACTurT,UACEA,GACExrT,EACJ02C,EAAU12C,EAAG2/W,sBAAsBvkP,IACnCslD,YACEA,EAAWuzC,eACXA,EAAc0wG,iBACdA,EAAgB42C,kBAChBA,GACEv7W,EAAG+sV,mBAAmB3xN,GAC1Bq0N,EAAc,GAChB,GAAIzvV,EAAG8qV,0BAA4B72H,EAAgB,CACjD,MAAM,IAAItjN,MAAM,6CAA+C+vK,EAAY91K,IAE7E,IAAIylV,EACJ,GAAIrwV,EAAG6qV,wBAAyB,CAC9B,IAAIk1B,EACJ1vB,GAAmB0vB,EAAwB//W,EAAGm6V,sBAAwB,MAAQ4lB,SAA+B,OAAS,EAAIA,EAAsBj5W,KAAK9G,EAAIi0N,EAAgBvzC,GACzK,MAAMs/L,EAAqBhgX,EAAGggX,mBAAqBhgX,EAAGigX,yBAAyB5vB,EAAiBp8H,EAAgBvzC,GAC9Gw/L,EAAc1pU,GAAUvxB,KAAKyxB,EAAS80Q,EAAU+/B,wBAClDpxU,MAAMgmW,iBAAiBH,EAAoBE,EAAa10D,EAAUX,kBAAkBqnC,gBAAiB/xV,QAAQkwV,EAAgB5nU,QAG/H8yV,EAAkBt8W,SAAQo7S,IACxB,IAAI+lE,EAAa50D,EAAUsmD,+BAA+Bz3D,EAAY,MACtE,IAAK+lE,EAAY,CACfA,EAAa50D,EAAUpjG,mBAAmBi4J,wBAAwBhmE,EAAWjqR,MAAOiqR,EAAWD,UAEjGq1C,EAAYhxV,KAAK2hX,MAEnB,MAAO,CACL3tS,OAAQkyP,EACR+mB,gBAAiB6vB,EACjBlrB,iBAAkByvB,EAAmBzvB,KAAqB,MAAQyvB,SAA0B,GAAKA,EAAiBr3V,MAAQ4nU,EAAkB,KAC5IZ,YAAAA,GAGJ7vV,mBAAmBq0N,EAAgBvzC,GACjC,IAAI4/L,EACJ,MAAM90D,UACFA,GACEvrT,KACJsgX,GAA2BD,EAAwB90D,EAAU2uC,sBAAwB,MAAQmmB,SAA+B,OAAS,EAAIA,EAAsBx5W,KAAK0kT,EAAWv3F,EAAgBvzC,GACjM,IAAIoqB,EAASC,EACb,GAAI9qM,KAAKmrV,wBAAyB,CAChCtgJ,EAAUpqB,EAAYtzI,UACtB29J,EAAUrqB,EAAYrzI,aACjB,GAAIkzU,EAAyB,CAClCz1K,EAAUy1K,EAAwB93V,MAClCsiL,EAAUw1K,EAAwB58V,IAEpC,MAAO,CACL8E,MAAOqiL,EACPnnL,IAAKonL,GAGTnrM,yBAAyB4gX,EAAWvsJ,EAAgBvzC,GAClD,OAAOzgL,KAAKurT,UAAU2mC,kBAAkBlyV,KAAK6qV,yBAA2B72H,EAAgBvzC,EAAa,KAAM8/L,GAAa,CACtH/3V,MAAO+3V,EAAU/3V,MACjB9E,IAAK68V,EAAU78V,MASnB/jB,YAAYw7H,GACV,MAAM8vN,EAAWjrV,KAAK8sV,mBAAmB3xN,IAAS,GAClD,OAAOz8H,EAAeA,EAAeA,EAAe,GAAIwb,MAAM0zU,YAAYzyN,IAAQ8vN,GAAW,GAAI,CAC/FqxB,wBAAyBrxB,EAASqwB,kBAAkBzxW,KAAIuwS,IAAU,CAChEjtQ,UAAWitQ,EAAWjqR,MAAMgd,UAC5BgtQ,SAAUC,EAAWD,SACrBC,WAAAA,QASNz6S,kBAAkB+kU,GAChB,OAAO1kU,KAAKurT,UAAU8vD,oBAAoBj9W,QAAOmxP,GAAkBA,IAAmBm1E,IAAqBn1E,EAAe4qD,SAASthO,UAAY02K,EAAep/N,MAAMmhT,cAWtK3xU,cAAc8gL,EAAahqI,EAAS0zQ,GAClC,MAAMoB,EAAYvrT,KAAKytV,kBACvB,GAAIliC,EAAU6/B,aAAc,CAC1B,IAAIjnV,EAAIgmT,EAAM,GAEd,GAAIoB,EAAUi1D,sBAAwB,WAAa//L,EAAYkgJ,YAAa,CAC1E,OAAQpV,EAAUk1D,gBAChB,IAAK,SACHt8W,GAAKsyC,EAAQuM,YAAc,EAC3B,MACF,IAAK,MACH7+C,GAAKsyC,EAAQuM,YACb,OAGN,OAAO7+C,MACF,CACL,IAAIqgC,EAAI2lR,EAAM,GAEd,GAAIoB,EAAUi1D,sBAAwB,WAAa//L,EAAYkgJ,YAAa,CAC1E,OAAQpV,EAAUk1D,gBAChB,IAAK,SACHj8U,GAAKiS,EAAQW,aAAe,EAC5B,MACF,IAAK,MACH5S,GAAKiS,EAAQW,aACb,OAGN,OAAO5S,GAQX7kC,kBACE,MAAMI,EAAKC,KACT6/D,EAAS9/D,EAAG0tV,mBACZrC,aACEA,GACEvrR,GACJ4N,QACEA,EAAO1oB,aACPA,EAAY44G,UACZA,GACE59J,EAAGkrV,SACPx0S,EAAUknH,GAAalwF,EAAQh3B,QAE/BiqU,EAAWnqU,GAAUvxB,KAAKyxB,EAAS,KAAM,MACzCjS,EAAIq7B,EAAOopP,YAAclpT,EAAG2tV,YAAcjgR,EAAQvsB,QAAUw/T,EAAS9mU,OAAOpV,EAE5Em8U,EAAYpqU,GAAUvxB,KAAKyxB,EAASopB,EAAOyrR,uBAAwB,OAEjEnnV,EAAGy8W,EACHp8U,EAAGq8U,GACDF,EAAU/mU,OACdknU,EAAc/gX,EAAGgmK,wBAAwBhhH,GAC3C,IAAIo1P,EAAW,KACf,GAAIt6O,EAAOppB,QAAQsB,SAAS+oU,GAAc,CAGxC,GAAI11B,EAAc,CAChB,MAAMz8K,EAAM9uG,EAAOg3J,WAAWiwB,SAAStiN,GACvC21Q,EAAWxrI,GAAO9uG,EAAO+L,MAAMonB,MAAM27E,EAAIooD,eACpC,CAILojF,EAAWt6O,EAAOo1R,sBAAsBp1R,EAAOyrR,uBAAuBtjV,cAAc,wBAAyB,CAAC44W,EAAIC,KAGtH,OAAO1mE,EAITx6S,gBAAgBwtC,EAAW8iT,GACzB,MAAM1kC,EAAYvrT,KAAKytV,kBACvB,OAAOliC,EAAUxD,SAASyqC,UAAU,IAAIhkV,KAAK2+B,EAAY,EAAI8iT,GAAW1kC,EAAUknC,6BAA+BtlT,EAAY,OAE/HxtC,iBAAiB+kU,GACf,OAAO1kU,KAAK6/D,OAAOgyS,+BAA+BntC,EAAkB,MAItE/kU,wBAAwBwwB,GACtB,OAAOA,EAAMxxB,QAKjBu9W,GAAUh0W,OAAS,YACnBijO,GAAmB2F,gBAAgBorI,GAAW,KAAM,aACpD/wI,GAAmB2F,gBAAgBorI,GAAW,MAAO,qBAwCrD,MAAM6E,WAAwBrmB,GAqF5BnvC,gBACE,OAAOvrT,KAAK6/D,OAEd+L,YACE,OAAO5rE,KAAK6/D,OAAOw1O,WAErB11S,iBAAiBijJ,GACf5iJ,KAAK6zV,cAAgB,iBAAiBjxM,EAAO,qBAAuB,KAItEjjJ,uBAAuB27K,EAAMmF,EAAatwJ,GACxC,IAAIkwV,EACJ,MAAMrsJ,eACJA,GACE14C,EACJ,GAAI04C,EAAen7I,SAAU,CAC3B,OAAO,MAET,MAAM0yO,UACFA,GACEvrT,KAEJs+T,GAAiB/S,EAAUnsS,gBAAkB40M,EAAesqG,cAAchjJ,EAAK45K,eAC/E/oV,EAASmyT,GAAiB/S,EAAUh+R,QAAQ,mBAAoB,CAC9DymM,eAAAA,EACAx3L,KAAM8+I,EAAK45K,cACX/kU,MAAAA,IAGJnwB,KAAKowV,iBAAmBiwB,EAAwB90D,EAAU2uC,sBAAwB,MAAQmmB,SAA+B,OAAS,EAAIA,EAAsBx5W,KAAK0kT,EAAWv3F,EAAgBvzC,GAC5L,OAAOt0K,EAETxM,UAAU27K,GACR,IAAI0lM,EACJ,MAAMjhX,EAAKC,MACT6/D,OACEA,GACE9/D,GACJs1S,WACEA,EAAUF,gBACVA,EAAeyX,sBACfA,GACE/sP,GACJm0J,eACEA,GACE14C,EACJmF,EAAc1gL,EAAGkhX,kBAAkB3lM,GACnCi1J,EAAkB,CAACv8G,GACrBvzC,EAAYnvK,IAAI,WAAYuuB,GAAW6K,KAAK+1I,EAAYtzI,UAAWszI,EAAYrzI,QAASqzI,EAAYq9H,aAAc,OAElHr9H,EAAYnjG,WAAa,KAEzBmjG,EAAYtgK,KAAK+gW,eAAiB,KAGlC,GAAInhX,EAAGohX,uBAAuB7lM,EAAMmF,EAAanF,EAAKnrJ,SAAW,MAAO,CACtE,OAAO,MAET,IAAImrV,EAAoB,GACxB,GAAItnJ,EAAgB,CAClBsnJ,EAAoBnmE,EAAgBuqB,sBAAsBj/I,EAAauzC,GAGzE,GAAIn0J,EAAOtyC,QAAQ,iBAAkB,CACnCkzJ,YAAAA,EACA8vJ,gBAAAA,EACA+qC,kBAAAA,MACK,MAAO,CACZnmE,EAAgBrzS,OAAOw5W,GACvB,OAAO,MAIT,GAAIv7W,EAAGqhX,WAAY,CACjB3gM,EAAYtgK,KAAKkhW,kBAAoB,MAEtCL,EAAwBnhT,EAAOyhT,kBAAoB,MAAQN,SAA+B,OAAS,EAAIA,EAAsBn6W,KAAKg5D,EAAQ4gH,GAC3I5gH,EAAO+sP,sBAAwB,MAC/BvX,EAAWksE,SAAS9gM,GAAahwK,MAAK,IAAMovD,EAAO+sP,sBAAwBA,IAI3E/sP,EAAOyd,WAAa,KACpBzd,EAAOy6K,cACPz6K,EAAOyd,WAAa,MAEpBg+F,EAAKtC,YAAcsC,EAAK7kI,QAAUopB,EAAO6nS,0BAA0BjnL,GACnE,OAAOvmK,MAAMwiK,UAAUpB,GAEzB37K,cAAc8tE,EAASt9C,GACrB,MAAMpwB,EAAKC,MACT6/D,OACEA,GACE9/D,EAEN0tE,EAAQumJ,eAAiBj0N,EAAG69J,SAASo2D,eACrC,OAAQn0J,EAAOs6R,cAAgBt6R,EAAOo+P,qBAAqBxwP,EAAQtgC,UAAWsgC,EAAQrgC,QAASqgC,EAAQgzG,YAAahzG,EAAQumJ,kBAAoBj0N,EAAG46V,kBAAkB9zV,KAAK9G,EAAG6zV,oBAAsB7zV,EAAI0tE,EAASt9C,GAGlNxwB,WAAWq0N,GACT,MAAM/lM,EAASjuB,KAAK4rE,MAAMuzP,qBAAqBnrG,GAC/C,OAAQ/lM,IAAWA,EAAOnvB,OAG5Ba,sBAAsBwwB,GACpBnwB,KAAK6/D,OAAOtyC,QAAQ,2BAA4B4C,GAOlDxwB,kBAAkB27K,GAChB,MAAMv7K,EAAKC,MACT6/D,OACEA,GACE9/D,EACJqiH,EAAYviD,EAAOurR,aAAe,IAAM,KACxCrjC,SACEA,EAAQ1S,WACRA,EAAUzqQ,aACVA,GACEi1B,GACJ1vC,MACEA,EAAK+kU,cACLA,GACE55K,EACJm6K,EAAc11V,EAAG01V,YAActlU,EAAM,OAAOiyF,KAAek5D,EAAKzX,WAAW,OAAOzhD,KAClFomN,EAAc,CACZ/jU,KAAM4wS,EAAW96N,WAAW1gD,SAASp1B,KAAKG,cAAgB7E,EAAGo7B,EAAE,sBAC/DgS,UAAWsoT,EAAc51T,GAAW1C,MAAM+3T,EAAentC,EAASk2B,WAAY,KAAMrzS,GAAgBsqT,EACpG9nT,QAASqoT,EAAcP,EAAgBr1T,GAAWlB,KAAKu2T,EAAentC,EAASk2B,WAAY,KAAMrzS,IAIrG,GAAIi1B,EAAO0rC,QAAQi2Q,oBAAqB,CACtCxwU,GAAa55B,OAAOoxT,EAAa,CAC/BszC,eAAgBtzC,EAAYr7R,UAC5Bs0U,eAAgB,uBAGpB,OAAOpsE,EAAW3mO,aAAa85P,GAEjC7oU,yBAAyB8tE,GACvB,MAAMttD,KACJA,GACEstD,EAAQgzG,YAEZtgK,EAAKkhW,kBAAoB,MAEzBlhW,EAAK+gW,eAAiB,MACtB,IAAKlhX,KAAK6/D,OAAO6hT,eAAgB,CAC/Bj0S,EAAQgzG,YAAYnjG,WAAa,MAEnC,OAAOpjE,MAAMshV,mBAAmB/tR,GAElC9tE,cAAc4b,GACZ,MAAMotC,EAAOzuC,MAAM0yU,cAAcrxU,IAC/Bk7B,QACEA,GACEz2C,KAAKwpL,IACX/yI,EAAQmI,UAAU7/B,IAAI,4BACtB03B,EAAQmI,UAAU8X,OAAO,eAAgB12D,KAAK49J,SAASnwF,QAAQ6pR,WAC/D,OAAO3uS,EAEThpD,UAAU8tE,GACR,IAAIk0S,EAAuBC,EAC3B,MAAMnhM,YACJA,EAAWuzC,eACXA,GACEvmJ,GAEHk0S,GAAyBC,EAAc5hX,KAAK4rE,OAAO+zP,6BAA+B,MAAQgiD,SAA+B,OAAS,EAAIA,EAAsB96W,KAAK+6W,EAAanhM,EAAauzC,GAC5Lh0N,KAAK4rE,MAAM9pE,OAAO2+K,IAGtBvhL,EAAgB6hX,GAAiB,QAAS,mBAC1C7hX,EAAgB6hX,GAAiB,eAAgB,CAa/CptB,YAAa,IAAM,KAUnBytB,WAAY,QAEdL,GAAgB74W,OAAS,kBACzBijO,GAAmB2F,gBAAgBiwI,GAAiB,KAAM,aAC1D51I,GAAmB2F,gBAAgBiwI,GAAiB,MAAO,qBA8B3D,MAAMc,WAAwB79S,GAAUtE,KACtC//D,eAAe4b,GACbrB,SAASqB,GACTrc,EAAgBc,KAAM,iBAAkB,4CAE1CL,UAAUkgE,EAAQ1nD,GAChB0nD,EAAOwxR,iBAAmB,KAC1Bn3U,MAAMsB,UAAUqkD,EAAQ1nD,GAO1BxY,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,MACT6/D,OACEA,GACE9/D,GACJk/V,iBACEA,GACEp/R,EACJiiT,EAAavrU,GAAUvxB,KAAKi6U,EAAkB,MAEhD,GAAI9uU,EAAM6wB,SAAW7wB,EAAM+yH,SAAW,GAAKnjJ,EAAG6/D,SAAU,CACtD,OAGF,GAAIzvC,EAAMxxB,OAAO2D,QAAQvC,EAAGm/J,gBAAiB,CAC3Cn/J,EAAGyoK,OAASr4I,EAAM8wB,QAAU6gU,EAAW39W,EACvCpE,EAAG0oK,OAASt4I,EAAM+wB,QAAU4gU,EAAWt9U,EACvCzkC,EAAG02C,QAAUwB,GAAU72C,cAAc,CACnCqf,IAAK,MACLi+B,UAAW,oBACXpsC,OAAQutD,EAAOo/R,iBACfx2S,cAAe,KACfpnD,MAAO,CACL8yD,UAAW,aAAap0D,EAAGyoK,aAAazoK,EAAG0oK,eAG/C5oG,EAAOppB,QAAQmI,UAAU7/B,IAAI,mBAC7B8gD,EAAOkiT,sBACPhiX,EAAGiiX,mBAAqBzrU,GAAUvxB,KAAK66C,EAAOyrR,uBAAwB,MAEtEzrR,EAAOhgE,UAAU+/D,SAAW,KAC5BC,EAAOoiT,4BAA4BpiT,EAAO6uR,iBAC1C3uV,EAAGmiX,gBAAkBphU,GAAY3xB,GAAG,CAClCsnB,QAASt1C,SACTklD,QAAS,oBACT/pC,QAASvc,KAIfoiX,sBACE,MAAMtiT,OACJA,GACE7/D,KACJ,OAAOuH,MAAMyd,KAAK66C,EAAOppB,QAAQsZ,iBAAiB8P,EAAO0rR,gBAAgB1hV,KAAI6gD,IAAE,CAC7Eq1D,UAAWxpE,GAAUvxB,KAAK0lC,EAAI,MAC9B8nB,OAAQ3S,EAAO42R,wBAAwB/rS,OAG3C/qD,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,KACX,UAAWD,EAAGyoK,SAAW,SAAU,CACjC,MAAMs5M,EAAa/hX,EAAGggH,UAAYxpE,GAAUvxB,KAAKjlB,EAAG8/D,OAAOo/R,iBAAkB,MAC3E96V,EAAIiQ,KAAKuU,IAAIvU,KAAKC,IAAI8b,EAAM8wB,QAAU6gU,EAAW39W,EAAG,GAAI29W,EAAW56W,MAAQ,GAC3Es9B,EAAIpwB,KAAKuU,IAAIvU,KAAKC,IAAI8b,EAAM+wB,QAAU4gU,EAAWt9U,EAAG,GAAIs9U,EAAW76W,OAAS,GAC5E03H,EAAO,IAAIpoF,GAAUx2C,EAAGyoK,OAAQzoK,EAAG0oK,OAAQtkK,EAAIpE,EAAGyoK,OAAQhkI,EAAIzkC,EAAG0oK,QACnExwH,GAAU6d,eAAe/1D,EAAG02C,QAASkoF,EAAKx6H,EAAGw6H,EAAKn6F,GAClDzkC,EAAG02C,QAAQp1C,MAAM6F,MAAQ,GAAGy3H,EAAKz3H,UACjCnH,EAAG02C,QAAQp1C,MAAM4F,OAAS,GAAG03H,EAAK13H,WAClClH,EAAGqiX,mBAGPziX,kBAAkBwwB,GAChB,IAAIkyV,EACJ,MAAMtiX,EAAKC,MACT6/D,OACEA,GACE9/D,GACJs7W,oBACEA,EAAmBx7W,UACnBA,GACEggE,EACNA,EAAOyiT,6BAA6BziT,EAAO6uR,kBAC1C2zB,EAActiX,EAAG02C,WAAa,MAAQ4rU,SAAqB,OAAS,EAAIA,EAAYvgX,SACrF+9D,EAAOppB,QAAQmI,UAAU98C,OAAO,mBAChC/B,EAAGyoK,OAASzoK,EAAG0oK,OAAS,KAExB5oK,EAAUszK,cAAgBtzG,EAAOyrR,uBAAuBvzS,SAAS5nB,EAAMxxB,QACvEkB,EAAU+/D,SAAW,MAErB,GAAIy7S,EAAoBv8W,OAAQ,CAC9B,IAAIyjX,EACJ1iX,EAAU6yK,mBAAqB,KAC/B7yG,EAAO2iT,iBAAmBnH,EAAoBA,EAAoBv8W,OAAS,IAC1EyjX,EAAwB1iX,EAAUkxK,cAAgB,MAAQwxM,SAA+B,OAAS,EAAIA,EAAsBztT,QAC7Hj1D,EAAU6yK,mBAAqB,MAEjC3yK,EAAGmiX,kBAELviX,kBACE,MAAMI,EAAKC,KACTyiX,EAAgB1iX,EAAGggH,UAAYxpE,GAAUvxB,KAAKjlB,EAAG02C,QAAS,OAC1D0rU,gBACEA,EAAetiT,OACfA,GACE9/D,EAKJk8J,EAAYp8F,EAAOw7S,oBAAoB5vW,QAAO,CAACykB,EAAGrqB,KAChD,IAAKg6D,EAAOgyS,+BAA+BhsW,GAAI,CAC7CqqB,EAAE1xB,KAAKqH,GAET,OAAOqqB,IACN,IACL,IAAK,MAAMwyV,KAAkBP,EAAiB,CAC5C,MAAMQ,EAAeF,EAAc/oU,UAAUgpU,EAAe3iQ,UAAW,MACvE,GAAI4iQ,IAAiBD,EAAehqL,SAAU,CAC5CgqL,EAAehqL,SAAW,KAC1Bz8B,EAAUz9J,KAAKkkX,EAAelwS,SAIlC3S,EAAOw7S,oBAAsBp/M,GAGjC/8J,EAAgB2iX,GAAiB,QAAS,mBAC1C3iX,EAAgB2iX,GAAiB,eAAgB,CAC/CphT,MAAO,CAAC,qBAAsB,wBAEhCohT,GAAgB35W,OAAS,kBACzBijO,GAAmB2F,gBAAgB+wI,GAAiB,MAAO,aAW3D,MAAMe,WAAoB33P,GAExBp+G,kBACE,MAAO,cAETkB,mBACE,MAAO,cAETvO,0BACE,MAAO,CACLyjB,MAAO,GACPszG,UAAW,CACT+O,eAAgB,+BAGlBrqF,SAAU,WACVqoE,WAAY,CAEVh2D,UAAW,MAEburB,SAAU,KAOVgqS,cAAe,MAGnBljX,qBACEua,MAAMsf,sBAAsB36B,WAE5BmB,KAAK8iX,aAAe9iX,KAAKmyG,OAAS,GAEpCxyG,qBACE,OAAOK,KAAK+iX,iBAAiBztE,cAAc70O,OAAM+R,IAAWA,EAAO6T,cAAc,KAAM,CAErF7L,WAAYosB,GAEZpH,wBAAyB,QAG7B7/F,oBAAoB+hH,GAClB,IAAIshQ,EACJ,IAAKA,EAAethQ,EAAO70G,QAAU,MAAQm2W,SAAsB,GAAKA,EAAap3W,SAAS,SAAW81G,EAAO92E,cAAgB,KAAM,CACpI82E,EAAO92E,aAAe5qC,KAAK4qC,aAE7B,GAAI82E,EAAO70G,OAAS,aAAc,CAChC,OAAO,MAET,MAAMk2W,iBACFA,GACE/iX,KACJijX,EAAc,GAChB,GAAIvhQ,EAAOzzD,MAAQ,gBAAiB,CAClC,MAAM2d,MACJA,GACE81C,EAEJA,EAAO91C,MAAQ5rE,KAAKkjX,qBAEpB,GAAIt3S,EAAO,CACT81C,EAAO91C,MAAMpyD,UAAUoyD,GAKzB,KAAM,gBAAiB81C,GAAS,CAC9BA,EAAOw2E,aAAe6qL,EAAiB1tE,WAAW4nB,sBAGtD,IAAKv7M,EAAOj9G,OAAS,aAAei9G,EAAOj9G,OAAS,YAAci9G,EAAO70G,OAAS,OAAQ,CACxFo2W,EAAYnmV,OAASimV,EAAiBx1P,WAExC,IAAK7L,EAAOj9G,OAAS,aAAei9G,EAAOj9G,OAAS,YAAci9G,EAAO70G,OAAS,OAAQ,CACxFo2W,EAAYnmV,OAASimV,EAAiB70K,WAExCjwM,OAAOmZ,OAAOsqG,EAAQuhQ,GACtB,OAAO/oW,MAAMi8H,oBAAoBz0B,GAEnC/hH,QAAQ4b,GACN,IAAI4nW,EACJ,MAAMC,cACJA,GACEpjX,KAAKsrI,UAET,GAAI83O,KAAmBD,EAAuBC,EAAcx3S,SAAW,MAAQu3S,SAA8B,OAAS,EAAIA,EAAqB/jR,eAAiBp/F,KAAK+iX,iBAAiBztE,cAAe,CACnM8tE,EAAcx3S,MAAQ5rE,KAAKkjX,qBAE7BhpW,MAAMk2G,QAAQ70G,GAEhB5b,gBAAgB4b,GACd,MAAMxb,EAAKC,MACTwyE,OACEA,EAAMqwS,cACNA,GACE9iX,EACJm4W,EAAen4W,EAAGurI,UAAU4sO,aAG9B,GAAIA,EAAc,CAChBA,EAAa11Q,OAASziG,EAAG84E,UAAYrG,EAAO8K,WAE9C,GAAIulS,EAAe,CACjB9iX,EAAGoyG,MAAQpyG,EAAGyuB,SAASq0V,EAAe9iX,EAAI,CAACyyE,QACtC,CACLzyE,EAAGoyG,MAAQpyG,EAAG+iX,aAEhB5oW,MAAMo4K,cAAgBp4K,MAAMo4K,gBAAgB/2K,GAE9C5b,kBAAkBwwB,GAChBnwB,KAAKutB,QAAQ,UAAW,CACtB4C,MAAAA,IAEFjW,MAAM0xH,kBAAkBz7G,GAE1BxwB,eAAek5E,GACb,MAAMq/R,aACJA,EAAYO,WACZA,EAAU92J,aACVA,GACE3hN,KAAKsrI,UACTpxH,MAAM6tI,eAAelvE,GACrB,GAAIq/R,EAAc,CAChBA,EAAa11Q,OAAS3pB,EAExB,GAAI4/R,EAAY,CACdA,EAAWj2Q,OAAS3pB,EAEtB,GAAI8oI,EAAc,CAChBA,EAAan/G,OAAS3pB,IAK5B+pS,GAAYhsS,YACZgsS,GAAY16W,OAAS,cA2BrB,MAAMm7W,WAAoCp4P,GACxCl9G,mBACE,MAAO,8BAGTlB,kBACE,MAAO,yBAETgV,2BACE,MAAO,CACLoX,sBAAuB,GACvBod,MAAO,MACPyxG,SAAU,MACVp4B,UAAW,MACXskC,YAAa,oBACbG,MAAO,KACP39B,SAAU,KACVC,aAAc,UACdp8E,YAAaj4C,WACbm0H,UAAW,KACX29B,SAAU,KACVh3F,SAAU,KACVujH,YAAa,KACb3qK,IAAK,+BACLy5I,KAAM,CACJttG,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACLqgW,mBAAoB,CAClB7vP,OAAQ,IACR39G,IAAK,WACLomD,MAAO,SACPjxD,KAAM,+BACNqxL,QAAS,gCAEXinL,qBAAsB,CACpB9vP,OAAQ,IACRv3D,MAAO,UACPjxD,KAAM,gBACNqxL,QAAS,kCAEXqlB,aAAc,CACZluF,OAAQ,IACRv3D,MAAO,SACPjxD,KAAM,mBACNqxL,QAAS,6BAWnBinL,2BACE,OAAOvjX,KAAKsrI,UAAUi4O,qBAOxBD,yBACE,OAAOtjX,KAAKsrI,UAAUg4O,mBAOxB3hK,mBACE,OAAO3hN,KAAKsrI,UAAUq2E,aAMxBhiN,8BACEK,KAAKwjX,yBACLxjX,KAAK2xH,OAMPhyH,4BACEK,KAAKyjX,sBACLzjX,KAAK2xH,OAMPhyH,sBACEK,KAAK2jE,UAAY3jE,KAAK2jE,SAAS98D,KAAK7G,KAAKsc,SACzCtc,KAAK2xH,OAEPhyH,oBACE,GAAIK,KAAK2jE,SAAU,CACjB3jE,KAAK2jE,SAAS98D,KAAK7G,KAAKsc,SAE1Btc,KAAK2xH,OAyBPhyH,QAAQwY,EAAS,IACf,MAAMpY,EAAKC,KACX,CAAC,aAAc,cAAe,QAAS,OAAQ,YAAa,WAAY,WAAWhB,SAAQ8Y,IACzF,GAAIA,KAAQK,EAAQpY,EAAG+X,GAAQK,EAAOL,MAExC/X,EAAG2jX,qBACH,OAAOxpW,MAAMk2G,KAAKj4G,GAEpBxY,qBACE,MAAMI,EAAKC,MACTujX,qBACEA,EAAoBD,mBACpBA,EAAkB3hK,aAClBA,GACE5hN,EAAGurI,WACPm1C,YACEA,EAAWkjM,WACXA,EAAa,UACX5jX,EACJ6jX,EAAWnjM,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYs/I,YAUnF,GAAI6jD,EAAU,CACZL,EAAqBt4W,KAAOlL,EAAGo7B,EAAE,iBACjCp7B,EAAG4oD,KAAO5oD,EAAGo7B,EAAE,GAAGwoV,qBACb,CACLJ,EAAqBt4W,KAAOlL,EAAGo7B,EAAE,GAAGwoV,sBACpC5jX,EAAG4oD,KAAO5oD,EAAGo7B,EAAE,GAAGwoV,qBAEpBL,EAAmBr4W,KAAOlL,EAAGo7B,EAAE,GAAGwoV,wBAClChiK,EAAa12M,KAAOlL,EAAGo7B,EAAE,oBACzBp7B,EAAGmH,MAAQnH,EAAGo7B,EAAE,YAKhBp7B,EAAGoyG,MAAQpyG,EAAGo7B,EAAE,GAAGwoV,WAMrBhkX,yBACE,MAAM8gL,YACJA,EAAWojM,UACXA,EAASvnW,QACTA,GACEtc,KACJygL,EAAYpoF,aAGZr4F,KAAKwuB,SAASq1V,EAAWvnW,EAAS,CAACmkK,IAEnCA,EAAYnoF,WAMd34F,sBACE,IAAImkX,EACJ,MAAMrjM,YACJA,EAAWojM,UACXA,EAASvnW,QACTA,GACEtc,KACJygL,EAAYpoF,aACZ,IAAI0rR,EAEJ,GAAItjM,IAAgB,MAAQA,SAAqB,GAAKA,EAAYs/I,YAAa,CAC7Et/I,EAAY6kJ,WAAWC,kBAAkB9kJ,EAAYtzI,UAAW,MAAM,CAAC6uR,EAAYxkS,EAAStnB,KAE1F,GAAIA,IAAU,EAAG,CACf6zW,EAAkB/nD,EAClB,OAAO,WAKZ8nD,EAAmBC,KAAqB,MAAQD,SAA0B,OAAS,EAAIA,EAAiBtzC,qBAEzG/vJ,EAAY6kJ,WAAa,KAGzBtlU,KAAKwuB,SAASq1V,EAAWvnW,EAAS,CAACmkK,IAGnCA,EAAYmoJ,eAAiB,KAE7BnoJ,EAAYnoF,WAEd34F,qBACEK,KAAK0jX,qBACLxpW,MAAMsf,sBAIV6pV,GAA4BzsS,YAC5BysS,GAA4Bn7W,OAAS,8BAWrC,MAAM87W,WAAiCh8P,GACrCj6G,mBACE,MAAO,2BAGTlB,kBACE,MAAO,2BAETgV,2BACE,MAAO,CACLgsK,SAAU,MACVoK,aAAc,OACd0E,WAAY,QACZsB,sBAAuB,MAG3Bt+L,aACE,MAAO,CAAC,CACNJ,MAAO,QACP0L,KAAM,YACL,CACD1L,MAAO,SACP0L,KAAM,aACL,CACD1L,MAAO,UACP0L,KAAM,cACL,CACD1L,MAAO,SACP0L,KAAM,eAKZ+4W,GAAyBptS,YACzBotS,GAAyB97W,OAAS,2BAYlC,MAAM+7W,WAAwBD,GAC5Bj2W,mBACE,MAAO,kBAGTlB,kBACE,MAAO,kBAETgV,2BACE,MAAO,CACLqiW,YAAa,SACbh+O,YAAa,OAEbi+O,SAAU,0BACVlhW,MAAO,KACP8wG,wBAAyB,OAG7Bp0H,aACE,MAAMI,EAAKC,KACX,MAAO,CAAC,CACNT,MAAO,OACP0L,KAAM,cACFiP,MAAMgkL,aAAc,CACxB3+L,MAAOQ,EAAGmkX,YACVj5W,KAAM,YACN6K,IAAK/V,EAAGokX,WAGZ5kX,UAAUA,GAERA,EAAQA,GAAS,OACjB2a,MAAM3a,MAAQA,EAEhBA,YACE,OAAO2a,MAAM3a,MAEf+lU,eAAeA,GACb,MAAMvlU,EAAKC,KACX,GAAIslU,EAAY,CACdvlU,EAAGR,MAAQQ,EAAGqkX,mBAAmB9+C,GAAcvlU,EAAGmkX,YAAc5+C,EAAWsE,cACtE,CACL7pU,EAAGR,MAAQ,MAGfI,mBAAmB2lU,GACjB,MAAM/pL,SACJA,EAAQv3G,KACRA,EAAIqoS,UACJA,EAAShoS,OACTA,GACEihS,EACJ,OAAOplU,QAAQq7I,EAAW,GAAKv3G,GAAQA,EAAKllC,QAAUutU,GAAaA,EAAUvtU,QAAUulC,GAAUA,EAAOvlC,SAI5GmlX,GAAgBrtS,YAChBqtS,GAAgB/7W,OAAS,kBAUzB,MAAMm8W,WAA+Bh9N,GACnCt5I,mBACE,MAAO,yBAGTlB,kBACE,MAAO,yBAETgV,2BACE,MAAO,CACLoX,sBAAuB,GACvBqsS,WAAY,MAOhBA,eAAeA,GACbtlU,KAAKkvU,YAAc5J,EACnBtlU,KAAKskX,eAEPh/C,iBACE,OAAOtlU,KAAKkvU,YAEd1O,mBAAmBA,GACjBxgU,KAAKukX,gBAAkB/jD,EACvBxgU,KAAKskX,eAEP9jD,qBACE,OAAOxgU,KAAKukX,gBAEd5kX,eACE,MAAM2lU,WACJA,GACEtlU,KACJA,KAAKiL,KAAOq6T,EAAaif,GAAiBigC,UAAUl/C,EAAYtlU,KAAKwgU,gBAAkB,GAEzF7gU,iBAEEK,KAAKskX,eAEP3kX,qBACEK,KAAKykX,iBACLvqW,MAAMsf,sBAIV6qV,GAAuBztS,YACvBytS,GAAuBn8W,OAAS,yBAWhC,MAAMw8W,WAA4B18P,GAChCj6G,mBACE,MAAO,sBAGTlB,kBACE,MAAO,sBAETgV,2BACE,MAAM2iU,EAAsB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC/DC,EAAeD,EAAoBv6U,KAAK,KAC1C,MAAO,CACLw6U,aAAAA,EACA52J,SAAU,MACVjpL,aAAc6/U,EACdC,iBAAkBF,EAAoBpmV,QAAO,CAACo/B,EAAKttB,KAAW2vB,GAAWwM,eAAen8B,KAAQjG,KAAK,KACrG06U,oBAAqBH,EAAoBpmV,QAAO,CAACo/B,EAAKttB,IAAU2vB,GAAWwM,eAAen8B,KAAQjG,KAAK,KACvGk6W,SAAU,yBACVlsL,aAAc,OACd0E,WAAY,SAGhBh9L,aACE,MAAMI,EAAKC,KACXD,EAAG2rU,UAAY,KACf,OAAO3rU,EAAGgsU,SAASplT,OAAO,CAAC,CACzBpnB,MAAOQ,EAAG0kV,aACVx5U,KAAMlL,EAAGo7B,EAAE,UACXrlB,IAAK/V,EAAGokX,UACP,CACD5kX,MAAOQ,EAAG2kV,iBACVz5U,KAAMlL,EAAGo7B,EAAE,eACV,CACD57B,MAAOQ,EAAG4kV,oBACV15U,KAAMlL,EAAGo7B,EAAE,qBAGf4wS,eACE,MAAMhsU,EAAKC,KACX,IAAKD,EAAG2rU,UAAW,CACjB,MAAM9gS,EAAe/K,GAAW+K,aAChC,MAAM2E,EAAW1P,GAAW8kV,cAAc96W,KAAI,CAACoB,EAAMiF,KAAK,CACxDjF,KAAAA,EACA1L,MAAO6pU,GAAyBK,UAAUv5T,OAG5CnQ,EAAG2rU,UAAYn8R,EAASt9B,MAAM24B,GAAcjkB,OAAO4oB,EAASt9B,MAAM,EAAG24B,IAEvE,OAAO7qC,EAAG2rU,UAEZnsU,UAAUA,GACR,MAAMQ,EAAKC,KACX,GAAIT,GAASgI,MAAMC,QAAQjI,GAAQ,CACjCA,EAAQA,EAAM0K,KAAK,KAGrB,IAAK1K,IAAUQ,EAAG6rE,MAAMs1J,WAAW,QAAS3hO,GAAQ,CAClDA,EAAQQ,EAAG6E,aAEbsV,MAAM3a,MAAQA,EAEhBA,YACE,IAAIA,EAAQ2a,MAAM3a,MAClB,GAAIA,GAASgI,MAAMC,QAAQjI,GAAQ,CACjCA,EAAQA,EAAM0K,KAAK,KAErB,OAAO1K,GAIXmlX,GAAoB9tS,YACpB8tS,GAAoBx8W,OAAS,sBAU7B,MAAM08W,WAAkChhL,GACtC71L,mBACE,MAAO,4BAGTlB,kBACE,MAAO,4BAETgV,2BACE,MAAO,CACLogC,SAAU,CACRnsC,IAAK,WACL2xI,WAAY,OAIlB9nJ,UAAUwY,EAAS,IACjB,MAAMpY,EAAKC,KACXmY,EAAO4rL,QAAU,EACjB5rL,EAAO8K,MAAQljB,EAAGm+L,aAClBhkL,MAAMsB,UAAUrD,GAElBxY,eAAegS,GACb,MAAM6rB,EAAM4rS,GAAyBI,UAAU73T,EAAKpS,OAAO,GAC3DoS,EAAK1G,KAAO40B,GAAWilT,WAAWtnT,GAAKh4B,UAAU,EAAG,GAEtD7F,aACE,MAAMI,EAAKC,KACX,IAAKD,EAAG8kX,QAAS,CACf,MAAMj6U,EAAe/K,GAAW+K,aAChC,MAAM2E,EAAW1P,GAAW8kV,cAAc96W,KAAI,CAACoB,EAAMiF,KAAK,CACxDjF,KAAMA,EAAKzF,UAAU,EAAG,GACxBjG,MAAO6pU,GAAyBK,UAAUv5T,OAG5CnQ,EAAG8kX,QAAUt1U,EAASt9B,MAAM24B,GAAcjkB,OAAO4oB,EAASt9B,MAAM,EAAG24B,IAErE,OAAO7qC,EAAG8kX,QAEZtlX,UAAUA,GACR,GAAIA,GAASgI,MAAMC,QAAQjI,GAAQ,CACjCA,EAAQA,EAAM0K,KAAK,KAErBiQ,MAAM3a,MAAQA,EAEhBA,YACE,IAAIA,EAAQ2a,MAAM3a,MAClB,GAAIA,GAASgI,MAAMC,QAAQjI,GAAQ,CACjCA,EAAQA,EAAM0K,KAAK,KAErB,OAAO1K,EAITI,iBAEEK,KAAKijB,MAAMjkB,QAAQgB,KAAK8kX,eAAgB9kX,MAE1CL,qBACEK,KAAKykX,iBACLvqW,MAAMsf,qBAERqiG,sBACE,MAAMj9E,EAAY1kC,MAAM2hH,gBAExBj9E,EAAUpgD,KAAK,WACf,OAAOogD,GAIXgmU,GAA0BhuS,YAC1BguS,GAA0B18W,OAAS,4BAOnC,MAAM68W,WAAuCnhL,GAC3C71L,mBACE,MAAO,iCAGTlB,kBACE,MAAO,iCAETgV,2BACE,MAAO,CACLogC,SAAU,CACRwlG,WAAY,KACZ3xI,IAAK,aAIX+vL,eACE,OAAO,EAETm/K,eACE,OAAO,GAETrlX,UAAUwY,EAAS,IACjB,MAAMpY,EAAKC,KACXmY,EAAO4rL,QAAU,EACjB5rL,EAAO8K,MAAQljB,EAAGm+L,aAClBhkL,MAAMsB,UAAUrD,GAElBxY,aACE,MAAMI,EAAKC,KACTijB,EAAQ,GACV,IAAK,IAAI1jB,EAAQQ,EAAG8lM,SAAUtmM,GAASQ,EAAGilX,SAAUzlX,IAAS,CAE3D0jB,EAAMzkB,KAAK,CACTyM,KAAM1L,EAAQ,GACdA,MAAAA,IAGJ,OAAO0jB,EAET44G,sBACE,MAAMj9E,EAAY1kC,MAAM2hH,gBAExBj9E,EAAUpgD,KAAK,WACf,OAAOogD,GAIXmmU,GAA+BnuS,YAC/BmuS,GAA+B78W,OAAS,iCAOxC,MAAM+8W,WAAoCrhL,GACxC71L,mBACE,MAAO,8BAGTlB,kBACE,MAAO,8BAETgV,2BACE,MAAO,CACLogC,SAAU,CACRwlG,WAAY,KACZ3xI,IAAK,aAIXnW,UAAUwY,EAAS,IACjB,MAAMpY,EAAKC,KACXmY,EAAO4rL,QAAU,EACjB5rL,EAAO8K,MAAQljB,EAAGm+L,aAClBhkL,MAAMsB,UAAUrD,GAElBxY,aACE,OAAOkgC,GAAWoqK,gBAAgBpgM,KAAI,CAAC8H,EAAMzB,KAAK,CAChDjF,KAAM0G,EAAKnM,UAAU,EAAG,GACxBjG,MAAO2Q,EAAQ,MAInBvQ,eAAegS,GACbA,EAAK1G,KAAO40B,GAAWolT,aAAatzU,EAAKpS,MAAQ,GAAGiG,UAAU,EAAG,GAEnE7F,iBAEEK,KAAKijB,MAAMjkB,QAAQgB,KAAK8kX,eAAgB9kX,MAE1CL,qBACEK,KAAKykX,iBACLvqW,MAAMsf,qBAERqiG,sBACE,MAAMj9E,EAAY1kC,MAAM2hH,gBAExBj9E,EAAUpgD,KAAK,WACf,OAAOogD,GAIXqmU,GAA4BruS,YAC5BquS,GAA4B/8W,OAAS,8BAWrC,MAAMg9W,WAAqCl9P,GACzCj6G,mBACE,MAAO,+BAGTlB,kBACE,MAAO,+BAETgV,2BACE,MAAO,CACLgsK,SAAU,MACV3nD,YAAa,QACb+xD,aAAc,OACd0E,WAAY,SAGhBh9L,aACE,MAAO,CAAC,CACNJ,MAAO,QACP0L,KAAMjL,KAAKm7B,EAAE,aACZ,CACD57B,MAAO,QACP0L,KAAMjL,KAAKm7B,EAAE,aACZ,CACD57B,MAAO,OACP0L,KAAMjL,KAAKm7B,EAAE,gBAGjB57B,UAAUA,GAERA,EAAQA,GAAS,QACjB2a,MAAM3a,MAAQA,EAEhBA,YACE,OAAO2a,MAAM3a,MAEf+lU,iBACE,OAAOtlU,KAAKkvU,YAEd5J,eAAeA,GACb,IAAI/lU,EAAQ,KACZ,GAAI+lU,EAAWl4R,QAAS,CACtB7tC,EAAQ,YACH,GAAI+lU,EAAWthT,MAAO,CAC3BzkB,EAAQ,QAEVS,KAAKkvU,YAAc5J,EACnBtlU,KAAKT,MAAQA,GAIjB2lX,GAA6BtuS,YAC7BsuS,GAA6Bh9W,OAAS,+BAWtC,MAAMi9W,WAAiCn9P,GACrCj6G,mBACE,MAAO,2BAGTlB,kBACE,MAAO,2BAETgV,2BACE,MAAO,CACLgsK,SAAU,MACVs2L,SAAU,kCACVlsL,aAAc,OACd0E,WAAY,QACZ/3L,aAAc,EACdwgX,YAAa,GAGjBzlX,aACE,MAAMI,EAAKC,KACX,OAAOD,EAAGslX,kBAAkB1+V,OAAO,CAInC,CACEpnB,MAAO,KACP0L,KAAMlL,EAAGo7B,EAAE,iBACXrlB,IAAK/V,EAAGokX,YAGZxkX,kBACE,MAAMI,EAAKC,KAQX,OAAO8iB,GAAYy2L,SAASx5M,EAAGqlX,aAAaxmX,IAAC,CAC3CW,MAAOX,EAAI,EACXqM,KAAMlL,EAAGo7B,EAAE,WAAWv8B,EAAI,SAG9BW,UAAUA,GACR,MAAMQ,EAAKC,KACX,GAAIT,GAASgI,MAAMC,QAAQjI,GAAQ,CACjCA,EAAQA,EAAM0K,KAAK,KAGrB,IAAK1K,IAAUQ,EAAG6rE,MAAMs1J,WAAW,QAAS3hO,GAAQ,CAClDA,EAAQQ,EAAG6E,aAEbsV,MAAM3a,MAAQA,EAEhBA,YACE,MAAMA,EAAQ2a,MAAM3a,MACpB,OAAOA,EAAQ,GAAGA,IAAQ8F,MAAM,KAAKwE,KAAI8H,GAAQvI,SAASuI,EAAM,MAAO,IAI3EwzW,GAAyBvuS,YACzBuuS,GAAyBj9W,OAAS,2BAuBlC,MAAMo9W,WAAyBr6P,GAC7Bl9G,mBACE,MAAO,mBAGTlB,kBACE,MAAO,mBAETrN,0BACE,MAAO,CACL+2H,UAAW,KACX29B,SAAU,KACVh3F,SAAU,KACVpnD,IAAK,qBACLq8F,MAAO,kBACPud,UAAW,KACXxoH,MAAO,IACP+6C,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACLsiW,eAAgB,CACd14W,KAAM,2BACNpI,KAAM,YACNqkJ,MAAO,eACPr1B,OAAQ,GACR5qC,SAAU,6BAEZ28R,cAAe,CACb34W,KAAM,cACN4mH,OAAQ,GACRhvH,KAAM,WACNqkJ,MAAO,WACPngI,IAAK,EACL2kK,SAAU,MAEZm4L,gBAAiB,CACf54W,KAAM,4BACN4mH,OAAQ,GACRhvH,KAAM,OACNihX,aAAc,UAGhBC,oBAAqB,CACnB94W,KAAM,WACN4mH,OAAQ,GACRk0B,YAAa,QACb+9N,aAAc,UACd58N,MAAO,UACPkN,QAAS,KACTntE,SAAU,kCAEZ+8R,qBAAsB,CACpB/4W,KAAM,iCACN4mH,OAAQ,GACRhvH,KAAM,YACNihX,aAAc,WAEhBG,kBAAmB,CACjBh5W,KAAM,8BACN4mH,OAAQ,GACRhvH,KAAM,SACNihX,aAAc,UAGhBI,yBAA0B,CACxBj5W,KAAM,WACN4mH,OAAQ,GACRk0B,YAAa,QACb+9N,aAAc,iBACd58N,MAAO,YACPjgE,SAAU,uCAEZk9R,eAAgB,CACdl5W,KAAM,2BACN4mH,OAAQ,GACRhvH,KAAM,YACNihX,aAAc,kBAEhBM,UAAW,CACTn5W,KAAM,sBACN4mH,OAAQ,GACRhvH,KAAM,OACNihX,aAAc,iBACdtuP,KAAM,GAER6uP,oBAAqB,CACnBp5W,KAAM,+BACN4mH,OAAQ,IACRq1B,MAAO,gBACPjgE,SAAU,kCAEZq9R,WAAY,CACVr5W,KAAM,cACN4mH,OAAQ,IACRhvH,KAAM,QACNkkB,IAAK,EACL2kK,SAAU,KACV1tH,SAAU,KACVkpF,MAAO,KAETytL,aAAc,CACZ1pU,KAAM,YACN4mH,OAAQ,IACRhvH,KAAM,UACN+9F,OAAQ,KACR5iC,SAAU,KACVkpF,MAAO,IACPwkC,SAAU,OAGd/9B,KAAM,CACJttG,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACLu1V,IAAK,CACH3rW,KAAM,SACNiJ,IAAK,iBACL29G,OAAQ,KAEVglP,WAAY,CACVv8S,MAAO,UACPjxD,KAAM,UACNqxL,QAAS,iBACT7oE,OAAQ,KAEVkuF,aAAc,CACZzlJ,MAAO,SACPjxD,KAAM,mBACNqxL,QAAS,mBACT7oE,OAAQ,QAMlB9zH,eAAek5E,GACb3+D,MAAM6tI,eAAelvE,GAErB74E,KAAKuvJ,KAAK/sD,OAAS3pB,EAErBl5E,aAAa6yE,GACXt4D,MAAM8rN,aAAaxzJ,GACnB,MAAMzyE,EAAKC,KACTmwB,EAAQqiD,EAAO6yP,SACfl4R,EAAYhd,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMgd,WAChEs4U,gBACEA,EAAeG,qBACfA,EAAoBC,kBACpBA,EAAiBF,oBACjBA,EAAmBG,yBACnBA,EAAwBG,oBACxBA,GACElmX,EAAGurI,UAET,GAAIn+F,EAAW,CAEb,IAAKqlC,EAAOxuC,OAASwuC,EAAOxuC,KAAKllC,OAAQ,CACvC2mX,EAAgBlmX,MAAQ,CAAC6pU,GAAyBK,UAAUt8R,EAAU/N,WAGxE,IAAKozC,EAAO65P,YAAc75P,EAAO65P,UAAUvtU,OAAQ,CACjD8mX,EAAqBrmX,MAAQ4tC,EAAUhgC,UAGzC,IAAKqlE,EAAOnuC,SAAWmuC,EAAOnuC,OAAOvlC,OAAQ,CAC3C+mX,EAAkBtmX,MAAQ4tC,EAAUjgC,WAAa,GAIrD,GAAIslE,EAAOxuC,MAAQwuC,EAAOm4P,UAAW,CACnCm7C,EAAyBK,QAEzB,IAAKpmX,EAAG8oI,UAAW,CACjB88O,EAAoBS,eAEjB,CACLT,EAAoBQ,QAEpB,IAAKpmX,EAAG8oI,UAAW,CACjBi9O,EAAyBM,WAG7BH,EAAoB3gD,WAAa9yP,EAEnC7yE,cACE,MAAMI,EAAKC,KACX,GAAID,EAAGsmX,YAAa,CAClBtmX,EAAGsmX,YAAYx/W,KAAK9G,EAAGuc,SAAWvc,EAAIA,EAAIA,EAAGyyE,YACxC,CACLzyE,EAAGumX,kBACHvmX,EAAGmrH,SAGPvrH,gBACE,MAAMI,EAAKC,KACX,GAAID,EAAGwmX,cAAe,CACpBxmX,EAAGwmX,cAAc1/W,KAAK9G,EAAGuc,SAAWvc,EAAIA,EAAIA,EAAGyyE,YAC1C,CACLzyE,EAAGmrH,SAOPvrH,gBAAgB2lU,GAEd,MAAMz5T,EAAS7L,KAAKwmX,WAAUviV,GAAKA,EAAEx/B,QAAQ6gU,IAAerhS,EAAE27B,WAC9D0lQ,EAAWh0T,IAAIzF,GAEjBlM,mBACE,MAAMI,EAAKC,MACTkmX,WACEA,EAAU3vC,aACVA,GACEx2U,EAAGurI,UACT,OAAQvrI,EAAGurI,UAAU26O,oBAAoB1mX,OACvC,IAAK,QACH2mX,EAAW91P,OACX81P,EAAW7wR,SACXkhP,EAAa5kN,OACb4kN,EAAa50Q,UACb,MACF,IAAK,OACHukT,EAAWv0P,OACXu0P,EAAWvkT,UACX40Q,EAAanmN,OACbmmN,EAAalhP,SACb,MACF,QACE6wR,EAAWv0P,OACX4kN,EAAa5kN,OACbu0P,EAAWvkT,UACX40Q,EAAa50Q,WAGnBhiE,6BAA4Bq2J,QAC1BA,IAEA,MAAM4vN,qBACJA,GACE5lX,KAAKsrI,UACTs6O,EAAqBhmT,UAAYo2F,IAAYh2J,KAAKymX,8BAA8Bb,GAElFjmX,kCAAiCq2J,QAC/BA,IAEA,MAAMgwN,UACJA,EAASD,eACTA,GACE/lX,KAAKsrI,UAET06O,EAAUpmT,SAAWmmT,EAAenmT,UAAYo2F,IAAYh2J,KAAKymX,8BAA8BT,GAEjGrmX,8BACEK,KAAK0mX,mBAEP/mX,8BAA8B+hH,EAAQkoN,EAAY5pU,KAAKsrI,UAAUi6O,eAAehmX,OAC9E,OAAQmiH,EAAOgkQ,cAAgBhkQ,EAAOgkQ,aAAajgX,QAAQmkU,IAAc,EAE3EjqU,wBAAuBJ,MACrBA,EAAKk3I,MACLA,IAEA,MAAM12I,EAAKC,KACTijB,EAAQljB,EAAGyvI,UAASvrG,GAAK,iBAAkBA,IAC7C,GAAIwyG,GAASl3I,EAAO,CAClB,IAAK,IAAIX,EAAI,EAAGA,EAAIqkB,EAAMnkB,OAAQF,IAAK,CACrC,MAAM+S,EAAOsR,EAAMrkB,GACnB,GAAImB,EAAG0mX,8BAA8B90W,EAAMpS,GAAQ,CACjDoS,EAAKy+G,OACLz+G,EAAK0jF,aACA,CACL1jF,EAAKggH,OACLhgH,EAAKgwD,WAST5hE,EAAGurI,UAAUk6O,cAAc/3L,KAAO1tL,EAAGo7B,EAAE,GAAG57B,iBAC1CQ,EAAG4mX,qBAGPhnX,oBACE,MAAMI,EAAKC,MACTsrI,UACEA,GACEvrI,EACNA,EAAG6mX,4BAA4B,CAC7B5wN,QAAS1qB,EAAUq6O,oBAAoB3vN,UAEzCj2J,EAAG8mX,iCAAiC,CAClC7wN,QAAS1qB,EAAUw6O,yBAAyB9vN,UAE9Cj2J,EAAG+mX,8BAELnnX,qBAEE,MAAMumX,WACJA,EAAUV,cACVA,EAAaD,eACbA,GACEvlX,KAAKsrI,UACT46O,EAAWz4L,KAAOztL,KAAKm7B,EAAE,cACzB,GAAIoqV,EAAehmX,MAAO,CACxBimX,EAAc/3L,KAAOztL,KAAKm7B,EAAE,GAAGoqV,EAAehmX,qBAEhD2a,MAAMsf,sBAIV8rV,GAAiB1uS,YACjB0uS,GAAiBp9W,OAAS,mBAS1B,IAAI6+W,GAAsB75V,GAAU,MAAM65V,UAA4B75V,GAAU7R,IAC9EtN,mBACE,MAAO,qBAETvO,0BACE,MAAO,CACLwnX,qBAAsB,CAMpBnpB,gBAAiB,CACfhxV,KAAM,kBACNi8I,MAAO,sBACP76F,IAAK,kBACLwlE,OAAQ,KAOVwzP,qBAAsB,CACpBp6W,KAAM,yBACNohD,IAAK,uBACLxpD,KAAM,iBACNy3D,MAAO,SACPorF,SAAU,KACVlwB,KAAM,EACN3D,OAAQ,IACRsC,qBAAsB,OAU1BmxP,gBAAiB,MAGrBvnX,mBAAmBo4R,GACjBA,EAAa90Q,MAAQvkB,EAAeA,EAAe,GAAIq5R,EAAa90Q,OAAQjjB,KAAKgnX,sBAEjFjvF,EAAe79Q,MAAMitW,mBAAmBpvF,GACxC,OAAOA,EAETp4R,UAAU4rT,EAAWpzS,GACnB+B,MAAMsB,UAAU+vS,EAAWpzS,GAC3BnY,KAAKurT,UAAUp8R,GAAG,CAChBi4V,gBAAiB,8BACjB9qW,QAAStc,OAGbL,YACE,IAAI0nX,EAAuBC,GAC1BD,EAAwBrnX,KAAKunX,2BAA6B,MAAQF,SAA+B,OAAS,EAAIA,EAAsBtrW,WACpIurW,EAAwBtnX,KAAKwnX,qBAAuB,MAAQF,SAA+B,OAAS,EAAIA,EAAsBvrW,UAC/H7B,MAAM8B,YAERrc,oBAAoB+6N,GAClB,IAAI+sJ,EACJ,MAAM1nX,EAAKC,KACX06N,EAAOvrM,GAAG,CACRwiG,KAAM5xH,EAAG2nX,2BACTprW,QAASvc,IAEX,GAAIA,EAAGknX,qBAAsB,CAC3BlnX,EAAGknX,qBAAqBr/N,KAAO7nJ,EAAG69V,kBAEnC6pB,EAAsB1nX,EAAG89V,mBAAqB,MAAQ4pB,SAA6B,OAAS,EAAIA,EAAoBt4V,GAAG,CACtHi2D,OAAQrlF,EAAG4nX,wBACXrrW,QAASvc,IAGbJ,eAAek5E,GACb,GAAI74E,KAAKwnX,kBAAmB,CAC1BxnX,KAAKwnX,kBAAkB3uS,SAAWA,GAGtCl5E,qBACEK,KAAK4nX,gCAAgC5nX,KAAK6/D,OAAOwoP,uBAAyBroT,KAAKknX,kBAAoB,OAErGvnX,gCAAgCywH,EAAO,MACrC,IAAIy3P,EAAuBC,EAAwBC,EAAuBC,EAC1E,MAAMC,EAAa73P,EAAO,OAAS,QAClCy3P,EAAwB7nX,KAAKinX,wBAA0B,MAAQY,SAA+B,OAAS,GAAKC,EAAyBD,EAAsBI,MAAiB,MAAQH,SAAgC,OAAS,EAAIA,EAAuBjhX,KAAKghX,IAC7PE,EAAwB/nX,KAAK69V,mBAAqB,MAAQkqB,SAA+B,OAAS,GAAKC,EAAyBD,EAAsBE,MAAiB,MAAQD,SAAgC,OAAS,EAAIA,EAAuBnhX,KAAKkhX,GAE3PpoX,6BACE,IAAIuoX,EAAuBC,EAC3B,IAAKD,EAAwBloX,KAAK49V,oBAAsB,MAAQsqB,SAA+B,GAAKA,EAAsBt9T,UAAW,CACnI5qD,KAAK49V,iBAAiBjsO,OAExB,IAAKw2P,EAAwBnoX,KAAKooX,0BAA4B,MAAQD,SAA+B,GAAKA,EAAsBv9T,UAAW,CACzI5qD,KAAKooX,uBAAuBz2P,QAQhChyH,eAAeiuU,GACb,MAAMz9S,EAAQnwB,KAAKygL,YACjB4nM,EAAYl4V,EAAM81D,OACpB,IAAIq/O,EAAan1S,EAAMm1S,WACvB,IAAKsI,GAAQtI,EAAY,CACvBA,EAAaA,EAAWr/O,WACnB,CACLq/O,EAAa,IAAIn1S,EAAM4+S,gBAAgBnB,EAAO,CAC5CA,KAAAA,GACE,IAGNtI,EAAWD,SAAWgjD,EAEtBA,EAAUhrE,aAAar9S,KAAK6L,OAAOshC,WACnCm4R,EAAWyI,2BACX,OAAOzI,EAET3lU,6BAA4B8gL,YAC1BA,EAAWhzG,QACXA,IAEA,MAAM1tE,EAAKC,KAEX,GAAID,EAAGs7N,WAAa56C,EAAYklJ,oBAAsBllJ,EAAYs/I,aAAet/I,EAAYw7I,cAAe,CAC1Gl8T,EAAGqoX,uBAAuBz7I,QAAQ,CAChCg3I,WAAY,SACZljM,YAAAA,EACA9gL,YACE8tE,EAAQ2rE,SAAS,OAEnBz5I,WACE8tE,EAAQ2rE,SAAS,UAIrB3rE,EAAQvlD,MAAQ,MAGpBkgW,2BAA2BA,GACzBpoX,KAAKunX,wBAA0Ba,EAEjCA,6BACE,MAAMroX,EAAKC,KACX,IAAIooX,EAAyBroX,EAAGwnX,wBAChC,IAAKa,IAA2BA,EAAuBhsW,OAAQ,CAC7DgsW,EAAyB97T,GAAOj1C,OAAO3Y,EAAe,CACpDmO,KAAM,yBACN8L,MAAO5Y,EAAG26N,QACT0tJ,IACHroX,EAAGwnX,wBAA0Ba,EAE/B,OAAOA,EAETxqB,qBAAqBA,GACnB59V,KAAKwnX,kBAAoB5pB,EAE3BA,uBACE,MAAM79V,EAAKC,KACX,IAAI49V,EAAmB79V,EAAGynX,kBAE1B,IAAK5pB,IAAqBA,EAAiBxhV,OAAQ,CACjDrc,EAAGynX,kBAAoB5pB,EAAmBtxS,GAAOj1C,OAAO3Y,EAAe,CACrEmO,KAAM,mBACNi7I,SAAU,MACVtxB,SAAU,KACV29B,MAAO,KACP95G,YAAaj4C,WACb2O,OAAQ,MACRq2C,YAAarnD,EAAGqnD,YAChBi/T,YAAatmX,EAAGuoX,4BAChBh2L,aAAcvyL,EAAGwoX,6BAA6BvzW,KAAKjV,GACnDuc,QAASvc,GACR69V,IAIHA,EAAiB/kR,SAAW94E,EAAGw8H,UAEjC,OAAOqhO,EAETj+V,+BACE,MAAMI,EAAKC,MACT49V,iBACEA,EAAgBn9K,YAChBA,GACE1gL,EACN,GAAI69V,GAAoBn9K,IAAgB,MAAQA,SAAqB,GAAKA,EAAYklJ,kBAAmB,CAEvG,IAAK5lU,EAAGulU,WAAY,CAClBvlU,EAAGulU,WAAavlU,EAAGyoX,iBAGrBzoX,EAAGulU,WAAWD,SAAShoB,aAAat9S,EAAG8L,OAAOshC,WAE9CywT,EAAiBprR,OAASzyE,EAAGulU,WAE7Bs4B,EAAiBpnO,SAAW,MAGhC72H,mBAAmB2lU,GACjBtlU,KAAKslU,WAAaA,EAClBtlU,KAAKyoX,uBAAuBnjD,GAE9B3lU,uBAAuB2lU,GACrB,MAAMvlU,EAAKC,MACTinX,qBACEA,GACElnX,EACN,GAAIA,EAAG89V,gBAAiB,CACtB99V,EAAG89V,gBAAgBv4B,WAAaA,EAGlC,GAAI2hD,EAAsB,CACxBA,EAAqB3hD,WAAaA,EAClC2hD,EAAqB1nX,MAAQ+lU,EAAaA,EAAWsI,KAAO,KAC5D,GAAItI,GAAcvlU,EAAG8/D,OAAOwoP,uBAAyBtoT,EAAGmnX,kBAAoB,MAAO,CACjFD,EAAqB72P,WAChB,CACL62P,EAAqBt1P,SAI3BhyH,yBAAwBZ,OACtBA,EAAMQ,MACNA,EAAKg2I,WACLA,IAEA,GAAIA,EAAY,CACd,MAAMx1I,EAAKC,MACT49V,iBACEA,GACE79V,EACN,GAAIR,IAAUR,EAAOmlX,YAAa,CAMhCnkX,EAAG89V,gBAAgBv4B,WAAavlU,EAAGyoX,iBACnC,GAAI5qB,EAAiBpnO,SAAU,CAC7BonO,EAAiBxtO,WACZ,CACLwtO,EAAiBxtO,MAAMrwH,EAAGknX,sBAAwBloX,GAAQ03C,cAIzD,CACH12C,EAAG2oX,mBAAmBnpX,GAASA,IAAU,OAASQ,EAAGyoX,eAAe,QAAQjpX,KAAW,QAI7FI,4BAA4B+6N,EAAQ4qG,GAElC5qG,EAAO4rJ,gBAAgBhhD,GAEvBtlU,KAAKyoX,uBAAuBnjD,GAC5B5qG,EAAOxvG,QAETvrH,iBAAiB4b,GACfrB,MAAMyuW,iBAAiBptW,GACvB,IAAKvb,KAAK4oX,eAAiB5oX,KAAKinX,qBAAsB,CACpD,MAAM95U,UACJA,GACEntC,KAAK6L,OACT,GAAIshC,EAAW,CACbntC,KAAKinX,qBAAqBzmD,eAAiBrzR,IAIjDxtC,mBAAmB8gL,GACjB,GAAIA,IAAgB,MAAQA,SAAqB,GAAKA,EAAYklJ,kBAAmB,CACnF3lU,KAAK0oX,mBAAmBjoM,EAAY6kJ,WAAatlU,KAAKwoX,iBAAmB,OAG7E7oX,aAAa6yE,GAGX,GAAIA,EAAOo2P,iBAAmB5oU,KAAKslU,WAAY,CAC7C9yP,EAAOo2P,eAAiB,KAE1B,OAAO1uT,MAAM8rN,aAAaxzJ,KAgB9B,MAAMq2S,WAAsB7gQ,GAC1Bj6G,mBACE,MAAO,gBAGTlB,kBACE,MAAO,gBAETrN,0BACE,MAAO,CAMLspX,eAAgB,MAChB9yL,OAAQ,CACNlgL,IAAK,yBACLnW,YAAY6yE,EAAQ5zE,GAClB,MAAM6pT,WACFA,GACEj2O,EACJu2S,GAAgB9wU,GAAUu8K,aAAai0F,GACvCpnT,EAAQonT,EAAasgE,EAAe,iBAAiBtgE,KAAgB,GAAK,wBAC1EugE,GAAcvgE,GAAcsgE,EAAe,GAAK,qBAAqBtgE,IACvE,MAAO,mCAAmCugE,KAAc3nX,cAKhE1B,qBAAqBmpX,GACnB,OAAO5oX,QAAQ4oX,GAEjBnpX,qBAAqBmpX,GACnB,MAAMryL,QACFA,GACEz2L,KACJioX,EAAaa,EAAiB,MAAQ,SACxC9oX,KAAKy2C,QAAQmI,UAAUqpU,GAAY,sBACnCxxL,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQhgJ,QAAQmI,UAAUqpU,GAAY,sBAE1FtoX,aAAaq2L,EAAQQ,GACnB,IAAI6K,EACJrL,EAAS97K,MAAM+uW,aAAajzL,EAAQQ,IACnC6K,EAAWrL,KAAY,MAAQqL,SAAkB,OAAS,EAAIA,EAAS5qJ,QAAQmI,UAAU5+C,KAAK8oX,eAAiB,MAAQ,UAAU,sBAClI,OAAO9yL,EAGT/F,oBACE,MAAO,CAAC,CACN/vK,MAAO,sDACP6oC,UAAW,gBACV/oD,KAAKkxL,cAEVvxL,sBACE,IAAIupX,EAAuBC,EAC3B,MAAMppX,EAAKC,MACTopX,aACEA,EAAYC,oBACZA,GACEtpX,GACJ6+C,UACEA,GACEwqU,EACJ3gE,GAAcygE,GAAyBC,EAAeppX,EAAG24L,YAAc,MAAQywL,SAAsB,OAAS,EAAIA,EAAa1gE,cAAgB,MAAQygE,SAA+B,EAAIA,EAAwB,GACpNhvW,MAAMg5K,sBAENk2L,EAAa/nX,MAAM66D,MAAQ,GAC3BmtT,GAAuBzqU,EAAU98C,OAAOunX,GACxCtpX,EAAGspX,oBAAsB,KACzB,GAAI5gE,EAAY,CACd,GAAIxwQ,GAAUu8K,aAAai0F,GAAa,CACtC1oT,EAAGspX,oBAAsB,oBAAoB5gE,IAC7C7pQ,EAAU7/B,IAAIhf,EAAGspX,yBACZ,CACLD,EAAa/nX,MAAM66D,MAAQusP,EAE7B7pQ,EAAU98C,OAAO,sBACZ,CACL88C,EAAU7/B,IAAI,oBAKpB8pW,GAAcjyS,YACdiyS,GAAc3gX,OAAS,gBAoIvB,MAAMohX,WAAkB3sB,GAASn8U,MAAMumW,GAAoB/iT,KAEzDj2D,mBACE,MAAO,YAETvO,0BACE,MAAO,CAQLy7I,aAAc,gBAqCdq9N,UAAW,YAMX73L,YAAa,KAMb5nG,SAAU,KAmEVk/M,aAAc,CACZlrR,KAAM,cACNslG,MAAO,0BACP+hD,SAAU,KACVn7H,YAAa/4B,KACbiiD,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CAMLyiE,UAAW,CACT74E,KAAM,OACNi8I,MAAO,UACPykC,UAAW,KACX9oL,KAAM,OACNgvH,OAAQ,IACR65D,SAAU,MAOZ81L,cAAe,CACbv2W,KAAM,gBACNi8I,MAAO,cACPrkJ,KAAM,WACNopL,SAAU,KACV8O,WAAY,KACZ1E,aAAc,OACdlkE,wBAAyB,MACzB8pE,aAAc,KACdpqE,OAAQ,KAOV6iN,eAAgB,CACdzpU,KAAM,OACNiJ,IAAK,WACLy3K,UAAW,MACXD,SAAU,KACVxkC,MAAO,WACPrkJ,KAAM,YACN2yH,KAAM,UACNi3E,iBAAkB,KAClB56E,OAAQ,KAOVipO,eAAgB,CACd7vV,KAAM,OACN0gL,UAAW,MACXD,SAAU,KACV7oL,KAAM,YACNqR,IAAK,gBACLshH,KAAM,UACN3D,OAAQ,KAOV8iN,aAAc,CACZ1pU,KAAM,OACNiJ,IAAK,WACLy3K,UAAW,MACXD,SAAU,KACVxkC,MAAO,SACPrkJ,KAAM,UACN2yH,KAAM,UACNi3E,iBAAkB,KAClB56E,OAAQ,KAOVgpO,aAAc,CACZ5vV,KAAM,OACN0gL,UAAW,MACXD,SAAU,KACV7oL,KAAM,UACNqR,IAAK,gBACLshH,KAAM,UACN3D,OAAQ,MAGZ87B,KAAM,CAEJ7c,cAAe,KACfzwF,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CAMLw1V,WAAY,CACVv8S,MAAO,SACPpmD,IAAK,WACL7K,KAAM,UACNwoH,OAAQ,KAOVykP,aAAc,CACZjtW,KAAM,YACNwoH,OAAQ,KAOVkuF,aAAc,CACZ12M,KAAM,mBACNwoH,OAAQ,QAKhByqO,mBAAoB,MAGxB19R,0BACE,MAAO,CACLC,MAAO,CAAC,oBAAqB,kBAAmB,cAKpD9gE,UAAU4rT,EAAWpzS,GAEnBnY,KAAK64E,SAAW0yO,EAAU1yO,SAC1B3+D,MAAMsB,UAAU+vS,EAAWpzS,GAC3BozS,EAAUp8R,GAAG,CACXo6V,cAAe,kBACf1wS,SAAU,yBACVv8D,QAAStc,OAGburT,gBACE,OAAOvrT,KAAK6/D,OAQdgZ,eACE,OAAO74E,KAAKk9V,QAAUl9V,KAAK06N,OAAO7hJ,SAAW74E,KAAKu8H,UAEpD58H,eAAek5E,GACb3+D,MAAM6tI,eAAelvE,GACrB,GAAI74E,KAAKk9V,QAAS,CAChBl9V,KAAK06N,OAAO7hJ,SAAWA,GAG3Bl5E,wBAAuBk5E,SACrBA,IAEA74E,KAAK64E,SAAWA,EAMlB6hJ,aACE,IAAI8uJ,EAAuBC,EAAoBtQ,EAAgBC,EAAkBC,EACjF,MAAMt5W,EAAKC,KACX,IACEk9V,QAASxiI,GACP36N,EACJ,GAAI26N,EAAQ,CACV,OAAOA,EAETA,EAAS36N,EAAGm9V,QAAU5wS,GAAOj1C,OAAOtX,EAAG2pX,mBAIvChvJ,EAAO7hJ,SAAW94E,EAAGw8H,UACrB,GAAIm+F,EAAOz3M,MAAMnkB,SAAW,EAAG,CAC7B8V,QAAQC,KAAK,+CAGf6lN,EAAOvrM,GAAG,CACRw6V,WAAY,sBACZC,WAAY,qBACZjjU,QAAS,iBACTrqC,QAASvc,IAUXA,EAAGwrT,UAAUvnH,YAAY02B,EAAQ,CAAC,mBAAoB,aAGtDz8N,OAAO4N,OAAO6uN,EAAOpvF,WAAWtsI,SAAQ0iH,IACtC,MAAMzzD,EAAMyzD,EAAOzzD,KAAOyzD,EAAO/2G,GAEjC,GAAIsjD,IAAQluD,EAAGkuD,GAAM,CACnBluD,EAAGkuD,GAAOyzD,EACV,OAAQA,EAAOj9G,MACb,IAAK,YACL,IAAK,UACHi9G,EAAOvyF,GAAG,SAAUpvB,EAAG4oX,cAAe5oX,GACtC,YAKPypX,EAAwBzpX,EAAG8pX,uBAAyB,MAAQL,SAA+B,OAAS,EAAIA,EAAsB3iX,KAAK9G,EAAI26N,IACvI+uJ,EAAqB1pX,EAAG+pX,kBAAoB,MAAQL,SAA4B,OAAS,EAAIA,EAAmBt6V,GAAG,SAAUpvB,EAAGgqX,kBAAmBhqX,IACnJo5W,EAAiBp5W,EAAG04W,cAAgB,MAAQU,SAAwB,OAAS,EAAIA,EAAehqV,GAAG,QAASpvB,EAAGo+V,YAAap+V,IAC5Hq5W,EAAmBr5W,EAAGm4W,gBAAkB,MAAQkB,SAA0B,OAAS,EAAIA,EAAiBjqV,GAAG,QAASpvB,EAAGw5W,cAAex5W,IACtIs5W,EAAmBt5W,EAAG4hN,gBAAkB,MAAQ03J,SAA0B,OAAS,EAAIA,EAAiBlqV,GAAG,QAASpvB,EAAGiiN,cAAejiN,GACvI,OAAO26N,EAET/6N,kBACE,MAAMI,EAAKC,MACT8V,IACEA,EAAGy1S,UACHA,GACExrT,EACN,OAAOixC,GAAa55B,OAAO,CACzBuB,MAAO4yS,EACPw3D,iBAAkBhjX,EAClB6qC,aAAc7qC,EAAG6qC,aACjByL,MAAO,MACP1rC,GAAI,GAAG4gT,EAAU5gT,kBACjBm9I,SAAU,MACV/2I,OAAQ,KACR0lH,aAAc,UACdp8E,YAAaj4C,WACb0T,IAAAA,GACC/V,EAAGg4R,cAGRp4R,mBAAmB8gL,EAAauzC,EAAgB39K,EAAQ,MACtD,IAAI2zU,EAAQC,EAAeC,EAC3B,MAAMnqX,EAAKC,MACTurT,UACEA,GACExrT,EAEJg0V,IAAiBi2B,EAAS3zU,KAAW,MAAQ2zU,SAAgB,OAAS,GAAKC,EAAgBD,EAAOrrX,UAAY,MAAQsrX,SAAuB,OAAS,EAAIA,EAAcpzU,YAAcuH,QAAQC,aAAehI,EAAM13C,OAAS4sT,EAAUm8C,0BAA0BjnL,EAAauzC,GAC7QhtI,EAAgBy5F,EAAYz5F,cAAcukO,EAAUlW,YACtDh/P,GAAS6zU,EAAU7zU,KAAW,MAAQ6zU,SAAiB,EAAIA,EAAU,CAEnEvrX,OAAQo1V,EACRhjV,OAAQ,MAKV,GAAIslC,EAAM13C,SAAWqoF,GAAiBy5F,EAAYnjG,WAAY,CAgB5D,GAAIiuO,EAAUh+R,QAAQ,kBAAmB,CACvCsvU,UAAW98V,EACX0gL,YAAAA,EACAuzC,eAAAA,EACA+/H,aAAAA,MACK,MAAO,CACZxoC,EAAU90Q,QAAQmI,UAAU98C,OAAO,yBACnC,OAAO,MAET/B,EAAGi0N,eAAiBA,EACpB,MAAM0G,OACJA,GACE36N,EACJA,EAAG+9V,eAAiB,CAClBr9K,YAAAA,EACAuzC,eAAAA,EACA+/H,aAAAA,EACAr5H,OAAAA,EACA1zI,cAAAA,GAEF9sE,MAAMg/V,oBAAsBh/V,MAAMg/V,mBAAmBz4L,EAAauzC,EAAgB39K,GAClF,GAAIt2C,EAAGu4W,UAAW,CAChBv4W,EAAGoqX,gBAAgB1pM,EAAY/uK,IAAI3R,EAAGu4W,YAExCv4W,EAAGk5W,WAAWx4L,EAAauzC,GAE3B,GAAI0G,EAAOlkG,WAAakkG,EAAO3pN,OAAQ,CACrC2pN,EAAOtqG,YACF,GAAI2jO,EAAc,CACvBh0V,EAAGm+V,mBAAqBnK,EACxBr5H,EAAOnyF,OAAOlyF,OAGX,CACHqkL,EAAOtqG,OAEPsqG,EAAO5yF,eAAe,MAGxB,MAAMuzM,EAAiB9vB,EAAUX,kBAAkBywB,eACnD,GAAIA,EAAepzS,OAAS,QAAUozS,EAAepzS,OAAS,SAAU,CACtE,MAAM5C,EAAO,GAAGg2S,EAAezuS,YAAYyuS,EAAepzS,OAC1D,GAAIloC,EAAG28V,eAAgB,CACrB38V,EAAG28V,eAAer3T,KAAOA,EAE3B,GAAItlC,EAAG08V,aAAc,CACnB18V,EAAG08V,aAAap3T,KAAOA,GAK3BtlC,EAAGwpE,gBAAgB,uBACnBgiP,EAAUlW,WAAWlmR,GAAG,CACtBi2D,OAAQrlF,EAAGqqX,qBACXtxL,QAAS/4L,EAAGqqX,qBACZ9tW,QAASvc,EACT0E,KAAM,yBAIZ9E,uBACE,MAAMI,EAAKC,KAEX,GAAID,EAAGs7N,WAAat7N,EAAG+9V,eAAe92Q,gBAAkBjnF,EAAG0gL,YAAYz5F,cAAcjnF,EAAGwrT,UAAUlW,YAAa,CAC7Gt1S,EAAGiiN,iBAKPriN,qBACEua,MAAMmwW,sBAAsBxrX,WAe5BmB,KAAKurT,UAAUh+R,QAAQ,sBAAuB7uB,EAAe,CAC3Dm+V,UAAW78V,MACVA,KAAK89V,iBAEVn+V,yBAAyBu+V,EAAoBosB,GAC3C,GAAIpsB,EAAoB,CACtBA,EAAmBt/S,UAAU7/B,IAAI,aAEnC,GAAIurW,EAAuB,CACzBA,EAAsB1rU,UAAU98C,OAAO,cAa3CnC,UAAU8gL,EAAauzC,EAAgBv9K,EAAU,MAC/C,MAAM12C,EAAKC,MACTuqX,gBACEA,GACExqX,EAAG8/D,OAAOkyD,SAChB,GAAIhyH,EAAGs7N,UAAW,CAEhBt7N,EAAGyqX,sBAGL,GAAIzqX,EAAG6/D,UAAY6gH,EAAY5nG,UAAY4nG,EAAYnjG,YAAcitS,IAAoBA,EAAgB3qT,SAAU,CACjH,OAGF,MAAMzzD,EAASpM,EAAG0qX,eAAe5rX,WAGjC,GAAIkB,EAAGs7N,UAAW,CAChBt7N,EAAGwrT,UAAU90Q,QAAQmI,UAAU7/B,IAAI,yBAErC,OAAO5S,EAOTkvN,gBACE,IAAI4hI,EACJ,OAAO/8V,SAAS+8V,EAAgBj9V,KAAKk9V,WAAa,MAAQD,SAAuB,OAAS,EAAIA,EAAcryS,WAI9GjrD,YAAY8gL,EAAauzC,EAAgBv9K,EAAU,MACjD,MAAM12C,EAAKC,MACTurT,UACEA,GACExrT,EACJ2qX,EAAcjqM,EAAYnjG,WAC5B,IAAK02I,EAAgB,CAGnBA,EAAiBvzC,EAAY05H,UAAYp6S,EAAGu1S,cAAczoO,QAAQ4zG,EAAY++H,YAEhF,GAAIkrE,EAAa,CAEf9kD,GAAS/3T,UAAU4vC,UAAU52C,KAAK45K,GAMpC,GAAIhqI,GAAWi0U,EAAa,CAC1B3qX,EAAGm5W,mBAAmBz4L,EAAauzC,EAAgBv9K,EAAU,CAC3D93C,OAAQ83C,GACN,UACC,CAIL80Q,EAAUo/D,4BAA4B32J,EAAgBvzC,EAAa,CACjEp9D,QAAS,KACTrmE,WAAY,EACZ4tU,eAAgB,QACfn6W,MAAK,IAAM1Q,EAAGm5W,mBAAmBz4L,EAAauzC,KAAiB,IAAMu3F,EAAU90Q,QAAQmI,UAAU98C,OAAO,4BAO/GnC,WAAW8gL,EAAauzC,GACtBh0N,KAAK4oX,cAAgB,KACrB5oX,KAAK6qX,mBAAmBpqM,EAAauzC,GACrCh0N,KAAK4oX,cAAgB,MAEvBnoM,kBACE,IAAIqqM,EACJ,OAAQA,EAAiB9qX,KAAKk9V,WAAa,MAAQ4tB,SAAwB,OAAS,EAAIA,EAAet4S,OAEzG7yE,mBAAmB8gL,EAAauzC,GAC9B,MAAMj0N,EAAKC,MACTq1S,WACEA,GACEt1S,EAAG8/D,QACP66J,OACEA,GACE36N,EACNA,EAAGi0N,eAAiBA,EACpB0G,EAAOloJ,OAASiuG,EAChB,GAAI1gL,EAAGqjX,cAAe,CACpB,MAAMzmD,EAAYtnB,EAAWF,gBAAgBqqB,qBAAqB/+I,GAElEi6C,EAAO9jF,gBAAkB,KAEzB,IAAK6pC,EAAYw7I,eAAiB5mB,EAAWnxS,QAAQ0H,SAAS60K,EAAa,OAASuzC,EAAgB,CAClGj0N,EAAGqjX,cAAc7jX,MAAQy0N,EAAej0N,EAAGqjX,cAAczmL,iBACpD,GAAI58L,EAAGo1S,gBAAiB,CAC7Bp1S,EAAGqjX,cAAc7jX,MAAQo9T,EAAU9yT,KAAIswS,GAAYA,EAASp6S,EAAGqjX,cAAczmL,cAE/E+9B,EAAO9jF,gBAAkB,MAE3B18H,MAAM2wW,mBAAmBpqM,EAAauzC,GAExCr0N,gBAAgBgvV,GAEd3uV,KAAK06N,OAAOjkL,QAAQ/f,QAAQi4T,UAAYA,GAAa,GACrD3uV,KAAK06N,OAAOhgG,YAAWhZ,IACrB,IAAIqpQ,IAEFA,EAAkBrpQ,EAAOhrF,WAAa,MAAQq0V,SAAyB,OAAS,EAAIA,EAAgBp8B,aAAejtO,EAAOlf,OAASkf,EAAOhrF,QAAQi4T,YAAcA,MAKtKhvV,wBAAwB8gL,EAAa8vJ,EAAiB//T,EAASkkB,GAC7D,MAAM30B,EAAKC,MACTurT,UACEA,EAASpW,gBACTA,GACEp1S,EAENo1S,EAAgByQ,oBAEhB2F,EAAU/uD,iBACVz8P,EAAG05W,aAAah5L,GAChBA,EAAYpoF,aACZt4F,EAAGimO,aAAavlD,GAChBA,EAAYnoF,WACZ,IAAKmoF,EAAYw7I,aAAc,CAC7B,GAAIl8T,EAAGqjX,cAAe,CACpBjuE,EAAgBuqB,sBAAsBj/I,EAAa8vJ,EAAiB,KAAM,YAMzE,GAAIA,EAAiB,CACxB9vJ,EAAYnvK,IAAI,kBAAmBi/T,GAKrC9vJ,EAAYnjG,WAAa,MACzB,OACQiuO,EAAUhgN,QAAQ6wJ,cAE1B+4C,EAAgB4Q,mBAEhBwF,EAAU1uD,cAAc,MACxB,CAQE0uD,EAAUh+R,QAAQ,iBAAkB,CAClCkzJ,YAAAA,IAEF1gL,EAAG25W,YAAYj5L,GAEjBjwK,EAAQiwK,GAUV9gL,OACE,OAAO,IAAI4Q,SAAQ,CAACC,EAASkkB,KAC3B,IAAIs2V,EACJ,MAAMjrX,EAAKC,MACTurT,UACEA,EAAS9qI,YACTA,GACE1gL,EACN,IAAK0gL,IAAgB1gL,EAAG26N,OAAOj0I,QAAS,CACtCj2E,EAAQ,OACR,OAEF,MAAM6kS,WACFA,EAAUxpS,OACVA,GACE9L,EACJwwU,IAAoBy6C,EAAoBjrX,EAAGqjX,iBAAmB,MAAQ4H,SAA2B,OAAS,EAAIA,EAAkB/4S,WAAalyE,EAAGi0N,eAAiB,CAACj0N,EAAGi0N,gBAAkB,IAEzL,IAAKj0N,EAAGwrT,UAAU4uC,cAAgB9kD,EAAY,CAC5C,IAAIloQ,UACFA,EAASC,QACTA,GACEvhC,EAEJ,IAAKuhC,EAAS,CACZ,GAAI,aAAcvhC,EAAQ,CACxBuhC,EAAUvN,GAAW9gB,IAAIouB,EAAWthC,EAAOyc,SAAUzc,EAAOiyS,cAAgBr9H,EAAYq9H,mBACnF,GAAI,iBAAkBjyS,EAAQ,CACnCuhC,EAAUvN,GAAW9gB,IAAIouB,EAAWthC,EAAOy6T,kBACtC,CACLl5R,EAAUqzI,EAAYrzI,SAG1B,MAAMlY,EAAQq7S,EAAgB5oU,MAAKwyS,IACzB9E,EAAW4oB,qBAAqB9wR,EAAWC,EAASqzI,EAAa05H,KAE3E,GAAIjlR,EAAO,CACT1kB,EAAQ,OACR,QAGJ,MAAMi9D,EAAU,CACd9tE,SAASsrX,GACP,IACE,GAAIA,IAAc,MAAO,CACvBlrX,EAAGmrX,kBAAkBzqM,EAAa8vJ,EAAiB//T,EAASkkB,OACvD,CACLlkB,EAAQ,QAEV,MAAOxM,GACP0wB,EAAO1wB,MAiBb,GAAIunT,EAAUh+R,QAAQ,kBAAmB,CACvCkzJ,YAAAA,EACA8vJ,gBAAAA,EACA1kU,OAAAA,EACA4hE,QAAAA,MACK,MAAO,CACZj9D,EAAQ,OACR,OAGF,IAAKi9D,EAAQvlD,MAAO,CAClBulD,EAAQ2rE,eAYdz5I,cACEK,KAAKupE,gBAAgB,uBACrB,OAAO,IAAIh5D,SAAQ,CAACC,EAASkkB,KAC3B,MAAM30B,EAAKC,MACTygL,YACEA,EAAWi6C,OACXA,GACE36N,EACNA,EAAGwrT,UAAU4/D,aAAa,CAAC1qM,IAAc2qM,IAKvC,GAAIA,GAAgB1wJ,EAAOlvF,cAAe,CACxCkvF,EAAO7gG,cAETrpH,EAAQ46W,KACP1wJ,MAKP/6N,kBAEE,GAAIK,KAAKojX,cAAe,CACtBpjX,KAAKojX,cAAcx3S,MAAQ,IAI/BypO,iBACE,OAAOr1S,KAAKurT,UAAUhgN,QAAQ8pM,WAEhCC,oBACE,OAAOt1S,KAAKurT,UAAUhgN,QAAQ+pM,cAEhCH,sBACE,OAAOn1S,KAAKurT,UAAUhgN,QAAQ4pM,gBAKhCx1S,kBAAiB8gL,YACfA,EAAWuzC,eACXA,EAAc+/H,aACdA,IAEA/zV,KAAKqrX,UAAU5qM,EAAauzC,EAAgB+/H,GAE9Cp0V,iBAAgB8gL,YACdA,EAAWuzC,eACXA,EAAcknI,aACdA,IAEAl7V,KAAKqrX,UAAU5qM,EAAauzC,EAAgBknI,GAG9Cv7V,iBAAgB+kU,iBACdA,EAAgBjkJ,YAChBA,EAAW9hL,OACXA,IAEA,MAAMkhE,OACFA,GACE7/D,KAGJy2C,EAAU93C,EAAOA,EAAO2D,QAAQu9D,EAAO0rR,eAAiB,gBAAkB,WAAW1rR,EAAO+4R,oBAC9F,GAAIl0B,EAAkB,CACpB1kU,KAAKqrX,UAAU5qM,EAAaikJ,EAAiBvqB,SAAU1jQ,QAClD,GAAIgqI,EAAa,CACtBzgL,KAAKqrX,UAAU5qM,EAAaA,EAAY05H,SAAU1jQ,IAItD92C,mBAAkBJ,MAChBA,IAEAS,KAAKmqX,gBAAgB5qX,GAIvBI,mBAAkB8gL,YAChBA,EAAWuzC,eACXA,EAAc/wM,MACdA,IAEA,IAAKjjB,KAAKurT,UAAU1yO,WAAa74E,KAAK4/D,SAAU,CAC9C38C,EAAMooW,UAAY,CAChBpgX,KAAM,0BACN8tB,YAAa/4B,KACb4vH,KAAM,qBACN6D,OAAQ,IACR7zD,SAAU6gH,EAAY5nG,SACtBy4J,OAAQ,KACNtxO,KAAKqrX,UAAU5qM,EAAauzC,MAMpCr0N,sBACEK,KAAKupE,gBAAgB,uBACrBrvD,MAAMswW,sBAENxqX,KAAKg0N,eAAiBh0N,KAAK89V,eAAiB99V,KAAK06N,OAAOtgJ,QAAU,MAGtEkvS,GAAUphX,OAAS,YACnBijO,GAAmB2F,gBAAgBw4I,GAAW,KAAM,aACpDn+I,GAAmB2F,gBAAgBw4I,GAAW,MAAO,CAAC,eAAgB,sBACtEA,GAAU1yS,YAwBV,MAAM00S,WAAoB5rT,GACxB3xD,mBACE,MAAO,cAETyyD,0BACE,MAAO,CACLC,MAAO,CAAC,+BASZ9gE,4BAA2BsjB,MACzBA,IAEA,MAAMljB,EAAKC,KACXijB,EAAMsoW,aAAe,CACnBtgX,KAAM,kBACN2kH,KAAM,0BACNhwD,SAAU7/D,EAAG6/D,SACb7mC,YAAah5B,EACb0zH,OAAQ,IACRm0B,KAAM,CACJ/6I,KAAM,QACNksB,YAAah5B,EACbkjB,MAAO,CACLuoW,WAAY,CACV/3P,OAAQ,IACR5mH,KAAM,YACNiJ,IAAK,2BACLy3K,UAAW,KACXK,qBAAsB,IACtB9kC,MAAO,YACP/vH,YAAah5B,EACbmH,MAAO,IACPmmB,UAAW,CACT+3D,OAAQrlF,EAAG0rX,oBACXnvW,QAASvc,KAIfJ,cACEZ,OAAQ6oJ,IAER,MAAO8jO,GAAgB9jO,EAAK3kI,MAC1B7kB,EAAS2B,EAAG6rE,MAAMoe,QAAQ8E,MAAM,WAAY,QAC9C48R,EAAansX,OAASnB,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAOmB,QAAU,MAK/FI,qBAAoBJ,MAClBA,IAEA,GAAIA,IAAU,GAAI,CAChBS,KAAK4rE,MAAMxtE,OAAO,OAAQmB,OACrB,CACLS,KAAK4rE,MAAMuxI,aAAa,SAG5BvxI,YACE,MAAM/L,OACJA,GACE7/D,KACJ,OAAO6/D,EAAOkxL,YAAclxL,EAAO+L,MAAQ/L,EAAOw1O,YAGtDi2E,GAAY1pT,aAAe,iBAC3B0pT,GAAYpjX,OAAS,cACrBijO,GAAmB2F,gBAAgBw6I,GAAa,KAAM,CAAC,YAAa,UACpEngJ,GAAmB2F,gBAAgBw6I,GAAa,MAAO,qBA4HvD,MAAMK,WAAkBtsB,GAEtBtxV,mBACE,MAAO,YAgBTvO,0BACE,MAAO,CAiCLs8J,aAAc,KACdjvJ,KAAM,SAgCV2zD,0BACE,MAAMroD,EAAS+B,MAAMsmD,aACrBroD,EAAOsoD,MAAMjiE,KAAK,qBAClB,OAAO2Z,EA0CTm9R,oBAEE,OAAOt1S,KAAK6/D,OAAOurR,aAAeprV,KAAK6/D,OAAO+L,MAAQ5rE,KAAK6/D,OAAOy1O,cAEpE31S,iBAAiBwwB,GACf,IAAIqhD,EACJ,MAAMt3C,EAAOhgB,MAAMqhJ,iBAAiBprI,GAClC4jU,EAAe75T,EAAK0nB,eACpBie,OACEA,GACE7/D,KACJygL,EAAc5gH,EAAOy1R,mBAAmBvB,GAExC//H,EAAiBvzC,KAAiBjvG,EAAO3R,EAAOo1R,sBAAsBlB,IAAiB/zV,KAAKs1S,cAAclvQ,QAAU,MAAQorC,SAAc,OAAS,EAAIA,EAAKkE,WAC5JgvP,EAAmBjkJ,GAAe5gH,EAAO42R,wBAAwB1C,GACnE,OAAO91V,OAAOmZ,OAAO8iB,EAAM,CACzB65T,aAAAA,EACAtzK,YAAAA,EACAuzC,eAAAA,EACA0wG,iBAAAA,IAGJ/kU,2BAA0BhB,OACxBA,IAEA,OAAOA,EAAOslD,QAAQjkD,KAAK6/D,OAAO0rR,gBAAkB5sV,EAEtDgB,eAAei9J,GACb,OAAOA,EAAY6jB,YAYrB9gL,mBAAmB8gL,GAAa7+H,cAC9BA,EAAazxB,MACbA,GACE,IACF,GAAInwB,KAAK4/D,SAAU,CACjB,OAEF,IAAKhe,EAAe,CAClBA,EAAgB5hD,KAAK4rX,qBAAqBnrM,GAE1C,IAAK7+H,EAAe,CAClB,QAGJ3J,GAAUqjH,kBAAkB15G,EAAe5hD,KAAK6rX,aAElDlsX,qBAAqB6yE,GACnB,OAAOxyE,KAAK6/D,OAAOisT,2BAA2Bt5S,GAAQ,GAExD7yE,mBAAkBsjB,MAChBA,EAAKw9J,YACLA,EAAWikJ,iBACXA,IAEA,MAAM7kQ,OACJA,GACE7/D,KACJijB,EAAMo7U,YAAc,CAClBz+R,SAAU6gH,EAAY5nG,WAAa6rP,IAAqB,MAAQA,SAA0B,OAAS,EAAIA,EAAiB7rP,UACxH2pB,OAAQ3iC,EAAOgZ,UAEjB51D,EAAM8oW,cAAgB,CACpBnsT,SAAU6gH,EAAY5nG,WAAa6rP,IAAqB,MAAQA,SAA0B,OAAS,EAAIA,EAAiB7rP,UACxH2pB,OAAQ3iC,EAAOgZ,UAAYhZ,EAAOw1O,WAAW4nB,sBAMjDt9T,YAAYsjB,GACV,MAAM48C,OACJA,GACE7/D,KACJ,OAAO8M,EAAQ0C,MAAM,CACnB6uV,YAAa,CACXpzV,KAAM,gCACN2kH,KAAM,sBACN6D,OAAQ,IACR9zH,QAAOioJ,KACLA,EAAI64B,YACJA,IAEA,IAAIurM,EAOJ,MAAMC,GAAgBD,EAAqBpkO,EAAKnc,gBAAkB,MAAQugP,SAA4B,OAAS,EAAIA,EAAmB3oU,cACtI,GAAI4oU,EAAc,CAChBA,EAAan3T,QACb+K,EAAOhgE,UAAUkxK,WAAak7M,EAEhCpsT,EAAOsrT,aAAatrT,EAAOqsT,gBAAgBzrM,GAAe5gH,EAAOw/S,eAAiB,CAAC5+L,MAGvFsrM,cAAe,CACb9gX,KAAM,kCACN2kH,KAAM,yBACN6D,OAAQ,IACR9zH,QAAOioJ,KACLA,EAAI64B,YACJA,EAAWuzC,eACXA,IAEA,IAAIm4J,EAOJ,MAAMF,GAAgBE,EAAsBvkO,EAAKnc,gBAAkB,MAAQ0gP,SAA6B,OAAS,EAAIA,EAAoB9oU,cACzI,GAAI4oU,EAAc,CAChBA,EAAan3T,QACb+K,EAAOhgE,UAAUkxK,WAAak7M,EAEhCxrM,EAAY2rM,SAASp4J,MAGxB/wM,IAGP0oW,GAAU/pT,aAAe,GACzB+pT,GAAUzjX,OAAS,YACnBijO,GAAmB2F,gBAAgB66I,GAAW,KAAM,aACpDxgJ,GAAmB2F,gBAAgB66I,GAAW,MAAO,qBAUrD,IAAIU,GAAuBn/V,IACzB,IAAIy7C,EACJ,OAAOA,EAAS,MAAM0jT,UAA4Bn/V,EAChDvtB,wBAAwBswS,EAAU9iQ,EAAWC,GAC3C,IAAK6iQ,EAASq8E,wBAAyB,CACrC,MAAMngX,EAAS,GAEf8jS,EAASwI,4BAA4B,CACnCtrQ,UAAAA,EACAC,QAAAA,EACAihM,UAAW,OACV,CAAC+gE,EAAmBC,EAAiBwJ,KACtC,IAAK,MAAOptP,EAAOz1C,KAAU6iS,EAAsBrI,eAAgB,CACjE,IAAKx6R,EAAM8iS,eAAgB,CACzB3sS,EAAO3N,KAAK,CACViG,KAAMgnD,EAAMhnD,KACZ6jJ,QAAS78F,EAAM68F,QACfxyI,IAAK21C,EAAM31C,IACXq3B,UAAWiiQ,EACXhiQ,QAASiiQ,SAKjB,OAAOljS,EAET,OAAO8jS,EAASq8E,wBAAwBn/U,EAAWC,GAErDztC,sBAAsBswS,EAAUs8E,EAAa,OAC3C,MAAMxsX,EAAKC,MACT+nT,SACEA,EAAQq3D,UACRA,GACEr/W,EAAG8/D,QACP53B,KACEA,EAAI2E,UACJA,GACEm7Q,EACJykE,GAAezsX,EAAG0sX,iBAAmB5sV,GAAW+5C,aAAa3xC,EAAMloC,EAAG0sX,kBAAoB,EAC5F,GAAIx8E,GAAYu8E,GAAezkE,EAAS/jS,MAAO,CAC7C,MAAM0oW,EAAY3sX,EAAGusX,wBAAwBr8E,EAAU8X,EAAS56Q,UAAW46Q,EAAS36Q,SAClFu/U,EAAYD,EAAU7iX,KAAI0xI,GAAY,IAAIqqL,GAAS,CACjDnhU,KAAM82I,EAAS92I,KACfqR,IAAK,oBAAoBylI,EAASzlI,KAAO,KAEzCq3B,UAAWiyU,EAAYv/U,GAAWlB,KAAK48G,EAASpuG,UAAW,CACzDpD,UAAW6C,EACX3E,KAAAA,IACGszG,EAASpuG,UACdC,QAASgyU,EAAYv/U,GAAW1C,MAAMo+G,EAASnuG,QAAS,CACtDrD,UAAW6C,EACX3E,KAAAA,IACGszG,EAASnuG,YAEhBw/U,EAAc,GAChB,IAAIltF,EAAY,KAEhB,IAAK,MAAM3tG,KAAS46L,EAAW,CAC7B,GAAIjtF,GAAa3tG,EAAM5kJ,WAAauyP,EAAUtyP,UAAYm/U,GAAcx6L,EAAMttL,OAASi7R,EAAUj7R,OAASstL,EAAMzpK,SAAW,EAAG,CAC5Ho3Q,EAAUtyP,QAAU2kJ,EAAM3kJ,YACrB,CACLw/U,EAAYpuX,KAAKuzL,GACjBA,EAAMpnL,GAAK,cAAciiX,EAAY9tX,SACrC4gS,EAAY3tG,GAGhB,OAAO66L,MACF,CACL,MAAO,IAIXjtX,uBACE,MAAMkgE,OACJA,EAAM0rC,QACNA,GACEvrG,KACJ,IAECA,KAAK6sX,wBAELhtT,EAAOzgD,iBAAmBygD,EAAO1gD,SAElCosF,EAAQ65M,oBAAsB75M,EAAQgtM,kBAErChtM,EAAQgtM,gBAAgB5D,cAAc3wR,MAAO,CAC5ChkB,KAAK6sX,sBAAwB,KAC7B7sX,KAAK8sX,yBAGTntX,wBACE,GAAIK,KAAK6sX,sBAAuB,CAC9B,MAAM58E,EAAWjwS,KAAK6/D,OAAO0rC,QAAQ65M,kBACnCviP,EAAY7iE,KAAK+sX,2BACjBC,EAAe9sX,QAAQ2iE,EAAU/jE,QACnCmxS,EAASg9E,eAAeD,GAExB,GAAIA,EAAc,CAChB/8E,EAASiJ,aAAar2O,KAI5BljE,qBACE,IAAIutX,GACHA,EAAwBhzW,MAAMsf,sBAAwB,MAAQ0zV,SAA+B,OAAS,EAAIA,EAAsBrmX,KAAK7G,MACtIA,KAAK6sX,uBAAyB7sX,KAAK8sX,wBAErCC,iCACE,MAAMx9U,EAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC5D,OAAO1P,GAAWyM,sBAAsBziC,KAAI25T,IAAQ,CAClDtsB,mBAAoB,MAAM3nQ,EAASi0R,aACnCrsB,iBAAkB,MAAM5nQ,GAAUi0R,EAAW,GAAK,aAClDtzB,UAAW,YAIdhxS,EAAgBypE,EAAQ,QAAS,uBAAwBzpE,EAAgBypE,EAAQ,eAAgB,CAclG8jT,gBAAiB,SACf9jT,GAsBN,MAAMwkT,WAA4BztT,GAAel/C,MAAM2kU,GAAsBknC,KAC3E1sX,UAAUgiE,GACR3hE,KAAK6/D,OAAOi5H,UACZ5+K,MAAM6nD,UAAUJ,GAElBhiE,6BAA6BisE,GAC3B1xD,MAAMwrU,6BAA6B95Q,GACnC,MAAM7rE,EAAKC,KACX4rE,EAAMz8C,GAAG,CACP1qB,KAAM,uBACN2gF,OAAQ,mBACR9oE,QAASvc,IAGX,GAAIA,EAAG8/D,OAAOvgD,YAAa,CACzBvf,EAAGwrG,QAAQ65M,kBAAkBviP,UAAU1zC,GAAG,CACxC1qB,KAAM,uBACN2gF,OAAQ,mBACR9oE,QAASvc,IAGbA,EAAGqtX,uBAELztX,mBACEK,KAAKqtX,mBAAmB5uU,QAE1B9+C,4BACEK,KAAKqtX,mBAAmB5uU,QAG1B9+C,kBAAkB4gL,EAAWsqB,EAASC,EAASp0J,GAC7C,MAAM32C,EAAKC,MACT6/D,OACEA,GACE9/D,GACJ01C,IACEA,GACEoqB,EACJimO,EAAWjmO,EAAO0iS,sBAAsB1iU,GAAWxrB,IAAIksK,EAAUpzI,UAAW09J,IAAYn0J,EACxFqvP,EAASxlH,EAAUnzI,QAAUyyB,EAAO0iS,sBAAsB1iU,GAAWlX,IAAI43J,EAAUnzI,QAAS09J,IAAYp0J,EAAaovP,EACrHv0R,EAAO6C,KAAK41B,IAAI+7P,EAASD,GACzB/H,EAAUxsR,EAAO,EACjBkxV,EAAahtT,EAAM,QAAQqwP,cAAuB,GAAGA,MACvD,MAAO,CACLpnP,UAAW,CAET4uU,kBAAmB,EACnBC,cAAe,EACfC,uBAAwB,EACxB7tX,CAAC4gL,EAAUzqK,KAAMyqK,EAAUzqK,IAC3B6sV,QAASltT,GAEX/e,QAAS,CACP/rB,GAAI41K,EAAU51K,IAEhB49C,YAAa,CACXg4H,UAAAA,GAEFl/K,MAAOw+D,EAAOopP,WAAa,yBAAyBw5C,OAAgB1kE,EAAU,UAAUxsR,MAAW,MAAQ,yBAAyBkxV,OAAgB1kE,EAAU,SAASxsR,MAAW,OAGtL5R,sBAAsBswS,GACpB,IAAI1lS,EAASvK,KAAKqtX,mBAAmB37W,IAAIu+R,GACzC,IAAK1lS,EAAQ,CACXA,EAAS2P,MAAMuzW,sBAAsBx9E,EAAU,MAC/CjwS,KAAKqtX,mBAAmB/7W,IAAI2+R,EAAU1lS,GAExC,OAAOA,EAGT5K,sBAAqB8gL,YACnBA,EAAWkhK,MACXA,EAAK7V,QACLA,EAAOtjT,MACPA,EAAK9E,IACLA,EAAG4xB,KACHA,EAAIH,IACJA,EAAGkS,SACHA,IAEA,GAAIrnD,KAAKogE,QAAS,CAChB,IAAIstT,EACJ,MAAMzkE,WACFA,GACEjpT,KAAK6/D,OAETowO,GAAYy9E,EAAwBjtM,EAAYktM,iCAAmC,MAAQD,SAA+B,EAAIA,EAAwB1tX,KAAK6/D,OAAO0rC,QAAQ0kM,SAC5K,IAAK,MAAM1vH,KAAavgL,KAAKytX,sBAAsBx9E,GAAW,CAE5D,GAAI1vH,EAAUkmJ,YAAckb,GAASphK,EAAUiiJ,UAAYsJ,EAAS,CAClE,MAAM1uR,EAAYp9C,KAAK6iW,kBAAkBtiL,EAAW/3J,EAAO9E,EAAKulS,EAAa9zQ,EAAMG,GACnF+R,EAAS7oD,KAAK4+C,OAOxBl+C,EAAgBiuX,GAAqB,QAAS,uBAC9CjuX,EAAgBiuX,GAAqB,eAAgB,CACnD1sT,MAAO,CAAC,4BAA6B,qBAAsB,0BAE7DvhE,EAAgBiuX,GAAqB,aAAc,CACjDE,mBAAoB,IAAI77W,MAE1B27W,GAAoBjlX,OAAS,sBAC7BijO,GAAmB2F,gBAAgBq8I,GAAqB,MAAO,aA4D/D,MAAMS,WAAqBtuB,GAEzBvxV,mBACE,MAAO,eAET8T,2BACE,MAAO,CAaLixC,SAAU54B,GAAQ,qBACNA,EAAKumJ,YAAYh8K,KAAO2F,EAAa04V,GAAG,kCAAkC5oU,EAAKumJ,YAAYh8K,aAAe,uBAC1Gy1B,EAAKqwT,mCACLrwT,EAAKswT,eACjB10U,IAAK,sBACL0pV,oBAAqB,KASrB/oO,aAAc,QAIlB92H,UAAUkgE,EAAQ1nD,GAChB,MAAMpY,EAAKC,KACXka,MAAMsB,UAAUqkD,EAAQ1nD,GACxB,UAAWpY,EAAGs2C,QAAU,SAAU,CAChCt2C,EAAGs2C,MAAQ,CACTA,MAAOt2C,EAAGs2C,QAIhB12C,SAAQipI,WACNA,IAEA1uH,MAAM27H,WAAWh3I,WACjB,GAAI+pI,EAAY,CACd,MAAM7oI,EAAKC,KACTsyU,EAAevyU,EAAG8/D,OAAOkyD,SAASugN,aACpC,GAAIA,EAAc,CAChB,MAAMu7C,EAAmB9tX,EAAGs2C,MAAMvH,OAClC/uC,EAAG6oD,QAAQz5B,GAAG,cAAc,EAC1BpwB,OAAQ6pD,MAGR,IAAK0pR,EAAa1yQ,SAAU,CAC1BhX,EAAQvS,MAAMvH,OAAS,CAAC,EAAG,QACtB,CACL8Z,EAAQvS,MAAMvH,OAAS++U,SAOnCD,GAAa1lX,OAAS,eACtBijO,GAAmB2F,gBAAgB88I,GAAc,KAAM,aACvDziJ,GAAmB2F,gBAAgB88I,GAAc,MAAO,qBAGxD,MAAME,GAAiB,CACrB/uW,IAAK,EACLjd,OAAQ,EACR6rG,OAAQ,EACR9N,UAAW,EACXzhG,OAAQ,GAoBV,MAAM2vX,WAAqB9qI,GAEzBl1O,mBACE,MAAO,eAET8T,2BACE,MAAO,CAMLqkM,YAAa,KAgBbw8B,UAAW,KA8BXhjB,SAAU,MAGd9nN,wBACE,MAAO,CACLo2W,gBAAiB,IAAInvW,KAGzB2hD,0BACE,MAAO,CACLC,MAAO,CAAC,WAKZ9gE,UAAU4rT,EAAWpzS,GACnB,MAAMpY,EAAKC,KACX,GAAIurT,EAAUtC,WAAY,CACxB,MAAM,IAAIv4S,MAAM,0DAElB3Q,EAAGwrT,UAAYA,EACfrxS,MAAMsB,UAAU+vS,EAAWpzS,GAC3B,IAAKpY,EAAG2iP,WAAa3iP,EAAG2/N,SAAU,CAChC3/N,EAAG2iP,UAAY,CAAC,CACdhjB,SAAU3/N,EAAG2/N,WAGjB,GAAI6rF,EAAU6lC,gBAAiB,CAC7B7lC,EAAUlW,WAAWlmR,GAAG,CACtB4wE,gBAAiBhgG,EAAGkuX,mBACpB3xW,QAASvc,IAEXwrT,EAAUp8R,GAAG,CACXqmV,wBAAyBz1W,EAAGmuX,iBAC5B5xW,QAASvc,IAEXwrT,EAAUhgN,QAAQp8E,GAAG,CACnBirT,UAAWr6U,EAAGouX,mBACd7xW,QAASvc,KAIfJ,YACE,IAAIyuX,GACHA,EAAapuX,KAAKqxN,QAAU,MAAQ+8J,SAAoB,OAAS,EAAIA,EAAWryW,UACjF7B,MAAM8B,YAIRrc,mBACEK,KAAKurT,UAAU10F,WAAW73N,SAAQ2vK,IAChC,GAAIA,EAAIxnF,cAAe,CACrBwnF,EAAI50J,aAIVpa,oBAAmByyD,OACjBA,EAAMogB,OACNA,EAAMP,QACNA,EAAOM,QACPA,IAIA,GAAIu7S,GAAe17T,GAAS,CAC1B,IAAIi8T,EACJ,MAAMx3J,WACFA,GACE72N,KAAKurT,UACTt9R,EAASukD,EAAS,CAACA,GAAUP,EAC7B0qP,EAAY,IAAI99S,IAClBoP,EAAOjvB,SAAQgF,GAAKA,EAAE24T,UAAU39T,SAAQkxB,GAAKysS,EAAU59S,IAAImR,OAE3D,IAAKqiD,IAAY,MAAQA,SAAiB,OAAS,GAAK87S,EAAsB97S,EAAQitO,cAAgB,MAAQ6uE,SAA6B,OAAS,EAAIA,EAAoBx0W,WAAa,KAAM,CAC7L,MAAMgrS,EAAc7kT,KAAKurT,UAAUjW,cAAczoO,QAAQ0F,EAAQitO,WAAW3lS,UAC5EgrS,GAAe8X,EAAU59S,IAAI8lS,GAG/B,IAAK,MAAM7wF,KAAkB2oG,EAAW,CACtC,IAAIhuJ,EAAMkoD,EAAWyN,UAAUtQ,GAG/B,GAAIh0N,KAAKrB,SAAW,SAAU,CAC5B,MAAOgwK,IAAQA,EAAIznF,cAAe,CAChCynF,EAAMkoD,EAAW8B,OAAOhqD,EAAIz+J,MAAQ,QAEjC,CACL,MAAOy+J,IAAQA,EAAIxnF,cAAe,CAChCwnF,EAAMkoD,EAAW8B,OAAOhqD,EAAIz+J,MAAQ,IAGxCy+J,GAAO3uK,KAAKguX,gBAAgBjvW,IAAI4vJ,KAItChvK,qBACE,MAAMquX,gBACJA,EAAenuT,OACfA,GACE7/D,KAEJ,GAAI6/D,EAAOjV,UAAW,CAEpB,GAAIojU,EAAgBz8W,KAAM,CACxB,IAAK,MAAM4nF,KAAU60R,EAAiB,CACpC,IAAIM,GAEHA,EAAiBn1R,EAAOp/E,UAAY,MAAQu0W,SAAwB,OAAS,EAAIA,EAAeznX,KAAKsyF,GAExG60R,EAAgBvvU,aAEb,CACLohB,EAAO62N,YAAY,UAAW72N,EAAQ,CAAC,QAS3ClgE,mBAAkBgvK,IAChBA,EAAGn8F,OACHA,IAEA,GAAIm8F,EAAIxnF,gBAAkB3U,EAAOryD,KAAKrS,eAAe,kBAAmB,CACtE,MAAMygX,EAAe5/M,EAAI27D,SAASmgD,OAAOziR,cAAc,wBAEvD,GAAIumX,EAAc,CAChBA,EAAa78T,UAAY,IAG7Bx3C,MAAMs0W,qBAAqB3vX,WAgB7Bc,aAAao3M,EAAQ9kI,EAASn8D,EAAKyiF,EAAaJ,EAAY+B,GAE1D,GAAI68G,EAAOlqM,OAAS,WAAY,CAC9B,MAAM9M,EAAKC,MACTurT,UACEA,GACExrT,GACJs1S,WACEA,GACEkW,EACJkjE,EAASljE,EAAUX,kBAAkBL,aACvC,IAAI5hQ,EAAO,GAIX,MAAM+lU,EAAenjE,EAAUojE,0BAA0B18S,GAAS,EAChE9hD,MAAAA,KAEOA,EAAMwsS,UAAUh1T,MAAKwyS,GAAYloO,EAAQrmE,SAASuuS,QAAgB9E,EAAWjpN,YAAcipN,EAAWpjO,QAAQrmE,SAASukB,MAEhIo7R,EAAUxD,SAAS/oT,SAAQ,CAACw0N,EAAMliL,KAChC,MAAMs9U,EAAcF,EAAap9U,IAAQ,GAEvCu9U,EAAU9uX,EAAG2iP,UAAU74O,KAAIsO,IAEzB,MAAM5Y,EAAQ4Y,EAAOunN,SAAS,CAC5BvyL,UAAWqmL,EAAKrmL,UAChBC,QAASomL,EAAKpmL,QACdkoQ,cAAeiW,EAAUjW,cACzBrnR,OAAQ2gW,EACRjyD,UAAW1qP,EACXojO,WAAAA,EACA98M,YAAAA,EACAJ,WAAAA,EACA+B,WAAAA,IAEF,MAAO,yCAAyC36F,aAC/C0K,KAAK,IAEV0+C,GAAQ,8CAA8C8lU,EAAOA,EAAO3vX,OAAS,GAAGwyC,GAAKpqC,YAAY2nX,aAEnG,MAAO,yCAAyClmU,UAElD,OAAOzuC,MAAM6pO,aAAahtC,EAAQ9kI,EAASn8D,EAAKyiF,EAAaJ,EAAY+B,GAM3Ev6F,kBAAkB2+N,EAAavnB,EAAQ9kI,GACrC,MAAMjuD,EAAQ9J,MAAM4pO,kBAAkBxlB,EAAavnB,EAAQ9kI,GAC3D,GAAI8kI,EAAOlqM,OAAS,WAAY,CAC9B,MAAMV,EAAS,CACb6X,MAAO,EACP/c,OAAQ,GAEVjH,KAAK0iP,UAAU1jP,SAAQmZ,IACrB,GAAIA,EAAOlR,OAAQ,CACjBkF,EAAOlF,QAAUkR,EAAOlR,WACnB,CACLkF,EAAO6X,YAGX,OAAO7X,EAET,OAAO6X,EAMTrkB,YAAWinI,aACTA,IAEA,MAAM7mI,EAAKC,KACTkQ,EAAQ3I,MAAMyd,KAAK4hH,EAAapvF,cAAc6P,UAAU5hD,QAAQmhI,GAChE4sF,EAAOzzN,EAAGwrT,UAAUxD,SAAS/0N,MAAM9iF,GACrC,IAAI4+W,EAAU,WAAW/uX,EAAGo7B,EAAE,yBAA0Bp7B,EAAGwrT,UAAUwnC,iBAAiBv/H,EAAKrmL,uBACzF4hV,EAAU,MACZ92U,GAAUsY,gBAAgBq2E,EAAc,6BAA6B,CAACnwF,EAAS73C,KAC7E,MAAMkqJ,EAAQ/oJ,EAAGivX,QAAQpwX,GACvBqM,EAAOwrC,EAAQ4hB,UAAU7rD,OAC3BsiX,GAAW,UAAUhmO,GAAS,mDAAmD79I,UACjF,GAAIwrC,EAAQib,UAAW,CACrBq9T,EAAU,SAGd,OAAOA,EAAUD,EAAU,KAM7BnvX,SACE,MAAMI,EAAKC,MACTurT,UACEA,GACExrT,EACN,GAAIwrT,EAAU6lC,gBAAiB,CAC7B,IAAI69B,EAEJ,IAAKA,EAAgBlvX,EAAG2iP,aAAe,MAAQusI,SAAuB,GAAKA,EAActnX,MAAKwQ,GAAUA,EAAO2wI,SAAU/oJ,EAAGmmN,cAAgBnmN,EAAGsxN,KAAM,CACnJtxN,EAAGivX,QAAUjvX,EAAG2iP,UAAU74O,KAAIsO,GAAUA,EAAO2wI,OAAS,KACxD/oJ,EAAGsxN,KAAO,IAAI93F,GAAQ,CACpB5uH,GAAI,GAAG4gT,EAAU5gT,sBACjBmL,IAAK,yBACLqxK,WAAY,EACZE,UAAW,EACXpgD,WAAYskL,EAAU+/B,uBACtBpkK,eAAgB,KAChBhgD,YAAa,6CACb4/C,QAAS/mL,EAAG6sV,WAAW53U,KAAKjV,OAMpCJ,sBAAsB6jP,GACpB,MAAM0rI,EAAiB1rI,EAAMx7O,cAAc,6BAC3CknX,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAeptX,SAC/EoY,MAAMqpO,wBAER5jP,WAAWo3M,GACT,OAAO78L,MAAMiqO,WAAWptC,IAAWA,EAAOo4K,kBAI9CpB,GAAa7lX,OAAS,eACtBijO,GAAmB2F,gBAAgBi9I,GAAc,MAAO,aA4BxD,MAAMqB,WAAmB1vT,GACvBc,0BACE,MAAO,CACLC,MAAO,CAAC,qBAAsB,uBAGlC9gE,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,KAEX,GAAImwB,EAAM6wB,SAAW7wB,EAAM+yH,SAAW,GAAKnjJ,EAAG6/D,SAAU,CACtD,OAGF,GAAIzvC,EAAMxxB,OAAOslD,QAAQ,+BAAgC,CACvD,MAAM6+F,EAAW/iJ,EAAG8/D,OAAOsqK,SAASsgD,OAAO7qI,OAAO04H,eAClDv4Q,EAAGyoK,OAASr4I,EAAM8wB,QAClBlhD,EAAG02C,QAAUwB,GAAU72C,cAAc,CACnCkR,OAAQwwI,EACRriI,IAAK,MACLi+B,UAAW,sBAEb3+C,EAAGsvX,kBAAoB94U,GAAUvxB,KAAK89H,GACtChiG,GAAY3xB,GAAG,CACbsnB,QAASt1C,SACTklD,QAAS,YACT/pC,QAASvc,EACT6sB,KAAM,QAIZjtB,mBAAmBwwB,GACjB,MAAMpwB,EAAKC,KACX,UAAWD,EAAGyoK,SAAW,SAAU,CACjC,MAAMrkK,EAAIiQ,KAAKC,IAAI8b,EAAM8wB,QAASlhD,EAAGsvX,kBAAkB/5U,MACrDA,EAAOlhC,KAAKuU,IAAI5oB,EAAGyoK,OAAQrkK,GAC3B+C,EAAQkN,KAAK41B,IAAIjqC,EAAGyoK,OAASrkK,GAC7Bw6H,EAAO,IAAIpoF,GAAUjB,EAAOv1C,EAAGsvX,kBAAkBlrX,EAAIpE,EAAG8/D,OAAO7oB,WAAY,EAAG9vC,EAAOnH,EAAGsvX,kBAAkBpoX,QAC5GgxC,GAAUsd,cAAcx1D,EAAG02C,QAASkoF,EAAKrpF,MACzCv1C,EAAG02C,QAAQp1C,MAAM6F,MAAQy3H,EAAKz3H,MAAQ,MAG1CvH,YACE,MAAMI,EAAKC,KACX,UAAWD,EAAGyoK,SAAW,SAAU,CACjC,MAAM3oG,OACFA,GACE9/D,EACJ4+H,EAAOpoF,GAAUvxB,KAAKjlB,EAAG02C,SACzBtJ,EAAY0yB,EAAO0wR,sBAAsB5xN,EAAKrpF,KAAM,QAAS,OAC7DlI,EAAUyyB,EAAO0wR,sBAAsB5xN,EAAKvpF,MAAO,QAAS,OAC9Dr1C,EAAG02C,QAAQ30C,SACX/B,EAAGyoK,OAAS,KACZ3oG,EAAOyvT,WAAW,CAChBniV,UAAAA,EACAC,QAAAA,MAKRluC,EAAgBkwX,GAAY,QAAS,cACrCA,GAAWlnX,OAAS,aACpBijO,GAAmB2F,gBAAgBs+I,GAAY,MAAO,aAKtD,MAAMG,GAAQ,CAAC,MAAO,SAAU,QAAS,UACvCC,GAAc,CAACzpB,EAAMlmS,KACnB,OAAQkmS,GACN,IAAK,MACH,MAAO,MACT,IAAK,QACH,OAAOlmS,EAAOpqB,IAAM,MAAQ,MAC9B,IAAK,QACH,MAAO,MACT,IAAK,SACH,MAAO,MACT,IAAK,SACH,OAAOoqB,EAAOpqB,IAAM,MAAQ,MAC9B,IAAK,OACH,MAAO,QAGbg6U,GAAY,CACVt6U,IAAK,EACLE,OAAQ,GAEVq6U,GAAc,CACZt4G,SAAU,EACVniN,QAAS,GAEX06T,GAAc,CACZx0T,OAAQ,EACRzd,MAAO,GAwBX,MAAMkyU,WAAelwT,GAEnB3xD,mBACE,MAAO,SAETvO,0BACE,MAAO,CAMLisL,SAAU,cAiBVt2I,IAAK,KAkBLuI,MAAO,KAiBPtI,MAAO,KAiBPC,OAAQ,KAkBR8lB,OAAQ,KAiBR7lB,KAAM,KACNh5B,QAAS,KAOTo4L,WAAY,SAcZm7K,gBAAiB,UAOjBC,eAAgB,GAIpBtvT,0BACE,MAAO,CACLC,MAAO,CAAC,yBAKZ9gE,UAAU4rT,EAAWpzS,GACnB,MAAMpY,EAAKC,KACX,GAAIurT,EAAUtC,WAAY,CACxB,MAAM,IAAIv4S,MAAM,oDAElB3Q,EAAGwrT,UAAYA,EACfrxS,MAAMsB,UAAU+vS,EAAWpzS,GAC3B,GAAIpY,EAAGo1C,KAAOp1C,EAAGs1C,QAAUt1C,EAAGo7D,QAAUp7D,EAAG29C,MAAO,CAChD39C,EAAGgwX,uBAOPpwX,sBACE,MAAMw1C,IACFA,EAAGE,OACHA,GACEr1C,MACJ4+C,UACEA,GACE5+C,KAAKurT,UAAU90Q,QACrBmI,EAAU98C,OAAO,sBACjB88C,EAAU98C,OAAO,gBACjB88C,EAAU98C,OAAO,mBAEjB,GAAIqzC,GAAOE,EAAQ,CACjBuJ,EAAU7/B,IAAI,sBACd,GAAIo2B,EAAK,CACPyJ,EAAU7/B,IAAI,gBAEhB,GAAIs2B,EAAQ,CACVuJ,EAAU7/B,IAAI,qBAIpBpf,gBAAgBwwB,GACd,MAAMpwB,EAAKC,KACTrB,EAASwxB,EAAMxxB,OACjB,GAAIA,IAAWoB,EAAGwrT,UAAU1yO,SAAU,CACpC,MAAMktR,KACFA,GACEpnW,EAAO+3B,QACXs5V,EAAcjwX,EAAGgmW,IACjBrrI,OACEA,EAAMnkN,MACNA,GACEy5W,EACN,GAAIt1J,EAAQ,CACV,MAAMj6C,EAAczgL,KAAKurT,UAAU+pC,mBAAmBnlU,EAAMxxB,QAC5D,GAAI8hL,EAAY5nG,SAAU,CACxB,OAEF,KAAM6hJ,aAAkBrmB,IAAS,CAC/B27K,EAAYt1J,OAAS,IAAIrmB,GAAO,CAC9BK,WAAY30M,EAAG20M,WACfD,WAAYimB,EACZjkG,aAAc,YAIlBu5P,EAAYt1J,OAAO3gN,OAAOha,EAAGwrT,UAAU90Q,SACvCu5U,EAAYt1J,OAAOwU,UAAU,CAC3BvwO,OAAAA,EACA03C,MAAOm5U,GAAYzpB,EAAMhmW,EAAG8/D,QAC5BnlB,UAAW,MACX83B,OAAQiuG,EACRlqK,MAAAA,IAEF4Z,EAAMutC,2BACN,OAAO,QAIb/9D,UAAUw1C,GACR,OAAOn1C,KAAKiwX,iBAAiB96U,EAAK,OAEpCx1C,YACEK,KAAK+vX,sBAEPpwX,YAAY+9C,GACV,OAAO19C,KAAKiwX,iBAAiBvyU,EAAO,SAEtC/9C,cACEK,KAAK+vX,sBAEPpwX,YAAYy1C,GACVp1C,KAAKA,KAAK6/D,OAAOpqB,IAAM,SAAW,SAAWL,EAE/Cz1C,aAAa01C,GACX,OAAOr1C,KAAKiwX,iBAAiB56U,EAAQ,UAEvC11C,eACEK,KAAK+vX,sBAEPpwX,aAAaw7D,GACX,OAAOn7D,KAAKiwX,iBAAiB90T,EAAQ,UAEvCx7D,eACEK,KAAK+vX,sBAEPpwX,WAAW21C,GACTt1C,KAAKA,KAAK6/D,OAAOpqB,IAAM,QAAU,UAAYH,EAE/C31C,iBAAiBuwX,EAAWnqB,GAC1B,UAAWmqB,IAAc,WAAY,CACnCA,EAAY,CACVxwJ,SAAUwwJ,QAEP,UAAWA,IAAc,SAAU,CACxCA,EAAY,CACV35W,MAAO25W,QAIN,GAAIA,EAAW,CAClBA,EAAYjyX,OAAOge,eAAe,GAAIi0W,OAGnC,CACH,OAAO,KAET,MAAM3kE,UACFA,GACEvrT,MACJq1S,WACEA,EAAUC,cACVA,EAAaijC,UACbA,EAAS5tU,GACTA,GACE4gT,GACJh1S,MACEA,EAAKmkN,OACLA,GACEw1J,EAIN,GAAIT,GAAU1pB,GAAO,CACnBx6C,EAAU4kE,eAAiB,KAE7B,GAAI96E,IAAekjC,EAAW,CAC5B23C,EAAUjwB,WAAa,YAClB,CACLiwB,EAAUjwB,WAAa,OAGzB,GAAI1pV,EAAO,CACT,IAAIkpE,EACJ,GAAI41N,IAAekjC,EAAW,CAC5B94P,EAAW41N,EAAW96N,WAAW1gD,SAAStjB,GAC1C,GAAIkpE,EAAU,CACZywS,EAAUzwS,SAAWA,EACrBywS,EAAUjwB,WAAa,aAGpB,GAAI7qV,QAAQ6I,IAAIo3R,EAAW96N,WAAW1sE,UAAW0I,GAAQ,CAC5D25W,EAAUjwB,WAAa,SAG3B,IAAKxgR,GAAY84P,EAAW,CAC1B94P,EAAW84P,EAAUh+P,WAAW1gD,SAAStjB,GACzC,GAAIkpE,EAAU,CACZywS,EAAUzwS,SAAWA,EACrBywS,EAAUjwB,WAAa,YAGpB,GAAI7qV,QAAQ6I,IAAIq3R,EAAc/6N,WAAW1sE,UAAW0I,GAAQ,CAC/D25W,EAAUjwB,WAAa,QAG3B,IAAKxgR,GAAY61N,EAAe,CAC9B71N,EAAW61N,EAAc/6N,WAAW1gD,SAAStjB,GAC7C,GAAIkpE,EAAU,CACZywS,EAAUzwS,SAAWA,EACrBywS,EAAUjwB,WAAa,gBAGpB,GAAI7qV,QAAQ6I,IAAIq3R,EAAc/6N,WAAW1sE,UAAW0I,GAAQ,CAC/D25W,EAAUjwB,WAAa,YAG3B,GAAIvlI,EAAQ,CACV,UAAWA,IAAW,UAAW,CAC/B6wF,EAAU7wF,OAAS,CACjB7tN,KAAM,kBAEH,UAAW6tN,IAAW,SAAU,CACrC6wF,EAAU7wF,OAAS,CACjB7tN,KAAM6tN,GAGV55K,GAAY3xB,GAAG,CACbsnB,QAAS80Q,EAAUmjC,gBAAgBj4S,QACnC8I,SAAU,eACV+G,SAAU,kBACVhqC,QAAStc,QAIf,OAAOkwX,EAETvwX,UAAUgiE,GACRznD,MAAM6nD,UAAUJ,GAChB,GAAI3hE,KAAK6/D,OAAOgpE,UAAW,CACzB7oI,KAAK6/D,OAAOi5H,WAIhBn5L,qBAAqBu6B,GACnB,MAAMn6B,EAAKC,KACT2b,EAAU,GAEZ,IAAK,MAAMoqV,KAAQwpB,GAAO,CACxB,GAAIxvX,EAAGgmW,GAAO,CACZ,MAAMxvV,MACFA,EAAKkpE,SACLA,EAAQwgR,WACRA,EAAUvgI,SACVA,EAAQpjN,QACRA,GACEvc,EAAGgmW,GACP3oT,EAAY,CACV38B,IAAK,QACLi+B,UAAW,CACT/+C,CAACI,EAAG0rL,UAAW,EACf9rL,CAAC,GAAGI,EAAG0rL,YAAYs6K,KAAS,GAE9BrvU,QAAS,CACPqvU,KAAAA,EACAqqB,YAAa,SAASrqB,MAG5B,IAAIxmW,EACJ,MAAM8wX,EAAsB,GAAGpwB,UAC7Bx/K,EAAcvmJ,EAAKm2V,GAErB,GAAI3wJ,EAAU,CACZngO,EAAQmgO,EAAS74N,KAAKyV,GAAWvc,EAAGuc,SAAWvc,EAAI,CACjDJ,CAAC0wX,GAAsB5vM,EACvBuzC,eAAgB95L,EAAK85L,eACrB0wG,iBAAkBxqS,EAAKwqS,iBACvBtnR,UAAAA,QAEG,CACL79C,EAAQkhL,EAAYlqK,GAEpB,IAAKkpE,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAAS5yE,QAAU,SAAW6yN,EAAU,CAC/FngO,EAAQsgC,GAAW/C,OAAOv9B,EAAOQ,EAAG8/D,OAAO88Q,uBACtC,CACLp9U,EAAQ6K,EAAaY,WAAWzL,IAGpC69C,EAAUuL,KAAOppD,GAAS,IAC1Boc,EAAQnd,KAAK4+C,IAGjB,OAAOzhC,EAEThc,cAAcgc,EAASue,GACrB,MAAMn6B,EAAKC,KACTswX,EAAUvwX,EAAG8/D,OAAO+qP,kBAAkB2lE,sBAAsB,eAC9D,IAAK,MAAMp4W,KAAUwD,EAAS,CAC5B,GAAIg0W,GAAYx3W,EAAOue,QAAQqvU,MAAO,CACpC,IAAIp9S,KACFA,GACExwC,EACJ,IAAIrZ,EAAS,EAEb,GAAIiB,EAAG8vX,kBAAoB,WAAY,CAErC,GAAIlnU,EAAK/8C,SAAS,KAAM,CACtB+8C,EAAO1Q,GAAUu4U,UAAU7nU,GAE7B7pD,EAAS6pD,EAAK7pD,OAASiB,EAAG+vX,eAAiB,OAGxC,CACH,MAAMr5U,EAAU12C,EAAG0wX,sBAAwB1wX,EAAG0wX,oBAAsBx4U,GAAU72C,cAAc,CAC1Fs9C,UAAW,mCACXpsC,OAAQvS,EAAG8/D,OAAOo/R,oBAGpBxoT,EAAQgS,cAAgB,KACxB8xD,GAAQ+K,KAAK,CACX1jE,cAAenL,EACfwrT,aAAc,KACd7kT,UAAW,CACTiK,SAAU,CAAClvC,MAGfrZ,EAAS23C,EAAQkd,kBAAkB3Q,YAGrC,MAAMlf,EAAKhlC,EAASwxX,EAEpB,OAAQn4W,EAAOue,QAAQqvU,MACrB,IAAK,SACH7rU,EAAK4xS,SAAWhoS,EAChB,MACF,IAAK,QACH5J,EAAKynT,OAAS79S,EACd,SAKVnkC,qBAAqBu6B,GACnB,IAAIw2V,EACJ,IAAK1wX,KAAK4/D,aAAe8wT,EAAoBx2V,EAAKumJ,eAAiB,MAAQiwM,SAA2B,GAAKA,EAAkBr5C,qBAAsB,CACjJ,MAAM17T,EAAU3b,KAAK2wX,qBAAqBz2V,GAC1C,GAAIw1V,GAAY1vX,KAAK6vX,iBAAkB,CACrC7vX,KAAK4wX,cAAcj1W,EAASue,GAE9BA,EAAK22V,gBAAgBryX,QAAQmd,IAGjChc,wBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAK6/D,OAAO27S,yBAGhB77W,uBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAK6/D,OAAO27S,0BAKlBoU,GAAOhuT,aAAe,eACtBguT,GAAO1nX,OAAS,SAChBijO,GAAmB2F,gBAAgB8+I,GAAQ,MAAO,aAiClD,MAAMkB,WAAuBvwB,GAAmB//U,MAAM2kU,GAAsBknC,KAI1ExqW,2BACE,MAAO,CAMLkvW,kBAAmB,KAUnBC,oBAAqB,KACrBjwB,mBAAoB,KACpBiC,gBAAiB,KACjB6pB,sBAAuB,OAK3BltX,YACEK,KAAKixX,iBAAiB,MACtB/2W,MAAM8B,YAER+0W,sBAAsB7zU,GACpBxqC,EAAcuC,UAAU,YAAa,QAAS,iDAC9CjV,KAAK4/D,UAAY1iB,EAEnB6zU,wBACE,OAAQ/wX,KAAK4/D,SAEfjgE,gBAAe8E,KACbA,IAEA,IAAKzE,KAAKwd,eAAiB/Y,IAAS,YAAa,CAC/CzE,KAAK84L,WAKTn5L,gBAAgB4rG,GACdrxF,MAAMorU,gBAAgB/5O,GACtBvrG,KAAKixX,iBAAiB1lR,EAAQ65M,mBAC9B75M,EAAQp8E,GAAG,CACT1qB,KAAM,UACNysX,eAAgB,IAAMlxX,KAAKixX,iBAAiB1lR,EAAQ65M,mBACpD9oS,QAAStc,OAKbL,6BAA6B4b,GAC3Bvb,KAAKmxX,wBAA0B,KAC/B,OAAOj3W,MAAMk3W,6BAA6B71W,GAI5C5b,iBAAiBswS,GACf,MAAMlwS,EAAKC,MACTurG,QACEA,EAAO1rC,OACPA,GACE9/D,EACNA,EAAGwpE,gBAAgB,YACnBxpE,EAAG8sX,sBAAwB,MAC3B,GAAI58E,EAAU,CAEZlwS,EAAGqtX,uBACHn9E,EAAS0E,cAAcxlR,GAAG,CACxB1qB,KAAM,WACN2gF,OAAQ,IAAMrlF,EAAGgd,YAAW,IAAMhd,EAAG+4L,WAAW,KAKpD,GAAIj5H,EAAOg2O,gBAAkBh2O,EAAO0rC,QAAQsiN,wBAA0BhuP,EAAO1mD,aAAc,CACzFpZ,EAAG+4L,eAGA,IAAKvtF,EAAQrvF,YAAa,CAC7Bnc,EAAGwpE,gBAAgB,0BACnBgiC,EAAQp8E,GAAG,CACT1qB,KAAM,yBACN9E,SAAQkmT,aACNA,IAGA,GAAIA,IAAiB,MAAO,CAC1B9lT,EAAG+4L,UACH/4L,EAAGwpE,gBAAgB,4BAGvBjtD,QAASvc,KAIfkwS,eACE,IAAIgG,EACJ,OAAQA,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAcmP,kBAItGisE,6BAEE,IAAKrxX,KAAKmxX,wBAAyB,CACjCnxX,KAAKmxX,wBAA0BtxV,GAAWqI,GAAG,KAAM,EAAGloC,KAAK6/D,OAAOkoP,SAAS9/Q,MAE7E,OAAOjoC,KAAKmxX,wBAadxxX,kBAAkBoyL,GAEhB,OAAO73K,MAAM0oV,kBAAkB7wK,MAAY/xL,KAAKgxX,qBAAuBj/L,EAAM20I,YAAc1mU,KAAKqxX,wBAGlG55C,iBACE,MAAM13U,EAAKC,KACX,IAAKD,EAAG0hW,YAAa,CACnB1hW,EAAG0hW,YAAc1hW,EAAG0tX,sBAAsB1tX,EAAGkwS,UAE/C,OAAOlwS,EAAG0hW,aAIdviW,EAAgB4xX,GAAgB,QAAS,kBACzC5xX,EAAgB4xX,GAAgB,eAAgB,CAC9CrwT,MAAO,CAAC,UAAW,kBAAmB,qBAAsB,iBAAkB,iCAEhFqwT,GAAe5oX,OAAS,iBACxBijO,GAAmB2F,gBAAgBggJ,GAAgB,MAAO,aAC1D3lJ,GAAmB2F,gBAAgBggJ,GAAgB,KAAM,CAAC,eAAgB,QAAS,sBA6BnF,MAAMQ,WAAY5xT,GAGhBw/F,qBACE,MAAO,mCAAmCl/J,KAAKuxX,eAAiB,kDAAoD,KAItH/wT,0BACE,MAAO,CACLC,MAAO,CAAC,uBAIZ9gE,oBAAmBujJ,OACjBA,EAAMliG,QACNA,EAAOriD,OACPA,EAAMsiD,QACNA,EAAOC,QACPA,IAEA,MAAMnhD,EAAKC,MACT6/D,OACEA,GACE9/D,EACJyxX,EAAc3xT,EAAOkyD,SAAS0/P,UAAY5xT,EAAOkyD,SAAS2/P,UAC1DC,EAAoB9xT,EAAOgZ,YAAc24S,IAAgB,MAAQA,SAAqB,GAAKA,EAAYpxT,SAEzG,GAAIpf,GAAWkiG,IAAW,GAAKnjJ,EAAG6/D,SAAU,CAC1C,OAGF,GAAIjhE,EAAO2D,QAAQvC,EAAGm/J,iBAAmByyN,GAAqBhzX,EAAOslD,QAAQ4b,EAAO0rR,eAAgB,CAClGxrV,EAAG6xX,OAAS3wU,EACZlhD,EAAG8xX,OAAS3wU,EACZnhD,EAAGw3O,SAAWx3O,EAAGwxX,gBAAkB5yX,EAAOslD,QAAQ,+BAClDlkD,EAAGkoN,cAAgBnnK,GAAY3xB,GAAG,CAChCsnB,QAASt1C,SACT+5I,UAAW,cACX70F,QAAS,YACT/pC,QAASvc,KAIfJ,YAAYwwB,GACV,MAAMpwB,EAAKC,MACT6/D,OACEA,GACE9/D,EACJ+xX,EAAYjyT,EAAO6uR,gBAAgBprO,WACnCuiK,EAAYhmN,EAAOyjD,WACnBn/G,EAAIgsB,EAAM8wB,QACVzc,EAAIrU,EAAM+wB,QACZ/wB,EAAM21B,iBACN,GAAI/lD,EAAGsiH,WAAaxiD,EAAOopP,aAAelpT,EAAGw3O,UAAW,CACtDsuC,EAAU1iK,SAAS,EAAGpjH,EAAG8xX,OAASrtV,GAEpC,GAAIzkC,EAAGi6C,aAAe6lB,EAAOurR,eAAiBrrV,EAAGw3O,UAAW,CAC1Du6I,EAAU3uQ,SAASpjH,EAAG6xX,OAASztX,GAEjCpE,EAAG6xX,OAASztX,EACZpE,EAAG8xX,OAASrtV,EAEd7kC,YACEK,KAAKioN,gBACLjoN,KAAKioN,cAAgB,KAOvB30C,eACE,OAAOpzK,QAAQF,KAAKioN,gBAIxB/oN,EAAgBoyX,GAAK,QAAS,OAC9BpyX,EAAgBoyX,GAAK,eAAgB,CAMnCt3U,WAAY,KAMZqoE,SAAU,KAMVkvQ,eAAgB,OAElBD,GAAIppX,OAAS,MACbijO,GAAmB2F,gBAAgBwgJ,GAAK,MAAO,CAAC,YAAa,UA0G7D,MAAMS,WAA2BzzB,GAG/B99R,0BACE,MAAMwxT,EAAc93W,MAAMsmD,aAC1B,OAAO9hE,EAAeA,EAAe,GAAIszX,GAAc,GAAI,CACzDtxT,SAAU,CAAC,uBAAwBsxT,EAAYtxT,UAC/CtpD,OAAQ,CAAC,iCAAkC,2CAK/CzX,wBAAwB01F,GACtB,IAAI48R,EACJ,MAAMlyX,EAAKC,MACT6/D,OACEA,GACE9/D,GACLkyX,EAAwBlyX,EAAGmyX,uBAAyB,MAAQD,SAA+B,OAAS,EAAIA,EAAsBprX,KAAK9G,GACpIA,EAAGmyX,oBAAsB,KACzB,GAAI78R,EAAQ,CACV,SAAS88R,IACPpyX,EAAGmyX,oBAAsBpxU,GAAY3xB,GAAG,CACtCsnB,QAASopB,EAAOo/R,iBAChB1/S,SAAU,IAAIx/C,EAAG4+V,WACjBv4S,UAAW,wBACXC,QAAS,wBACTngD,MAAO,wBACPogD,SAAU,wBACVC,YAAa,wBACbC,UAAW,wBACXC,SAAU,wBACVnqC,QAASvc,IAGb8/D,EAAO62N,YAAYy7F,GAErBtyT,EAAOppB,QAAQmI,UAAU8X,OAAO,mCAAoCx2D,QAAQm1F,IAG9E11F,gBAAgB4rG,GACd,MAAMxrG,EAAKC,MAEP6/D,OAAQ0rP,GACNxrT,EACNma,MAAMorU,gBAAgB/5O,GACtB,IAAKA,EAAQ4sO,uBAAwB,CACnC5sO,EAAQ4sO,uBAAyB5sB,EAAU4sB,wBAA0B,IAAIb,GAAuB,CAC9F3+T,MAAO5Y,IAET,MAAMm8P,YACJA,GACEqvD,EACJ,GAAIrvD,IAAgBA,EAAYi8E,uBAAwB,CACtDj8E,EAAYi8E,uBAAyB5sO,EAAQ4sO,wBAGjD,MAAMvsQ,EAAQ2/B,EAAQ4sO,uBACtB,IAAKp4U,EAAGqyX,mBAAoB,CAE1B,GAAI7mE,EAAU6sB,mBAAoB,CAChCxsQ,EAAM7sD,IAAIwsS,EAAU6sB,2BACb7sB,EAAU6sB,mBAGnBn6U,OAAOoB,eAAeksT,EAAW,qBAAsB,CACrD75S,IAAK,IAAMk6D,EAAMqG,QACjB3gE,IAAK8mU,GAAsBxsQ,EAAM1xC,KAAOk+S,IAE1Cr4U,EAAGqyX,mBAAqB,KAG1B,IAAKxmT,EAAM0pO,cAAe,CACxB1pO,EAAM0pO,cAAgB/pM,EAAQ+pM,cAEhCv1S,EAAGwpE,gBAAgB,SACnBqC,EAAMz8C,GAAG,CACP1qB,KAAM,QACN2gF,OAAQrlF,EAAGqgO,cACX9jN,QAASvc,IAKbJ,+BAA+BisE,GAC7B5rE,KAAKslV,gBAAgBtlV,KAAKurG,SAC1BvrG,KAAK6/D,OAAOi5H,UAEdltH,YACE,OAAO5rE,KAAKurG,QAAQ4sO,uBAiFtBx4U,sBAAsBk9I,GACpB,MAAM98I,EAAKC,KACT++V,EAAeliN,EAASl+I,OAAOslD,QAAQ,IAAIlkD,EAAG4+V,YAChD,GAAII,EAAc,CAChB,IAAIszB,EACJ,MAAMjlW,GAAailW,EAAwBvxU,GAAYwxU,aAAaz1O,EAAShwI,SAAW,MAAQwlX,SAA+B,EAAIA,EAAwBjoX,EAAaK,WAAWoyI,EAAShwI,MAC1L0lX,EAA0BxyX,EAAGo/V,+BAA+BJ,GAC9Dh/V,EAAG8/D,OAAOtyC,QAAQ,oBAAsBH,EAAW,CACjD4uI,QAASj8J,EACTwyX,wBAAAA,EACAv+J,eAAgBj0N,EAAG8/D,OAAOy1O,cAAczoO,QAAQ0lT,EAAwB/yE,YACxE3iK,SAAAA,KAKNl9I,kBAAkBhB,GAChB,IAAIwoM,EAAOnnM,KAAKihE,WAAWk6R,kBAAkBx8V,GAC7C,IAAKwoM,GAAQnnM,KAAKwyX,kBAAmB,CACnC,MAAM3yT,OACFA,GACE7/D,KACJ++V,EAAepgW,EAAOslD,QAAQ,IAAIjkD,KAAK2+V,YACzCx3J,EAAO43J,GAAgBl/R,EAAOknI,QAAQ,CACpCv0H,OAAQ3S,EAAOurR,aAAe2T,EAAax2S,YAAY4xP,SAAWt6O,EAAO+L,MAAMtgC,MAC/EyrK,OAAQl3I,EAAO2kL,iBAGnB,OAAOr9C,EAqBTxnM,kBAAkBw6S,EAAUlsR,GAC1B,MAAMwpT,WACJA,GACEt9B,EAASzkO,UAEb,GAAI+hQ,IAAe,MAAQA,SAAoB,GAAKA,EAAW34U,SAAWkB,KAAK4/D,SAAU,CACvF,MAAMzyB,UACJA,EAASC,QACTA,GACEptC,KAAK6/D,OACT43Q,EAAWz4U,SAAQuhL,IAEjB,GAAIA,EAAUw/I,YAAa,CACzB9xS,EAAOzvB,QAAQ+hL,EAAUghJ,2BAA2Bp0R,EAAWC,QAC1D,CACLnf,EAAOzvB,KAAK+hL,OAIlB,OAAOtyJ,EAETtuB,cAAc8gL,GACZ,OAAOA,EAAY42J,sBAAwB52J,EAAY6C,eAAiB7C,EAAYgyM,yBAgCtF9yX,YACE,IAAIiiX,EACJ,KAAMA,EAAc5hX,KAAK4rE,SAAW,MAAQg2S,SAAqB,OAAS,EAAIA,EAAYjpW,SAAW3Y,KAAM,CACzGA,KAAK4rE,MAAM7vD,UAEb7B,MAAM8B,aAIV9c,EAAgB6yX,GAAoB,QAAS,sBAC7C7yX,EAAgB6yX,GAAoB,eAAgB,CAClDpzB,SAAU,0BAOV6zB,kBAAmB,MAMnBxiO,SAAU,IAEZ+hO,GAAmBnwT,aAAe,GAClCmwT,GAAmB7pX,OAAS,qBAC5BijO,GAAmB2F,gBAAgBihJ,GAAoB,MAAO,aA8G9D,MAAMW,WAAqBrzB,GAEzBtxV,mBACE,MAAO,eAET8T,2BACE,MAAO,CACLhV,KAAM,WAyBNoW,MAAO,KAgCP64I,aAAc,MAGlBt7F,0BACE,MAAMroD,EAAS+B,MAAMsmD,aACrBroD,EAAOsoD,MAAMjiE,KAAK,wBAClB,OAAO2Z,EAyCTxY,eAAei9J,GACb,MAAM/8F,OACFA,GACE7/D,MACJ4hD,cACEA,EAAaoyK,eACbA,GACEp3D,EACJuyN,EAAmBtvT,EAAOyrR,uBAAuBvzS,SAAS6J,GAC5D,OAAQA,EAAcqC,QAAQ4b,EAAO0rR,gBAAkB4jC,KAAsBn7J,GAAkBA,EAAe3tI,cAEhH1mF,iBAAiBwwB,GAEf,GAAI8nB,GAAU2jH,WAAWzrI,GAAQ,CAC/B,IAAIwiW,EAAuBC,EAC3B,MAAM/yT,OACFA,GACE7/D,KACJkxO,GAAYyhJ,EAAwB9yT,EAAOsxK,wBAA0B,MAAQwhJ,SAA+B,OAAS,EAAIA,EAAsB9rX,KAAKg5D,EAAQ1vC,GAC5JqM,GAAQo2V,EAAwB/yT,EAAOgzT,uBAAyB,MAAQD,SAA+B,OAAS,EAAIA,EAAsB/rX,KAAKg5D,EAAQ1vC,EAAO,SAE9J6jM,EAAiBn0J,EAAOo1R,sBAAsB9kU,IAAU0vC,EAAOopP,YAAcppP,EAAOy1O,cAAclvQ,KACpG,OAAO4K,GAAa55B,OAAO8C,MAAMqhJ,iBAAiBprI,GAAQ+gN,EAAU,CAClE10M,KAAAA,EACAw3L,eAAAA,IAGJ,OAAO7jM,EAETxwB,sBAAqBsjB,MACnBA,EAAK+wM,eACLA,EAAcx3L,KACdA,IAEA,MAAMqjC,OACJA,GACE7/D,KAEJ,IAAK6/D,EAAOgZ,UAAYhZ,EAAOw1O,WAAY,CACzCpyR,EAAMigT,SAAW,CACfj4T,KAAM,6BACN2kH,KAAM,oBACNhwD,UAAWo0J,GAAkBA,EAAen7I,WAAam7I,EAAesqG,cAAc9hS,GACtFi3F,OAAQ,IACR9zH,SACEkgE,EAAOizT,YAAYt2V,EAAMw3L,EAAgBn0J,EAAOykK,UAAUtQ,QAMpE0+J,GAAa9wT,aAAe,GAC5B8wT,GAAaxqX,OAAS,eACtBijO,GAAmB2F,gBAAgB4hJ,GAAc,KAAM,aAoEvD,MAAMK,WAAwBrzT,GAE5B3xD,mBACE,MAAO,kBAETvO,0BACE,MAAO,CACLwzX,gBAAiB94V,GAAQ,mCAAmCA,EAAKzlB,gBAMjEw+W,sBAAuB,MAI3BzyT,0BACE,MAAO,CACLC,MAAO,CAAC,YASZ9gE,SAAQipI,WACNA,IAEA,IAAKA,EAAY,CACf,OAEF,MAAM7oI,EAAKC,MACT6/D,OACEA,GACE9/D,EACN,GAAI8/D,EAAOzgD,gBAAkBrf,EAAGkzX,wBAA0BrwX,UAAW,CACnE7C,EAAGkzX,sBAAwB,KAE7B,IAAIC,EACJ,MAAM1pM,EAAMzpL,EAAGozX,SAAW,IAAI55P,GAAQ76H,EAAeA,EAAe,CAClEiM,GAAI,GAAGk1D,EAAOl1D,kBACdmL,IAAK,oBACLyxK,UAAW,KACXJ,WAAY,EACZE,UAAW,IACXlgD,YAAa,KACbF,WAAYpnE,EAAOyrR,uBACnBpkK,eAAgB,MAChBH,WAAY,KACZC,yBAA0B,KAG1B5wD,cAAe,MACf9+D,YAAa,MACb4vE,YAAa,wNAEb7sF,YAAa,KACbysI,QAAS/mL,EAAG+0W,gBAAgB9/V,KAAKjV,GACjCJ,oBAAoBwwB,GAGlB,GAAIq5J,EAAIviD,WAAWlvF,SAAS5nB,EAAMA,MAAMxxB,QAAS,CAC/Cu0X,EAAiBpyU,GAAY3xB,GAAG,CAC9BsnB,QAASopB,EAAOyrR,uBAChBpwM,UAAWl3I,GAAKwlL,EAAI4pM,sBAAsBpvX,GAC1Cw7C,QAAS,OAGb,MAAMk3E,EAAgB8yD,EAAI9yD,cAC1B8yD,EAAI9yD,cAAgB,MACpB8yD,EAAIn5K,YAAYxC,UAAU6qJ,oBAAoB7xJ,KAAK2iL,EAAKr5J,GACxDq5J,EAAI9yD,cAAgBA,IAErB32H,EAAGoY,QAAS,GAAI,CACjBkV,UAAWttB,EAAG0tB,uBAGhB+7J,EAAIr6J,GAAG,CACLxvB,aAAYwwB,MACVA,IAEA,MAAMkjW,EAAiB,YAAaljW,EAAQA,EAAMkrH,QAAU,EAAIlrH,EAAM2X,MAAQ,EAG9E,IAAKurV,GAAkBH,EAAgB,CACrCA,IAGF,OAAQnzX,EAAG6/D,WAAayzT,GAE1B1zX,iBAAgBZ,OACdA,IAEAgB,EAAGwsV,cAAcM,oBAAoB9tV,EAAO03C,QAAS12C,EAAGuzX,aAI5DzzT,EAAO1wC,GAAG,CACRqmV,wBAAyB,YACzBl5V,QAASvc,IAEXA,EAAGwsV,cAAgB,IAAI9C,GAAc,CACnCl+B,UAAW1rP,IAIflgE,8BACAA,YACE,GAAIK,KAAKmzX,SAASvoU,UAAW,CAC3B5qD,KAAKmzX,SAASzqM,iBAGlB/oL,YACEK,KAAKy/V,kBAAkB,gBAAiB,YACxCvlV,MAAM8B,YASRrc,iBAAgB6pL,IACdA,EAAGr5J,MACHA,IAEA,MAAMpwB,EAAKC,KACTurT,EAAYxrT,EAAG8/D,OACfrjC,EAAOrM,GAASo7R,EAAUsnE,oBAAoB1iW,EAAO,QAAS,MAChE,IAAIw4B,EAAO5oD,EAAGwzX,SAEd,GAAI/2V,GAAQrM,EAAMxxB,OAAQ,CACxB,MAAMq1N,EAAiBu3F,EAAU0pC,sBAAsB9kU,GAEvD,GAAI6jM,IAAmBx3L,EAAOz8B,EAAGuzX,WAAa,GAAKt/J,EAAerpN,KAAO5K,EAAGyzX,gBAAiB,CAC3F,GAAIzzX,EAAGkzX,sBAAuB,CAC5B,MAAM30D,EAAgBtqG,EAAesqG,cAAc9hS,GACnDgtJ,EAAI/yI,QAAQmI,UAAU8X,OAAO,qBAAsB4nQ,GAErDv+T,EAAGyzX,eAAiBx/J,EAAerpN,GACnCg+C,EAAO5oD,EAAGwzX,SAAWxzX,EAAG0zX,mBAAmB,CACzCj3V,KAAAA,EACArM,MAAAA,EACA6jM,eAAAA,SAGC,CACLxqC,EAAI73D,OACJ5xH,EAAGuzX,SAAW,KACdvzX,EAAGyzX,eAAiB,KAEtB,OAAO7qU,EAWThpD,oBAAmB68B,KACjBA,EAAIrM,MACJA,EAAK6jM,eACLA,IAEA,MAAMj0N,EAAKC,KACT0zX,EAAY3zX,EAAGwsV,cAAconC,gBAAgB,CAC3Cn3V,KAAMA,EACNvxB,KAAMlL,EAAG8/D,OAAOkzR,iBAAiBv2T,KAEnCo3V,EAAc7zX,EAAGizX,gBAAgB,CAC/Bv+W,QAAS1U,EAAG8zX,QAAQr3V,EAAMrM,EAAO6jM,IAAmB,KAExDj0N,EAAGuzX,SAAW92V,EACd,OAAOk3V,EAAYE,EASrBj0X,QAAQ68B,EAAMrM,EAAO6jM,KAIvB++J,GAAgBnxT,aAAe,gBAC/BmxT,GAAgB7qX,OAAS,kBACzBijO,GAAmB2F,gBAAgBiiJ,GAAiB,KAAM,aAC1D5nJ,GAAmB2F,gBAAgBiiJ,GAAiB,MAAO,uBA0B3D,MAAMe,WAAwBp0T,GAiD5B3xD,mBACE,MAAO,kBAET8T,2BACE,MAAO,CAQLo5H,aAAc,gBAMdwlC,YAAa,KAMblqK,MAAO,OAMPwhR,aAAc,MAGlBv3N,0BACE,MAAO,CACLC,MAAO,CAAC,kBAAmB,cAK/B9gE,UAAU4rT,EAAWpzS,GACnB,MAAMpY,EAAKC,KACXD,EAAGwrT,UAAYA,EACfA,EAAUsxC,UAAY98V,EACtBma,MAAMsB,UAAU+vS,EAAWpzS,GAC3BpY,EAAG+8V,wBAA0BvxC,EAAUp8R,GAAG,CACxCxvB,CAACI,EAAGk7I,cAAe,EACjBwlC,YAAAA,EACAszK,aAAAA,KACIh0V,EAAGsrX,UAAU5qM,EAAaA,EAAY05H,SAAU45C,GACtDggC,cAAeh0X,EAAGi0X,gBAClB13W,QAASvc,IAGbJ,YACE,IAAIu2O,EACJl2O,KAAK88V,2BACJ5mH,EAAel2O,KAAK06N,UAAY,MAAQwb,SAAsB,OAAS,EAAIA,EAAan6N,UACzF7B,MAAM8B,YAERq5R,iBACE,OAAOr1S,KAAKurT,UAAUlW,WAUxB11S,UAAU8gL,EAAauzC,EAAgBv9K,GACrC,MAAM12C,EAAKC,KACTurT,EAAYxrT,EAAGwrT,WACfsxC,UACEA,GACE98V,EAAG8/D,OAAOkyD,SAEhB,GAAIw5L,EAAU1yO,UAAY94E,EAAG6/D,UAAY6gH,EAAY5nG,UAAYgkR,IAAcA,EAAUj9R,WAAa6gH,EAAYnjG,WAAY,CAC5H,OAIF7mC,EAAUwB,GAAUmzF,KAAK30F,EAAS80Q,EAAUqtC,qBAAuBniT,EACnEgqI,EAAcA,EAAY86I,aAAe96I,EAAYtwJ,MAAQswJ,EAC7D1gL,EAAGo6S,SAAWnmF,EACdj0N,EAAGowB,MAAQswJ,EACX1gL,EAAG02C,QAAUA,EACb80Q,EAAU90Q,QAAQmI,UAAU7/B,IAAI,yBAChC,GAAIhf,EAAG26N,OAAQ,CAGb36N,EAAG26N,OAAO3gN,OAAOwxS,EAAU+/B,4BACtB,CAGLvrV,EAAG26N,OAASrmB,GAAOxjF,IAAI,CACrBl4G,MAAO4yS,EAAUmjC,gBACjBz4N,SAAUs1L,EAAU+/B,uBACpB70N,aAAc,UACdpgF,MAAO,CACLA,MAAO,OAETvgC,IAAK,sBACLuX,UAAW,CACT6rH,SAAU,mBACVvxH,OAAQ,iBACRrL,QAASvc,GAGX6rI,kBAAmB5Z,GAAYA,EAASkrB,mBACvCn9I,EAAGg4R,cACNh4R,EAAGikM,YAAYjkM,EAAG26N,OAAQ,CAAC,cAAe,QAAS,iBAAkB,WAAY,eAAgB,WAInG,GAAIj6C,EAAYnjG,WAAY,CAC1BmjG,EAAYh8K,KAAO,GAErB1E,EAAG26N,OAAOwU,UAAU,CAClBvwO,OAAQ83C,EACR+7B,OAAQiuG,EACRlqK,MAAOxW,EAAGwW,QAGZxW,EAAGwrT,UAAU1rT,UAAU+/D,SAAW,KAEpCjgE,mBAEEK,KAAKmwB,MAAMmtD,WAAa,MACxBt9E,KAAKk7F,QAEPv7F,iBAEE,GAAIK,KAAKmwB,MAAMmtD,WAAY,CACzBt9E,KAAKmwB,MAAMruB,SAEb9B,KAAKk7F,QAEPv7F,QACEK,KAAKurT,UAAU90Q,QAAQmI,UAAU98C,OAAO,yBAExC9B,KAAKurT,UAAU1rT,UAAU+/D,SAAW,MACpC5/D,KAAKmwB,MAAQ,KACbnwB,KAAKm6S,SAAW,KAIlBx6S,iBAAgB+kU,iBACdA,EAAgBjkJ,YAChBA,IAEA,MAAMhqI,EAAUiuR,EAAmB1kU,KAAKurT,UAAUsmD,+BAA+BntC,GAAoB1kU,KAAKurT,UAAUm8C,0BAA0BjnL,GAC5IuzC,GAAkB0wG,GAAoBjkJ,GAAa05H,SACrDn6S,KAAKqrX,UAAU5qM,EAAauzC,EAAgBv9K,GAG9C92C,iBAAgB8gL,YACdA,EAAWuzC,eACXA,EAAc+/H,aACdA,IAEA/zV,KAAKy2C,QAAUs9S,EACf/zV,KAAKqrX,UAAU5qM,EAAauzC,EAAgB+/H,IAGhD+/B,GAAgB5rX,OAAS,kBACzBijO,GAAmB2F,gBAAgBgjJ,GAAiB,MAAO,aAK3D,MAAMG,GAAc,CAClB/sX,MAAO,EACPD,OAAQ,GAeV,MAAMitX,WAAqBx0T,GACzB//D,UAAU4rT,EAAWpzS,GACnB+B,MAAMsB,UAAU+vS,EAAWpzS,GAC3B,GAAIozS,EAAUtC,WAAY,CACxBjpT,KAAK00F,SAAW,IAAI71E,IACpB0sS,EAAUp8R,GAAG,CACX4xF,OAAQ,oBACRzkG,QAAStc,KACT6sB,KAAM,OAIZltB,qBAAqBqzN,GACnB,GAAIhzN,KAAK6/D,OAAOurR,aAAc,CAC5Bp4H,EAAW84E,WAAW,oBAAsB94E,EAAWvyC,YAAY0zM,iBAAmB,UACjF,CACLn0X,KAAKo0X,yBAAyBphK,EAAYpwN,UAAW,MACrD5C,KAAKq0X,gBAIT10X,oBACE,IAAKK,KAAK4/D,SAAU,CAClB5/D,KAAKs0X,qCAAqCt0X,KAAK6/D,SAGnDlgE,eACE,IAAK,MAAM40X,UACTA,EAASlzX,MACTA,KACGrB,KAAK00F,SAAU,CAClBz8C,GAAU2Z,WAAW2iU,EAAWlzX,GAElCrB,KAAK00F,SAASj2C,QAEhB9+C,qCAAqC4rT,GACnC,MAAMipE,YACJA,GACEjpE,EAAUpjG,mBACd,IAAK,MAAMo7F,KAAcixE,EAAY3oX,SAAU,CAC7C,IAAK,MAAMmnN,WACTA,EAAU+5F,cACVA,KACG9uT,OAAO4N,OAAO03S,GAAa,CAC9B,MAAMhoS,EAAO,CAACy3M,GACd,GAAI+5F,GAAiB/5F,EAAWvyC,YAAY42J,oBAAqB,CAC/D97T,EAAK/c,KAAKuuT,EAAc1lQ,SAAS,IAEnCrnD,KAAKo0X,yBAAyB31X,MAAMuB,KAAMub,IAG9Cvb,KAAK00F,SAASnjF,MAAQvR,KAAKq0X,eAE7B10X,yBAAyBqzN,EAAY6rI,EAAe7rI,EAAW6rI,aAAc41B,EAAmB,OAC9F,GAAIz0X,KAAK4/D,UAETozJ,EAAWvyC,YAAY0zM,iBAAmB,MAAO,CAC/C,OAEF,MAAMt0T,OACFA,GACE7/D,MACJygL,YACEA,EAAWuzC,eACXA,EAAcuhI,eACdA,EAAcm/B,iBACdA,EAAgBC,kBAChBA,EAAiBx/U,IACjBA,EAAGluC,OACHA,GACE+rN,EACJ4hK,EAAiB/0T,EAAOyjD,WAAW9+E,EACnCqwV,EAAYJ,EAAmB,KAAO50T,EAAO6nS,0BAA0BjnL,EAAauzC,EAAgB,MACpGugK,EAAYM,GAAat6Q,GAAQzqD,SAAS+kU,EAAW,iBACrD10W,EAAOsgK,EAAYlxG,aAAa1P,GAChCx+D,SAAew9V,EAAax9V,QAAU,SAAWw9V,EAAax9V,MAAQ42C,GAAU6jE,WAAW+iP,EAAax9V,OAASw9V,EAAax9V,QAAUw9V,EAAax9V,MAAQ,IAE/J,GAAIwzX,IAAc,MAAQA,SAAmB,GAAKA,EAAUj2U,UAAU7G,SAAS,cAAe,CAC5F,OAEF,IAAIvvB,EAAQ2sB,EACVu3G,EAAczlJ,EACdyc,EAAM8E,EAAQkkI,EAChB,GAAI6oM,EAAgB,CAClB/sU,GAASmsW,EACTjoO,EAAcA,EAAcioO,EAAoBD,EAChDhxW,EAAM8E,EAAQkkI,EAGhB,GAAIlkI,EAAQosW,GAAkBlxW,GAAOkxW,IAAmBn0M,EAAYkgJ,YAAa,CAC/E,MAAMm0D,EAAeP,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAUvxU,YACnF0jG,GAAW6tO,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU9pU,aAAexS,GAAUC,cAAcq8U,EAAU9pU,WAAY,kBACxInlD,EAAIohJ,IAAY,UAAYssE,EAAW9rN,MAAQ4tX,GAAgB,EAAI,EACnE99B,EAAaxuU,EACbyuU,EAAWD,EAAatqM,EAAc,EAKxC,KAAM6nO,GAAaO,IAAiB99B,EAAa49B,GAAkB39B,GAAY29B,EAAgB,CAC7F,MAAMG,EAAY/0X,KAAKg1X,uBAAuBT,GAC5CU,EAAYV,EAAY7nO,EAAc6nO,EAAUn9U,aAAe29U,EAAU9tX,OAAS3B,EAAI2O,OAAO89H,iBAC7FjjG,EAAS16B,KAAKuU,IAAIisW,EAAiB59B,EAAYi+B,EAAY,GAC7D5zX,EAAM8yD,UAAYrlB,EAAS,EAAI,cAAcA,OAAc,GAC3D3uB,EAAK+0W,MAAQ,SACR,CACL7zX,EAAM8yD,UAAY,GAClBh0C,EAAK+0W,MAAQ,MAEf,GAAIX,EAAW,CACbv0X,KAAK00F,SAAS31E,IAAI,CAChBw1W,UAAAA,EACAlzX,MAAAA,UAGC,GAAIkzX,GAAap0W,EAAK+0W,MAAO,CAClC7zX,EAAM8yD,UAAY,GAClBh0C,EAAK+0W,MAAQ,MACbl1X,KAAK00F,SAAS31E,IAAI,CAChBw1W,UAAAA,EACAlzX,MAAAA,KAKN1B,uBAAuB40X,GACrB,GAAIA,IAAc,MAAQA,SAAmB,GAAKA,EAAU31U,UAAU7G,SAAS,uBAAwB,CACrG,OAAOE,GAAU2oJ,YAAY2zL,EAAW,UAE1C,OAAON,GAGTt0X,YACEua,MAAM6nD,aAAaljE,WACnB,IAAKmB,KAAKwd,cAAe,CACvBxd,KAAK6/D,OAAO27S,0BAIlBt8W,EAAgBg1X,GAAc,QAAS,gBACvCh1X,EAAgBg1X,GAAc,OAAQ,gBACtCh1X,EAAgBg1X,GAAc,eAAgB,CAC5CzzT,MAAO,CAAC,0BAEVyzT,GAAahsX,OAAS,eACtBijO,GAAmB2F,gBAAgBojJ,GAAc,KAAM,aACvD/oJ,GAAmB2F,gBAAgBojJ,GAAc,MAAO,qBAWxD,MAAMiB,WAAwBl7H,GAE5BlsP,mBACE,MAAO,kBAETvO,0BACE,MAAO,CAML0mN,YAAa,MAIjB1lJ,0BACE,MAAO,CACLC,MAAO,CAAC,aAAc,kBAK1B9gE,UAAUkgE,EAAQ1nD,GAChB,MAAMpY,EAAKC,KACXka,MAAMsB,UAAUqkD,EAAQ1nD,GACxB,IAAKpY,EAAG2iP,UAAW,CACjB3iP,EAAG2iP,UAAY,CAAC,CACdhjB,SAAU3/N,EAAG2/N,WAKjB,GAAI7/J,EAAOm+R,eAAgB,CACzBj+V,EAAGq1X,cAAcv1T,EAAO0rC,SACxB1rC,EAAO1wC,GAAG,CACRqmV,wBAAyBz1W,EAAGysO,WAC5BlwN,QAASvc,KAMfJ,cAAc4rG,GACZvrG,KAAKupE,gBAAgB,kBACrBgiC,EAAQp8E,GAAG,CACT1qB,KAAM,iBACN21U,UAAW,0BACX99T,QAAStc,OAGbL,aACE,GAAIK,KAAK6/D,OAAOurR,aAAc,CAC5BprV,KAAK6/D,OAAO6uR,gBAAgBv1P,OAAO1iD,QAAQzuC,cAAc,kBAAkB42C,UAAU7/B,IAAI,oBAE3F7E,MAAMsyN,aACN,IAAKxsO,KAAK4/D,SAAU,CAClB5/D,KAAK+Z,UAGTs7W,wBACE,OAAOr1X,KAAK6/D,OAAOppB,QAAQzuC,cAAc,qBAE3CrI,SACE,MAAMI,EAAKC,MAEP6/D,OAAQ8yR,GACN5yV,EACJuqJ,EAAWqoM,EAASvH,aAAe,QAAU,SAC7CqjC,EAAS97B,EAAS/nC,kBAAkBL,aACpC+qE,EAAmBv1X,EAAGs1X,kBACxB,GAAIC,EAAkB,CAEpB,IAAKv1X,EAAGsxN,MAAQtxN,EAAGmmN,aAAenmN,EAAG2iP,UAAU/6O,MAAKwQ,GAAUA,EAAO2wI,QAAQ,CAC3E/oJ,EAAGsxN,KAAO,IAAI93F,GAAQ,CACpB5uH,GAAI,GAAGgoV,EAAShoV,iBAChBmL,IAAK,yBACLqxK,WAAY,EACZE,UAAW,IACXpgD,WAAYquP,EACZpuM,eAAgB,KAChBH,WAAY,MACZ7/C,YAAa,mBACb4/C,QAAS,EACPlgD,aAAAA,KACIA,EAAa2uP,WAGvBD,EAAiB5jU,UAAY+8T,EAAOA,EAAO3vX,OAAS,GAAG+K,KAAI42N,GAAO,uCAAuCn2E,MAAam2E,EAAIv5N,oBAAmB+C,KAAK,IAClJlK,EAAGy1X,2BAOP71X,UACEua,MAAM4+K,UACN94L,KAAKw1X,0BAEP71X,UAAUgiE,GACR,IAAI8zT,EACJ,MAAMj4W,cACJA,GACExd,KAAK6/D,OACT3lD,MAAM6nD,UAAUJ,IACf8zT,EAAsBz1X,KAAK01X,iBAAmB,MAAQD,SAA6B,OAAS,EAAIA,EAAoB/+T,QAAQiL,GAC7H,IAAKnkD,IAAkBmkD,EAAS,CAC9B3hE,KAAK+Z,UAGTpa,YACE,IAAIyuX,GACHA,EAAapuX,KAAKqxN,QAAU,MAAQ+8J,SAAoB,OAAS,EAAIA,EAAWryW,UACjF7B,MAAM8B,aAGVm5W,GAAgBjtX,OAAS,kBA8BzB,MAAMytX,WAAgBR,GAEpBpnX,mBACE,MAAO,UAETvO,0BACE,MAAO,CAwBLkjP,UAAW,KA0BXhjB,SAAU,KAKVk2J,4BAA6B,MAIjCp1T,0BACE,MAAMroD,EAAS+B,MAAMsmD,aACrBroD,EAAOsoD,MAAMjiE,KAAK,YAAa,mBAAoB,uBACnD,OAAO2Z,EAITxY,UAAU4rT,EAAWpzS,GACnB,MAAMpY,EAAKC,KACXD,EAAGwrT,UAAYA,EACf,GAAIA,EAAUtC,WAAY,CACxBsC,EAAUmjC,gBAAgBpsH,UAAY,MACtCnqN,EAAOgiP,YAAc,KACrBoxD,EAAUxsS,IAAIwsS,EAAU5gC,cAAc,UACtC5qR,EAAG21X,cAAgBnqE,EAAUxnH,QAAQhlL,IAAIiyB,GAAa55B,OAAO,CAC3D+qN,WAAY,KACZtG,OAAQ,QACRZ,QAAS,iCACT5kL,MAAO,SACPylL,SAAU,MACVC,UAAW,MACXsG,WAAY,MACZkiB,wBAAyB,MACzB/hJ,OAAQziG,EAAG6/D,UACV7/D,EAAG61X,8BAA8B,GAEtC17W,MAAMsB,UAAU+vS,EAAWpzS,GAG3B,GAAIozS,EAAU6lC,gBAAiB,CAC7BrxV,EAAG81X,iBAAiBtqE,EAAUlW,YAC9Bt1S,EAAG+1X,oBAAoBvqE,EAAUjW,gBAKrC31S,iBAAiB01S,GACfr1S,KAAKupE,gBAAgB,qBACrB8rO,EAAWlmR,GAAG,CACZ1qB,KAAM,oBACNrG,OAAQ,0BACRke,QAAStc,OAGbL,oBAAoB21S,GAClBt1S,KAAKupE,gBAAgB,wBACrB+rO,EAAcnmR,GAAG,CACf1qB,KAAM,uBACNrG,OAAQ,0BACRke,QAAStc,OAObL,0BACE,MAAMI,EAAKC,MAEP6/D,OAAQ8yR,GACN5yV,GACJs1S,WACEA,EAAU0S,SACVA,GACE4qC,EACJ2iC,EAAmBv1X,EAAGs1X,kBACtBU,EAAeh2X,EAAGm6P,cAAgBy4F,EAASz2L,gBAAgBp9J,OAAS6zV,EAASz2L,gBAAkBy2L,EAASr9C,cAAcrjO,QACxH,GAAIqjT,GAAoB3iC,EAAS98C,cAAe,CAI9C,MAAM64E,EAAe/7B,EAASg8B,0BAA0BoH,GAAc,EACpE5lW,MAAAA,MAEQklR,EAAWjpN,YAAcipN,EAAWpjO,QAAQrmE,SAASukB,KAE/D5oB,MAAMyd,KAAKswW,EAAiBjuU,UAAUroD,SAAQ,CAACy3C,EAAS73C,KACtD,MAAM40N,EAAOu0F,EAAS/0N,MAAMp0F,GAC1BqvB,EAASygW,EAAa9vX,IAAM,GAC9B,IAAI+pD,EAAO,GACTmmU,EAAU,WAAW/uX,EAAGo7B,EAAE,iBAAkBw3T,EAASI,iBAAiBv/H,EAAKrmL,uBAC7EptC,EAAG2iP,UAAU1jP,SAAQmZ,IACnB,MAAM5Y,EAAQ4Y,EAAOunN,SAAS,CAC1BvyL,UAAWqmL,EAAKrmL,UAChBC,QAASomL,EAAKpmL,QACdkoQ,cAAeq9C,EAASr9C,cACxBD,WAAAA,EACApnR,OAAAA,EACAwoB,QAAAA,IAEFssM,EAAYxjP,EAAQ,yCAAyCA,UAAgB,GAC/E,GAAIQ,EAAG2iP,UAAU5jP,OAAS,GAAKS,EAAO,CACpCopD,GAAQo6L,EAEV+rI,GAAW/rI,EAAY,UAAU5qO,EAAO2wI,OAAS,aAAei6F,EAAY,MAE9EtsM,EAAQib,UAAY/I,EAEpBlS,EAAQ8+U,SAAW5sU,EAAOmmU,EAAU,QAM5C6G,GAAQztX,OAAS,UACjBijO,GAAmB2F,gBAAgB6kJ,GAAS,MAAO,aAKnD,MAAMK,GAAqB,CACzBC,qBAAsB,MAqIxB,MAAMC,WAA2B7xI,GAE/Bt2O,mBACE,MAAO,qBAET8T,2BACE,MAAO,CA8BLi6I,aAAc,KA0Bd74I,MAAO,KACPpW,KAAM,kBAGV2zD,0BACE,MAAMroD,EAAS+B,MAAMsmD,aACrBroD,EAAOsoD,MAAMjiE,KAAK,8BAClB,OAAO2Z,EAqCTxY,YACEua,MAAMsB,aAAa3c,WACnB,GAAImB,KAAKi7I,aAAarvI,SAAS,UAAY5L,KAAK6/D,OAAOs2T,0BAA2B,CAChFn2X,KAAK6/D,OAAOs2T,0BAA4B,OAG5Cx2X,eAAei9J,GACb,MAAMm6C,OACJA,GACEn6C,EACJ,OAAOm6C,GAAUA,EAAOwtC,0BAA4B,OAASxtC,IAAW/2M,KAAK6/D,OAAO2kL,eAEtF7kP,gBAAgBi9J,GACd1iJ,MAAMuhJ,mBAAmB58J,WACzB,GAAImB,KAAK4nJ,KAAM,CAGb5nJ,KAAK4nJ,KAAKnxB,aAAe,WAG7B92H,4BAA2BsjB,MACzBA,IAEA,MAAMljB,EAAKC,MACT6/D,OACEA,GACE9/D,EACJq2X,EAAW,CACTrsV,UAAW81B,EAAOkoP,SAASo1B,eAC3Bl1S,KAAM43B,EAAOkoP,SAASwzB,WAE1Bt9U,OAAOmZ,OAAO6L,EAAO,CACnBozW,UAAW,CACTprX,KAAM,mBACN8tB,YAAah5B,EACb6vH,KAAM,+BACNhwD,UAAWC,EAAOy8Q,QAAQt4T,OAASjkB,EAAG6/D,SACtC6zD,OAAQ,IACRm0B,KAAM,CACJ/6I,KAAM,QACNoW,MAAO,CACLqzW,WAAY,CACV7iQ,OAAQ,IACR5mH,KAAM,SACNysC,SAAU,IACV2sK,UAAW,QAGftmN,cACEZ,OAAQ6oJ,IAER,MAAO2uO,GAAQ3uO,EAAK3kI,MACpBszW,EAAK5tW,IAAMk3C,EAAO22T,aAClBD,EAAKliX,IAAMwrD,EAAO42T,aAClBF,EAAKh3X,MAAQsgE,EAAOw2T,UAGpBt2X,EAAG22X,cAAgBH,EAAKpnW,GAAG,QAAS,qBAAsBpvB,IAE5DJ,SACE,GAAII,EAAG22X,cAAe,CACpB32X,EAAG22X,gBACH32X,EAAG22X,cAAgB,SAK3BnW,UAAW,CACTt1W,KAAM,qBACN8tB,YAAah5B,EACb6vH,KAAM,4BACN6D,OAAQ,IACRm0B,KAAM,CACJ/6I,KAAM,QACNiJ,IAAK,sCACLmsC,SAAU,CACRlpB,YAAah5B,GAEfkjB,MAAO,CACLqzT,eAAgB,CACdzpU,KAAM,YACNi8I,MAAO,eACPr1B,OAAQ,IACRi4D,WAAY,MACZ4B,SAAU,KACVjoJ,KAAM+wV,EACN/oW,UAAW,CACT+3D,OAAQrlF,EAAG42X,uBACXr6W,QAASvc,IAGbw2U,aAAc,CACZ1pU,KAAM,YACNi8I,MAAO,aACPr1B,OAAQ,IACRi4D,WAAY,MACZ4B,SAAU,KACVjoJ,KAAM+wV,EACN/oW,UAAW,CACT+3D,OAAQrlF,EAAG42X,uBACXr6W,QAASvc,IAGb62X,aAAc,CACZ/pX,KAAM,SACN4mH,OAAQ,IACR39G,IAAK,iBACL85G,KAAM,yBACN1zD,MAAO,kBACPk7D,KAAM,EACN1+E,OAAQ,EACRrrB,UAAW,CACTnnB,MAAOnG,EAAG82X,oBACVv6W,QAASvc,IAGb+2X,SAAU,CACRjqX,KAAM,SACN4mH,OAAQ,IACR39G,IAAK,kBACLomD,MAAO,kBACPjxD,KAAM,eACNmsH,KAAM,EACN1+E,OAAQ,MACRrrB,UAAW,CACTnnB,MAAOnG,EAAGg3X,gBACVz6W,QAASvc,IAGbi3X,cAAe,CACbnqX,KAAM,SACN4mH,OAAQ,IACR39G,IAAK,kBACL85G,KAAM,qBACN1zD,MAAO,kBACPk7D,KAAM,EACN/pG,UAAW,CACTnnB,MAAOnG,EAAGk3X,qBACV36W,QAASvc,KAIfstB,UAAW,CACTstK,MAAO56L,EAAGm3X,oBACV56W,QAASvc,OAMnBJ,oBAAmBJ,MACjBA,IAEA,MAAMQ,EAAKC,KAIXD,EAAG6nJ,KAAKnxB,aAAe,UACvB12H,EAAG8/D,OAAOw2T,UAAY92X,EACtBQ,EAAG6nJ,KAAK7qI,WAAW,CACjB/E,GAAI,IAAMjY,EAAG6nJ,KAAKnxB,aAAe,OACjC35G,MAAO,IACP4R,kBAAmB,OAGvB/uB,qBACEZ,OAAQwhX,EAAS33O,WACjBA,IAEA,GAAIA,EAAY,CACd,MAAM0C,UACJA,GACEi1O,EACJvgX,KAAKs2U,eAAiBhrM,EAAUgrM,eAChCt2U,KAAKu2U,aAAejrM,EAAUirM,aAEhCv2U,KAAKm3X,YAEPx3X,YACE,MAAMI,EAAKC,KACXD,EAAGu2U,eAAe3hQ,gBAClB50E,EAAGw2U,aAAa5hQ,gBAKhB50E,EAAGu2U,eAAe/2U,MAAQQ,EAAGq3X,2BAA6Br3X,EAAG8/D,OAAO1yB,UACpEptC,EAAGw2U,aAAah3U,MAAQQ,EAAGs3X,yBAA2Bt3X,EAAG8/D,OAAOzyB,QAChErtC,EAAGu2U,eAAe1hQ,eAClB70E,EAAGw2U,aAAa3hQ,eAElBj1E,wBAAuBZ,OACrBA,IAEA,MAAMgB,EAAKC,KACTs3X,EAAmBv4X,IAAWgB,EAAGu2U,gBACjCz2Q,OACEA,GACE9/D,GACJgoT,SACEA,GACEloP,EACJ1yB,EAAYptC,EAAGq3X,6BAA+BE,EAAmBv3X,EAAGq3X,2BAA6Br3X,EAAGu2U,eAAe/2U,MACrH,IAAI6tC,EAAUrtC,EAAGs3X,0BAA4BC,EAAmBv3X,EAAGs3X,yBAA2Bt3X,EAAGw2U,aAAah3U,MAG9G,GAAI+3X,EAAkB,CACpBv3X,EAAGq3X,2BAA6B,SAC3B,CACLr3X,EAAGs3X,yBAA2B,KAKhC,KAAMjqV,EAAUD,GAAY,CAC1BC,EAAUvN,GAAW9gB,IAAIquB,EAAS26Q,EAASo1B,eAAgBp1B,EAASwzB,gBAGjE,GAAInuS,EAAUD,EAAW,CAC5BC,EAAUvN,GAAW9gB,IAAIouB,EAAW46Q,EAASo1B,eAAgBp1B,EAASwzB,WAGxE17Q,EAAOuhR,YAAYj0S,EAAWC,EAAS4oV,IACvCj2X,EAAGo3X,YAELx3X,sBACEK,KAAK6/D,OAAOkoP,SAASwvE,gBACrBv3X,KAAKm3X,YAEPx3X,kBACE,MAAMogL,EAAQlgJ,GAAWoL,UAAU,IAAIz8B,MACvCxO,KAAK6/D,OAAOuhR,YAAYrhK,EAAOlgJ,GAAW9gB,IAAIghK,EAAO,EAAG,QACxD//K,KAAKm3X,YAEPx3X,uBACEK,KAAK6/D,OAAOkoP,SAASyvE,YACrBx3X,KAAKm3X,aAGTjB,GAAmBhuX,OAAS,qBAC5BijO,GAAmB2F,gBAAgBolJ,GAAoB,KAAM,CAAC,YAAa,UAC3E/qJ,GAAmB2F,gBAAgBolJ,GAAoB,MAAO,qBAwF9D,MAAMuB,WAAmBl3B,GAAmB//U,MAAM2kU,KAEhDp3U,mBACE,MAAO,aAET8T,2BACE,MAAO,CACL+pD,MAAO,MAKXjsE,YACE,IAAI+3X,GACHA,EAAsB13X,KAAKm7F,iBAAmB,MAAQu8R,SAA6B,OAAS,EAAIA,EAAoB7wX,KAAK7G,MAC1Hka,MAAM8B,YAMRy7T,iBACE,MAAM13U,EAAKC,KACX,IAAKD,EAAG0hW,YAAa,CACnB,MAAM71R,MACJA,GACE7rE,EACJ,IAAIkyE,QACFA,GACErG,EACJ,GAAIA,EAAMy1P,gBAAiB,CACzB,MAAMl0R,UACJA,EAASC,QACTA,GACErtC,EAAG8/D,OAAOkoP,SACd91O,EAAUA,EAAQwqL,SAAQ4oE,IAExB,GAAIA,EAAStF,YAAa,CACxB,OAAOsF,EAAS9D,2BAA2Bp0R,EAAWC,GAExD,OAAOi4R,KAGX,GAAItlU,EAAG43X,gBAAiB,CAEtB,IAAK/rT,EAAMy1P,gBAAiB,CAC1BpvP,EAAUA,EAAQhgE,QAEpBggE,EAAQzzE,KAAKuB,EAAG43X,iBAElB53X,EAAG0hW,YAAcxvR,EAEnB,OAAOlyE,EAAG0hW,YAIZ9hW,sBACE,MAAMI,EAAKC,KACX,GAAID,EAAG43X,kBAAoB53X,EAAG63X,oBAAqB,CACjD,OAEF,MAAM19V,SAAcn6B,EAAG63X,sBAAwB,SAAW73X,EAAG63X,oBAAsB,GACnF73X,EAAG43X,gBAAkB53X,EAAG6rE,MAAM2O,WAAWs2C,IAAI,CAE3ClmH,GAAM,cACNmL,IAAK,sBACJokB,GACHn6B,EAAG83X,oBAAsB93X,EAAGylE,aAAY,IAAMzlE,EAAG+3X,yBAAyB/3X,EAAGg4X,+BAC7Eh4X,EAAG0hW,YAAc,KACjB1hW,EAAG+3X,wBAELn4X,wBACE,MAAMI,EAAKC,MACT23X,gBACEA,GACE53X,EACN43X,EAAgBxqV,UAAY,IAAI3+B,KAChC,IAAKmpX,EAAgBvjT,aAAa3vE,KAAM,CACtCkzX,EAAgBlzX,KAAOo7B,GAAW/C,OAAO66V,EAAgBxqV,UAAWptC,EAAGi4X,mBAEzEj4X,EAAGkhW,eAELthW,sBACE,MAAMI,EAAKC,KACX,IAAKD,EAAG43X,gBAAiB,CACvB,OAEF53X,EAAGukE,cAAcvkE,EAAG83X,qBACpB93X,EAAG43X,gBAAkB,KACrB53X,EAAG+4L,UAELn5L,0BAA0BywH,GACxB,GAAIA,EAAM,CACRpwH,KAAKi4X,0BACA,CACLj4X,KAAKk4X,uBAYTv4X,4BAA2Bo3M,OACzBA,EAAM9zL,MACNA,IAEAA,EAAM00W,gBAAkB,CACtBlkQ,OAAQ,IACRxoH,KAAMjL,KAAKm7B,EAAE,0BACb66H,QAASh2J,KAAK43X,oBACdj6J,SAAU,EACR3nE,QAAAA,MAEAh2J,KAAK43X,oBAAsB5hO,IAMjCr2J,cAAcisE,GACZ,MAAM7rE,EAAKC,KACX,IAAIihW,EAAe,MAEnB,GAAIlhW,EAAGo7F,cAAe,CACpBp7F,EAAGo7F,gBAEH8lQ,EAAe,KAEjBlhW,EAAGo7F,cAAgBvvB,EAAMz8C,GAAG,CAC1Bi2D,OAAQ,gBACR0zG,QAAS,gBACTx8K,QAASvc,IAEXA,EAAG0hW,YAAc,KAEjBR,GAAgBlhW,EAAGkhW,eAOrBr1R,YACE,OAAO5rE,KAAK6/D,OAAO0rC,QAAQ2sO,eAE7Bv4U,YAAYisE,GACV,MAAM7rE,EAAKC,MACT6/D,OACEA,GACE9/D,GACJwrG,QACEA,GACE1rC,EACN+L,EAAQ2/B,EAAQ2sO,eAChBn4U,EAAGo4X,cAAcvsT,GAGjB,GAAI/L,EAAO43Q,aAAe53Q,EAAOu4T,mBAAoB,CACnDxsT,EAAM7sD,IAAI8gD,EAAO43Q,mBACV53Q,EAAO43Q,YAIlB93U,uBAAuBisE,GACrB5rE,KAAK4rE,MAAQA,EAEfjsE,uBAAuB+qD,GACrB,OAAO1qD,KAAK4rE,MAAMiB,QAAQniB,EAAGzG,QAAQjkD,KAAK8gW,cAAcpqU,QAAQ/rB,IAElEhL,eAAckN,KACZA,EAAIulD,OACJA,IAEA,MAAMryD,EAAKC,KAEXD,EAAG0hW,YAAc,KAEjB,GAAI1hW,EAAG6/D,WAAa7/D,EAAG8/D,OAAOjV,WAAa7qD,EAAGyd,eAAiB3Q,IAAS,WAAaulD,IAAW,QAAS,CACvG,OAEFryD,EAAG8/D,OAAOw4T,mBAAkB,IAAMt4X,EAAGkhW,iBAAiBlhW,EAAG8/D,OAAOsoL,kBAIlExoP,YAAYwwB,GACV,MAAMpwB,EAAKC,MACTytE,QACEA,GACEt9C,EACJqiD,EAASzyE,EAAGyhW,uBAAuB/zR,EAAQh3B,QAAQwN,QAAQlkD,EAAG+gW,eAC9Dw3B,EAAcv4X,EAAGw4X,uBAAuB/lT,GAC1C/E,EAAQ2zF,gBAAkB,CAACk3N,GAC3Br6X,OAAOmZ,OAAOq2D,EAAS,CACrB+E,OAAAA,EACA8lT,YAAAA,EACAE,aAAcvgV,GAAUmc,cAAckkU,GACtCG,aAAcxgV,GAAUoc,cAAcikU,KAExCp+W,MAAM88N,YAAY7mN,GAClBpwB,EAAGgvX,QAAQthT,GAEb9tE,OAAOwwB,GACL,MAAMs9C,QACJA,GACEt9C,EACJ,IAAKs9C,EAAQgpE,MAAO,CAClB,OAAOz2I,KAAKs3O,cAAc,CACxB7pK,QAAAA,IAGJ,MAAM1tE,EAAKC,MACT6/D,OACEA,GACE9/D,GACJyyE,OACEA,GACE/E,EACJ0kE,EAAM57F,GAAUvxB,KAAKyoD,EAAQ6qT,aAC7BI,EAAW74T,EAAO0wR,sBAAsBp+M,EAAI6sJ,SAASn/N,EAAOpqB,IAAKoqB,EAAOurR,cAAe,QAAS,OAChGutC,EAAcnmT,EAAOrlC,UAAYurV,IAAa,EAChD,GAAIC,EAAa,CACfnmT,EAAO6qO,aAAaq7E,OACf,CACL34X,EAAGu3O,gBAELv3O,EAAGyjW,aACHtpV,MAAMw5N,OAAOvjN,GAIfxwB,eAAc8tE,QACZA,IAEA,MAAM1tE,EAAKC,KACTwyE,EAASzyE,EAAGyhW,uBAAuB/zR,EAAQh3B,QAAQwN,QAAQlkD,EAAG+gW,eAC9Dw3B,EAAcv4X,EAAGw4X,uBAAuB/lT,GAC1Cv0E,OAAOmZ,OAAOq2D,EAAS,CACrB+E,OAAAA,EACA8lT,YAAAA,IAEFv4X,EAAGgvX,QAAQthT,GAEb9tE,cAAa8tE,QACXA,IAEA,MAAM1tE,EAAKC,MACTs4X,YACEA,GACE7qT,EACN,GAAI1tE,EAAG8/D,OAAOopP,WAAY,CACxB,GAAIx7O,EAAQ9xB,OAAS,MAAO,CAC1B1D,GAAUqd,cAAcgjU,EAAa7qT,EAAQq8D,MAE/CwuP,EAAYj3X,MAAM4F,OAASwmE,EAAQ+/D,UAAY,SAC1C,CACL,GAAI//D,EAAQ9xB,OAAS,OAAQ,CAC3B1D,GAAUsd,cAAc+iU,EAAa7qT,EAAQo8D,MAE/CyuP,EAAYj3X,MAAM6F,MAAQumE,EAAQ8/D,SAAW,MAGjD5tI,UAAS8tE,QACPA,IAEA,IAAKA,EAAQgpE,MAAO,CAClB,OAAOz2I,KAAKs3O,cAAc,CACxB7pK,QAAAA,IAGJ,MAAM1tE,EAAKC,MACT6/D,OACEA,GACE9/D,GACJ01C,IACEA,GACEoqB,EACJ2S,EAAS/E,EAAQ+E,OACjB2/D,EAAM57F,GAAUvxB,KAAKyoD,EAAQh3B,SAC7BqvP,EAAW3zJ,EAAI6sJ,SAASvpP,EAAKoqB,EAAOurR,cACpCrlD,EAAS5zJ,EAAIuiN,OAAOj/S,EAAKoqB,EAAOurR,cAChCstC,EAAW74T,EAAO0wR,sBAAsBzqD,EAAU,QAAS,OAC3D95F,EAAUv2J,GAAOg4B,EAAQ9xB,OAAS,UAAYlG,GAAOg4B,EAAQ9xB,OAAS,QAAU8xB,EAAQ9xB,OAAS,MACjGi9U,EAAS/4T,EAAO0wR,sBAAsBxqD,EAAQ,QAAS,OACvD4yF,EAAc3sL,GAAWx5H,EAAOrlC,UAAYurV,IAAa,GAAKE,GAAUpmT,EAAOplC,QAAUwrV,IAAW,EACtG,GAAID,GAAeC,EAASF,EAAU,CACpC,GAAI1sL,EAAS,CAEXx5H,EAAO6qO,aAAaq7E,EAAU,WACzB,CACLlmT,EAAO8qO,WAAWs7E,EAAQ,YAEvB,CACL74X,EAAG84X,gBAAgB,CACjBprT,QAAAA,IAGJ1tE,EAAGyjW,aAEL7jW,iBAAgB8tE,QACdA,IAEA,MAAM1tE,EAAKC,KACXD,EAAGqxH,OAAOl2B,QAEVztB,EAAQ6qT,YAAY9gV,cAAcqb,cAAgB4a,EAAQ6qT,YAAYzlU,cAAgB,KACtF9yD,EAAGkhW,eACHlhW,EAAGyjW,cAIPtkW,EAAgBu4X,GAAY,eAAgB,CAO1C7rT,MAAO,CACL2O,WAAYqrP,IAQdmyD,8BAA+B,IAQ/BC,kBAAmB,QAiBnBJ,oBAAqB,QAEvBH,GAAWvvX,OAAS,aACpBijO,GAAmB2F,gBAAgB2mJ,GAAY,MAAO,CAAC,YAAa,UAsBpE,MAAMqB,WAAsBv4B,GAM1B/gW,0BACE,MAAO,CACLihW,eAAgB,KAChBv6I,YAAa,MACbw6I,gBAAiB,KACjB5qV,IAAK,uBACL40U,iBAAkB,CAEhB1rL,oBAAqB,MAEvBsiM,mBAAoB,CAElBtiM,oBAAqB,MA8BvBr/J,gBAAe4gL,UACbA,IAEA,MAAMhzD,WACJA,GACEvtH,KAAK6/D,OAAO+qP,kBAAkBwwB,aAClC,MAAO,mCAAmCv7S,GAAW/C,OAAOyjJ,EAAUpzI,UAAWogF,oEACjC1tF,GAAW/C,OAAOyjJ,EAAUnzI,QAASmgF,4HASvFwrQ,iBAAkB,MAKtBp5X,YACEua,MAAM2mV,YACN7gW,KAAK6/D,OAAO1wC,GAAG,CACb6pW,wBAAyB,4BACzB18W,QAAStc,OAGbL,2BAA0BwtC,UACxBA,EAASC,QACTA,IAEA,IAAKptC,KAAK4/D,SAAU,CAClB5/D,KAAK+4X,iBAAmB,CACtB5rV,UAAAA,EACAC,QAAAA,IAINztC,iBAAiBwwB,GACfjW,MAAMmnV,iBAAiBlxU,GACvB,MAAMpwB,EAAKC,KACX,IAAKD,EAAG6/D,UAAYzvC,EAAMxxB,OAAOslD,QAAQ,yBAA0B,CACjE,GAAI9zB,EAAMxxB,OAAO2D,QAAQ,4BAA6B,CACpDvC,EAAGg5X,iBAAmB,SACjB,CAULh5X,EAAG8/D,OAAOtyC,QAAQ,4BAA6B7uB,EAAeA,EAAe,GAAIqB,EAAGg5X,kBAAmB,GAAI,CACzGl8O,SAAU1sH,OAKlBxwB,iBAAiBwE,EAAGqgC,EAAGt9B,EAAOD,GAC5B,MAAM44D,OACFA,GACE7/D,KACJuR,EAAOsuD,EAAOurR,aAAelkV,EAAQD,EACvC,IAAIuhB,EAAQq3C,EAAOurR,aAAejnV,EAAIqgC,EACtC,GAAIq7B,EAAOpqB,KAAOoqB,EAAOurR,aAAc,CACrC5iU,EAAQpU,KAAKC,IAAIwrD,EAAO+qP,kBAAkB+C,UAAYnlS,EAAQjX,EAAM,GAEtE,MAAM47B,EAAY0yB,EAAO80R,iBAAiB,CACtCxqC,MAAO3hS,EACPk7T,eAAgB,QAChBu1C,UAAW,OAEb7rV,EAAUyyB,EAAO80R,iBAAiB,CAChCxqC,MAAO3hS,EAAQjX,EACfmyU,eAAgB,QAChBu1C,UAAW,OAEfj5X,KAAK+4X,iBAAmB,CACtB5rV,UAAWtN,GAAWxrB,IAAI84B,EAAW0yB,EAAO1yB,WAC5CC,QAASvN,GAAWlX,IAAIykB,EAASyyB,EAAOzyB,UAG5CztC,eAAcZ,OACZA,IAEA,MAAM6rT,kBACFA,EAAiBywB,eACjBA,GACEr7U,KAAK6/D,OACTq5T,EAAuBr5V,GAAW4M,eAAe4uS,EAAezuS,UAAWyuS,EAAepzS,MAE5FjoC,KAAKoxH,OAAO93E,SAAWsxQ,EAAkBuuE,uBAAuBD,GAElEv5X,cAAa8tE,QACXA,IAEA,IAAI2rT,EAAmBC,EACvBr5X,KAAKs5X,iBAAiB7rT,EAAQo8D,KAAMp8D,EAAQq8D,MAAOsvP,EAAoB3rT,EAAQ8/D,YAAc,MAAQ6rP,SAA2B,EAAIA,EAAoB3rT,EAAQ66F,cAAe+wN,EAAqB5rT,EAAQ+/D,aAAe,MAAQ6rP,SAA4B,EAAIA,EAAqB5rT,EAAQ86F,eAElS5oK,YAAYwwB,GACVjW,MAAM88N,YAAY7mN,GAClB,MAAMs9C,QACJA,GACEt9C,EACJs9C,EAAQ66F,aAAe76F,EAAQh3B,QAAQuM,YACvCyqB,EAAQ86F,cAAgB96F,EAAQh3B,QAAQW,aAE1Cz3C,QAAO8tE,QACLA,IAEAztE,KAAKs5X,iBAAiB7rT,EAAQo8D,KAAMp8D,EAAQq8D,KAAMr8D,EAAQ66F,aAAc76F,EAAQ86F,eAElF5oK,SACEK,KAAK6/D,OAAOppB,QAAQmI,UAAU98C,OAAO,wBAEvCnC,cACEK,KAAK84L,UAEP2+I,iBACE,OAAOz3U,KAAK+4X,iBAAmB,CAAC/4X,KAAK+4X,kBAAoB,GAG3Dp5X,oBACE,OAAO,KAETA,uBAAuB0lU,GACrB,GAAIA,EAAU,CACZA,EAAS16T,GAAK,iBAEhB,OAAO06T,EAET1lU,uBAAuB0lU,GACrB,IAAKrlU,KAAKwd,cAAe,CACvBxd,KAAK84L,UAUP94L,KAAK6/D,OAAOtyC,QAAQ,sBAAuB7uB,EAAe,GAAI2mU,IAAa,MAAQA,SAAkB,EAAIA,EAAW,MAGxHnmU,EAAgB45X,GAAe,QAAS,iBACxCA,GAAc5wX,OAAS,gBACvBijO,GAAmB2F,gBAAgBgoJ,GAAe,MAAO,aAEzD,MAAMS,GAAgB,CACpBC,aAAc,eAEdC,YAAa,cACbC,UAAW,aAGb,MAAMC,GAAmBppX,QAAQC,UACjC,IAAIopX,GAA0BtjX,GAAQ,MAAMsjX,UAA+BtjX,EACzE3W,wBAAwBkgE,EAAQ3vD,GAC9B,MAAM2mN,WACFA,EAAUvzG,WACVA,GACEzjD,EACJ20M,EAAOlxJ,EAAW9+E,EAEpB,GAAIt0B,EAAQ2vD,EAAO+L,MAAM5nD,MAAO,CAE9Bs/F,EAAW2iK,SAAS,KAAMpvD,EAAWu+C,aAAallQ,IAGlD,GAAIozG,EAAW9+E,IAAMgwO,EAAM,CAIzB,OAAO,IAAIjkQ,SAAQC,IACjB,MAAMgS,EAAWq9C,EAAO1wC,GAAG,CACzBxvB,QAAOs3C,UACLA,IAGA,GAAIA,GAAa,MAAQ4/K,EAAW8B,OAAOzoN,GAAQ,CACjDsS,IACAhS,YAQZ,OAAOmpX,GAETh6X,mBAAmBkgE,EAAQrjC,GACzB,IAAIq9V,EAAc,MAClB,MAAM3+H,EAAW,GAKjB,MAAM14O,EAAWq9C,EAAO6uR,gBAAgBprO,WAAWn0F,GAAG,CACpDxvB,aAAYwE,EACVA,IAEA,GAAIA,GAAK,KAAM,CACb01X,EAAc,SAMpB3+H,EAAS18P,KAAKqhE,EAAOi6T,aAAat9V,EAAM,CACtCojB,MAAO,WAETp9B,IACA,GAAIq3W,EAAa,CAOf3+H,EAAS18P,KAAKqhE,EAAO6uR,gBAAgB9uM,OAAOt8B,WAAW7L,MAAM,YAAa,CACxEzmF,SAAU,eAGRzgB,QAAQ/G,IAAI0xP,GAEpBv7P,aAAa82C,EAAS93C,EAAQ8/C,GAC5BvkC,MAAMusP,aAAahwN,EAAS93C,EAAQ8/C,GACpC,MAAMs7U,EAAW/5X,KAAKy2C,QAAQzuC,cAAc,oBAE5C+xX,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASn7U,UAAU98C,UAAU,CAAC,UAAW,kBAAmB,iBAAkB,WAAW+H,KAAIpF,GAAQ,aAAaA,OAExK9E,uBAAuBwY,GACrB,MAAMpY,EAAKC,MACT6/D,OACEA,GACE1nD,GACJgwM,mBACEA,GACEtoJ,EACJm6T,EAAkBn6T,EAAO6uR,gBAAgBxnV,MAAQ,EACnD,OAAQiR,EAAO8hX,eACb,KAAKV,GAAcC,aACjBrhX,EAAO82R,WAAapvO,EAAO1yB,UAC3Bh1B,EAAOkqV,SAAWxiS,EAAOzyB,QACzB,MACF,KAAKmsV,GAAcE,YACjB,CACE,MAAMtsV,UACJA,EAASC,QACTA,GACEyyB,EAAOy0R,iBACXn8U,EAAO82R,WAAa9hQ,EACpBh1B,EAAOkqV,SAAWj1T,EAClB,aAGAyyB,EAAOyvK,oBAEbn3N,EAAO+hX,eAAiBr6T,EAAOq6T,eAC/Br6T,EAAOq6T,eAAiB,MAExB,GAAIF,EAAiB,CAEnBn6T,EAAOuhR,YAAYjpU,EAAO82R,WAAY92R,EAAOkqV,UAM/CtiW,EAAGo6X,0BAA4Bt6T,EAAO+sP,sBACtC/sP,EAAO+sP,sBAAwB,MAE/B,GAAIzkG,EAAmBiyK,sBAAuB,CAC5Cr6X,EAAGs6X,iBAAmBlyK,EAAmBmyK,aACzCv6X,EAAGw6X,mBAAqBpyK,EAAmBqyK,mBAC3CryK,EAAmBmyK,aAAe,IAClCnyK,EAAmBqyK,oBAAsB,EAG3C36T,EAAO46T,cAAgB,WACjBvgX,MAAMmrP,iBAAiBltP,GAC7B,MAAMwtP,WACFA,EAAUlvN,QACVA,GACE12C,EACJ26X,EAAajkV,EAAQzuC,cAAc,4BACnC2yX,EAAalkV,EAAQzuC,cAAc,yBACrC29P,EAAWq0H,gBAAkBA,EAC7B,GAAIA,GAAmB7hX,EAAO8hX,gBAAkBV,GAAcC,aAAc,CAE1E7zH,EAAWS,YAAcT,EAAWx7B,SAASsgD,OAAOvjR,MACpDy+P,EAAWS,YAAcT,EAAWx7B,SAASsgD,OAAOvjR,MAAQ24D,EAAO+qP,kBAAkBgwE,wBAAwBziX,EAAO82R,WAAY92R,EAAOkqV,UACvI,MAAM55F,EAAkBr0P,KAAKuqB,KAAKgnO,EAAWS,WAAaT,EAAW0C,WACnEM,EAAaF,EAAkB9C,EAAWiC,cAC5CjC,EAAW8C,gBAAkBA,EAC7B9C,EAAWgD,WAAaA,EAExBhD,EAAWx7B,SAASsgD,OAAOzzO,WAAa6oB,EAAO0iS,sBAAsBpqV,EAAO82R,YAE9EtpC,EAAWk1H,gBAAkB,GAC7Bl1H,EAAWm1H,qBAAuB,GAClCn1H,EAAWo1H,gBAAkB,MAC7B9iV,GAAUsY,gBAAgBoqU,EAAY,qBAAqBK,IACzDr1H,EAAWm1H,qBAAqBt8X,KAAKuB,EAAGknQ,kBAAkB+zH,IAC1Dr1H,EAAWk1H,gBAAgBr8X,KAAK,IAAIgT,QAGtCm0P,EAAWx7B,SAASsgD,OAAOwwG,kBAAoBl7X,EAAGknQ,kBAAkByzH,EAAY,OAChFziV,GAAUwhB,mBAAmBihU,EAAY,8CACzCziV,GAAUwhB,mBAAmB15D,EAAG02C,QAAS,eACzCkvN,EAAWu1H,YAAc,IAAI1pX,IAC7Bm0P,EAAW9lM,OAASA,EACpB,GAAIA,EAAO0pM,iBAAiB,eAAgB,CAC1C,MAAM4xH,EAAoB1kV,EAAQzuC,cAAc,0BAChD29P,EAAWy1H,uBAAyBr7X,EAAGknQ,kBAAkBk0H,GACzDx1H,EAAWyqB,YAAc,CACvBirG,MAAO,IAAI7pX,IACX8pX,WAAY,IAAI9pX,KAGpB,GAAIquD,EAAO0pM,iBAAiB,cAAe,CACzC,MAAMgyH,EAAyB9kV,EAAQzuC,cAAc,kDACnDwzX,EAAuB/kV,EAAQzuC,cAAc,qDAC/C29P,EAAW8xE,WAAa,GAExB,GAAI8jD,EAAwB,CAC1B51H,EAAW8xE,WAAW73L,OAAS,GAC/B+lH,EAAW81H,4BAA8B17X,EAAGknQ,kBAAkBs0H,GAEhE51H,EAAW8xE,WAAWxxU,KAAO,GAC7B0/P,EAAW+1H,0BAA4B37X,EAAGknQ,kBAAkBu0H,GAE9D,GAAI37T,EAAO0pM,iBAAiB,gBAAiB,CAC3C,MAAMoyH,EAAcllV,EAAQzuC,cAAc,QAAQ63D,EAAOuxS,UAAU9yT,aAAa,WAEhF,GAAIq9U,EAAa,CACfh2H,EAAWi2H,mBAAqBD,EAChCh2H,EAAWk2H,wBAA0B97X,EAAGknQ,kBAAkB00H,EAAa,MAAO,CAC5E7yU,GAAI,6BACJroC,IAAK,SAEPw3B,GAAUwhB,mBAAmBkiU,EAAa,sBAI9C,GAAI3B,IAAoBn6V,GAAWgM,cAAc1zB,EAAO82R,WAAYpvO,EAAO1yB,UAAW0yB,EAAOzyB,SAAU,OAC/FrtC,EAAG+5X,aAAaj6T,EAAQ1nD,EAAO82R,aAGzCtvS,mBAAmBwY,GACjB,IAAI2jX,EAA0B,MAC9B,MAAMj8T,OACFA,GACE1nD,EACJ+iP,EAAW,GAGb,MAAM14O,EAAWq9C,EAAO6uR,gBAAgBprO,WAAWn0F,GAAG,CACpDxvB,aAAYwE,EACVA,IAGA,GAAInE,KAAKy2C,QAAQO,aAAe7yC,EAAG,CACjC23X,EAA0B,SAIhC5gI,EAAS18P,KAAK0b,MAAMsrP,aAAartP,IAEjCqK,IACA,GAAIs5W,EAAyB,CAC3B5gI,EAAS18P,KAAKqhE,EAAO6uR,gBAAgB9uM,OAAOt8B,WAAW7L,MAAM,YAAa,CACxEzmF,SAAU,eAGRzgB,QAAQ/G,IAAI0xP,GAEpBv7P,uBAAuBwY,GACrB,MAAM0nD,OACFA,GACE1nD,GACJgwM,mBACEA,GACEtoJ,EACNA,EAAO46T,cAAgB,MACvB56T,EAAOq6T,eAAiB/hX,EAAO+hX,eAC/Br6T,EAAO+sP,sBAAwB5sT,KAAKm6X,0BACpC,GAAIhyK,EAAmBiyK,sBAAuB,CAC5CjyK,EAAmBmyK,aAAet6X,KAAKq6X,iBACvClyK,EAAmBqyK,mBAAqBx6X,KAAKu6X,yBAEzCrgX,MAAMqrP,iBAAiBptP,GAE/BxY,sBAAsB+vK,EAAMv3J,GAC1B,MAAMpY,EAAKC,WACLka,MAAMgwP,gBAAgBx6F,EAAMv3J,GAElC,GAAIpY,EAAG4lQ,WAAWq0H,gBAAiB,CACjC,MAAMn6T,OACFA,EAAMsmM,sBACNA,GACEhuP,GACJirV,SACEA,GACEvjS,GACJk8T,eACEA,EAAcC,aACdA,GACEj8X,EAAGk8X,wBAAwB9jX,GACjC,GAAIguP,EAAuB,CAEzB,GAAI41H,GAAkBC,EAAc,CAClCj8X,EAAGm8X,cAAc/jX,EAAQ4jX,EAAgBC,GACzCj8X,EAAGo8X,YAAYhkX,EAAQ4jX,EAAgBC,GACvCj8X,EAAGkhW,aAAa9oV,EAAQ4jX,EAAgBC,GACxCj8X,EAAGq8X,aAAajkX,EAAQu3J,EAAMqsN,EAAgBC,QAE3C,CAEL,GAAID,EAAgB,CAClB,IAAIM,EAAiB,YACft8X,EAAG+5X,aAAaj6T,EAAQk8T,GAI9B,OAAQM,EAAgB,CACtBt8X,EAAGu8X,aAAankX,GAChBpY,EAAGw8X,eAAepkX,GAClBpY,EAAGy8X,cAAcrkX,GACjBpY,EAAG08X,cAAc/sN,EAAMv3J,GACvB,GAAI0nB,GAAW68V,iBAAiBt5B,EAASj2T,UAAWi2T,EAASh2T,QAAS2uV,EAAgBC,GAAe,CACnGK,EAAiB,UACZ,GAAIj5B,EAASh2T,QAAQp9B,WAAagsX,EAAahsX,UAAW,CAC/DqsX,EAAiB,SACZ,CACL,MAAMjvV,EAAUg2T,EAASh2T,cACnBrtC,EAAG+5X,aAAaj6T,EAAQujS,EAASh2T,SAGvC,GAAIA,EAAQp9B,YAAcozV,EAASh2T,QAAQp9B,UAAW,CACpD,MAAM,IAAIU,MAAM,qCAKlB3Q,EAAG+5X,aAAaj6T,EAAQ1nD,EAAO82R,cAI3CtvS,yBAAwBsvS,WACtBA,EAAUozD,SACVA,EAAQl8F,sBACRA,EAAqBtmM,OACrBA,IAEA,MAAM9/D,EAAKC,MACT2lQ,WACEA,GACE5lQ,GACJ0oQ,gBACEA,EAAeZ,mBACfA,EAAkBQ,UAClBA,EAASl+B,SACTA,GACEw7B,EACN,IAAIo2H,EAAgBC,EAEpB,GAAIvzH,EAAkB,EAAG,CACvB,MAAMk0H,EAAa90H,EAAqBQ,EACtCu0H,GAAY/0H,EAAqB,GAAKQ,EAGtCw0H,EAAc1yJ,EAASvO,OAAO10N,MAAQijO,EAASvO,OAAOsrC,cACxD,GAAI01H,GAAYC,EAAa,CAC3Bb,EAAeD,EAAiB,SAC3B,CACLA,EAAiBl8T,EAAO0wR,sBAAsBn8U,KAAKC,IAAIsoX,EAAaE,EAAa,IAEjF,MAAMtuU,EAAa43M,EAAwB,EAAI,IAC/C61H,EAAen8T,EAAO0wR,uBAAuBqsC,EAAWC,GAAetuU,IAAe8zS,OAEnF,CACL05B,EAAiB9sF,EACjB+sF,EAAe35B,EAEjB,MAAO,CACL05B,eAAAA,EACAC,aAAAA,GAGJr8X,uBACE,MAAM82C,QACFA,EAAOkvN,WACPA,GACE3lQ,MACJ2K,GACEA,EAAEw8P,SACFA,EAAQC,SACRA,EAAQpwN,WACRA,GACE2uN,EAAWx7B,SAASsgD,OACxB//N,EAAKjU,EAAQzuC,cAAc,QAAQ2C,OACrC,CAAC,2BAA4B,4BAA4B3L,SAAQ6wD,IAC/D,MAAMitU,EAAWpyU,EAAG1iD,cAAc6nD,GAClC,GAAIitU,EAAU,CAEZ,GAAIn3H,EAAWgC,sBAAuB,CACpCm1H,EAASz7X,MAAM4F,OAAS,GAAG0+P,EAAWgC,8BACjC,CACLm1H,EAASz7X,MAAM4F,OAAS,GAG1B,GAAI+vC,EAAY,CACd8lV,EAASz7X,MAAM07X,WAAa,IAAI/lV,WAItC,GAAIA,EAAY,CACd,CAACmwN,EAAUC,GAAUpoQ,SAAQ2L,IAC3B,MAAM+/C,EAAKjU,EAAQzuC,cAAc,QAAQ2C,0BACzC,GAAI+/C,EAAI,CACNA,EAAGrpD,MAAM07X,WAAa,IAAI/lV,UAIhC,OAAO98B,MAAMuwP,uBAEf9qQ,eAAewY,GACb,MAAMpY,EAAKC,MACT6/D,OACEA,GACE1nD,GACJwtP,WACEA,GACE5lQ,EAEN,IAAK4lQ,EAAWq3H,iBAAkB,CAChC,MAAMrC,EAAa96T,EAAOujS,SAAS3sT,QACjCokV,EAAkBl1H,EAAWk1H,gBAC/B5iV,GAAUsY,gBAAgBoqU,EAAY,qBAAqB,CAACK,EAAW9qX,EAAO+sX,KAC5E,MAAMC,EAAarC,EAAgB3qX,GACnC+nC,GAAUsY,gBAAgByqU,EAAW,+BAA+BtwU,IAClE,IAAKwyU,EAAWj/W,IAAIysC,EAAGh0B,QAAQuzR,WAAY,CACzCizE,EAAW5rX,IAAIo5C,EAAGh0B,QAAQuzR,UAAWv/P,EAAG8M,eAG5C,GAAItnD,IAAU+sX,EAAWn+X,OAAS,GAAKo+X,EAAWj/W,IAAI/U,OAAO22D,EAAOkoP,SAAS/jS,MAAQ,IAAK,CACxF2hP,EAAWq3H,iBAAmB,UAKtCr9X,cAAcwY,GACZ,MAAMpY,EAAKC,MACT6/D,OACEA,GACE1nD,GACJwtP,WACEA,GACE5lQ,GACJ03U,WACEA,GACE9xE,EACN,IAAKA,EAAWq3H,kBAAoBvlD,EAAY,CAC9C,MAAMyqB,aACJA,EAAYF,WACZA,GACEniS,EAAOkyD,SAAS0lN,WACpB,GAAIyqB,EAAc,CAChBjqT,GAAUsY,gBAAgB2xS,EAAc,oBAAoBx3S,IAC1D+sR,EAAW73L,OAAOl1F,EAAGh0B,QAAQ/rB,IAAM+/C,EAAG8M,aAG1Cvf,GAAUsY,gBAAgByxS,EAAY,oBAAoBt3S,IACxD+sR,EAAWxxU,KAAKykD,EAAGh0B,QAAQ/rB,IAAM+/C,EAAG8M,cAI1C73D,aAAawY,GACX,MAAMpY,EAAKC,MACT6/D,OACEA,GACE1nD,GACJwtP,WACEA,GACE5lQ,GACJqwR,YACEA,GACEzqB,EACN,IAAKA,EAAWq3H,kBAAoB5sG,EAAa,CAC/C,MAAM+sG,EAAWt9T,EAAOskS,iBACxBlsT,GAAUsY,gBAAgB4sU,EAAU,wCAAwCC,IAC1E,GAAIA,EAAOx+U,UAAU7G,SAAS,iBAAkB,CAC9C,MAAMslV,EAAYppX,OAAOmpX,EAAO1mW,QAAQutU,KAAKz5V,QAAQ,QAAS,KAC9D4lR,EAAYirG,MAAM/pX,IAAI+rX,EAAWD,EAAO5lU,eACnC,CACL,MAAM6lU,EAAYppX,OAAOmpX,EAAO1mW,QAAQutU,KAAKz5V,QAAQ,SAAU,KAC/D4lR,EAAYkrG,WAAWhqX,IAAI+rX,EAAWD,EAAO5lU,gBAKrD73D,cAAc+vK,EAAMv3J,GAClB,MAAMpY,EAAKC,KACTs9X,EAAY5tN,EAAK5wK,QACjB+gE,OACEA,GACE1nD,EACJolX,EAAax9X,EAAG4lQ,WAAWx7B,SAASsgD,OAAO/6G,KAC7CA,EAAK1wK,SAAQ,CAAC2vK,EAAKz+J,KACjB,IAAIstX,EAAkBC,EACtB,MAAMC,EAAYH,EAAWA,EAAWz+X,OAASw+X,EAAYptX,GAC3DiqS,EAAWt6O,EAAO+L,MAAMonB,MAAM27E,EAAIooD,WAClC4mK,EAAYD,EAAU,IACvBF,EAAmBrjF,EAASlsR,UAAY,MAAQuvW,SAA0B,OAAS,EAAIA,EAAiBx+X,SAAQmxB,IAC/G,GAAIA,EAAMmvS,YAAa,CACrB,IAAI50Q,EAAKmV,EAAO6nS,0BAA0Bv3U,EAAOgqR,GACjD,GAAIzvP,IAAOA,EAAKA,EAAGlT,iBAAmBmmV,EAAU1/W,IAAIkS,EAAMxlB,IAAK,CAC7DgzX,EAAUrsX,IAAI6e,EAAMxlB,GAAI,CAAC+/C,EAAG8M,UAAWjhB,GAAUvxB,KAAK0lC,EAAIA,EAAGK,sBAIlE0yU,EAAuBtjF,EAASs9B,cAAgB,MAAQgmD,SAA8B,OAAS,EAAIA,EAAqBz+X,SAAQuhL,IAC/H,IAAIq9M,EACJ,MAAMC,IAASD,EAAwB/9T,EAAOkyD,SAASqmN,sBAAwB,MAAQwlD,SAA+B,OAAS,EAAIA,EAAsB9+B,kBAAkBv+K,KAAe,GACxL71H,EAAKmV,EAAOo/R,iBAAiB3sS,UAAUurU,GACzC,GAAInzU,IAAOizU,EAAU1/W,IAAI4/W,GAAO,CAC9BF,EAAUrsX,IAAIusX,EAAM,CAACnzU,EAAG8M,UAAWjhB,GAAUvxB,KAAK0lC,EAAIA,EAAGK,uBAMjEprD,cAAcwY,EAAQqQ,EAAO9E,GAC3B,MAAM3jB,EAAKC,MACT2lQ,WACEA,GACE5lQ,GACJ8/D,OACEA,GACE1nD,EACJ0iX,EAAkBl1H,EAAWk1H,iBAE7BptE,aACEA,GACE5tP,EAAO2kL,eACXpnM,EAAYqwQ,EAAa/C,WAAWliS,EAAO9E,GAC3Ck+B,EAAgBzgD,SAASC,cAAc,OACzCm5G,GAAQ+K,KAAK,CACX1jE,cAAAA,EACAxE,UAAAA,IAEFnF,GAAUsY,gBAAgB3O,EAAe,qBAAqB,CAACo5U,EAAW9qX,KACxE,MAAMgtX,EAAarC,EAAgB3qX,GACnC+nC,GAAUsY,gBAAgByqU,EAAW,+BAA+BtwU,IAClE,IAAKwyU,EAAWj/W,IAAIysC,EAAGh0B,QAAQuzR,WAAY,CACzCizE,EAAW5rX,IAAIo5C,EAAGh0B,QAAQuzR,UAAWv/P,EAAG8M,kBAKhD73D,aAAawY,EAAQu3J,EAAMlnJ,EAAO9E,GAChC,MAAM3jB,EAAKC,MACT6/D,OACEA,GACE1nD,EACJolX,EAAax9X,EAAG4lQ,WAAWx7B,SAASsgD,OAAO/6G,KAC7CA,EAAK1wK,SAAQ,CAAC2vK,EAAKz+J,KACjB,MAAMwtX,EAAYH,EAAWrtX,GAC3BytX,EAAYD,EAAU,GACtBvjF,EAAWt6O,EAAO+L,MAAMonB,MAAM27E,EAAIooD,WAClC+mK,EAAiBj+T,EAAOsoJ,mBAAmB41K,kBAAkB5jF,GAC7D7kQ,EAAOuqB,EAAO0iS,sBAAsB/5U,GACpC4sB,EAAQyqB,EAAO0iS,sBAAsB7+U,GACrCs6W,EAAkBn+T,EAAOsoJ,mBAAmB81K,gCAAgCH,EAAgBnvN,EAAKr5H,EAAMF,GACvGwM,EAAgBzgD,SAASC,cAAc,OACzC48X,EAAgBh/X,SAAQo+C,IACtB,MAAMsiQ,QACFA,GACEtiQ,EAAU1mB,SACd4e,KACEA,EAAIH,IACJA,EAAGjuC,MACHA,EAAKD,OACLA,GACEm2C,EAAU/7C,MAChBk5G,GAAQ+K,KAAK,CACX1jE,cAAAA,EACAxE,UAAAA,IAEFugV,EAAUrsX,IAAIouS,EAAS,CAAC99P,EAAc4V,UAAW,IAAIjhB,GAAUjB,EAAMH,EAAKjuC,EAAOD,WAIvFtH,YAAYwY,EAAQqQ,EAAO9E,GACzB,MAAM3jB,EAAKC,MACT6/D,OACEA,GACE1nD,GACJwtP,WACEA,GACE5lQ,GACJqwR,YACEA,GACEzqB,EACN,GAAIyqB,EAAa,CACf,MAAM0zE,EAAajkS,EAAOkyD,SAASq+J,YAAYg0E,wBAAwB57U,EAAO9E,GAC5Ek+B,EAAgBzgD,SAASC,cAAc,OACzCm5G,GAAQ+K,KAAK,CACX1jE,cAAAA,EACAxE,UAAW,CACTiK,SAAUy8S,GAEZ76S,aAAc,OAGhBmnO,EAAYirG,MAAM/pX,IAAI,EAAGswC,EAAc8P,YAG3C/xD,aAAawY,EAAQqQ,EAAO9E,GAC1B,MAAM3jB,EAAKC,MACT6/D,OACEA,GACE1nD,GACJwtP,WACEA,GACE5lQ,GACJ03U,WACEA,GACE9xE,EACN,GAAI8xE,EAAY,CACd,MAAMqsB,EAAajkS,EAAOkyD,SAAS0lN,WAAWsqB,aAAav5U,EAAO9E,GAChEk+B,EAAgBzgD,SAASC,cAAc,OAEzC0iW,EAAW9kW,SAAQ,CAACqoD,EAAUzoD,KAC5B27G,GAAQ+K,KAAK,CACX1jE,cAAAA,EACAxE,UAAW,CACTiK,SAAAA,EACA4B,aAAc,QAIlB,GAAIrqD,IAAM,EAAG,CACX64U,EAAWxxU,KAAO27C,EAAc8P,cAG7B,CACH+lR,EAAW73L,OAASh+F,EAAc8P,eAM1C/xD,cAAcwY,GACZ,MAAMpY,EAAKC,MACTmqO,SACEA,EAAQ0wJ,gBACRA,EAAeC,qBACfA,EAAoB1qG,YACpBA,EAAWgrG,uBACXA,EAAsB3jD,WACtBA,EAAUgkD,4BACVA,EAA2BC,0BAC3BA,GACE37X,EAAG4lQ,YACPQ,sBACEA,GACEhuP,EAEN,IAAIwwC,EAAO5oD,EAAG0qQ,uBACdxsQ,OAAO4N,OAAOs+N,GAAUnrO,SAAQ,EAC9BoiF,YAAAA,EACA65S,kBAAAA,EACAvrN,KAAAA,EACA63F,gBAAAA,MAEA,MAAMmD,EAAkBtpL,EAAY5pB,WAElCmlQ,UACEA,EAAS1uS,OACTA,GACEluB,EAAGmsQ,aAAax8F,EAAMv3J,GAC5B,IAAIwyP,EAAcgyD,EAAU1yT,KAAK,IACjC,GAAIs9P,IAAoB,MAAQA,SAAyB,GAAKA,EAAgBzoQ,OAAQ,CACpF6rQ,GAAe,8CAA8CpD,EAAgBt9P,KAAK,YAEpF0+C,EAAOA,EAAKn+C,QAAQkgQ,EAAiBC,GACrC,GAAIswH,EAAmB,CACrBtyU,EAAOA,EAAKn+C,QAAQywX,EAAkBzjU,UAAWvpC,EAAOhkB,KAAK,SAGjE4wX,EAAgB77X,SAAQ,CAACk1B,EAAShkB,KAChCy4C,EAAOA,EAAKn+C,QAAQswX,EAAqB5qX,GAAOsnD,UAAWjwD,MAAMyd,KAAKkP,EAAQroB,UAAU5B,KAAK,QAE/F,GAAImmR,EAAa,CACf,MAAM8tG,EAAe32X,MAAMyd,KAAKorQ,EAAYirG,MAAMxvX,UAAU8a,OAAOpf,MAAMyd,KAAKorQ,EAAYkrG,WAAWzvX,WACrG88C,EAAOA,EAAKn+C,QAAQ4wX,EAAuB5jU,UAAW0mU,EAAaj0X,KAAK,KAExE,GAAIk8P,EAAuB,CACzBpmQ,EAAG4lQ,WAAWyqB,YAAYirG,MAAM58U,QAChC1+C,EAAG4lQ,WAAWyqB,YAAYkrG,WAAW78U,SAGzC,GAAIg5R,EAAY,CACd,GAAItxE,EAAuB,CACzBx9M,EAAOA,EAAKn+C,QAAQkxX,EAA0BlkU,UAAWigR,EAAWxxU,MAEpE,GAAIw1X,EAA6B,CAC/B9yU,EAAOA,EAAKn+C,QAAQixX,EAA4BjkU,UAAWigR,EAAW73L,QAExE7/I,EAAG4lQ,WAAW8xE,WAAa,OACtB,CACL9uR,EAAOA,EAAKn+C,QAAQkxX,EAA0BlkU,UAAWv5D,OAAO4N,OAAO4rU,EAAWxxU,MAAMgE,KAAK,KAE7F,GAAIwxX,EAA6B,CAC/B9yU,EAAOA,EAAKn+C,QAAQixX,EAA4BjkU,UAAWv5D,OAAO4N,OAAO4rU,EAAWxxU,MAAMgE,KAAK,OAIrG0+C,EAAO5oD,EAAGo+X,sBAAsBx1U,GAChC,OAAOA,EAEThpD,YAAYwwB,GACV,MAAMpwB,EAAKC,MACTk7X,YACEA,EAAW/0H,sBACXA,GACEpmQ,EAAG4lQ,WACT,MAAMxzH,EAAMhiH,GAAS+qW,EAAYxpX,IAAIxI,OAAOinB,EAAMxlB,KAKlD,GAAIw7P,GAAyBh0H,GAAOhiH,EAAMwwS,YAAa,CACrDxuL,EAAIv3G,WAAWu3G,EAAIjrI,MAAQ,EAAG,GAEhC,OAAOirI,EAETxyI,qBACE,MAAMI,EAAKC,MACT6/D,OACEA,EAAMq7T,YACNA,GACEn7X,EAAG4lQ,YACP2sE,aACEA,GACEzyQ,EACJu+T,EAAoBv+T,EAAOkyD,SAASugN,aACpC1wR,EAAgB3J,GAAU72C,gBAC5B,IAAIu0W,EAAO,MACXrjC,EAAatzU,SAAQu9S,IACnB,IAAK2+E,EAAYj9W,IAAI/U,OAAOqzS,EAAWv3R,SAAWk2W,EAAYj9W,IAAI/U,OAAOqzS,EAAWhqQ,OAAS6rV,EAAkBC,oBAAoB9hF,GAAa,CAC9I,OAEF,MAAM82D,EAAUtzW,EAAGu+X,YAAY/hF,EAAWiE,WACxC8yD,EAAQvzW,EAAGu+X,YAAY/hF,EAAWkE,SACpC29E,EAAkBloB,eAAe35D,EAAY,KAAM,CACjDv3R,KAAMquV,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ9jW,QAChEgjC,GAAI+gU,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM/jW,UAE1DomW,EAAO,QAGT,GAAIA,EAAM,CACRyoB,EAAkBhnB,QAAQx1T,GAE5B,OAAOA,EAAc8P,UAEvB/xD,sBAAsBgpD,GACpB,MAAMkzU,wBACJA,EAAuB7B,gBACvBA,GACEh6X,KAAK2lQ,WACT,GAAIk2H,GAA2B7B,EAAiB,CAC9C,MAAM9zP,EAAc21P,EAAwBrkU,UAC5C7O,EAAOA,EAAKn+C,QAAQ07H,EAAalmI,KAAKu+X,sBAExC,OAAO51U,IA+CX,MAAMmmO,WAA0B8qG,GAAuBpyH,KACrDz5P,mBACE,MAAO,oBAETlB,kBACE,MAAO,YAETlN,oBAAoBwY,SACZ+B,MAAM4wP,cAAc3yP,GAC1BnY,KAAK2lQ,WAAWu1H,YAAYz8U,QAE9B9+C,aAAa+vK,GACX,MAAMitJ,EAAY,GAChB1uS,EAAS,GAGXyhJ,EAAK1wK,SAAQ,EAAE2pD,EAAMxT,EAAKluC,EAAQu3X,MAChC7hE,EAAUn+T,KAAKmqD,GACf61U,GAAcj3X,MAAMyd,KAAKw5W,EAAW13X,WAAW9H,SAAQ,EAAEC,GAAM0pD,EAAMwpF,EAAKssP,EAAS,QACjFxwW,EAAOzvB,KAAKmqD,EAAO81U,EAAOx0X,KAAK,KAE/BjK,KAAK2lQ,WAAWu1H,YAAY5pX,IAAIpI,OAAOjK,GAAMkzI,SAGjD,MAAO,CACLwqL,UAAAA,EACA1uS,OAAAA,IAIN6gQ,GAAkB5mR,OAAS,oBA+C3B,MAAM+mR,WAAkC2qG,GAAuB5uH,KAC7Dj9P,mBACE,MAAO,4BAETlB,kBACE,MAAO,oBAETlN,oBAAoBwY,SACZ+B,MAAM4wP,cAAc3yP,GAC1BnY,KAAK2lQ,WAAWu1H,YAAYz8U,QAE9B9+C,uBAAuBwY,SACf+B,MAAMmrP,iBAAiBltP,GAE7B,GAAIA,EAAO8hX,gBAAkBV,GAAcC,aAAc,CACvDx5X,KAAKwrQ,mBAAmBrzP,IAG5BxY,aAAa+vK,GACX,MAAMitJ,EAAY,GAChB1uS,EAAS,GAGXyhJ,EAAK1wK,SAAQ,EAAE2pD,EAAI,CAAA,CAAI61U,MACrB7hE,EAAUn+T,KAAKmqD,GACf61U,GAAcj3X,MAAMyd,KAAKw5W,EAAW13X,WAAW9H,SAAQ,EAAEC,GAAM0pD,EAAMwpF,EAAKssP,EAAS,QACjFxwW,EAAOzvB,KAAKmqD,EAAO81U,EAAOx0X,KAAK,KAE/BjK,KAAK2lQ,WAAWu1H,YAAY5pX,IAAIpI,OAAOjK,GAAMkzI,SAGjD,MAAO,CACLwqL,UAAAA,EACA1uS,OAAAA,IAINghQ,GAA0B/mR,OAAS,4BAEnC,MAAMw2X,WAA2B12Q,GAC/Bj6G,mBACE,MAAO,qBAGTlB,kBACE,MAAO,qBAETgV,2BACE,MAAO,CACLgsK,SAAU,MACVoQ,sBAAuB,KACvBhG,aAAc,OACdt4L,aAME,OAAO1B,OAAO6I,QAAQyyX,IAAe1vX,KAAI,EAAEc,EAAIM,MAAK,CAClD1L,MAAOoL,EACPM,KAAM,KAAOA,EAAO,WAO9ByzX,GAAmB9nT,YACnB8nT,GAAmBx2X,OAAS,qBAqO5B,MAAMy2X,WAA8BxgI,GAElCpwP,mBACE,MAAO,wBAETlB,kBACE,MAAO,wBAETrN,0BACE,MAAO,CACLyiD,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACL27W,mBAAoB,CAClB/xX,KAAM,qBACNi8I,MAAO,oBACPvpJ,MAAO,eACPk0H,OAAQ,IACR9zH,UAASJ,MACPA,IAEAS,KAAKsS,OAAOg5H,UAAUuzP,gBAAgBr8R,OAASjjG,IAAUg6X,GAAcG,YAG3EmF,gBAAiB,CACfhyX,KAAM,YACNuqH,KAAM,WACN3D,OAAQ,IACRjxB,OAAQ,KACRvgD,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACL67W,OAAQ,CAENrrQ,OAAQ,EACR5mH,KAAM,UAERkyX,gBAAiB,CACflyX,KAAM,YACNi8I,MAAO,iBACP4iC,WAAY,MACZt0D,KAAM,UACN3D,OAAQ,GACR9zH,UAASJ,MACPA,IAEAS,KAAKsS,OAAOg5H,UAAU0zP,cAAcr2W,IAAMkX,GAAW9gB,IAAIxf,EAAO,EAAG,OAGvE0/X,QAAS,CAEPpyX,KAAM,SACN4mH,OAAQ,GACRvsH,MAAO,SAET83X,cAAe,CACbnyX,KAAM,YACNi8I,MAAO,eACP4iC,WAAY,MACZt0D,KAAM,UACN3D,OAAQ,GACR9zH,UAASJ,MACPA,IAEAS,KAAKsS,OAAOg5H,UAAUyzP,gBAAgB1qX,IAAMwrB,GAAW9gB,IAAIxf,GAAQ,EAAG,WASpFI,iBACE,MAAM+rL,EAAa1rL,KAAKm7B,EAAE,cAC1Bn7B,KAAKkH,MAAQlH,KAAKm7B,EAAE,YACpBn7B,KAAKijB,MAAMjkB,SAAQ0iH,IACjB,GAAIA,aAAkB0rE,GAAS,CAC7B1rE,EAAOgqE,WAAaA,OACf,GAAIhqE,EAAOzzD,MAAQ,kBAAmB,CAC3CyzD,EAAOz+F,MAAM,GAAG/b,MAAQwkL,MAI9B/rL,mBAAmBwY,GACjB+B,MAAMqlP,mBAAmBpnP,GACzB,MAAMpY,EAAKC,MACT6/D,OACEA,EAAMo6T,cACNA,GACE9hX,EACJ8K,EAAQ9K,EAAO8K,MAAQ9K,EAAO8K,OAAS,GACvC27W,EAAqB37W,EAAM27W,mBAAqB37W,EAAM27W,oBAAsB,GAC5EC,EAAkB57W,EAAM47W,gBAAkB57W,EAAM47W,iBAAmB,GACnEK,EAAuBL,EAAgB57W,MAAQ47W,EAAgB57W,OAAS,GACxE67W,EAASI,EAAqBJ,OAASI,EAAqBJ,QAAU,GACtEC,EAAkBG,EAAqBH,gBAAkBG,EAAqBH,iBAAmB,GACjGC,EAAgBE,EAAqBF,cAAgBE,EAAqBF,eAAiB,GAC7FF,EAAO53X,MAAQnH,EAAGo7B,EAAE,cACpByjW,EAAmBr/X,MAAQq/X,EAAmBr/X,OAAS06X,EACvD,GAAI2E,EAAmBr/X,QAAUg6X,GAAcG,UAAW,CACxDmF,EAAgBr8R,OAAS,MAE3B,MAAMysM,EAAa8vF,EAAgBx/X,MAAQw/X,EAAgBx/X,OAASsgE,EAAO1yB,UAC3E4xV,EAAgB1qX,IAAMwrB,GAAWxrB,IAAIwrD,EAAO1yB,UAAWtN,GAAW9gB,IAAI8gD,EAAOzyB,SAAU,EAAG,MAC1F,IAAIi1T,EAAW28B,EAAcz/X,OAASsgE,EAAOzyB,QAE7C,GAAIi1T,GAAYpzD,EAAY,CAC1BozD,EAAWxiU,GAAW9gB,IAAIkwR,EAAY,EAAG,KAE3C+vF,EAAcz/X,MAAQ8iW,EACtB28B,EAAcr2W,IAAMkX,GAAWlX,IAAIk3C,EAAOzyB,QAASvN,GAAW9gB,IAAI8gD,EAAO1yB,UAAW,EAAG,OAG3FwxV,GAAsBz2X,OAAS,wBA+C/B,MAAM0mR,WAA2BgrG,GAAuBhuH,KACtD79P,mBACE,MAAO,qBAETlB,kBACE,MAAO,aAGTlN,uBACAA,aAAa+vK,EAAMv3J,GACjB,MAAMwkT,EAAY,GAChB1uS,EAAS,GACTkxW,EAAc,0CACdC,EAAQ,YACV,GAAIjnX,EAAOguP,sBAAuB,CAChCz2F,EAAK1wK,SAAQ,EAAE2pD,EAAI,CAAA,CAAI61U,MACrB7hE,EAAUn+T,KAAKmqD,GACf61U,GAAcj3X,MAAMyd,KAAKw5W,EAAW13X,WAAW9H,SAAQ,EAAEC,GAAM0pD,EAAMwpF,EAAKssP,EAAS,QAEjFz+X,KAAK2lQ,WAAWu1H,YAAY5pX,IAAIpI,OAAOjK,GAAMkzI,GAC7ClkH,EAAOzvB,KAAKmqD,EAAO81U,EAAOx0X,KAAK,eAG9B,CACL,IAAI6hQ,EAAa,EAGjBp8F,EAAK1wK,SAAQ,EAAE2pD,EAAMxT,EAAKluC,EAAQu3X,MAEhC7hE,EAAUn+T,KAAKmqD,EAAKn+C,QAAQ20X,EAAa,mBAAmBrzH,SAC5D,MAAMuzH,EAAcvzH,EAAa32N,EACjCqpV,GAAcj3X,MAAMyd,KAAKw5W,EAAW13X,WAAW9H,SAAQ,EAAEC,GAAM0pD,EAAMwpF,OAEnEA,EAAIv3G,UAAU,EAAGykW,GAEjBr/X,KAAK2lQ,WAAWu1H,YAAY5pX,IAAIpI,OAAOjK,GAAMkzI,GAE7ClkH,EAAOzvB,KAAKmqD,EAAKn+C,QAAQ40X,EAAO,QAAQjtP,EAAI3tG,WAE9CsnO,GAAc7kQ,KAGlB,MAAO,CACL01T,UAAAA,EACA1uS,OAAAA,IAIN2gQ,GAAmB1mR,OAAS,qBAoF5B,MAAMmmR,WAAkB9hB,GACtBx+P,mBACE,MAAO,YAET8T,2BACE,MAAO,CACL68O,UAAW,CAACkwB,GAAoBE,GAAmBG,IACnDziB,YAAamyH,GAWb1E,cAAe,eAMfhrF,WAAY,KAcZozD,SAAU,MAGdrzF,gCACE,OAAOh+N,GAAauqB,eAAerhD,MAAM80P,0BAA2BhvQ,KAAM,CAAC,kBAE7EL,kBAAkBwY,GAChBA,EAAS+B,MAAM2zP,kBAAkB11P,GACjC,MAAM8hX,cACJA,EAAahrF,WACbA,EAAUozD,SACVA,GACEriW,KAEJ,GAAImY,EAAO4rL,UAAY5rL,EAAO4rL,QAAQhzK,MAAK0vM,GAAOA,EAAI5zN,OAAS,aAAa,CAC1EsL,EAAO4rL,QAAQvlM,KAAK2Z,EAAO0nD,OAAO2kL,eAAe75O,IAEnD,OAAOqmC,GAAa55B,OAAO,CACzB6iX,cAAAA,EACAhrF,WAAAA,EACAozD,SAAAA,GACClqV,IAGPk2Q,GAAUnmR,OAAS,YACnBijO,GAAmB2F,gBAAgBu9C,GAAW,MAAO,aAkBrD,MAAMixG,WAA0BryW,MAG9BpL,2BACE,MAAO,CAMLkmS,SAAU,KAQVt7J,eAAgB,KAShBgvL,SAAU,IAQVntS,KAAM,MAONixV,SAAU,MACVrrW,QAAS,KACTiwB,KAAM,aAGNq7U,YAAa,MAEbj1E,aAAc,GAEdf,WAAY,KAEZgyB,eAAgB,KAChBikD,iBAAkB,KAClBC,kBAAmB,IAKvB//X,UAAUwY,GACR,MAAMpY,EAAKC,KAEXD,EAAG4/X,kBAAoB,GACvBzlX,MAAMsB,UAAUrD,GAChB,MAAMqxS,EAAazpT,EAAGgoT,SAASyB,YAAczpT,EAAGypT,WAChD,GAAIA,EAAY,CACd,GAAIA,aAAsBwxB,GAAY,CACpCj7U,EAAG6/X,kBAAkBp2E,OAChB,CACL,MAAMgzB,EAAS9qI,GAAG+sI,UAAUj1B,GAC5BgzB,GAAUz8U,EAAG6/X,kBAAkBpjD,IAInCz8U,EAAGgoT,SAAS54R,GAAG,cAAepvB,EAAG8/X,sBAAuB9/X,GACxDA,EAAG+/X,WAAa,KAElBngY,YACEK,KAAK+nT,SAASz5R,GAAG,cAAetuB,KAAK6/X,sBAAuB7/X,MAC5Dka,MAAM8B,YAWRrc,oCAAoC68B,EAAMg6F,EAAUgmN,EAASx8U,KAAKwpT,YAChE,MAAMzB,SACFA,EAAQt7J,eACRA,GACEzsJ,MACJ+/X,WACEA,GACE//X,KAAK2Y,OACTijU,SACEA,EAAQC,cACRA,EAAaJ,SACbA,GACEe,EAEN,GAAIhmN,EAAU,CACZ,MAAMwpQ,EAAW5rX,KAAKuqB,MAAM8tH,EAAiBszO,EAAatzO,EAAiB,GAAKgvL,GAChF,MAAO,CACLtuS,UAAW46Q,EAASu5B,UAAUzhT,GAAW9gB,IAAIyd,GAAOwjW,EAAWnkD,EAAeD,GAAW,MAAOA,EAAUC,GAC1GzuS,QAAS26Q,EAASw5B,SAAS1hT,GAAW9gB,IAAIyd,EAAMwjW,EAAWnkD,EAAeD,GAAW,MAAOA,EAAUC,QAIrG,CACH,MAAMokD,EAAgB7rX,KAAKuqB,KAAK8tH,EAAiBszO,EAAatkD,GAC9D,MAAO,CACLtuS,UAAW46Q,EAASu5B,UAAUzhT,GAAW9gB,IAAIyd,GAAOyjW,EAAgBpkD,EAAeD,GAAW,MAAOA,EAAUC,GAC/GzuS,QAAS26Q,EAASw5B,SAAS1hT,GAAW9gB,IAAIyd,EAAMpoB,KAAKuqB,MAAM8tH,EAAiBgvL,EAAWwkD,GAAiBpkD,GAAgBD,GAAW,MAAOA,EAAUC,KAS1JtxB,mBACE,OAAOvqT,KAAKkgY,cAEd31E,iBAAiBpyS,GACfnY,KAAKkgY,cAAgB/nX,EAEvB+b,cACE,OAAOl0B,KAAKmgY,SAEdjsW,YAAYA,GACV,GAAIA,GAAWA,EAAQp1B,QAAUo1B,EAAQA,EAAQp1B,OAAS,GAAGshY,cAAe,CAC1E,MAAM,IAAI1vX,MAAM,8GAElB1Q,KAAKmgY,SAAWjsW,EAElBmsW,0BACE,OAAO,KAsBTj1C,mBACE,OAAOprV,KAAKmkD,OAAS,WAQvB8kQ,iBACE,OAAOjpT,KAAKmkD,OAAS,WAQvBo7U,aAAahgY,GACX,GAAIA,IAAUS,KAAKsgY,UAAW,CAC5BtgY,KAAKsgY,UAAY/gY,EACjBS,KAAK2tG,UAKThuG,YAAYwY,GAEVnY,KAAKk0B,QAAU,KAEfl0B,KAAKwZ,UAAUrB,GACfnY,KAAKutB,QAAQ,eAEf5tB,uBACEZ,OAAQgpT,EAAQ83B,gBAChBA,IAEA,GAAI7/U,KAAKwpT,aAAezB,EAASyB,WAAY,CAC3CxpT,KAAK4/X,kBAAkB73E,EAASyB,YAElC,IAAKq2B,EAAiB,CACpB7/U,KAAK2tG,UAUThuG,OAAO8sJ,EAAgBv2H,EAAS,MAAOqqW,EAAc,OACnD,MAAMxgY,EAAKC,MACT+nT,SACEA,EAAQ7zR,QACRA,GACEn0B,EAEN,GAAIA,EAAGyd,eAAiBzd,EAAGygY,kBAAoB/zO,EAAgB,CAC7D,GAAI8zO,EAAa,CACfxgY,EAAGwtB,QAAQ,UAEb,OAEFxtB,EAAGygY,gBAAkBpsX,KAAKC,IAAIo4I,GAAkB1sJ,EAAG0sJ,gBAAkB,EAAG,GACxE,UAAW1sJ,EAAG0sJ,iBAAmB,SAAU,CACzC,MAAM,IAAI/7I,MAAM,qDAElB3Q,EAAGwqT,aAAe,GAGlB,MAAMkxB,EAAW17U,EAAG27U,UAAY37U,EAAG0gY,kBAAkB1gY,EAAG0/X,kBACxD,UAAWhkD,IAAa,UAAYA,GAAY,EAAG,CACjD,MAAM,IAAI/qU,MAAM,8BAGlB3Q,EAAG4/X,kBAAoB,GAEvB5/X,EAAG2gY,WAAa,KAEhB,IAAK,IAAIhlV,EAAM,GAAG58C,OACdA,GACEo1B,EAASwnB,EAAM58C,EAAQ48C,IAAO,CAClC,MAAMkkG,EAAS1rH,EAAQwnB,GACvB,GAAIkkG,EAAOwgP,cAAe,CACxB,MAAMO,EAAc/gP,EAAOwgP,cAAcv5X,KAAK9G,EAAIgoT,EAAS56Q,UAAW46Q,EAAS36Q,SAC/ErtC,EAAGwqT,aAAa7uQ,GAAO37C,EAAG6gY,gBAAgBllV,EAAKkkG,EAAQ+gP,OAClD,CACL5gY,EAAGwqT,aAAa7uQ,GAAO37C,EAAG6gY,gBAAgBllV,EAAKkkG,IAGnD,IAAK1pH,EAAQ,CACXn2B,EAAGwtB,QAAQ,WAYf5tB,wBAAwB6oB,EAAO9E,GAC7B,OAAO1jB,KAAK+rV,oBAAoBroU,GAAO1jB,KAAK+rV,oBAAoBvjU,GAQlE7oB,uBAAuB+4S,GACrB,OAAO14S,KAAKuwX,sBAAsB,eAAiB73E,EAQrD/4S,oBAAoB68B,EAAM5vB,EAAU,IAClC,MAAM4mN,EAAOxzN,KAAK6gY,cAAcrkW,EAAM5vB,GACtC,GAAI4mN,KAAU,EAAG,CACf,OAAQ,EAEV,OAAOxzN,KAAKy7U,UAAYjoH,EAAOxzN,KAAK+nT,SAASm3B,kBAG/Cv/U,cAAc68B,GAAMgmU,iBAClBA,EAAgBs+B,mBAChBA,EAAkB/8Q,MAClBA,EAAKp7F,IACLA,EAAGtU,IACHA,IAEA,MAAM0zS,SACFA,GACE/nT,MACJk2E,QACEA,EAAOjuC,KACPA,GACE8/Q,EACN,IAAIv0F,EAAOu0F,EAASo8B,gBAAgB3nT,GACpC,GAAIg3L,KAAU,GAAKgvI,GAAoBtsR,EAAS,CAC9C,IAAI6qT,EAAc,MAGlB,GAAI7qT,EAAQn1C,MAAQlB,GAAW+5C,aAAa3xC,EAAM,QAAU,GAAKA,IAAS,MAAO,CAC/E,MAAMjjB,KACFA,EAAIutB,GACJA,EAAEqwS,aACFA,EAAYhpS,OACZA,GACEs8B,EAAQn1C,KAEZigW,EAAgBxkW,EAAKpvB,WAErB6zX,EAAe7sX,KAAKuU,IAAIvU,KAAKC,IAAI2sX,EAAeh8W,GAAOutB,GAGzD,IAAKuuV,GAAsBG,IAAiBD,EAAe,CACzD,OAAQ,EAEV,MAEEE,EAAkBD,EAAezkW,EAAKnvB,aAAe,GAErD8zX,EAAkBvnV,EAASsnV,EAE3BE,EAAWxnV,EAASunV,EAAkBv+C,EAExCpmT,EAAOqD,GAAW9gB,IAAIyd,EAAM4kW,EAAWJ,EAAe,KACtDD,EAAc,KAEhB,GAAI7qT,EAAQ14C,KAAOqC,GAAW+5C,aAAa3xC,EAAM,OAAS,EAAG,CAC3D,MAAMjjB,KACJA,EAAIutB,GACJA,EAAEqwS,aACFA,EAAYhpS,OACZA,GACEs8B,EAAQ14C,IAEZ,IAAI6jW,EAAW7kW,EAAK4C,SAEpB,GAAI2kF,GAASvnF,EAAKpvB,aAAe,GAAKovB,EAAKnvB,eAAiB,GAAKmvB,EAAKlvB,eAAiB,GAAKkvB,EAAKjvB,oBAAsB,EAAG,CACxH,KAAM8zX,EAAW,EAAG,CAClBA,EAAW,GAGf,IAAIC,EAAU,EACd,GAAID,EAAWr8W,GAAQq8W,GAAY9uV,EAAI,CAErC,GAAIuuV,EAAoB,CAEtB,GAAI/8Q,EAAO,CACTu9Q,GAAW/uV,EAAK8uV,EAAW,GAAK,MAG7B,CACHC,GAAWt8W,EAAOq8W,EAAW,GAAK,EAEpC7kW,EAAOqD,GAAW9gB,IAAIyd,EAAM8kW,EAAS,KACrC9kW,EAAOqD,GAAW2I,QAAQhM,EAAM,IAAK,OAErC,GAAInoB,GAAOmoB,EAAKxsB,WAAaqE,GAAOsU,GAAO6T,EAAKxsB,WAAa2Y,EAAK,CAChE,OAAQ,OAEL,CAEL,OAAQ,GAIZ,MAAMiiB,aACFA,GACEm9Q,EAEJw5E,EAAc/kW,EAAK4C,WAAa,EAAI,EAAIwa,EAExC4nV,EAAgBhlW,EAAK4C,SAAW5C,EAAKpvB,WAAa,GAGlDq0X,EAAiBF,EAAcC,EAE/BE,EAASH,EAAcE,EAAiB7+C,EAE1CpmT,EAAOqD,GAAW9gB,IAAIyd,EAAMklW,EAASF,EAAgB52V,EAAc,KACnEm2V,EAAc,KAGhB,GAAIA,EAAa,CAGfvkW,EAAOqD,GAAWgiI,UAAUrlI,EAAMurR,EAAS56Q,UAAW46Q,EAAS36Q,SAE/DomL,EAAOu0F,EAASo8B,gBAAgB3nT,IAGpC,OAAOg3L,EAYT7zN,oBAAoBy7C,EAAUsoS,EAAgBi+C,EAAkB,OAC9D,MAAM5hY,EAAKC,MACT+nT,SACEA,GACEhoT,EACJyzN,EAAOzzN,EAAG6hY,kBAAkBxmV,GAAYr7C,EAAG07U,SAAW1zB,EAASm3B,iBACjE,GAAI1rH,EAAO,GAAKA,EAAOu0F,EAAS/jS,MAAO,CACrC,GAAI29W,EAAiB,CACnB,IAAIx1X,EAEJ,GAAIqnN,EAAO,EAAG,CACZrnN,EAAS0zB,GAAW9gB,IAAIgpS,EAAS56Q,UAAWqmL,EAAMu0F,EAAS9/Q,UACtD,CAEL97B,EAAS0zB,GAAW9gB,IAAIgpS,EAAS36Q,QAASomL,EAAOu0F,EAAS/jS,MAAO+jS,EAAS9/Q,MAG5E,GAAIy7S,EAAgB,CAClBv3U,EAAS47S,EAAS27B,EAAiB,QAAQv3U,GAE7C,OAAOA,EAET,OAAO,KAET,OAAO47S,EAAS8qC,gBAAgBr/H,EAAMkwH,GAGxC/jV,kBAAkBy7C,GAChB,MAAM86B,QACJA,EAAOjuC,KACPA,EAAI2C,aACJA,GACE5qC,KAAK+nT,SAET,GAAI7xO,EAAS,CACX,MAAM2rT,EAAW7hY,KAAKuwX,sBAAsB,OAE5C,GAAIr6S,EAAQ14C,KAAOqC,GAAW+5C,aAAa3xC,EAAM,OAAS,EAAG,CAC3D,MAAMjjB,KACFA,EAAI49T,aACJA,GACE1sQ,EAAQ14C,IAEZskW,EAAiB1mV,GAAYymV,EAAW,GAExCE,EAAoB3mV,EAAW0mV,EAEjC1mV,EAAW0mV,EAAiBl/C,GAAgB59T,EAAO4lB,GAAgBi3V,EAAWE,EAIhF,GAAI7rT,EAAQn1C,MAAQlB,GAAW+5C,aAAa3xC,EAAM,QAAU,GAAKA,IAAS,MAAO,CAC/E,MAAMjjB,KACFA,EAAI89T,iBACJA,GACE5sQ,EAAQn1C,KACZihW,EAAYhiY,KAAKuwX,sBAAsB,QAEvC0R,EAAgB7mV,EAAWymV,EAE3BK,EAAmB9mV,EAAW6mV,EAEhC7mV,EAAW6mV,EAAgBn/C,EAAmB99T,EAAOg9W,EAAYE,GAGrE,OAAO9mV,EAOTz7C,sBAAsBsoC,GACpB,MAAMloC,EAAKC,KACX,OAAOD,EAAG4/X,kBAAkB13V,KAAUloC,EAAG4/X,kBAAkB13V,GAAQpI,GAAWgjT,uBAAuB9iV,EAAGgoT,SAAS9/Q,KAAMA,EAAM,MAAQloC,EAAG07U,SAAW17U,EAAGgoT,SAASn7Q,WAOjKqlT,sBACE,GAAIjyV,KAAKsuC,KAAM,CACb,MAAM2vS,WACJA,GACEj+U,KAAK+nT,SACT,OAAQk2B,EAAWrxS,WAAa,GAAK5sC,KAAKuwX,sBAAsBtyC,EAAWh2S,MAE7E,OAAO,EAUTwzS,eACE,OAAOz7U,KAAK07U,UAEdD,aAAalqU,GACXvR,KAAKmiY,YAAY5wX,EAAM,OAEzB5R,YAAY4R,EAAM6wX,GAChBpiY,KAAK07U,UAAY17U,KAAKy/X,iBAAmBluX,EACzCvR,KAAK2tG,OAAO/qG,UAAWw/X,GAEzB/mD,qBACE,OAAOr7U,KAAK+nT,SAASk2B,WAKvBt+U,kBAAkB0iY,GAChB,MAAMtiY,EAAKC,MACTu/X,SACEA,EAAQx3E,SACRA,EAAQy3E,YACRA,GACEz/X,EACJuiY,EAAev6E,EAAS9/Q,KAC1B,IAAI12B,EAAO,EACTgxX,EAAQ,EACV,GAAIxiY,EAAGuuC,KAAM,CACX,MAAM2vS,EAAal2B,EAASk2B,WAC5BskD,EAAQ1iW,GAAWgjT,uBAAuBy/C,EAAcrkD,EAAWh2S,MAAQg2S,EAAWrxS,UAExF,IAAK4yV,EAAa,CAChB,MAAMgD,EAAcziY,EAAG0sJ,eAAiBs7J,EAASw7B,oBACjDhyU,EAAOguX,GAAY8C,EAAeG,EAAcA,EAAcH,EAC9D,GAAIE,EAAQ,KAAOhD,GAAYgD,EAAQ,GAAI,CACzChxX,EAAO6C,KAAKC,IAAI,EAAGkuX,EAAQhxX,GAAQgxX,OAEhC,CACLhxX,EAAO8wX,EAET,OAAO9wX,EAQTo8S,gBAEE,OAAO3tT,KAAK0gY,aAAe1gY,KAAK0gY,WAAatsX,KAAK+oB,MAAMn9B,KAAKy7U,SAAWz7U,KAAK+nT,SAASw7B,sBAQxF92L,qBACE,OAAOzsJ,KAAKwgY,gBAEd/zO,mBAAmBvgJ,GACjB,MAAMnM,EAAKC,KAGXD,EAAGygY,gBAAkBpsX,KAAKC,IAAI,EAAGnI,GACjC,GAAInM,EAAGygY,gBAAkB,EAAG,CAC1B,MAAMiC,EAAc1iY,EAAG0gY,kBAAkB1gY,EAAG0/X,kBAC5C,GAAIgD,EAAc,GAAKA,IAAgB1iY,EAAG07U,SAAU,CAClD17U,EAAG4tG,WAcThuG,SAASsO,EAAQjO,KAAKw7U,eAAgBknD,EAAkB,MAAOhuC,EAAS,OACtE,MAAM30V,EAAKC,KACTogV,EAAQ,GACRwjB,EAAgB8+B,EAAkB3iY,EAAG4iY,aAAe10X,EACpD20X,EAAa7iY,EAAG8iY,iBAChBC,EAAY/iY,EAAGm0B,SAAWn0B,EAAGm0B,QAAQjmB,GAAOg6B,KAC5CmG,EAAYw0V,GAAc,MAAQ7iY,EAAGm0B,SAAWn0B,EAAGm0B,QAAQ0uW,GAAY36V,KACvE86V,EAAaH,GAAc,MAAQ/iW,GAAWmjW,eAAe50V,EAAW00V,GACxEG,KAAkBljY,EAAGm0B,SAAWn0B,EAAGm0B,QAAQ0vU,GAAew8B,eAC5D,GAAI6C,EAAc,CAChB,MAAM/vI,EAAQnzP,EAAGwqT,aAAaq5C,GAC9B,IAAK,IAAIhlW,EAAI,EAAGwwB,EAAI8jO,EAAMp0P,OAAQF,EAAIwwB,EAAGxwB,IAAK,CAC5CwhV,EAAM5hV,KAAK,CACTg+B,KAAM02N,EAAMt0P,GAAGuuC,iBAGd,CACLptC,EAAGmjY,gBAAgBt/B,GAAe,CAACp7U,EAAO9E,KACxC08T,EAAM5hV,KAAK,CACTg+B,KAAMk4T,EAAShxU,EAAM8E,EAErBw7U,QAAS4+B,IAAe30X,GAAS80X,GAAchjY,EAAGojY,YAAYzuC,EAAShxU,EAAM8E,QAInF,OAAO43T,EAETm/C,eACE,OAAOv/X,KAAKsgY,UAOd3gY,oBAAoByiY,GAClB,MAAMC,EAAejuX,KAAK+oB,MAAMn9B,KAAKysJ,eAAiBzsJ,KAAK+nT,SAASw7B,qBACpEvjV,KAAKmiY,YAAYE,EAAcD,GAEjC9zV,WACE,OAAOtuC,KAAKojY,MAQd90V,SAAS/uC,GACP,GAAIA,IAAUS,KAAKojY,MAAO,CACxBpjY,KAAKojY,MAAQ7jY,EACb,GAAIS,KAAK8/X,WAAY,CACnB9/X,KAAK2tG,WAOXhuG,gBAAgBy7C,EAAUioV,EAAiB1C,GACzC,MAAM5gY,EAAKC,KACTkzP,EAAQ,IACR78M,MACEA,EAAK0zQ,cACLA,EAAgB,IACds5E,EACJtjN,EAAQlgJ,GAAWoL,UAAU,IAAIz8B,OACjCu5S,SACEA,GACEhoT,EACJujY,EAAYvjY,EAAGm0B,QAAQp1B,OAAS,EAChCykY,EAAoB,CAAC/6W,EAAO9E,EAAK9kB,EAAGkT,EAAQooB,KAC1C,IAAI36B,EAAQsgC,GAAW/C,OAAOtU,EAAO66W,EAAgB91Q,YACrD,MAKEi2Q,EAAiB5kY,EAAI,IAAMkT,EAC3Bo/N,EAAW,CACT76L,MAAAA,EACA7tB,MAAAA,EACA9E,IAAAA,EACAnkB,MAAO26B,EAAOA,EAAK0lH,OAASrgJ,EAC5BwqT,cAAAA,EACA7iT,MAAOo8X,IAAcloV,GAAYr7C,EAAG4Y,QAAUovS,EAAS44B,WAAa6iD,GAAkBzjY,EAAG4Y,MAAM8iU,SAAW17U,EAAG66X,wBAAwBpyW,EAAO9E,GAC5IxT,MAAOtR,GAEX,GAAIsyO,EAAShqO,QAAU,EAAG,CACxB,OAGFgqO,EAASi5E,MAAQ54S,EAAO,EACxBA,GAAQ2/N,EAAShqO,MACjBnH,EAAG2/X,kBAAkBtkV,GAAU5yB,EAAMxY,WAAa,EAClD,GAAIqzX,EAAgB3jK,SAAU,CAC5BngO,EAAQ8jY,EAAgB3jK,SAAS74N,KAAKw8X,EAAgB/mX,SAAWvc,EAAIyoB,EAAO9E,EAAKwtN,EAAUtyO,GAC3FsyO,EAAS3xO,MAAQA,GAAS,KAAO,GAAKA,EAGxC,GAAI8jY,EAAgBp7V,OAAS,SAAWo7V,EAAgBz2V,WAAay2V,EAAgBz2V,YAAc,GAAI,CACrGskM,EAAS64E,eAAiB,wBAA0BvhS,EAAM4W,SAC1D,GAAIS,GAAWoL,UAAUziB,EAAO,MAAQu3J,IAAU,EAAG,CACnDmxD,EAAS64E,eAAiB,8BAG9B72D,EAAM10P,KAAK0yO,IAEf,IAAI3/N,EAAO,EACXxR,EAAG2/X,kBAAkBtkV,GAAY,GACjC,GAAIulV,EAAa,CACfA,EAAY3hY,SAAQ,CAACkyO,EAAUtyO,IAAM2kY,EAAkBryJ,EAAS1oN,MAAO0oN,EAASxtN,IAAK9kB,EAAGA,IAAM+hY,EAAY7hY,OAAS,EAAGoyO,SACjH,CACLnxO,EAAGmjY,gBAAgB9nV,EAAUmoV,GAE/B,OAAOrwI,EAETyoF,iBACE,MAAO,oBAAqB37U,KAAOA,KAAKk0B,QAAQl0B,KAAKypT,iBAAmBzpT,KAAKo7U,aAE/EA,mBACE,OAAOp7U,KAAKk0B,QAAQl0B,KAAKk0B,QAAQp1B,OAAS,GAE5C6jY,mBACE,OAAO3iY,KAAKk0B,QAAQp1B,OAAS,EAQ/B+jY,uBACE,MAAM3uW,QACJA,GACEl0B,KACJ,GAAIk0B,EAAS,CACX,OAAO9f,KAAKC,IAAI6f,EAAQp1B,OAAS,EAAG,GAEtC,OAAO,KAWTa,YAAY68B,GACV,MAAMinW,EAAYzjY,KAAK6iY,iBAGvB,OAAOY,GAAa,MAAQzjY,KAAK0/X,kBAAkB+D,IAAczjY,KAAK0/X,kBAAkB+D,GAAWjnW,EAAKxsB,YAAc,MAUxHrQ,gBAAgBy7C,EAAUkpS,EAAYhoU,EAAUtc,MAC9C,MAAMk0B,QACJA,EAAO6zR,SACPA,GACE/nT,KACJ,GAAIk0B,EAAS,CAEX,GAAIknB,IAAalnB,EAAQp1B,OAAS,EAAG,CACnCipT,EAAS/oT,SAAQ,CAACkxB,EAAGhgB,IAAUo0U,EAAWz9U,KAAKyV,EAAS4T,EAAEid,UAAWjd,EAAEkd,QAASl9B,EAAOA,IAAU63S,EAAS/jS,MAAQ,SAG/G,CACH,MAAM47H,EAAS1rH,EAAQknB,GACvB2sQ,EAAS27E,mBAAmB9jP,EAAO33G,KAAM23G,EAAOhzG,UAAW03S,EAAYhoU,KAW7E3c,oBAAoB2kV,EAAYhoU,GAC9Btc,KAAKkjY,gBAAgBljY,KAAKypT,gBAAiB66B,EAAYhoU,GAIzD3c,kBAAkB68U,GAChB,MAAMz8U,EAAKC,KAEXD,EAAGm0B,QAAU,KACbn0B,EAAGkhN,uBAAuBlhN,EAAG07U,UAK7B17U,EAAGypT,WAAagzB,EAChBv+U,OAAOmZ,OAAOrX,EAAI,CAChBm0B,QAASsoT,EAAOtoT,QAChBsnT,eAAgBgB,EAAOhB,eACvB/xB,gBAAiB+yB,EAAO/yB,gBACxBiyB,UAAW37U,EAAGqrV,aAAe5O,EAAOtB,UAAYsB,EAAOrB,aAEzDp7U,EAAG0/X,iBAAmB1/X,EAAG07U,UAK7B6jD,GAAkBp3X,OAAS,oBAG3B,MAAMonC,GAAW,IAAI9gC,KASrB,IAAIm1X,GAAsBz2W,IACxB,IAAIy7C,EACJ,OAAOA,EAAS,MAAMg7T,UAA4Bz2W,GAAU7R,IAE1D1b,QAAQwE,GACN,GAAInE,KAAKy1C,KAAOz1C,KAAKorV,aAAc,CACjCjnV,EAAInE,KAAK4qT,kBAAkB+C,UAAYxpT,EAEzC,OAAOA,EAeTxE,sBAAsB+rV,EAAYhI,EAAgBl8Q,EAAQ,KAAMm6T,EAAkB,MAAO1I,EAAY,OACnG,IAAKzxT,EAAO,CACVkkR,EAAa1rV,KAAKmoN,mBAAmBy7K,8BAA8Bl4C,GAGrE,IAAKutC,EAAW,CACdvtC,EAAa1rV,KAAK6jY,QAAQn4C,GAE5B,OAAO1rV,KAAK4qT,kBAAkBihC,oBAAoBH,EAAYhI,EAAgBi+C,GAEhFhiY,iBAAiBiN,GACf,OAAO5M,KAAKuwV,sBAAsB3jV,EAAQu9S,MAAOv9S,EAAQ82U,eAAgB92U,EAAQ46D,MAAO56D,EAAQ+0X,gBAAiB/0X,EAAQqsX,WAa3Ht5X,cAAcw/H,EAAIukN,EAAgBl8Q,EAAQ,KAAMm6T,EAAkB,OAChE,OAAO3hY,KAAKmoN,mBAAmB6kI,cAAc7tN,EAAIukN,EAAgBl8Q,EAAOm6T,GAY1EhiY,oBAAoBqE,EAAG0/U,EAAgBi+C,EAAkB,OACvD,OAAO3hY,KAAKgtV,cAAc,CAAChpV,EAAEy9C,MAAOz9C,EAAEm7C,OAAQukS,EAAgB,MAAOi+C,GAUvEhiY,8BAA8Bg/H,EAAM+kN,EAAgBp7T,EAAUq5W,EAAkB,OAC9E,MAAM5hY,EAAKC,MACTorV,aACEA,GACErrV,EACJ+lS,EAAWslD,EAAezsN,EAAKx6H,EAAIw6H,EAAKxpF,IACxC4wP,EAASqlD,EAAezsN,EAAKvpF,MAAQupF,EAAKtpF,OAC5C,IAAI7sB,EAAO9E,EAEX,GAAIoiR,GAAY,GAAKC,EAAShmS,EAAG6qT,kBAAkB+C,UAAW,CAC5DnlS,EAAQzoB,EAAGwwV,sBAAsBzqD,EAAU49C,EAAgB,MAC3DhgU,EAAM3jB,EAAGwwV,sBAAsBxqD,EAAQ29C,EAAgB,WAGpD,GAAI59C,EAAW,EAAG,CACrBpiR,EAAM3jB,EAAGwwV,sBAAsBxqD,EAAQ29C,EAAgB,KAAMi+C,GAC7Dn5W,EAAQ9E,GAAOmc,GAAW9gB,IAAI2E,GAAM4E,EAAU,UAG3C,CACHE,EAAQzoB,EAAGwwV,sBAAsBzqD,EAAU49C,EAAgB,KAAMi+C,GACjEj+W,EAAM8E,GAASqX,GAAW9gB,IAAIyJ,EAAOF,EAAU,MAEjD,MAAO,CACLE,MAAAA,EACA9E,IAAAA,GAUJi5T,wBACE,OAAO38U,KAAK8jY,mBAEdnnD,sBAAsB7/S,GACpB98B,KAAK8jY,mBAAqBhnW,EAE1B98B,KAAKutB,QAAQ,0BAA2B,CACtCuP,OAAAA,IASJn9B,iBAAiB68B,GACf,OAAOqD,GAAW/C,OAAON,EAAMx8B,KAAK28U,mBAStCh9U,kBAAkBytC,EAASD,GACzB,GAEAC,EAAQhgC,aAAe,GAAKggC,EAAQ//B,eAAiB,KAEpD8/B,KAAeC,EAAQ3E,YAAc0E,EAAU1E,WAAa2E,EAAQlgC,aAAeigC,EAAUjgC,YAAckgC,EAAQjgC,YAAcggC,EAAUhgC,cAE3I0yB,GAAWsqT,uBAAuBnqV,KAAK28U,mBAAoB,CAE1DvvS,EAAUvN,GAAW9gB,IAAIquB,GAAU,EAAG,OAExC,OAAOA,EAWTztC,oBAAoBytC,EAASD,GAC3B,OAAOntC,KAAK+yV,iBAAiB/yV,KAAKmgW,kBAAkB/yT,EAASD,IAa/DxtC,sBAAsB68B,EAAM5vB,EAAU,MACpC,MAAM7M,EAAKC,MACT4qT,kBACEA,GACE7qT,GACJsgV,aACEA,EAAYvU,QACZA,EAAO6V,MACPA,EAAKx0S,UACLA,EAASC,QACTA,EAAOnF,KACPA,GACEloC,EAAGgoT,SACPwa,EAAS/lS,EAAK+L,UAEhB,GAAI37B,IAAY,KAAM,CACpBA,EAAU,CACR46D,MAAO,WAEJ,IAAK56D,EAAS,CACnBA,EAAU,CACR46D,MAAO,YAEJ,KAAM,UAAW56D,GAAU,CAChCA,EAAQ46D,MAAQ,KAElB,IAAI9rB,EAGJ,KAAMlf,aAAgBhuB,MAAO,CAC3B8gC,GAAS9I,QAAQhK,GACjBA,EAAO8S,GAGT,GAAI+wS,GAAgB7jT,EAAKY,sBAAwB+P,EAAU/P,qBAAuB+P,EAAU/P,sBAAwBgQ,EAAQhQ,qBAAuByC,GAAWgjT,uBAAuB56S,EAAM,UAAY,EAAG,CACxM,GAAIs6R,EAASuJ,GAAWvJ,EAASof,EAAO,CACtC,OAAQ,EAEVjmS,GAAO6mR,EAASuJ,IAAY6V,EAAQ7V,GAAWlhB,EAAkB+C,cAG9D,CACHjyQ,EAAMkvQ,EAAkBmhC,oBAAoBvvT,EAAM5vB,GAGpD,GAAI7M,EAAG01C,KAAO11C,EAAGqrV,aAAc,CAC7B1vS,EAAMkvQ,EAAkB+C,UAAYjyQ,EAEtC,IAAK9uC,EAAQ46D,MAAO,CAClB9rB,EAAM37C,EAAGooN,mBAAmB47K,0BAA0BroV,GAExD,OAAOA,EAST/7C,oBAAoBwtC,EAAWC,GAC7B,OAAOptC,KAAK4qT,kBAAkBgwE,wBAAwBztV,EAAWC,GASnE42V,yBACE,MAAMjkY,EAAKC,MACTorV,aACEA,EAAYrjC,SACZA,GACEhoT,GACJujH,WACEA,GACE8nO,EAAerrV,EAAG2uV,gBAAkB3uV,EACxC6+J,EAAUt7C,EAAWn/G,EAAIm/G,EAAW7qE,YAAc,EAClDwrV,EAAU3gR,EAAW9+E,EAAI8+E,EAAW/qE,aAAe,EACrD,GAAIwvQ,EAASs4B,aAAc,CAGzB,MAAM6jD,EAAe94C,EAAexsL,EAAUt7C,EAAW9qE,YAAcyrV,EAAU3gR,EAAW7rE,aAC1F0sV,EAAcp8E,EAAS+jB,SAAW/jB,EAAS45B,MAAQ55B,EAAS+jB,SAAWo4D,EACzE,OAAO,IAAI11X,KAAK21X,OACX,CACL,MAAMhlQ,EAAKisN,EAAe,CAACxsL,EAAS,GAAK,CAAC,EAAGqlO,GAC7C,OAAOlkY,EAAGitV,cAAc7tN,EAAI,KAAM,OAGtCilQ,+BACE,OAAOpkY,KAAKqkY,mBAAqBrkY,KAAKqkY,iBAAmBrkY,KAAKgkY,oBA4BhE3oD,qBACE,OAAOr7U,KAAK+nT,SAASk2B,WAEvB5C,mBAAmB4C,GACjBj+U,KAAK+nT,SAASk2B,kBAAoBA,IAAe,SAAW,CAC1DrxS,UAAWqxS,EACXh2S,KAAMjoC,KAAK+nT,SAASk2B,WAAWh2S,MAC7Bg2S,EAIN3vS,WACE,IAAIg2V,EAAuBC,EAC3B,OAAQD,GAAyBC,EAAyBvkY,KAAK8tT,sBAAwB,MAAQy2E,SAAgC,OAAS,EAAIA,EAAuBj2V,QAAU,MAAQg2V,SAA+B,EAAIA,EAAwBtkY,KAAKojY,MAEvPzjY,WAAW2uC,GACT,IAAKtuC,KAAKwd,cAAe,CACvBxd,KAAK4qT,kBAAkBt8Q,KAAOA,EAC9BtuC,KAAK+nT,SAASw3B,eAAiBjxS,GAAQtuC,KAAKo/W,WAIhDz/W,6BAA4Bw8N,QAC1BA,EAAOnlL,WACPA,EAAU+pH,QACVA,IAGA,IAAK/gK,KAAKwkY,kBAAmB,CAC3BxkY,KAAKqkY,iBAAmB,MAM5B7hU,qBACCtjE,EAAgBypE,EAAQ,QAAS,sBAAuBzpE,EAAgBypE,EAAQ,eAAgB,CAcjGr6B,KAAM,QACJq6B,GAMN,MAAM2pT,aACJA,IACExxU,GA0BJ,IAAI2jV,GAAqBv3W,IACvB,IAAIy7C,EACJ,OAAOA,EAAS,MAAM87T,UAA2Bv3W,GAAU7R,IACzD1b,eAAe4b,GACbrB,SAASqB,GACTrc,EAAgBc,KAAM,gBAAiB,IAAI6e,KAS7Clf,gBACE,MAAMI,EAAKC,MACT0kY,gBACEA,EAAeC,0BACfA,GACE5kY,EAEN2kY,EAAgBjuV,QAAUkuV,EAA0BluV,QAAU12C,EAAGurV,uBACjEo5C,EAAgBpoX,QAAUqoX,EAA0BroX,QAAUvc,EAC9D+gD,GAAY3xB,GAAGu1W,GACf5jV,GAAY3xB,GAAGw1W,GAMf5kY,EAAG6kY,kBAAoB9jV,GAAY3xB,GAAG,CACpCsnB,QAASt1C,SACT4/G,OAAQ,mBACRvhE,QAAS,KACTljC,QAASvc,IAIbJ,YACEK,KAAK4kY,oBACL1qX,MAAM8B,YAGRrc,4BAA4Bo0V,EAAc5jU,GACxC,MAAM,IAAIzf,MAAM,yBAElB/Q,4BAA4BuxO,EAAU/gN,GACpC,MAAM,IAAIzf,MAAM,yBAQlB/Q,oBAAoBwwB,GAClB,MAAMpwB,EAAKC,KACT6kY,EAAkB9kY,EAAG+kY,wBAAwB30W,GAG/CpwB,EAAGglY,iBAAmB50W,EAEtB,GAAI00W,EAAiB,CAGnB9kY,EAAGwtB,QAAQ,GAAGs3W,EAAgB9wC,aAAeh0V,EAAGusV,mBAAqB,aAAagmC,GAAaniW,EAAMtjB,OAASzC,EAAaK,WAAW0lB,EAAMtjB,QAASg4X,GAGvJ9kY,EAAG8kY,gBAAkBA,EAEvBllY,8BAA8BwwB,GAC5B,GAAIA,EAAMxxB,OAAO64C,gBAAkBx3C,KAAKi/V,iBAAkB,CACxDj/V,KAAKglY,oBAAoB70W,IAQ7BxwB,iBAAiBqE,GACf,IAAIihY,EAIJ,MAAOA,EAAqBjlY,KAAK+xH,SAAS8oO,OAAS,MAAQoqC,SAA4B,GAAKA,EAAmB3xN,YAActvK,EAAErF,OAAOo5C,SAAS/3C,KAAKy2C,UAAYz2C,KAAK8zJ,YAAY/7G,SAAS/zC,EAAErF,SAAU,CACpM,MAAMkmY,gBACJA,EAAeE,iBACfA,GACE/kY,KACJ,GAAI6kY,EAAiB,CACnB,MAAMlmY,EAASs5C,GAAUkL,iBAAiB0hV,EAAgBhoP,SAAS57F,QAAS4jV,EAAgBhoP,SAAS37F,SACnGgkV,EAAe,IAAI1iY,aAAa,cAAeuiY,GAC/CI,EAAa,IAAIrgV,WAAW,YAAaigV,GAE3CG,EAAangO,gBAAkBogO,EAAWpgO,gBAAkB,KAE5DpmK,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO80D,cAAcyxU,GACrEvmY,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO80D,cAAc0xU,KAI3ExlY,sBAAsB8tE,EAAS6sS,GAO7Bt6W,KAAKutB,QAAQ,wBAAyB,CACpC+sV,WAAAA,EACA7sS,QAAAA,IAEF,IAAKA,EAAS,CACZztE,KAAKutB,QAAQ,uBAWjB5tB,wBAAwBk9I,GACtB,MAAM98I,EAAKC,KACT+zV,EAAel3M,EAASl+I,OAAOslD,QAAQlkD,EAAG64V,oBAC1Ct6H,EAAcv+N,EAAGqlY,2BAA2BvoP,GAC9C,GAAIyhF,EAAa,CACf,MAAM+mK,EAActlY,EAAG8yX,oBAAoBh2O,EAAU,SACrD,IAAKwoP,EAAa,CAChB,OAEF,MAAMn0J,EAAW1gI,GAAa9+F,IAAI4sN,GAChCgnK,EAAcvxC,EAAeh0V,EAAGioW,4BAA4BjU,EAAcl3M,GAAY98I,EAAGwlY,4BAA4Br0J,EAAUr0F,GAC/H3sI,EAAQnQ,EAAGkpT,WAAalpT,EAAGu1S,cAAc7vS,QAAQ6/X,EAAYtxK,gBAAkBkd,EAASviE,IAAIooD,UAC5FkzF,EAAYlqT,EAAGgoT,SAASo8B,gBAAgBkhD,GACxC7xK,EAAOzzN,EAAGgoT,SAAS/0N,MAAM5+E,KAAK+oB,MAAM8sR,IACtC,GAAIz2F,EAAM,CACR,OAAO90N,EAAe,CACpB8mY,kBAAmB,KACnB3oP,SAAAA,EACAk3M,aAAAA,EACAz1H,YAAAA,EACApuN,MAAAA,EACAsjN,KAAAA,EACAy2F,UAAAA,EACAztR,KAAM6oW,EACN9qB,cAAe/mJ,EAAKrmL,UACpBqtU,YAAahnJ,EAAKpmL,QAClButU,gBAAiBnnJ,EAAK/nJ,YACtBkjG,IAAKuiE,EAASviE,IACdx+I,MAAO0sH,GACNyoP,KAIT3lY,4BAA2BhB,OACzBA,EAAMuiD,QACNA,EAAOr0C,KACPA,IAEA,MAAM9M,EAAKC,MACTipT,WACEA,EAAUg2C,iBACVA,GACEl/V,EACJg0V,EAAep1V,EAAOslD,QAAQlkD,EAAGwrV,eAGnC,GAAI0T,EAAiBlnT,SAASp5C,GAAS,CAKrC,GAAIo1V,GAAgBp1V,IAAWsgW,GAAoBpyV,IAAS,YAAa,CACvE,IAAI44X,EACJ,OAAQA,EAAwB1lY,EAAG82N,WAAWiwB,SAAS5lM,EAAS,UAAY,MAAQukV,SAA+B,OAAS,EAAIA,EAAsB1+L,QAAQhnM,EAAGykP,eAAe75O,KAIpL,GAAIopV,EAAc,CAChB,OAAOh0V,EAAGgnM,QAAQ,CAChBpnM,CAACspT,EAAa,MAAQ,UAAWA,EAAa,EAAIlpT,EAAG2lY,iBAAiB3xC,GACtEh9I,OAAQh3M,EAAGykP,qBAER,CAEL,OAAO7lP,EAAO2D,QAAQ,eAAiB3D,EAAOg1D,kBAAoBh1D,EAAOslD,QAAQlkD,EAAG4lY,mBAIxFhmY,kBAAkB82C,GAChB,OAAOA,EAAQwN,QAAQjkD,KAAK2lY,kBAE9BhmY,0BAA0BwwB,GACxB,MAAMxxB,EAASwxB,EAAMxxB,OAAOslD,QAAQ,+BACpC,GAAItlD,EAAQ,CACV,MAAMuR,EAAQvR,EAAO+3B,QAAQuzR,UAC3B7uQ,EAAWz8C,EAAO64C,cAAc9gB,QAAQmzR,eACxCU,EAAevqT,KAAK4qT,kBAAkBL,aAAanvQ,GAAUlrC,GAC7D01X,EAAc5lY,KAAK+xH,SAAS6zQ,YAE9B,IAAKA,GAAez1W,EAAMtjB,OAAS+4X,EAAY3qP,aAAc,CAC3Dj7I,KAAKutB,QAAQ,iBAAiBnjB,EAAaK,WAAW0lB,EAAMtjB,QAAS,CACnEsgC,UAAWo9Q,EAAa/hS,MACxB4kB,QAASm9Q,EAAa7mS,IACtByM,MAAAA,MAKRxwB,mBAAmBwwB,GACjBnwB,KAAK6lY,0BAA0B11W,GAC/BjW,MAAM0jQ,mBAAmBztP,GAE3BxwB,eAAewwB,GACbnwB,KAAK6lY,0BAA0B11W,GAC/BjW,MAAM+/P,eAAe9pP,GAEvBxwB,kBAAkBwwB,GAChBnwB,KAAK6lY,0BAA0B11W,GAC/BjW,MAAM4rX,kBAAkB31W,GAE1BxwB,qBAAqBwwB,GACnBnwB,KAAK6lY,0BAA0B11W,GAC/BjW,MAAM6rX,qBAAqB51W,GAO7BxwB,mBAAmBwwB,GACjB,IAAI61W,EACJ9rX,MAAM+rX,mBAAmB91W,GACzB,MAAMpwB,EAAKC,MACTrB,OACEA,GACEwxB,GACJ+1W,cACEA,GACEnmY,EAEN,GAAIpB,EAAOslD,QAAQlkD,EAAG64V,wBAA0BotC,EAAwBjmY,EAAGgyH,SAAS2/P,aAAe,MAAQsU,SAA+B,GAAKA,EAAsBj/N,YAAa,CAChL,MAAMgtL,EAAep1V,EAAOslD,QAAQlkD,EAAGwrV,eACvC,IAAK26C,EAAcjoX,IAAI81U,KAAkBh0V,EAAGomY,eAAgB,CAC1DD,EAAcnnX,IAAIg1U,GAClBA,EAAan1S,UAAU7/B,IAAIhf,EAAGqmY,yBAC9B,MAAM1/X,EAAS3G,EAAGioW,4BAA4BjU,EAAc5jU,GAC5D,GAAIzpB,EAAQ,CAGV3G,EAAGwtB,QAAQ,GAAGxtB,EAAGusV,+BAAgC5lV,UAGhD,GAAIw/X,EAAc30X,KAAM,CAC7BxR,EAAGsmY,WAAWl2W,IAQlBxwB,kBAAkBwwB,GAChB,IAAIm2W,EACJpsX,MAAMqsX,kBAAkBp2W,GACxB,MAAMpwB,EAAKC,MACTrB,OACEA,EAAM0kD,cACNA,GACElzB,EACJq2W,EAAa7nY,EAAOslD,QAAQlkD,EAAG64V,oBAC/B6tC,EAAY9nY,EAAOslD,QAAQlkD,EAAGwrV,eAC9B4H,EAAiBpzV,EAAGi1V,sBAAsBr2V,GAG5C,GAAI6nY,GAAcrzC,GAAkBpzV,EAAGmmY,cAAcjoX,IAAIwoX,OAAiBH,EAAyBvmY,EAAGgyH,SAAS2/P,aAAe,MAAQ4U,SAAgC,GAAKA,EAAuBv/N,YAAa,CAE7M,GAAI1jH,GAAiBpL,GAAUmY,aAAao2U,EAAYnjV,GAAgB,CACtE,OAEFtjD,EAAG4lW,QAAQ8gC,EAAWt2W,IAG1BxwB,QAAQ82C,EAAStmB,GACf,MAAMpwB,EAAKC,KACXy2C,EAAQmI,UAAU98C,OAAO/B,EAAGqmY,yBAC5BrmY,EAAGwtB,QAAQ,GAAGxtB,EAAGusV,+BAAgCvsV,EAAGioW,4BAA4BvxT,EAAStmB,IACzFpwB,EAAGmmY,cAAc5sX,OAAOm9B,GAE1B92C,WAAWwwB,GACT,IAAK,MAAMsmB,KAAWz2C,KAAKkmY,cAAe,EACvCzvV,EAAQyjE,YAAcl6G,KAAK2lW,QAAQlvT,EAAStmB,IAOjDqyC,qBACCtjE,EAAgBypE,EAAQ,QAAS,qBAAsBzpE,EAAgBypE,EAAQ,eAAgB,CAMhGk8T,gBAAiB,CACfrjX,QAAS,CAGP7hB,MAAMigQ,EAAIC,GAGR,OAAQD,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG1vP,UAAY2vP,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG3vP,SAAW0vP,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG+6G,oBAAsB96G,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG86G,sBAAwB/6G,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG26G,gBAAkB,KAAO16G,IAAO,MAAQA,SAAY,OAAS,EAAIA,EAAG06G,gBAAkB,SAI9Xr7W,EAAgBypE,EAAQ,aAAc,CACxC+7T,gBAAiB,CACfl+U,UAAW,sBACXJ,UAAW,sBACXC,QAAS,sBACTngD,MAAO,sBACPogD,SAAU,sBACVC,YAAa,sBACb20F,UAAW,sBACXz0F,SAAU,uBAEZk+U,0BAA2B,CACzBvpP,WAAY,gCACZD,WAAY,gCACZ37F,QAAS,QAETtgD,EAAgBypE,EAAQ,YAAa,CAEvC+9T,iBAAkB,QAChB/9T,GAMN,MAAMg+T,GAAc,CAACrnW,EAAK,EAAGsnW,EAAK,IAAMA,EAAKtnW,EAoB7C,IAAIunW,GAAuB35W,GAAU,MAAM25W,UAA6B35W,GAAU7R,IAChFtN,mBACE,MAAO,sBAGTvO,0BACE,MAAO,CAiDLgqT,WAAY,mBAmBZ8yB,QAAS,MAGbz6T,2BACE,MAAO,CAOL86T,kBAAmB,MAcvBh9U,cAAc28U,GACZ,MAAMnkU,EAAS,CACbQ,MAAO3Y,MAET,IAAIk6B,EAAO,GAEX,GAAIoiT,IAAY,KAAM,CACpBpiT,EAAOw3K,GAAG32H,gBAGP,GAAIxzE,MAAMC,QAAQ80U,GAAU,CAC/B,IAAK,MAAME,KAAUF,EAAS,CAE5B,UAAWE,IAAW,SAAU,CAC9B,MAAMsqD,EAAep1L,GAAG7kI,QAAQ2vQ,GAChC,GAAIsqD,EAAc,CAChB5sW,EAAK17B,KAAKsoY,QAEP,CACL5sW,EAAK17B,KAAKg+U,SAKX,CACHxrS,GAAa55B,OAAOe,EAAQmkU,GAG9B,MAAMyqD,EAAc,IAAI/qD,GAAY7jU,GACpC4uX,EAAYhoX,IAAImb,GAChB,OAAO6sW,EAETpnY,iBAAiB6pT,EAAYw9E,GAC3B,MAAMjnY,EAAKC,MACTs8U,QACEA,GACEv8U,EACN,GAAIypT,EAAY,CACdA,EAAa8yB,EAAQ5tQ,aAAa86O,GAElC8yB,EAAQv9T,IAAIyqS,OACP,CACLA,EAAa8yB,EAAQhxS,MAEvB,MAAM27V,EAAWlnY,EAAGmnY,uBAAyB,GAC3Ct6X,EAAU48S,EAAW58S,UAAY48S,EAAW58S,QAAU,IACtDujB,EAAQvjB,EAAQujB,MAAQ,CACtBgd,UAAWvgC,EAAQugC,UACnBC,QAASxgC,EAAQwgC,QACjBpoB,KAAMgiX,EACNz0V,GAAIi3Q,EACJgzB,OAAQhzB,GAEV29E,GAAiBpnY,EAAG6gV,cAAgB7gV,EAAG6gV,YAAYl1N,OAAO89L,GAC1D49E,EAAiBT,GAAY/5X,EAAQugC,UAAW85V,EAAS95V,YAAcw5V,GAAY/5X,EAAQwgC,QAAS65V,EAAS75V,UAAYu5V,GAAY/5X,EAAQy6X,WAAYJ,EAASI,aAAez6X,EAAQugC,WAAaw5V,GAAY/5X,EAAQugC,UAAWptC,EAAGotC,YAAcvgC,EAAQwgC,SAAWu5V,GAAY/5X,EAAQwgC,QAASrtC,EAAGqtC,SAE3S,GAAI+5V,GAAiBC,EAAgB,CAGnC,IAAKD,EAAe,CAClBpnY,EAAG6gV,YAAc,KAanB,GAAI7gV,EAAGyd,eAAiBzd,EAAGwtB,QAAQ,qBAAsB4C,KAAW,MAAO,CACzE,OAAOq5R,IAIb7pT,iBAAiB68U,GACf,MAAMz8U,EAAKC,MACT4M,QACEA,GACE4vU,GACJrsT,MACEA,EAAKgd,UACLA,EAASC,QACTA,GACExgC,GACJw+U,aACEA,EACAk8C,UAAWv/E,EAEX+F,mBAAoBlD,GAClB7qT,EACN,IAAIsnY,WACAA,GACEz6X,EACJ2zX,EAAc,MAEhBxgY,EAAGwnY,oBAAsB,KAEzBxnY,EAAG48U,kBAAoB58U,EAAGoY,OAAOwkU,mBAAqBH,EAAOG,kBAC7D,GAAI50B,IAAahoT,EAAGyd,cAAe,CAEjCzd,EAAGmnY,sBAAwBt6X,EAE3B,GAAIm7S,EAASm4B,aAAc,CAEzBngV,EAAGy8P,iBACH,MAAMgrI,EAAc,CAClB58V,aAAc7qC,EAAG6qC,aACjBktG,UAAW/3I,EAAG+3I,UACdwnC,QAASv/K,EAAGu/K,SAEd,GAAIv/K,EAAGm6X,eAAgB,CACrBj8X,OAAOmZ,OAAOowX,EAAa58E,EAAkB68E,oCAAoCJ,EAAY,KAAM7qD,SAGhG,GAAIrvS,EAAW,CAClBq6V,EAAYr6V,UAAYA,EACxBq6V,EAAYp6V,QAAUA,EAEtB,IAAKi6V,GAAcj6V,EAAS,CAC1Bi6V,EAAa,IAAI74X,MAAM2+B,EAAUn9B,UAAYo9B,EAAQp9B,WAAa,QAG/D,CACLw3X,EAAYr6V,UAAY46Q,EAAS56Q,UACjCq6V,EAAYp6V,QAAUA,GAAW26Q,EAAS36Q,QAC1C,IAAKi6V,EAAY,CACfA,EAAatnY,EAAGikY,oBAGpBj8E,EAASm4B,aAAe,MACxBn4B,EAASyB,WAAagzB,EACtBz0B,EAAStwO,YAAY+vT,EAAa,MAClC58E,EAAkBnzO,YAAY,CAC5B+xO,WAAYgzB,EACZtoT,QAASsoT,EAAOtoT,QAKhBsnT,eAAgBgB,EAAOhB,gBAAkB,KAAOgB,EAAOhB,eAAiBgB,EAAOtoT,QAAQp1B,OAAS,EAChG28U,SAAU2P,EAAe5O,EAAOtB,UAAYsB,EAAOrB,YAAcqB,EAAOtB,WAAa,KAGvFn7U,EAAG88P,cAAc,OAEnB98P,EAAG+4L,UAEH,IAAKlsL,EAAQ86X,WAAa3nY,EAAG8oI,UAAW,CAEtC,GAAIw+P,EAAY,CAEdtnY,EAAGskY,iBAAmBgD,EAItBl3W,EAAMk3W,WAAaA,EACnB,MAAMM,EAAe5nY,EAAGqrV,aAAerrV,EAAG2uV,gBAAgBxnV,MAAQnH,EAAGujH,WAAW/qE,aAC9E4xQ,EAAQ/1S,KAAKC,IAAItU,EAAGwiW,sBAAsB8kC,EAAY,MAAQM,EAAe,EAAG,GAGlF5nY,EAAGykY,kBAAoB,KAEvB,GAAIr6E,KAAWpqT,EAAGqrV,aAAerrV,EAAGi3C,WAAaj3C,EAAGk3C,WAAY,CAC9DspV,EAAc,UACT,GAAIxgY,EAAGqrV,aAAc,CAC1BrrV,EAAG6nY,qBAAqBz9E,EAAO,WAC1B,CACLpqT,EAAG8nY,mBAAmB19E,EAAO,OAG/BpqT,EAAGgd,YAAW,KACZhd,EAAGykY,kBAAoB,QACtB,SACE,CAEL,IAAKzkY,EAAGqrV,aAAerrV,EAAGi3C,WAAaj3C,EAAGk3C,aAAe,EAAG,CAC1DspV,EAAc,SAGX,CACHxgY,EAAG+nY,iBAAiB7hH,SAAS,MAMrClmR,EAAG22B,QAAQqxW,SAAWvrD,EAAO7xU,GAY7B5K,EAAGwtB,QAAQ,eAAgB4C,GAC3BpwB,EAAGwnY,oBAAsB,MACzB,GAAIhH,EAAa,CACf,GAAIxgY,EAAGqrV,aAAc,CACnBrrV,EAAGooN,mBAAmB6/K,2BAA2BjoY,EAAGi3C,WAAYj3C,EAAGghK,aAC9D,CACLhhK,EAAGooN,mBAAmB8/K,yBAAyBloY,EAAGk3C,aAKxDt3C,YACE,GAAIK,KAAKkoY,SAASvvX,QAAU3Y,KAAM,CAChCA,KAAKkoY,SAASnsX,UAEhB7B,MAAM8B,YAGRrc,iBAAiBiN,GACf,MAAMT,EAAS+N,MAAMuE,iBAAiB7R,GAEtC,GAAIT,EAAOq9S,YAAcr9S,EAAOq9S,WAAW/kT,OAAS0H,EAAOq9S,WAAWlzS,KAAM,QACnEnK,EAAOq9S,WAAW/kT,KAE3B,OAAO0H,EAKTq2D,qBAwCF,IAAI2lU,GAAoBj7W,GAAU,MAAMi7W,UAA0Bj7W,GAAU7R,IAC1EtN,mBACE,MAAO,mBAET8T,2BACE,MAAO,CAOLumX,iBAAkB,KAOlBjS,0BAA2B,KAC3BkS,kBAAmB,KAOnB7R,aAAc,EASdC,aAAc,KAQd6R,kBAAmB,EAUnBC,0BAA2B,MAG/B5oY,UAAUwY,GACR,MAAMpY,EAAKC,KACXka,MAAMsB,UAAUrD,GAChB,GAAIpY,EAAGqoY,iBAAkB,CACvBtnV,GAAY3xB,GAAG,CACbsnB,QAAS12C,EAAGurV,uBACZtkO,MAAO,UAEPtnE,UAAW,CACT14B,OAAQ,IAERrnB,IAAIwwB,GACF,GAAIA,EAAM2yB,QAAS,CACjB3yB,EAAM21B,oBAIZxpC,QAASvc,EACTy/C,QAAS,KACTC,QAAS,QAGb,GAAI1/C,EAAGo2X,0BAA2B,CAChCp2X,EAAGovB,GAAG,0BAA0B,EAC9Bge,UAAAA,EACAC,QAAAA,MAEArtC,EAAGuvX,WAAW,CACZniV,UAAAA,EACAC,QAAAA,QAKRqpV,mBACE,OAAOz2X,KAAKwoY,eAAiBxoY,KAAKs8U,QAAQt4T,MAAQ,EAOpDyyW,iBAAiBxoX,GACf,UAAWA,IAAU,SAAU,CAC7BA,EAAQjO,KAAKs8U,QAAQt4T,MAAQ,EAE/B,GAAI/V,EAAQ,GAAKA,GAASjO,KAAKs8U,QAAQt4T,MAAO,CAC5C,MAAM,IAAItT,MAAM,oCAElB1Q,KAAKwoY,cAAgBv6X,EAEvBuoX,mBACE,OAAOx2X,KAAKyoY,cAOdjS,iBAAiBvoX,GACf,UAAWA,IAAU,SAAU,CAC7BA,EAAQ,EAEV,GAAIA,EAAQ,GAAKA,GAASjO,KAAKs8U,QAAQt4T,MAAO,CAC5C,MAAM,IAAItT,MAAM,oCAElB1Q,KAAKyoY,cAAgBx6X,EAQvBooX,gBACE,OAAOr2X,KAAKs8U,QAAQ72U,QAAQzF,KAAKwpT,YAGnC6sE,cAAcpoX,GACZjO,KAAK0oY,YAAYz6X,GAUnBtO,oCAAoC68U,EAAQmsD,GAC1C,MAAMvtD,aACFA,GACEoB,EAGJt1U,EAAQlH,KAAKorV,aAAe5O,EAAOtB,UAAYsB,EAAOrB,WAIxD,OAAO/mU,KAAKkxB,OAAOzF,GAAW9gB,IAAI,IAAIvQ,KAAK,EAAG,EAAG,GAAI4sU,EAAaxuS,WAAa,EAAGwuS,EAAanzS,MAAQ,IAAIz5B,KAAK,EAAG,EAAG,KAGtHm6X,EAAoBzhY,EAAQs1U,EAAOosD,aAAe1hY,IAyCpDvH,OAAOwY,GACL,MAAMpY,EAAKC,KACX,UAAWmY,IAAW,SAAU,CAC9B,GAAIA,EAAOqkU,OAAQ,CACjBz8U,EAAG2oY,YAAYvwX,EAAOqkU,OAAQrkU,QACzB,GAAIA,EAAOlK,OAAS,KAAM,CAC/BlO,EAAG2oY,YAAYvwX,EAAOlK,MAAOkK,OACxB,CACLpY,EAAGuvX,WAAWn3W,QAEX,CACLpY,EAAG2oY,YAAYvwX,IAiBnBxY,YAAY68U,EAAQ5vU,EAAU,IAE5B,UAAW4vU,IAAW,SAAU,CAC9BA,EAASpoU,KAAKuU,IAAIvU,KAAKC,IAAImoU,EAAQx8U,KAAKw2X,cAAex2X,KAAKy2X,cAE9D,MAAM12X,EAAKC,MACTs8U,QACEA,GACEv8U,EACJ8oY,EAAe9oY,EAAGkpT,WAAa,aAAe,YAC9C6/E,EAAYxsD,EAAQ5tQ,aAAa8tQ,GACjCusD,EAAqBD,EAAUD,GAC/B17V,EAAYvgC,EAAQugC,UAAY,IAAI3+B,KAAK5B,EAAQugC,WAAa,KAC9DC,EAAUxgC,EAAQwgC,QAAU,IAAI5+B,KAAK5B,EAAQwgC,SAAW,KAE1DkvS,EAAQv9T,IAAI+pX,GACZ,IAAIE,EAAO77V,GAAaC,EAAU,CAChCD,UAAAA,EACAC,QAAAA,GACE,KACJ,MAAMi6V,EAAaz6X,EAAQy6X,WAAa,IAAI74X,KAAK5B,EAAQy6X,YAAc2B,EAAO,IAAIx6X,MAAM2+B,EAAUn9B,UAAYo9B,EAAQp9B,WAAa,GAAKjQ,EAAGqkY,yBACzI6E,EAAyBlpY,EAAGkpT,WAAalpT,EAAGujH,WAAW/qE,aAAex4C,EAAG2uV,gBAAgBxnV,MAC3F,GAAI+hY,IAA2B,EAAG,CAChC,OAAO,KAGT,IAAKD,EAAM,CACTA,EAAOjpY,EAAGmpY,0BAA0B7B,EAAY4B,EAAwBH,GAG1E,GAAI,UAAWl8X,EAAS,CACtBk8X,EAAU/zT,QAAQ8zT,EAAcj8X,EAAQ1F,OAE1CnH,EAAGopY,UAAY,KAEfL,EAAUl8X,QAAU,CAClBugC,UAAW67V,EAAK77V,WAAaptC,EAAGotC,UAChCC,QAAS47V,EAAK57V,SAAWrtC,EAAGqtC,QAC5Bi6V,WAAAA,GAEFtnY,EAAGypT,WAAas/E,EAIhBA,EAAUF,YAAc7oY,EAAG6qT,kBAAkB6wB,SAC7C17U,EAAGopY,UAAY,MAEfL,EAAU/zT,QAAQ8zT,EAAcE,GAChC,OAAOhpY,EAAGs2X,UAQZ12X,UAAUiN,GACR,MAAMyoS,EAAar1S,KAAKq1S,WACtB2zF,EAAO3zF,EAAW+zF,mBACpBx8X,EAAU3O,OAAOmZ,OAAO,CACtBiyX,WAAY,EACZC,YAAa,GACZ18X,EAASo8X,GAEZ,GAAIp8X,EAAQugC,WAAavgC,EAAQwgC,QAAS,CACxC,GAAIxgC,EAAQwgC,QAAUxgC,EAAQugC,UAAW,CACvCntC,KAAKsvX,WAAW1iX,OACX,CAEL5M,KAAK85X,aAAaltX,EAAQugC,aAsBhCxtC,WAAWwY,EAAS,IAClB,GAAIA,EAAOkxX,YAAclxX,EAAOmxX,YAAa,CAC3CnxX,EAAOoxX,YAAc,EACrBpxX,EAAOqxX,UAAY,EAErB,IAAKrxX,EAAOkxX,WAAYlxX,EAAOkxX,WAAa,EAC5C,IAAKlxX,EAAOmxX,YAAanxX,EAAOmxX,YAAc,EAC9C,IAAKnxX,EAAOg1B,YAAch1B,EAAOi1B,QAAS,MAAM,IAAI18B,MAAM,sDAC1D,MAAM3Q,EAAKC,KAETypY,EAAetxX,EAAOoxX,aAAe,GAAKpxX,EAAOqxX,WAAa,EAChE,IAAIr8V,UACFA,EAASC,QACTA,GACEj1B,EACJ,GAAIsxX,EAAc,CAChBt8V,EAAYtN,GAAW9gB,IAAIouB,GAAYh1B,EAAOoxX,YAAaxpY,EAAGgoT,SAAS+zB,UACvE1uS,EAAUvN,GAAW9gB,IAAIquB,EAASj1B,EAAOqxX,UAAWzpY,EAAGgoT,SAAS+zB,UAElE,GAAI3uS,GAAaC,EAAS,CAExB,MAAMq/G,eACFA,GACE1sJ,EAAG6qT,kBACP0xB,EAAUv8U,EAAGu8U,QAAQvhQ,WACrB2uT,EAASt8V,EAAUD,GAAa,EAKlC,IAAIw8V,EAAY5pY,EAAGs2X,UACjB37F,EACA3oG,EAEF,GAAI43M,KAAe,EAAGA,EAAY,EAClC,IAAI5tD,EAAah8U,EAAG6pY,oCAAoCttD,EAAQqtD,GAAY,MAO1EE,EAAiBF,GAAajvG,EAAMgvG,EAAS3tD,EAAa5jU,EAAOkxX,WAAalxX,EAAOmxX,YAAc78O,GAAkB,EAAI,GACzH4pO,EACAyT,EAAc,KAEhB,MAAOD,GAAkB,GAAKA,GAAkBvtD,EAAQx9U,OAAS,EAAG,CAElEu3X,EAAY/5C,EAAQutD,GACpB9tD,EAAah8U,EAAG6pY,oCAAoCvT,EAAW,MAC/D,MAAM0T,EAAYL,EAAS3tD,EAAa5jU,EAAOkxX,WAAalxX,EAAOmxX,YAEnE,GAAI5uG,KAAS,EAAG,CAEd,GAAIqvG,GAAat9O,EAAgB,CAC/Bq9O,EAAcD,EAEd,WAGG,CAIL,GAAIE,GAAat9O,EAAgB,CAE/B,GAAIk9O,IAAcE,EAAiBnvG,EAAK,CAEtCovG,EAAcD,OAEX,CAIL,OAGJA,GAAkBnvG,EAGpBovG,EAAcA,GAAe,KAAOA,EAAcD,EAAiBnvG,EAEnE27F,EAAY/5C,EAAQwtD,GACpB,MAAME,EAAa3T,EAAUj7C,aAAanzS,KAC1C,GAAI9vB,EAAOkxX,YAAclxX,EAAOmxX,YAAa,CAE3Cn8V,EAAY,IAAI3+B,KAAK2+B,EAAUn9B,UAAY+rU,EAAa5jU,EAAOkxX,YAC/Dj8V,EAAU,IAAI5+B,KAAK4+B,EAAQp9B,UAAY+rU,EAAa5jU,EAAOmxX,aAE7D,MAAMW,EAAYpqW,GAAWwmS,kBAAkBl5R,EAAWC,EAAS48V,EAAY,MAAQ3T,EAAUj7C,aAAaxuS,UAC9G,GAAIq9V,IAAc,EAAG,CACnB,OAAO,KAET,MAAMC,EAAc91X,KAAK+oB,MAAMsvH,EAAiBw9O,GAC9C5C,EAAalvX,EAAOkvX,YAAc,IAAI74X,MAAM2+B,EAAUn9B,UAAYo9B,EAAQp9B,WAAa,GACzF,GAAIy5X,EAAc,CAChB13M,EAAQ,CACN5kJ,UAAAA,EACAC,QAAAA,OAEG,CACL2kJ,EAAQhyL,EAAGmpY,0BAA0B7B,EAAY56O,EAAgB4pO,GAEnE,MAAMpoX,EAAQlO,EAAG2oY,YAAYoB,EAAa7rY,OAAOmZ,OAAO26K,EAAO,CAC7D7qL,MAAOgjY,EACP7C,WAAAA,KAEF,GAAItnY,EAAGm6X,eAAgB,CACrBn6X,EAAG+5X,aAAa3sV,EAAW,CACzByS,MAAO,UAGX,OAAO3xC,EAET,OAAO,KAWTtO,OAAO08P,EAAS,GACd,MAAM8tI,EAAwBnqY,KAAKq2X,UACnC,GAAI8T,GAAyBnqY,KAAKy2X,aAAc,CAC9C,OAAO,KAET,OAAOz2X,KAAK0oY,YAAYyB,EAAwB9tI,GAWlD18P,QAAQ08P,EAAS,GACf,MAAM8tI,EAAwBnqY,KAAKq2X,UACnC,GAAI8T,GAAyBnqY,KAAKw2X,aAAc,CAC9C,OAAO,KAET,OAAOx2X,KAAK0oY,YAAYyB,EAAwB9tI,GAQlD18P,aACE,OAAOK,KAAK0oY,YAAY1oY,KAAKy2X,cAQ/B92X,cACE,OAAOK,KAAK0oY,YAAY1oY,KAAKw2X,cAQ/B72X,0BAA0B0nY,EAAYM,EAAcn+E,EAAY4gF,GAK9D,GAAIA,EAAkB,OAAOA,EAC7B,MAAMrqY,EAAKC,MACT+nT,SACEA,GACEhoT,GACJq7U,aACEA,GACE5xB,EACJ0xB,EAAYn7U,EAAGqrV,aAAe5hC,EAAW0xB,UAAY1xB,EAAW2xB,WAClE,GAAIp7U,EAAGwoY,0BAA2B,CAChC,MAAO,CACLp7V,UAAW46Q,EAAS56Q,UACpBC,QAAS26Q,EAAS36Q,SAGtB,MAAMnF,EAAOmzS,EAAanzS,KACxBu6E,EAAapuG,KAAKuqB,KAAKgpW,EAAezsD,EAAYE,EAAaxuS,UAAY7sC,EAAGuoY,kBAAoB,GAClGn7V,EAAYtN,GAAW9gB,IAAIsoX,GAAa7kR,EAAYv6E,GACpDmF,EAAUvN,GAAW9gB,IAAIsoX,EAAY7kR,EAAYv6E,GACnD,GAAIloC,EAAGm6X,eAAgB,CACrB,OAAOn6X,EAAG6qT,kBAAkB68E,oCAAoCJ,EAAY,UACvE,CACL,MAAO,CACLl6V,UAAW46Q,EAASu5B,UAAUn0S,EAAW,MAAOlF,EAAMmzS,EAAaxuS,WACnEQ,QAAS26Q,EAASw5B,SAASn0S,EAAS,MAAOnF,EAAMmzS,EAAaxuS,aAIpEjtC,QAAQwwB,GACN,MAAMpwB,EAAKC,KACX,GAAImwB,EAAM2yB,QAAS,CACjB3yB,EAAM21B,iBACN,IAAK/lD,EAAGsoY,kBAAmB,CACzB,GAAIl4W,EAAMk1B,OAAS,EAAG,CACpBtlD,EAAGsqY,eACE,GAAIl6W,EAAMk1B,OAAS,EAAG,CAC3BtlD,EAAGuqY,SAELvqY,EAAGsoY,kBAAoB,KACvBtoY,EAAGgd,YAAW,IAAMhd,EAAGsoY,kBAAoB,OAAO,MASxD1oY,YAAYwtC,EAAWC,GACrBptC,KAAK+nT,SAASq5B,YAAYj0S,EAAWC,GAUvCztC,MAAMqoC,EAAQC,GACZjoC,KAAK+nT,SAASrvP,MAAM1wB,EAAQC,GAU9BtoC,UAAUqoC,GACRhoC,KAAK+nT,SAASyvE,UAAUxvV,GAS1BroC,cAAcqoC,GACZhoC,KAAK+nT,SAASwvE,cAAcvvV,GAK9Bw6B,qBAcF,IAAI+nU,GAAmBr9W,GAAU,MAAMq9W,UAAyBr9W,GAAU7R,IACxEtN,mBACE,MAAO,kBAETvO,0BACE,MAAO,CASL6oT,sBAAuB,MACvBmiF,4BAA6B,CAC3BhpX,QAAS,CAAC,QACVjiB,MAAO,CACLsN,KAAM,4BAKdlN,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChBnY,KAAKmvB,GAAG,CACNs7W,wBAAyB,sCACzBC,0BAA2B,wCAC3BC,uBAAwB,uCAG5BhrY,kCAAkC6qY,EAA6BI,GAG7D,MAAMz+X,EAASnM,KAAKqQ,YAAYonE,YAAYmzT,EAAgCJ,EAA6B,0BACzGr+X,EAAOwM,MAAQ3Y,KACf,OAAOmM,EAETxM,kCAAkCukU,GAGhC,OAAOA,EAAanzS,MAAK0vJ,GAAeA,EAAYklJ,oBAAsBllJ,EAAYs/I,aAAet/I,EAAYw7I,gBAEnHt8T,oCAAmC27W,kBACjCA,EAAiB7tS,QACjBA,IAEA,MAAMy2P,EAAeo3C,EAAkBzxW,KAAIq+B,GAAMA,EAAG/X,QAClDswJ,EAAczgL,KAAK6qY,kCAAkC3mE,GACvD,GAAIlkU,KAAKqoT,uBAAyB5nI,EAAa,CAC7CzgL,KAAKwqY,4BAA4B79J,QAAQ,CACvCg3I,WAAY,SACZljM,YAAAA,EACA9gL,YACE8tE,EAAQ2rE,SAAS,OAEnBz5I,WACE8tE,EAAQ2rE,SAAS,UAGrB,OAAO,OAGXz5I,qCAAoC8tE,QAClCA,IAEA,GAAIztE,KAAKqoT,sBAAuB,CAC9B,MAAM6b,aACFA,GACEz2P,EACJ4zP,EAAkB6C,EAAa9lU,QAAOqiL,GAAeA,EAAYklJ,oBAAsBllJ,EAAYs/I,aAAet/I,EAAYw7I,gBAChI,GAAIoF,EAAgBviU,OAAQ,CAC1B2uE,EAAQvlD,MAAQ,KAChBloB,KAAKwqY,4BAA4B79J,QAAQ,CACvCg3I,WAAY,SACZljM,YAAa4gJ,EAAgB,GAC7B1hU,YACE8tE,EAAQ2rE,SAAS,OAEnBz5I,WACE8tE,EAAQ2rE,SAAS,YAM3Bz5I,uCAAsC8tE,QACpCA,IAEA,GAAIztE,KAAKqoT,sBAAuB,CAC9B,MAAM5nI,YACFA,GACEhzG,EACJsyP,EAAct/I,EAAYklJ,oBAAsBllJ,EAAYs/I,aAAet/I,EAAYw7I,cACzF,GAAI8D,EAAa,CACftyP,EAAQvlD,MAAQ,KAChBloB,KAAKwqY,4BAA4B79J,QAAQ,CACvCg3I,WAAY,SACZljM,YAAAA,EACA9gL,YACE8tE,EAAQ2rE,SAAS,OAEnBz5I,WACE8tE,EAAQ2rE,SAAS,YAgB3Bz5I,kBAAkBkvU,GAChB,OAAO7uU,KAAKq1S,WAAW+5B,0BAA0BP,EAAgB7uU,KAAK+nT,SAAS56Q,UAAWntC,KAAK+nT,SAAS36Q,SAY1GztC,mBAAmBukU,EAAc11S,EAAW,KAAMs8W,EAAa9qY,MAC7D,MAAMD,EAAKC,KACX,IAAKD,EAAG84E,UAAYqrP,EAAaplU,OAAQ,CACvC,MAAM2uE,EAAU,CACd9tE,SAASyrX,EAAe,MACtB,GAAI58V,EAAU,CACZA,EAAS48V,GAEX,GAAIA,IAAiB,MAAO,CAC1B,GAAIlnD,EAAav8T,MAAK6qE,IACpB,IAAIu4T,EACJ,OAAOv4T,EAAOypP,gBAAkB8uE,EAAgBv4T,EAAOriD,SAAW,MAAQ46W,SAAuB,OAAS,EAAIA,EAAc9uE,iBAC1H,CACFiI,EAAallU,SAAQwzE,GAAUA,EAAO0pP,uBAAyB1pP,EAAOriD,MAAMruB,SAAW0wE,EAAO1wE,eACzF,CACL,MAAM8pE,EAAQs4P,EAAa,GAAG3I,aAAex7T,EAAGo1S,gBAAkBp1S,EAAGs1S,WACrEzpO,EAAM9pE,OAAOoiU,OAKrB,IAAI8mE,EACJ,GAAI9mE,EAAa,GAAG3I,aAAc,CAwChCyvE,EAAiBjrY,EAAGwtB,QAAQ,yBAA0B,CACpD+tV,kBAAmBp3C,EACnBz2P,QAAAA,QAEG,CAwCLu9T,EAAiBjrY,EAAGwtB,QAAQ,oBAAqB,CAC/C22S,aAAAA,EACAz2P,QAAAA,IAGJ,GAAIu9T,IAAmB,MAAO,CAC5B,MAAMC,EAAuB/mE,EAAanzS,MAAK0vJ,GAAeA,EAAYs/I,aAAet/I,EAAYw7I,eACrG,GAAIgvE,EAAsB,CACxBlrY,EAAGyqY,4BAA4B7xX,MAAQmyX,EACvC/qY,EAAGyqY,4BAA4B79J,QAAQ,CACrCg3I,WAAY,SACZljM,YAAawqN,EACbtrY,YACE8tE,EAAQ2rE,SAAS,OAEnBz5I,WACE8tE,EAAQ2rE,SAAS,cAGhB,CACL3rE,EAAQ2rE,SAAS,MAEnB,OAAO,MAGX,OAAO,MAKT52E,qBAWF,IAAI0oU,GAA0Bh+W,IAC5B,IAAIy7C,EACJ,OAAOA,EAAS,MAAMuiU,UAAgCh+W,GAAU7R,IAC9DtN,mBACE,MAAO,yBAGT8T,2BACE,MAAO,CACLspX,eAAgB,KAQhBC,mBAAoB,KASpBC,eAAgB,kBAQhBC,SAAU,cAQVC,cAAe,mBAQfC,mBAAoB,0BAQpBC,qBAAsB,4BAQtBC,cAAe,oBA4BfC,WAAY,QAkCZljF,WAAY,QAMZgzB,SAAU,MAKd97U,gBAAgBy/W,GACd,IAAKp/W,KAAKwd,cAAe,CACvBxd,KAAK+nT,SAASw3B,eAAiB6/B,GAAap/W,KAAKsuC,KACjDtuC,KAAKw7W,wBACLx7W,KAAKutB,QAAQ,gBAGjB5tB,gBAAgB+4C,GACd1H,GAAamI,aAAaT,EAAQ,aAElC,GAAI14C,KAAKorV,cAAgBprV,KAAKwvK,UAAW,CACvC,OAAOp7J,KAAKuU,IAAIvU,KAAKuqB,KAAK3+B,KAAKwvK,UAAY,GAAI92H,GAEjD,OAAOA,EAET/4C,kBACE,GAAIK,KAAK69H,SAAU,CACjB79H,KAAKmoN,mBAAmByjL,0BACxB5rY,KAAKw7W,wBACLx7W,KAAKutB,QAAQ,gBAIjB49W,qBACE,OAAOnrY,KAAK6rY,iBAAmB,KAAO7rY,KAAK6zW,UAAY7zW,KAAK6rY,gBAE9DV,mBAAmBzyV,GACjB,MAAM34C,EAAKC,KACXgxC,GAAamI,aAAaT,EAAQ,kBAElC,GAAI34C,EAAGqrV,cAAgBrrV,EAAGyvK,UAAW,CACnC92H,EAAStkC,KAAKuU,IAAIvU,KAAKuqB,KAAK5+B,EAAGyvK,UAAY,GAAI92H,GAEjD,GAAI34C,EAAG8rY,kBAAoBnzV,EAAQ,CACjC34C,EAAG8rY,gBAAkBnzV,EACrB,GAAI34C,EAAG89H,SAAU,CACf99H,EAAGooN,mBAAmByjL,0BACtB7rY,EAAGy7W,0BAYT//B,aAAav0U,GACX8pC,GAAamI,aAAajyC,EAAO,YACjClH,KAAK4qT,kBAAkB6wB,SAAWv0U,EAEpCu0U,eACE,OAAOz7U,KAAK4qT,kBAAkB6wB,SAOhCqwD,yBACE,MAAO,CAAC,MAAO,OAAQ,SAAU,SAAU,SAAU,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,SAAU,SAAU,cAAe,QAOnIC,yBACE,MAAO,CAAC,QAAS,SAAU,SAAU,UAAW,OAAQ,SAAU,UAAW,WAM/EvpU,qBACCtjE,EAAgBypE,EAAQ,eAAgB,CAUzCkrS,UAAW,GAaXuL,UAAW,QACTz2S,GAMN,MAAMstT,GAAuB,CACzBA,qBAAsB,MAExB+V,GAAyB,CACvBpsV,MAAO,WAOX,IAAIqsV,GAAkB/+W,GAAU,MAAM++W,UAAwB/+W,GAAU7R,IACtEtN,mBACE,MAAO,iBAETvO,0BACE,MAAO,CAcLugY,WAAY,EAYZmM,gBAAiB,GAWjBhS,eAAgB,OAGpBv6X,aACE,MAAMI,EAAKC,MACTorV,aACEA,GACErrV,EACNma,MAAM09P,aACN,MAAMt0J,WACJA,GACE8nO,EAAerrV,EAAG2uV,gBAAkB3uV,EAExCA,EAAG+nY,iBAAmB,IAAIqE,GAAiB,CACzCzqR,OAAQ3hH,EACRujH,WAAAA,EACA8nO,aAAAA,IAEF9nO,EAAWn0F,GAAG,CACZ4xF,OAAQ,mBACRzkG,QAASvc,IAIX,GAAIA,EAAGm6X,eAAgB,CACrB,MAAMkS,YACFA,GACErsY,EACJy8B,EAAO4vW,EAAcA,EAAY5vW,MAAQ4vW,EAAcrsY,EAAGikY,mBAC1DxtQ,EAAW41Q,GAAe,UAAWA,EAAcA,EAAYxsV,QAAU,SAAW,MACpFzS,UACEA,EAASC,QACTA,GACErtC,EAAG6qT,kBAAkB68E,oCAAoCjrW,EAAMg6F,GAGrEz2H,EAAGqhV,YAAYj0S,EAAWC,EAAS,CACjCg/V,YAAa5vW,KAInB78B,YACE,IAAI0sY,GACHA,EAAwBrsY,KAAK8nY,oBAAsB,MAAQuE,SAA+B,OAAS,EAAIA,EAAsBtwX,UAC9H7B,MAAM8B,YAERrc,kBAAiBZ,OACfA,IAIA,GAAIiB,KAAKk6X,eAAgB,CACvBl6X,KAAKssY,oBAAoBvtY,EAAOiB,KAAKorV,aAAe,IAAM,OAG9DzrV,oBAAoBmuJ,GAClB,MAAM/tJ,EAAKC,KACTsjH,EAAavjH,EAAG+nY,kBAChBxlR,WACEA,GACEgB,EACJipR,EAAejqR,EAAaviH,EAAGggY,WAC/Bp1P,EAAQ4hQ,EAAexsY,EAAGmsY,gBAC1BM,EAAYlpR,EAAW8hQ,aACvB/jX,MACEA,GACEtB,EAAG2uV,gBAAgBjoE,uBAEzB,GAAI+lH,EAAY1+O,EAAYnjB,GAASmjB,EAAYnjB,EAAO,CAKtDtpI,EAAMC,SAAW,SACjBD,EAAM0/H,cAAgB,OAEtB1/H,EAAMorY,cAAgB,GAAGx0V,GAAUK,mBACnCv4C,EAAGgd,YAAW,KACZ1b,EAAMC,SAAW,GACjBD,EAAMorY,cAAgB,GACtBprY,EAAM0/H,cAAgB,KACrB,KACHhhI,EAAG2sY,YAAY3sY,EAAGwwV,sBAAsBziM,EAAW,KAAM,QAG7DnuJ,YAAY68B,EAAMg6F,GAChB,MAAMgtJ,EAAWxjR,KAAK4qT,kBAAkB68E,oCAAoCjrW,EAAMg6F,GAElFx2H,KAAKohV,YAAY59D,EAASr2O,UAAWq2O,EAASp2O,QAAS6oV,IAGzDt2X,qBAAqBu6X,GAGnB,IAAKl6X,KAAKwd,eAAiB08W,EAAgB,CACzCl6X,KAAKssY,oBAAoBtsY,KAAK8nY,iBAAiB1sV,WAcnDz7C,aAAa68B,EAAM5vB,EAAU,IAC3B,MAAM7M,EAAKC,MACT+nT,SACEA,EAAQusC,iBACRA,EAAgB4lC,eAChBA,GACEn6X,GACJkoC,KACEA,EAAI2E,UACJA,GACEm7Q,EACJ/qQ,EAAapwC,EAAQowC,YAAc,EACnC2vV,EAAe9sW,GAAWlB,KAAK21T,EAAiBlnT,QAASR,EAAY,IAAM3E,GAAQpI,GAAW1C,MAAMm3T,EAAiBnnT,UAAWP,EAAY,IAAM3E,GAClJkkB,EAAY3vB,EAAOz8B,EAAGikY,mBAAqB,GAAK,EAChD4I,GAAe1S,EAAiByS,EAAe5sY,EAAGggY,WAAahgY,EAAGmsY,gBAAkBt/X,EAAQgzC,QAAU,SAAW+sV,EAAe,EAAI3vV,EAAaj9C,EAAG6pY,oCAAoC7pY,EAAGypT,YAAcxsQ,EAAa,GAAKmP,EAC3NigV,EAAc,IAAI59X,KAAKguB,EAAKxsB,UAAY48X,GACxCC,EAAiBT,EAAcrkF,EAAS36Q,QAAU,EAAIg/V,EAAcrkF,EAAS56Q,WAAa,EAAI,EAGhG,GAAI0/V,GAAkB9sY,EAAGm6X,eAAgB,CACvCn6X,EAAG2sY,YAAY,IAAIl+X,KAAKguB,EAAOowW,GAAc,KAAM,MAErD,MAAME,EAAmB/sY,EAAG+nY,iBAAiBv6U,SAC3Cw/U,EAAkBhtY,EAAGwiW,sBAAsB/lU,EAAM,MACjD79B,EAASoB,EAAGqrV,aAAe,IAAI70S,GAAUx2C,EAAGwiW,sBAAsB/lU,EAAM,OAAQswW,EAAiBtoW,EAAGzkC,EAAG6qT,kBAAkB6wB,SAAUqxD,EAAiB7lY,QAAU,IAAIsvC,GAAUu2V,EAAiB3oY,EAAGpE,EAAGwiW,sBAAsB/lU,EAAM,OAAQswW,EAAiB5lY,MAAOnH,EAAG6qT,kBAAkB6wB,UACtR,OAAO17U,EAAGitY,mBAAmBD,EAAiBpuY,EAAQ69B,EAAM5vB,GAW9DjN,YAAYiN,EAAU,IACpB,OAAO5M,KAAK85X,aAAa,IAAItrX,KAAQ5B,GAcvCjN,yBAAyBotY,EAAiBpuY,EAAQ69B,EAAM5vB,EAAU,IAChE,MAAM7M,EAAKC,KAGX,GAAI+sY,EAAkB,EAAG,CAEvB,MAAME,EAAcltY,EAAGqtC,QAAUrtC,EAAGotC,WAClClF,KACEA,EAAI2E,UACJA,GACE7sC,EAAGgoT,SACPk5B,EAAephT,GAAW1C,MAAM,IAAI3uB,KAAKguB,EAAKxsB,UAAYi9X,EAAc,GAAIrgW,EAAY,IAAM3E,GAC9Fi5S,EAAarhT,GAAW9gB,IAAIkiU,EAAcgsD,GAI5C,GAAIhsD,EAAelhV,EAAGotC,YAAc,GAAK+zS,EAAanhV,EAAGqtC,UAAY,EAAG,CACtErtC,EAAGqhV,YAAYH,EAAcC,GAC7B,OAAOnhV,EAAG+5X,aAAat9V,EAAM5vB,GAE/B,aAEI7M,EAAG+nY,iBAAiB77P,eAAettI,EAAQiO,GAEjD,OAAQ7M,EAAGmc,aAAenc,EAAGmtY,qBAa/Bl2V,eAAe1B,GACbt1C,KAAK0uV,gBAAgBprO,WAAW7sE,QAAQO,WAAa1B,EAEvD0B,iBACE,OAAOh3C,KAAK0uV,gBAAgBprO,WAAW7sE,QAAQO,WAYjD+pH,YAAY58J,GACVnE,KAAK0uV,gBAAgBprO,WAAWn/G,EAAIA,EAEtC48J,cACE,OAAO/gK,KAAK0uV,gBAAgBprO,WAAWn/G,EAOzC8yC,cAAc9B,GACZn1C,KAAKsjH,WAAW9+E,EAAI2Q,EAEtB8B,gBACE,OAAOj3C,KAAKsjH,WAAW9+E,EAazB7kC,qBAAqB+rV,EAAY9+U,EAAU,MACzC,OAAO5M,KAAK0uV,gBAAgBprO,WAAW2iK,SAASylE,EAAY,KAAM9+U,GAapEjN,mBAAmB6kC,EAAG53B,EAAU,MAC9B,OAAO5M,KAAKsjH,WAAW2iK,SAAS,KAAMzhP,EAAG53B,GAa3CjN,SAASwE,EAAGyI,EAAU,MACpB,OAAO5M,KAAK0uV,gBAAgBprO,WAAW2iK,SAAS9hR,EAAG,KAAMyI,GAM3D41D,qBAIF,MAAM2pU,WAAyB1qR,GAC7BjiH,0BACE,MAAO,CACL47C,SAAU,KACVj3C,EAAG,KACHqgC,EAAG,MAKP7kC,mBACAA,mBACAA,SAASqE,GACPkW,MAAM4qG,SAAS9gH,GACfhE,KAAKmtY,UAAY,KAEnBxtY,aAAa82D,GACXz2D,KAAKsjH,WAAW6B,aAAa1uD,GAE/B92D,eAAey7C,GACbp7C,KAAKsjH,WAAWtjH,KAAKorV,aAAe,IAAM,KAAOhwS,EAEnDmS,eACE,OAAOvtD,KAAKsjH,WAAW/1D,SAEzBnS,eACE,OAAOp7C,KAAKmtY,UAAYntY,KAAKsjH,WAAWtjH,KAAKorV,aAAe,IAAM,KAEpE9oO,iBACE,OAAOtiH,KAAKsjH,WAAW,SAAStjH,KAAKorV,aAAe,QAAU,YAEhE/gM,iBACE,OAAOrqJ,KAAKsjH,WAAW,SAAStjH,KAAKorV,aAAe,QAAU,YAEhEg6B,kBACE,OAAOplX,KAAKsjH,WAAW,MAAMtjH,KAAKorV,aAAe,IAAM,OAEzDzrV,SAASy7C,EAAUxuC,GACjB,OAAO5M,KAAKorV,aAAeprV,KAAKsjH,WAAW2iK,SAAS7qO,EAAU,KAAMxuC,GAAW5M,KAAKsjH,WAAW2iK,SAAS,KAAM7qO,EAAUxuC,GAE1HjN,SAASm6C,EAAS,EAAGC,EAAS,EAAGntC,EAAUo/X,IAEzC,OAAOhsY,KAAKorV,aAAeprV,KAAKsjH,WAAWH,SAASrpE,GAAUC,EAAQ,EAAGntC,GAAW5M,KAAKsjH,WAAWH,SAAS,EAAGppE,GAAUD,EAAQltC,GAEpIjN,iBACE,OAAOK,KAAKsjH,WAAW2oB,kBAAkBptI,WAG3Cc,QAAQwE,GACNnE,KAAKo7C,SAAWj3C,EAElBxE,QAAQ6kC,GACNxkC,KAAKo7C,SAAW5W,EAElBrgC,QACE,OAAOnE,KAAKo7C,SAEdj3C,MAAMA,GACJnE,KAAKsjH,WAAWtjH,KAAKorV,aAAe,IAAM,KAAOjnV,EAEnDqgC,QACE,OAAOxkC,KAAKo7C,SAEd5W,MAAMA,GACJxkC,KAAK4iH,SAAS5iH,KAAKorV,aAAe,IAAM,KAAO5mT,EAEjDiU,kBACE,OAAOz4C,KAAKsiH,WAEd/pE,mBACE,OAAOv4C,KAAKsiH,WAEd9pE,kBACE,OAAOx4C,KAAKqqJ,WAEd5yG,mBACE,OAAOz3C,KAAKqqJ,WAEdzkC,WACE,OAAO5lH,KAAKolX,YAEdv/P,WACE,OAAO7lH,KAAKolX,aAOhB,MAAMgoB,GAAmB,CAAC,aAW1B,IAAIC,GAAiBngX,GAAU,MAAMmgX,UAAuBngX,GAAU7R,IACpEtN,mBACE,MAAO,gBAaTpO,WACE,MAAMI,EAAKC,KACTmpE,EAAQn4B,GAAauqB,eAAerhD,MAAMmvD,WAAYtpE,EAAIqtY,IAC5DjkU,EAAMktT,UAAYt2X,EAAGs2X,UACrBltT,EAAMmkU,iBAAmB,CACvBngW,UAAWptC,EAAGotC,UACdC,QAASrtC,EAAGqtC,QACZi6V,WAAYtnY,EAAGikY,mBACf98X,MAAOnH,EAAG07U,UAEZ,OAAOtyQ,EAOTxpE,WAAWwpE,GACT,MAAMppE,EAAKC,KACXD,EAAGy8P,iBACH,GAAIrzL,EAAMktT,WAAa,KAAM,CAE3B,GAAIt2X,EAAGm6X,eAAgB,CACrB,IAAIqT,EACJ,GAAIpkU,IAAU,MAAQA,SAAe,IAAMokU,EAAgBpkU,EAAM43C,UAAY,MAAQwsR,SAAuB,GAAKA,EAAcv2V,WAAY,CACzImyB,EAAM43C,OAAO/pE,WAAa,IAG9B,GAAIj3C,EAAG8oI,UAAW,CAChB9oI,EAAG2oY,YAAYv/T,EAAMktT,UAAWltT,EAAMmkU,sBACjC,CACLvtY,EAAGytY,gBAAkB,CACnBnX,UAAWltT,EAAMktT,UACjBiX,iBAAkBnkU,EAAMmkU,mBAI9Bt8V,GAAauqB,eAAex7D,EAAIopE,EAAOikU,IACvClzX,MAAMovD,WAAWH,GACjBppE,EAAG88P,cAAc,MAEnBl9P,WAAW4b,GACTrB,MAAM27H,WAAWt6H,GACjB,GAAIvb,KAAKwtY,gBAAiB,CACxB,MAAMnX,UACJA,EAASiX,iBACTA,GACEttY,KAAKwtY,gBACTxtY,KAAK0oY,YAAYrS,EAAWiX,UACrBttY,KAAKwtY,iBAMhBhrU,qBAYF,MAAMirU,WAAex1H,GACnBlqQ,mBACE,MAAO,kBAETpO,iBACE,IAAI+tY,EAKJ,MAAOA,EAAuB1tY,KAAKs4Q,kBAAoB,MAAQo1H,SAA8B,GAAKA,EAAqB1lY,cAAc,0BAA2B,CAC9JkS,MAAM03P,mBAIZ67H,GAAOvlY,OAAS,SAUhB,MAAMylY,WAAwBvnH,GAC5Br4Q,mBACE,MAAO,kBAGTlB,kBACE,MAAO,kBAETrN,0BACE,MAAO,CAEL23O,cAAe,KAEfmvC,YAAamnH,IAGjB9tY,eAAewY,GACb,MACE89M,KAAMs1F,GACJpzS,EAEJozS,EAAUmjC,gBAAkB1uV,KAC5Bka,MAAM0D,eAAezF,GACrB,GAAIozS,EAAU6/B,aAAc,CAC1BjzU,EAAOynI,OAAS,CACd9pI,IAAK,CACH83X,mBAAoBriF,EAAUvC,uBAK3B7wS,EAAOmuQ,YAGhB,KAAM,SAAUnuQ,GAAU,UAAWA,GAAS,CAC5CA,EAAOi/G,KAAO,GAGlBz3H,mBACE,MAAMI,EAAKC,KACTsjH,EAAappG,MAAM2zX,oBAAoBhvY,WAGzC,GAAIykH,EAAY,CACdrlH,OAAOoB,eAAeikH,EAAY,cAAe,CAC/C3jH,MACE,IAAIsnH,EAAuBC,EAC3B,OAAQD,GAAyBC,EAAgBlnH,KAAKy2C,WAAa,MAAQywE,SAAuB,OAAS,EAAIA,EAAc1uE,eAAiB,MAAQyuE,SAA+B,EAAIA,EAAwB,GAEnNtnH,MAIEI,EAAGk2N,KAAK63K,sBAId,OAAOxqR,EAET3jH,sBAAsBsvO,EAAS,MAG7B,IAAKjvO,KAAKi2N,KAAKsxK,oBAAqB,CAClCrtX,MAAMkuQ,sBAAsBn5C,IAehCtvO,iBAAiB82C,EAASvvC,EAAOD,EAAQomI,EAAUC,GACjD,MAAMvtI,EAAKC,KAEX,GAAID,EAAG8oI,WAAa3hI,IAAUmmI,EAAU,CACtC,MAAMk+K,EAAYxrT,EAAGk2N,KACnB+yC,EAAauiD,EAAU32D,eAAe3tP,OAExC,GAAIgxC,GAAUK,gBAAkBpxC,EAAQmmI,EAAU,CAChDttI,EAAGq2H,cAAgB,MAErBm1L,EAAUwiF,0BAA0B7mY,EAAO8hQ,EAAY37H,EAAU27H,GAGjE,IAAKjpQ,EAAGq2H,cAAe,CACrBr2H,EAAG+oB,uBAAsB,IAAM/oB,EAAGq2H,cAAgB,QAGtDl8G,MAAMyzH,oBAAoB9uI,YAI9B8uY,GAAgB/2T,YAChB+2T,GAAgBzlY,OAAS,kBAEzB,MAAM8lY,GAAiB,CACnBh2X,GAAI,iBACJ8E,MAAO,EACP4R,kBAAmB,MAErBu/W,GAAgB,GAoBlB,MAAMC,WAAqB9jR,GAAS5pG,MAAMmjX,GAAoBc,GAAmByG,GAAwBe,GAAgBoB,GAAexG,GAAqBsB,GAAkBoC,KAE7Kx8X,mBACE,MAAO,eAGTlB,kBACE,MAAO,eAETgV,2BACE,MAAO,CAiCLssX,YAAa,KAcbpmF,SAAU,KAQV6C,kBAAmB,KAQnBwjF,mBAAoB,KAgBpB37C,6BAA8B,MAQ9B+sC,YAAa,MAOb6O,YAAa,KACb/hD,mBAAoB,KAQpB85C,wBAAyB,KAEzBD,eAAgB,MAEhBxiC,oBAAqB,MAOrB/2C,sBAAuB,KACvBt8B,2BAA4B,KAE5BD,oBAAqB,MAYrBi+G,QAAS,KACTC,gBAAiB,SACjB13U,mBAAoB,IAEpB23U,iBAAkB,KAOlBjtK,cAAe,SAQfmlF,yBAA0B,EAC1B5+E,iBAAkB,YAClB2mK,sBAAuB,KAoC3B9uY,qBAUAA,wBAGAA,yBAAyBoyL,GACvB,IAAK/xL,KAAK0uY,+BAAgC,CACxC,MAAM3uY,EAAKC,MACT2uY,kBACEA,GACE5uY,EACJ+gU,GAAmB6tE,GAAqBA,EAAkBxhW,UAAY4kJ,EAAM5kJ,WAAawhW,EAAkBvhW,QAAU2kJ,EAAM3kJ,QAC7H,GAAI0zR,EAAiB,CACnB/gU,EAAGqjW,SAASrxK,MAAQA,EACpBhyL,EAAG2uY,+BAAiC,KA2BpC3uY,EAAGwtB,QAAQ,yBAA0B,CACnC+uE,IAAKqyS,EACL99Q,IAAKkhE,IAEPhyL,EAAG2uY,+BAAiC,MACpC3uY,EAAG4uY,kBAAoB58M,IAK7BpyL,gCAGAA,UAAUwY,EAAS,IACjB,MAAMpY,EAAKC,KACXka,MAAMsB,UAAUrD,GAChBpY,EAAG6uY,uBAAyB,KAC5B7uY,EAAG8uY,gBACH9uY,EAAGooN,mBAAmBjpI,OACtBn/E,EAAG82N,WAAW1nM,GAAG,WAAW,KAC1BpvB,EAAG+uY,YAAc,SAIrBnvY,cAAck8N,EAAQ1jN,EAAS,IAC7B,MAAMpY,EAAKC,MACTgpT,cACEA,GACEjpT,EAEN,GAAI87N,KAAY97N,EAAGwuY,iBAAmB,UAAW,CAC/Cp2X,EAAOtL,KAAO,uBAIX,GAAIgvN,IAAW,UAAYmtF,GAAiBjpT,EAAGkpT,WAAY,CAC9D9wS,EAAOmrG,WAAa,CAClBj2D,UAAW,UACXC,UAAW,WAGbvtD,EAAG8wO,cAAcjyL,UAAU7/B,IAAI,oBAEjC,OAAO7E,MAAMywQ,cAAc9uD,EAAQ1jN,GAErCxY,YACE,MAAMI,EAAKC,MACT+uY,cACEA,EAAa5mL,mBACbA,GACEpoN,EACNooN,IAAuB,MAAQA,SAA4B,OAAS,EAAIA,EAAmBpsM,UAE3F,GAAIgzX,EAAe,CACjBA,EAAc/vY,SAAQ2R,IACpB5Q,EAAGgjH,cAAcpyG,MAEnBo+X,EAAchzX,cACT,CACLhc,EAAG6qT,kBAAkB7uS,UACrBhc,EAAGgoT,SAAShsS,UAEd7B,MAAM8B,YAERrc,eAAewY,GACb+B,MAAM0D,eAAezF,GAErB+lG,GAAcmI,kBAAkBrmH,KAAK6wO,cAAe7wO,KAAKgvY,aAAah6X,KAAKhV,OAG3EA,KAAKme,UAAU,WAEjBxe,gBAAgBwtC,GACd,UAAWA,IAAc,SAAU,CACjCA,EAAYtN,GAAW7zB,MAAMmhC,GAE/B,OAAOA,EAETxtC,SAAQipI,WACNA,IAIA,GAAIA,EAAY,CAGd,MAAM7oI,EAAKC,KACTsjH,EAAavjH,EAAGqrV,aAAerrV,EAAG2uV,gBAAgBprO,WAAavjH,EAAGujH,WAElEmpC,EAAiBnpC,EAAW7sE,QAAQa,wBAAwBv3C,EAAGqrV,aAAe,QAAU,UAG1FrrV,EAAG6qT,kBAAkBj9M,OAAO8+C,EAAgB1sJ,EAAGm6X,eAAgB,MAG/D,GAAIn6X,EAAGm6X,eAAgB,CACrB,IAAI+U,EAAuBC,GAC1BD,GAAyBC,EAAyBnvY,EAAGooN,oBAAoBgnL,oBAAsB,MAAQF,SAA+B,OAAS,EAAIA,EAAsBpoY,KAAKqoY,IAGnLh1X,MAAM27H,WAAWh3I,WAEnBc,4BAA4Bw8N,EAASnlL,EAAY+pH,GAE/C/gK,KAAKmoN,mBAAmB6/K,2BAA2BjnO,GACnD7mJ,MAAMk1X,4BAA4BjzK,EAASnlL,EAAY+pH,GAMzDphK,aACE,MAAMI,EAAKC,KACX,IAAIqvY,EAAa,EACjBn1X,MAAM09P,aACN73Q,EAAGovB,GAAG,oBAAoB,EACxBgtM,QAAAA,EACAnlL,WAAAA,EACA+pH,QAAAA,MAEA,GAAIhhK,EAAG8oI,WAAaszF,IAAYp8N,EAAG2uV,kBAAoB3uV,EAAGoZ,eAAiBpZ,EAAGooP,iBAAkB,CAC9FpoP,EAAGqvY,4BAA4BjzK,EAASnlL,EAAY+pH,GAEtDsuO,OAEF,GAAItvY,EAAGwwR,kBAAoB,aAAc,CACvCxwR,EAAGgd,YAAW,KACZ,MAAMyL,EAAQhB,YAAY/Y,MAC1B,IAAI21K,EAAc,EAChBj4H,EAAY,EACd,MAAMmjV,EAAiBvvY,EAAGylE,aAAY,KACpC4+G,EAAcA,EAAc,EAC5BrkL,EAAGghK,UAAY,GAAK3sJ,KAAK+oB,MAAMinJ,IAAgBj4H,EAC/C,GAAIA,IAAc,GAAKpsD,EAAGghK,QAAU,KAAM,CACxC50G,GAAa,EACbi4H,EAAc,EAEhB,GAAIj4H,KAAe,GAAKpsD,EAAGghK,SAAW,EAAG,CACvC,MAAM53H,EAAO3hB,YAAY/Y,MAEvBgZ,EAAU0hB,EAAO3gB,EACnB,MAAM+mX,EAAe9nX,EAAU4nX,EAC7BG,EAAMp7X,KAAKkxB,MAAM,IAAOiqW,EAAe,IAAM,GAC/CjrU,cAAcgrU,GACd16X,QAAQ4/E,IAAIz0F,EAAG0vY,kBAAmB1vY,EAAG2vY,gBAAiBF,EAAM,UAE7D,KACF,MAYP7vY,mBAAmBqY,EAAIsE,EAAUtc,QAASub,GACxC,MAAMxb,EAAKC,KACTqnY,EAAatnY,EAAGikY,mBAChB73X,EAAS6L,EAAGvZ,MAAM6d,EAASf,GAC3BqnG,EAAW7iH,EAAG+nY,kBACdxlR,WACEA,GACEM,EACJ+sR,EAAcv7X,KAAKC,IAAID,KAAK+oB,MAAMp9B,EAAGwiW,sBAAsB8kC,EAAY,MAAQ/kR,EAAa,GAAI,GAClGviH,EAAGykY,kBAAoB,KACvB5hR,EAASqjK,SAAS0pH,EAAa,OAAOl/X,MAAK,IAAM1Q,EAAGykY,kBAAoB,QACxE,OAAOr4X,EAUTxM,YAAYshV,EAAcC,GAAY5lT,aACpCA,EAAe,MAAK26V,qBAEpBA,EAAuB,MAAKmW,YAC5BA,GACE6B,IACF,MAAMluY,EAAKC,MACT+nT,SACEA,GACEhoT,GACJotC,UACEA,EAASC,QACTA,GACE26Q,EAAS43B,iBAAiBsB,EAAcC,GAC5C0uD,EAAe7nF,EAAS56Q,UAAYA,IAAc,EAClD0iW,EAAa9nF,EAAS36Q,QAAUA,IAAY,EAC9C,GAAIwiW,GAAgBC,EAAY,CAC9B,GAAI5Z,EAAsB,CACxB,MAAMrrE,kBACFA,GACE7qT,GACJ4tT,UACEA,GACE/C,EACJklF,EAAcllF,EAAkB6wB,SAChCn4N,EAAavjH,EAAG+nY,iBAChBiI,EAAgBzsR,EAAWloE,SAC3B40V,EAAeplF,EAAkBihC,oBAAoBkkD,GAGvD,GAAIC,GAAgB7iW,GAAa6iW,EAAe5iW,EAAS,CAGvDw9Q,EAAkBz7R,GAAG,CACnBxvB,SACE,MAAMswY,EAAkBrlF,EAAkB6wB,WAAaq0D,EAIvD/vY,EAAG+tY,mBAGH,GAAI8B,IAAiBC,IAAeI,EAAiB,CACnD3sR,EAAWloE,UAAYwvQ,EAAkB+C,UAAYA,OAIlD,IAAKiiF,IAAiBK,EAAiB,CAC1C3sR,EAAWloE,SAAW20V,MAGnB,CACHzsR,EAAWloE,SAAWwvQ,EAAkBmhC,oBAAoBikD,GAI9D1sR,EAAW6B,aAAa,OAE1Bt4F,KAAM,IACND,KAAM,QAIZ,MAAM80C,EAAcqmP,EAAStwO,YAAY,CACvCtqC,UAAAA,EACAC,QAAAA,GACC,MAAO9R,GACV,GAAI8wW,EAAa,CACfrsY,EAAG+5X,aAAasS,EAAY5vW,MAAQ4vW,EAAaA,GAEnD,OAAO1qU,GAWXwuU,uBACE,OAAQlwY,KAAKmwY,2BAA6BnwY,KAAKq1S,WAAWnxS,QAAQ2H,OAAOlE,MAAKsgB,GAAKjoB,KAAK+nT,SAASy2C,iBAAiBv2U,KAKpHtoB,2BAGAutV,2BACE,IAAKltV,KAAKowY,sBAAuB,CAC/BpwY,KAAKowY,sBAAwBhmY,EAAaK,WAAWzK,KAAKssV,oBAE5D,OAAOtsV,KAAKowY,sBAEd9B,YAAYA,GACVtuY,KAAKqwY,SAAW/B,EAChBtuY,KAAK8iH,WAAWwrR,GAUlB3uY,WAAW2uY,GACT,MAAMvuY,EAAKC,KACX,IAAKD,EAAG8iH,gBAAgByrR,GAAU,CAChC,MAAMS,EAAgBhvY,EAAGgvY,gBAAkBhvY,EAAGgvY,cAAgB,IAAIljT,IAElEkjT,EAAchwX,IAAIuvX,IACjBA,EAAQS,gBAAkBT,EAAQS,cAAgB,IAAIljT,KAAe9sE,IAAIhf,GAG1EA,EAAGoe,UAAU,cACbmwX,EAAQn/W,GAAG,CACT6qV,aAAc,wBACd19V,QAASvc,IAEXuuY,EAAQhrR,WAAWn0F,GAAG,CACpBmhX,eAAgB,0BAChBh0X,QAASvc,IAGX,MAAMwwY,EAAsBxwY,EAAGywY,qBAAqB/kY,QAAO,CAAC0M,EAAQyrI,KAClEzrI,EAAOyrI,GAAc0qP,EAAQ1qP,GAC7B,OAAOzrI,IACN,IACHpY,EAAGyZ,UAAU+2X,GACbxwY,EAAGovB,GAAG,CACJ6qV,aAAc,wBACd19V,QAASgyX,IAEXvuY,EAAGujH,WAAWn0F,GAAG,CACfmhX,eAAgB,0BAChBh0X,QAASgyX,IAEX,GAAIvuY,EAAG8oI,UAAW,CAChB9oI,EAAGujH,WAAWR,WAAWwrR,EAAQhrR,WAAYvjH,EAAGqrV,aAAe,IAAM,KACrEkjD,EAAQmC,0BACH,CAEL1wY,EAAG63Q,WAAa9xP,GAAe4qX,eAAe3wY,EAAG63Q,YAAY,KAC3D73Q,EAAGujH,WAAWR,WAAWwrR,EAAQhrR,WAAYvjH,EAAGqrV,aAAe,IAAM,KACrEkjD,EAAQmC,wBACP1wY,KAYTJ,cAAc2uY,GACZ,MAAMvuY,EAAKC,MACT+uY,cACEA,GACEhvY,EACN,GAAIA,EAAG8iH,gBAAgByrR,GAAU,CAC/BS,EAAcjtY,OAAOwsY,GACrBvuY,EAAGujH,WAAWP,cAAcurR,EAAQhrR,YACpCvjH,EAAGuuB,GAAG,CACJ0rV,aAAc,wBACd19V,QAASgyX,IAEXvuY,EAAGujH,WAAWh1F,GAAG,CACfgiX,eAAgB,0BAChBh0X,QAASgyX,IAEXA,EAAQvrR,cAAchjH,IAQ1BJ,gBAAgB2uY,GACd,IAAIqC,EACJ,OAAOzwY,SAASywY,EAAsB3wY,KAAK+uY,iBAAmB,MAAQ4B,SAA6B,OAAS,EAAIA,EAAoB/kY,SAAS0iY,IAa/I3uY,yBACEZ,OAAQ6xY,EAAepsW,EACvBA,IAEA,MAAM8+E,WACFA,GACEtjH,KACJ6wY,EAAOvtR,EAAWwlK,YAAY,KAGhC,GAAI+nH,IAASrsW,EAAG,CACd,GAAIqsW,EAAM,CACRD,EAAgBtjV,UAAY,aACvB,CACLsjV,EAAgBtjV,UAAY,KAC5Bg2D,EAAWh2D,UAAY,SACvBttD,KAAKo7Q,gCAIJ,CACH93J,EAAWh2D,UAAY,MAG3B3tD,uBAAsB68U,OACpBA,EAAMrvS,UACNA,EAASC,QACTA,EAAOi6V,WACPA,IAEA,IAAKrnY,KAAKunY,qBAAuBvnY,KAAKwpT,aAAegzB,EAAQ,CAE3DA,EAAO5vU,QAAU,CACfugC,UAAAA,EACAC,QAAAA,EACAi6V,WAAAA,GAEFrnY,KAAKwpT,WAAagzB,GAGtB8xD,cACE,OAAOtuY,KAAKqwY,SAYd1tR,eACE,MAAMA,EAAW3iH,KAAKsuY,QAAU,CAACtuY,KAAKsuY,SAAW,GACjD,GAAItuY,KAAK+uY,cAAe,CACtBpsR,EAASnkH,KAAKC,MAAMkkH,EAAU3iH,KAAK+uY,cAAc5hT,WAEnD,OAAOw1B,EAET6hI,qBACE,OAAOxkP,KAAK+jM,SAAW/jM,KAAK8wY,gBAE9B/sM,cAGE,OAAO7pL,MAAM6pL,QAEfA,YAAYA,GACV,MAAMhkM,EAAKC,KACX,IAAI+wY,EAAqBC,EAAsBxsJ,EAE/C,GAAIzgD,EAAS,CACX,MAAMv8L,EAAUD,MAAMC,QAAQu8L,GAC9B,IAAIgtE,EAAOhtE,EACX,IAAKv8L,EAAS,CACZupQ,EAAOhtE,EAAQ7pK,KAEjB62W,EAAsBhgI,GAAQA,EAAKjyQ,OACnCiyQ,EAAKppQ,MAAK,CAAC84N,EAAKvwN,KACd,GAAIuwN,EAAI5zN,OAAS,WAAY,CAC3BkkY,EAAsB7gY,EACtB8gY,EAAuBhgW,GAAa55B,OAAOqpN,EAAK1gO,EAAGykP,gBACnD,OAAO,KAET,OAAO,SAIT,GAAIzkP,EAAGkpT,WAAY,CACjBlpT,EAAGkxY,mBAAqBltM,EACxBgtE,EAAO,CAAC//N,GAAa55B,OAAO,CAC1BvK,KAAM,mBACN+uN,OAAQ,MACP77N,EAAGmxY,wBAENngI,EAAKggI,IACLA,EAAsB,MACjB,CAELhgI,EAAOA,EAAK9+P,QAGd8+P,EAAKggI,GAAuBryY,EAAe,CACzCmO,KAAM,WACN+uN,OAAQ,MACRX,QAASl7N,EAAGsuY,YACZlqV,KAAMpkD,EAAGokD,MACR6sV,GACH,GAAIxpY,EAAS,CACXu8L,EAAUgtE,MACL,CACLhtE,EAAQ7pK,KAAO62O,GAInB72P,MAAM6pL,QAAUA,EAEhB,GAAIA,EAAS,CACXygD,EAAiBzkP,EAAG+wY,gBAAkB/wY,EAAGgkM,QAAQhzK,MAAKzrB,GAAKA,EAAE6pX,mBAC7D,GAAIpvX,EAAGkpT,WAAY,CACjBlpT,EAAGmxY,uBAAyBnxY,EAAGgkM,QAAQhzK,MAAKzrB,GAAKA,EAAE6rY,2BACnDpxY,EAAGmxY,uBAAuBriX,SAAS9uB,GAGrCykP,EAAe31N,SAAS9uB,IAG5BJ,kBAAiByyD,OACfA,EAAMmgB,QACNA,EACAC,OAAQukI,IAER,MAAMytC,eACJA,EAAczgD,QACdA,GACE/jM,KAEJ,GAAIoyD,IAAW,YAAc2xI,EAAQn4L,SAAS44O,GAAiB,CAC7DzgD,EAAQhlL,IAAIylO,EAAgB,WAGzB,GAAIztC,IAAWytC,GAAkB,UAAWjyK,EAAS,CACxDvyE,KAAK8tY,mBAEP5zX,MAAMg4Q,oBAAoBrzR,WAE5BukW,eACE,MAAMrjW,EAAKC,KAGX,OAAOD,EAAGgkM,SAAWhkM,EAAGkpT,WAAalpT,EAAGmxY,wBAA0BnxY,EAAGmxY,uBAAuB/iF,KAAOpuT,EAAGykP,gBAAkBzkP,EAAGykP,eAAeipE,aAE5I9tT,eAAew5V,GACb,MAAMp5V,EAAKC,KACX,IAAKD,EAAGwrV,cAAe,CAErBxrV,EAAGqxY,wBAA0BrxY,EAAGwrV,cAAgB,IAAI4N,SAEtD,IAAKp5V,EAAG64V,mBAAoB,CAC1B74V,EAAG64V,mBAAqB,IAAIO,KAGhCvuC,sBAAsBA,GACpB,IAAIkD,EACJ,MAAM/tT,EAAKC,KACTqxY,EAAetxY,EAAG+tT,mBAClBwjF,EAAgB,CACd7sY,KAAM,oBACNkpG,OAAQ,4BACR9gF,KAAM,IACNvQ,QAASvc,GAEb,GAAIA,EAAGuuY,UAAY1jF,GAAqBymF,GAAgBA,IAAiBzmF,EAAmB,CAC1F,OAEF,IAAKymF,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAa14X,SAAW5Y,EAAI,CAE3FsxY,EAAat1X,UAEfhc,EAAGwpE,gBAAgB,qBAEnB,IAAKukP,EAAqBlD,KAAuB,MAAQkD,SAA4B,GAAKA,EAAmBuyE,oBAAqB,CAChIz1E,EAAkBz7R,GAAGmiX,OAChB,CACL1mF,EAAoB00E,GAAkBzuQ,IAAI,CACxC1sE,KAAMpkD,EAAGkqV,MACT37S,KAAMvuC,EAAGuuC,KACTixV,SAAUx/X,EAAGw/X,SACbx3E,SAAUhoT,EAAGgoT,SACby3E,YAAaz/X,EAAGy/X,YAChBnyW,UAAWikX,EACX34X,MAAO5Y,GACN6qT,GAGL,IAAK7qT,EAAGyd,cAAe,CACrB,GAAIzd,EAAGqrV,aAAc,CACnBrrV,EAAGykP,eAAeomE,kBAAoBA,MACjC,CACL7qT,EAAGmxY,uBAAuB/iF,KAAK5oO,MAAQqlO,GAG3C7qT,EAAG+tT,mBAAqBlD,EACxB7qT,EAAGikM,YAAY4mH,EAAmB,CAAC,UAAW,qBAC9C,GAAIymF,GAAgBzmF,EAAmB,CACrC7qT,EAAGwtB,QAAQ,0BAA2B,CACpCq9R,kBAAAA,KAUNA,wBACE,IAAK5qT,KAAK8tT,mBAAoB,CAC5B9tT,KAAK4qT,kBAAoB,KAE3B,OAAO5qT,KAAK8tT,mBAEd0xE,kBACE,IAAI8E,EAAuBC,EAC3B,OAAQD,GAAyBC,EAAyBvkY,KAAK8tT,sBAAwB,MAAQy2E,SAAgC,OAAS,EAAIA,EAAuB/E,eAAiB,MAAQ8E,SAA+B,EAAIA,EAAwBtkY,KAAKuxY,aAE9P/R,gBAAgBjgY,GACd,GAAIS,KAAK8tT,mBAAoB,CAC3B9tT,KAAK4qT,kBAAkB40E,YAAcjgY,MAChC,CACLS,KAAKuxY,aAAehyY,GAGxBwoT,aAAaA,GACX,IAAIu/E,EACJ,MAAMvnY,EAAKC,KACTwxY,EAAkBzxY,EAAGunY,UACrBmK,EAAoB,CAClBhtY,KAAM,WACN9E,aAAYwY,OACVA,EAAM4nU,UACNA,IAEA,GAAI5nU,EAAQ,CACV,MAAM2oT,GAAmBif,GAAaA,EAAU5yS,UAAYh1B,EAAOg1B,WAAa4yS,EAAU3yS,QAAUj1B,EAAOi1B,QAC3G,GAAI0zR,EAAiB,CAkBnB/gU,EAAGwtB,QAAQ,kBAAmB,CAC5B+uE,IAAK,CACHnvD,UAAW4yS,EAAU5yS,UACrBC,QAAS2yS,EAAU3yS,SAErByjF,IAAK,CACH1jF,UAAWh1B,EAAOg1B,UAClBC,QAASj1B,EAAOi1B,YAaxBrtC,EAAGwtB,QAAQ,iBAAkB,CAC3BpV,OAAAA,KAGJmE,QAASvc,GAEb,GAAIA,EAAGuuY,UAAYvmF,GAAYypF,GAAmBA,IAAoBzpF,EAAU,CAC9E,OAEF,GAAIypF,EAAiB,CACnB,GAAIA,EAAgB74X,QAAU5Y,EAAI,CAEhCyxY,EAAgBz1X,WAGpBhc,EAAGwpE,gBAAgB,YAEnB,MAAO+9T,EAAYv/E,KAAc,MAAQu/E,SAAmB,GAAKA,EAAU1nD,YAAa,CACtF73B,EAAW/2Q,GAAa55B,OAAO,CAC7BuB,MAAO5Y,EACPypT,WAAYzpT,EAAGypT,WACfu1B,WAAYh/U,EAAGquY,mBACfxjW,aAAc7qC,EAAG6qC,aACjB20S,eAAgBx/U,EAAGq/W,WAAar/W,EAAGuuC,MAClCy5Q,GACH,GAAIhoT,EAAGotC,UAAW,CAChB46Q,EAAS56Q,UAAYptC,EAAGotC,UAE1B,GAAIptC,EAAGqtC,QAAS,CACd26Q,EAAS36Q,QAAUrtC,EAAGqtC,QAExB,GAAIrtC,EAAGouY,YAAa,CAClBpuY,EAAG2xY,iBAAiB3pF,GAEtBA,EAAW,IAAI62B,GAAS72B,GAG1BA,EAAS54R,GAAGsiX,GACZ1xY,EAAGunY,UAAYv/E,EAEjBA,eACE,IAAK/nT,KAAKsnY,UAAW,CACnBtnY,KAAK+nT,SAAW,KAElB,OAAO/nT,KAAKsnY,UAEd3nY,eAAeJ,GACb,GAAIS,KAAK8tT,mBAAoB,CAC3B9tT,KAAK8tT,mBAAmByxE,SAAWhgY,GAQvC4uY,gBAAgBh2X,GACdnY,KAAK2xY,aAAex5X,EACpB,IAAKnY,KAAKwd,cAAe,CACvBxd,KAAK0xY,iBAAiB1xY,KAAK+nT,WAG/BomF,kBACE,OAAOnuY,KAAK2xY,aAIdhyY,iBAAiBooT,GACf,MAAMhoT,EAAKC,KACTmY,EAASpY,EAAG4xY,aACd,GAAIx5X,EAAQ,CACV,IAAI4oB,EAAO,KAEX,GAAI5oB,EAAOy5X,UAAY,GAAKz5X,EAAOy5X,SAAW,IAAMz5X,EAAO05X,OAAS15X,EAAOy5X,UAAYz5X,EAAO05X,QAAU,IAAM15X,EAAO05X,OAAS15X,EAAOy5X,SAAW,GAAI,CAClJ7wW,EAAO,CACL/b,KAAM7M,EAAOy5X,SACbr/V,GAAIp6B,EAAO05X,QAGf,IAAIr0W,EAAM,KAEV,GAAIrlB,EAAO25X,SAAW,GAAK35X,EAAO25X,QAAU,GAAK35X,EAAO45X,MAAQ55X,EAAO25X,SAAW35X,EAAO45X,OAAS,GAAK55X,EAAO45X,MAAQ55X,EAAO25X,QAAU,EAAG,CACxIt0W,EAAM,CACJxY,KAAM7M,EAAO25X,QACbv/V,GAAIp6B,EAAO45X,OAGf,GAAIhxW,GAAQvD,EAAK,CACfuqR,EAAS7xO,QAAU,CACjBn1C,KAAAA,EACAvD,IAAAA,OAEG,CAELuqR,EAAS7xO,QAAU,UAEhB,CAEL6xO,EAAS7xO,QAAU,KAErB,GAAIn2E,EAAG8oI,UAAW,CAChB,IAAImpQ,EAEJjyY,EAAGykP,eAAeiuC,iBAEjBu/G,EAAwBjyY,EAAGgyH,SAASq+J,eAAiB,MAAQ4hH,SAA+B,OAAS,EAAIA,EAAsBl5M,UAEhI/4L,EAAGy7W,yBAGP77W,gBAAgB68B,GACdx8B,KAAKq9S,aAAa7gR,GAapB78B,aAAa68B,EAAMmhR,EAAe,MAChC,MAAM59S,EAAKC,KACTiyY,EAAKlyY,EAAGunY,WACRn6V,UACEA,EAASC,QACTA,EAAO0uS,SACPA,GACEm2D,GAAMhE,GACZ,UAAWzxW,IAAS,SAAU,CAC5BA,EAAOqD,GAAW7zB,MAAMwwB,GAE1B,GAAIy1W,GAAM7kW,EAAS,CACjB,GAAI5Q,EAAM,CACR,IAAI+pS,EAAcn5R,EAClB,GAAIuwQ,GAAgBxwQ,EAAW,CAC7B,MAAMzC,EAAO7K,GAAW6K,KAAKyC,EAAWC,EAAS0uS,EAAU,MAC3DvV,EAAc1mS,GAAW9gB,IAAIyd,EAAMkO,EAAMoxS,GAE3C/7U,EAAGqhV,YAAY5kT,EAAM+pS,QAElB,CACLxmU,EAAGmyY,eAAiB11W,GAGxB2Q,gBACE,MAAMptC,EAAKC,KACX,GAAID,EAAGunY,UAAW,CAChB,OAAOvnY,EAAGunY,UAAUn6V,UAEtB,OAAOptC,EAAGmyY,gBAAkB,IAAI1jY,KAElC7O,cAAc68B,GACZ,UAAWA,IAAS,SAAU,CAC5BA,EAAOqD,GAAW7zB,MAAMwwB,GAE1Bx8B,KAAKs9S,WAAW9gR,GAalB78B,WAAW68B,EAAMmhR,EAAe,OAC9B,MAAM59S,EAAKC,KACTiyY,EAAKlyY,EAAGunY,WACRn6V,UACEA,EAASC,QACTA,EAAO0uS,SACPA,GACEm2D,GAAMhE,GACZ,UAAWzxW,IAAS,SAAU,CAC5BA,EAAOqD,GAAW7zB,MAAMwwB,GAE1B,GAAIy1W,GAAM9kW,EAAW,CACnB,GAAI3Q,EAAM,CACR,IAAIgqS,EAAgBr5R,EACpB,GAAIwwQ,GAAgBvwQ,EAAS,CAC3B,MAAM1C,EAAO7K,GAAW6K,KAAKyC,EAAWC,EAAS0uS,EAAU,MAC3DtV,EAAgB3mS,GAAW9gB,IAAIyd,GAAOkO,EAAMoxS,GAE9C/7U,EAAGqhV,YAAY5a,EAAehqS,QAE3B,CACLz8B,EAAGoyY,aAAe31W,GAGtB4Q,cACE,MAAMrtC,EAAKC,KACX,GAAID,EAAGunY,UAAW,CAChB,OAAOvnY,EAAGunY,UAAUl6V,QAEtB,OAAOrtC,EAAGoyY,cAAgBtyW,GAAW9gB,IAAIhf,EAAGotC,UAAWptC,EAAGypT,WAAW4zB,YAAar9U,EAAGypT,WAAWmyB,WAAW1zS,MAE7GtoC,kBAAkBiN,GAChB,OAAOA,aAAmB4B,KAAO,CAC/BguB,KAAM5vB,GACJA,EAENjN,kBAAkBiN,GAChB,MAAM7M,EAAKC,KACX,GAAID,EAAG8oI,UAAW,CAChB9oI,EAAG+5X,aAAaltX,EAAQ4vB,KAAM5vB,OACzB,CACL7M,EAAGovB,GAAG,CACJwrK,MAAO,IAAM56L,EAAG+5X,aAAaltX,EAAQ4vB,KAAM5vB,GAC3CggB,KAAM,QAIZmlG,eACE,OAAO73G,MAAM63G,SAGfA,aAAaA,GACXA,EAAWA,IAAa,KAAO,GAAKA,EACpC,KAAM,iBAAkBA,GAAW,CACjCA,EAASqgR,aAAe,KAE1Bl4X,MAAM63G,SAAWA,EAEnB45Q,iBACE,OAAO3rY,KAAKqyY,YAEd1G,eAAetqY,GACbrB,KAAKqyY,YAAchxY,EACnBrB,KAAKw7W,wBACLx7W,KAAKutB,QAAQ,eAEfk7R,iBACE,OAAOzoT,KAAKsyY,YAEd7pF,eAAevsP,GACbl8D,KAAKsyY,YAAcp2U,EACnBl8D,KAAKw7W,wBACLx7W,KAAKutB,QAAQ,eAIf5tB,iBACEua,MAAMuqW,iBACN,MAAM8tB,EAAgBvyY,KAAK+nT,SAASg3B,WAEpC/+U,KAAK+nT,SAAStwO,YAAY,CACxBsnQ,WAAY,QAGd/+U,KAAK+nT,SAASg3B,WAAawzD,EAU7B5yY,aAAa82C,EAASupE,GAAS94G,MAC7BA,EAAKD,OACLA,IAGA,GAAIjH,KAAKipT,YAAcjpM,GAAW94G,IAAU84G,EAAQ94G,MAAO,QAClDlH,KAAK0uV,gBAAgBz1S,OAE9B,MAAMs0F,EAAWvtI,KAAK0uV,gBAAgBj4S,QAAQuM,YAG9C,GAAIhjD,KAAK40P,gBAAkB50I,GAAW/4G,IAAW+4G,EAAQ/4G,OAAQ,CAC/DjH,KAAK+tY,0BAA0BxgQ,EAAUtmI,EAAQsmI,EAAUvtB,EAAQ/4G,SAIvEtH,0BAA0BuH,EAAOD,EAAQomI,EAAUC,GACjD,GAAIttI,KAAK6oI,UAAW,CAClB,MAAM9oI,EAAKC,MACTorV,aACEA,EAAYxgC,kBACZA,EAAiBmkF,cACjBA,GACEhvY,EACNA,EAAGooN,mBAAmBqqL,iBAAiBtrY,EAAOD,EAAQomI,EAAUC,GAIhEs9K,EAAkBn+J,eAAiB2+L,EAAelkV,EAAQkN,KAAK+oB,MAAMl2B,GACrE,GAAI8nY,IAAkBhvY,EAAG0yY,qBAAsB,CAC7C1yY,EAAG0wY,sBAaL1wY,EAAGwtB,QAAQ,yBAA0B,CACnCrmB,MAAAA,EACAD,OAAAA,EACAomI,SAAAA,EACAC,UAAAA,KAIN3tI,4BACEK,KAAK8tY,mBACL9tY,KAAKmoN,mBAAmBipK,4BAE1BzxX,sBACEK,KAAK+uY,cAAc/vY,SAAQsvY,IACzB,IAAKA,EAAQmE,qBAAsB,CACjCnE,EAAQmE,qBAAuB,KAC/BzyY,KAAKslP,aAAYnpB,IACf,MAAMu2K,EAAiBpE,EAAQnkK,SAAShO,EAAQN,QAEhD,GAAI62K,EAAexrY,QAAUi1N,EAAQj1N,MAAO,CAC1C,GAAIi1N,EAAQ3sJ,UAAW,CACrBkjU,EAAe56S,eACV,CACL,GAAI46S,EAAeljU,UAAW,CAC5BkjU,EAAe76S,SAGjB,GAAIskI,EAAQ/kG,KAAM,CAEhB,GAAI+kG,EAAQ/kG,OAASs7Q,EAAet7Q,KAAM,CACxCs7Q,EAAet7Q,KAAO+kG,EAAQ/kG,UAE3B,CACLs7Q,EAAexrY,MAAQi1N,EAAQj1N,YAKvConY,EAAQmE,qBAAuB,UAMrCtqL,yBACE,MAAM,IAAIz3M,MAAM,yBAGlB06U,mBACE,OAAO,KAIT+Y,uBACE,OAAOnkW,KAAK2yY,kBAEd1zC,uBACE,OAAOj/V,KAAK4yY,kBAEdxhC,gBACE,MAAMrxW,EAAKC,KACX,IAAKD,EAAG8yY,WAAY,CAClB,MAAM1hC,EAAMpxW,EAAG8yY,WAAa1xY,SAASqwD,gBAAgB,6BAA8B,OACnF2/S,EAAI1hT,aAAa,KAAM26B,GAASjf,WAAW,QAE3CgmS,EAAI1oT,cAAgB,KACpB1oD,EAAGk/V,iBAAiBx9V,YAAY0vW,GAChCpxW,EAAGwtB,QAAQ,mBAAoB,CAC7B4jV,IAAAA,IAGJ,OAAOpxW,EAAG8yY,WAcZvnD,6BAEE,IAAKtrV,KAAK8yY,wBAAyB,CACjC,IAAIC,EAEJ/yY,KAAKme,UAAU,WACfne,KAAK8yY,yBAA2BC,EAAuB/yY,KAAKwkP,kBAAoB,MAAQuuJ,SAA8B,OAAS,EAAIA,EAAqBx2K,eAE1J,OAAOv8N,KAAK8yY,wBAEdnzY,mBACE,MAAMI,EAAKC,MACT2tT,UACEA,GACE5tT,EAAG6qT,kBACP1jT,EAAQnH,EAAGqrV,aAAez9B,EAAY5tT,EAAGykP,eAAet9O,MAC1D,IAAIiF,EAAS,MACb,GAAIpM,EAAGkpT,WAAY,CAEjB,GAAIlpT,EAAG8oI,UAAW,CAGhB9oI,EAAGm1R,mBAAmBy4B,EAAY5tT,EAAG6gQ,iBAAkB,MAGzD,GAAI7gQ,EAAGy/X,YAAa,CAClBvnV,GAAUod,UAAUt1D,EAAGk/V,iBAAkB,SAAUtxC,GAErDxhT,EAAS,KAEX,GAAIjF,IAAUnH,EAAGizY,cAAgBjzY,EAAGk/V,iBAAkB,CACpD,GAAIl/V,EAAGokW,iBAAkB,CACvBlsT,GAAUod,UAAUt1D,EAAGokW,iBAAkB,QAASj9V,GAEpD+wC,GAAUod,UAAUt1D,EAAGk/V,iBAAkB,QAAS/3V,GAClDnH,EAAGizY,aAAe9rY,EAClBiF,EAAS,KAEX,OAAOA,EAMTxM,oBAAoBgc,IAKpBhc,wBAAwBgc,IAGxBhc,yBAAwByyD,OACtBA,IAEA,MAAMryD,EAAKC,KAEX,GAAID,EAAG6qD,UAAW,CAIhB,GAAIwH,IAAW,WAAaryD,EAAGwrG,QAAQ8qM,qBAAsB,OACrDt2S,EAAGwrG,QAAQkM,MAAM,UAAW,OAEpCv9F,MAAMopQ,qBAAqBzkR,eAGxB,CACHkB,EAAG22R,YAAY,UAAW32R,EAAI,CAAC,QAGnCJ,QAAQmvY,EAAc,MACpB,MAAM/uY,EAAKC,KACX,GAAID,EAAG8oI,YAAc9oI,EAAGooP,iBAAkB,CAIxC,GAAIpoP,EAAGmwY,kBAAoBnwY,EAAGurV,uBAAuBtjV,cAAcjI,EAAGwrV,eAAgB,CACpF,GAAIxrV,EAAG81S,cAAe,CACpB91S,EAAGu6O,YAAY,MAAOw0J,OACjB,CACL/uY,EAAGkzY,2BAA6B,KAChClzY,EAAGooN,mBAAmB+qL,oBAAsB,UAM3C,CACHnzY,EAAG82N,WAAWtpM,QAAQ,aAI5B5tB,SACE,MAAMI,EAAKC,KACTmzY,EAAcpzY,EAAGurV,uBACnB,GAAIvrV,EAAG4jW,oBAAqB,CAC1B5jW,EAAG4yY,kBAAoB16V,GAAU72C,cAAc,CAC7Cs9C,UAAW,0BACXpsC,OAAQ6gY,EACRtqV,YAAasqV,EAAYx/U,oBAI7B,MAAMy/U,EAAWrzY,EAAG6yY,kBAAoB36V,GAAU72C,cAAc,CAC9Ds9C,UAAW,0BACXr9C,MAAO,aAAatB,EAAGyvK,UAAYzvK,EAAGorY,eAAiB,MACvD74X,OAAQ6gY,IAEVpzY,EAAG2uV,gBAAgBroE,iBAAmB+sH,EAEtC,GAAIrzY,EAAGkpT,YAAclpT,EAAGy/X,YAAa,CACnCz/X,EAAG+tY,mBAEL5zX,MAAMH,UAAUlb,WAGlBc,YAAYqzQ,EAAc,MAAOqgI,EAAiB,MAChD,MAAMtzY,EAAKC,KACX,GAAID,EAAGyd,cAAe,CACpB,OAEFzd,EAAGooN,mBAAmBmyB,YAAY+4J,GAClCn5X,MAAMogO,YAAY04B,GAKpBrzQ,kBAAkBqY,EAAIsQ,GACpB,MAAMvoB,EAAKC,KAEX,GAAID,EAAG6qD,UAAW,CAEhB,GAAItiC,GAAY,MAAQA,IAAa,KAAM,CACzCA,EAAWvoB,EAAG82D,mBAGhB,GAAIvuC,GAAYvoB,EAAG6sT,sBAAuB,CACxC,IAAK7sT,EAAGwoL,WAAW,kBAAmB,CACpCxoL,EAAGglH,YAAc,KAGnBipR,GAAelxX,MAAQwL,EACvBvoB,EAAGgd,WAAWixX,KAGlBh2X,IAEFrY,iBACEK,KAAK+kH,YAAc,MACnB/kH,KAAKutB,QAAQ,iBAIf5tB,0BAEE,IAAKK,KAAK61S,cAAe,OACjB71S,KAAKurG,QAAQkM,MAAM,YAAa,aAElCv9F,MAAMo1N,oBAKd3vO,sBAAsBmvY,EAAaxmX,GAEjC,GAAItoB,KAAK6oI,YAAc7oI,KAAKmoP,iBAAkB,CAC5CnoP,KAAKq4X,mBAAkB,IAAMr4X,KAAK84L,QAAQg2M,IAAcxmX,IAW5DgsU,uBACE,OAAOt0V,KAAKmoN,mBAAmBmsI,iBASjC30V,eAAe2oB,EAAUm+R,EAAczmT,KAAK0mT,0BAC1C,MAAMn4P,EAAan6C,KAAK4V,IAAI,GAAIy8R,GAChC,OAAOryS,KAAKkxB,MAAMhd,EAAWimC,GAAcA,EAE7C5uD,kCACEK,KAAKk2V,wBAA0Bl2V,KAAKk2V,wBAA0B,GAAK,EAErEv2V,gCACE,GAAIK,KAAKk2V,uBAAwB,CAC/Bl2V,KAAKk2V,wBAA0B,IAKrCh3V,EAAgBgvY,GAAc,eAAgB,CAC5CsC,qBAAsB,CACpBjxY,MAAO,CAAC,oBAAqB,WAAY,cACzCiiB,QAAS,CACPhS,MAAO,aAuBX29B,UAAW,CACT3rB,QAAS,CACPlK,MAAO,QAET/X,MAAO,MAqBT6tC,QAAS,CACP5rB,QAAS,CACPlK,MAAO,QAET/X,MAAO,MAQTypT,cAAe,KAOfojF,YAAa,KAObjzC,SAAU,KAQVomC,SAAU,QAEZrgY,EAAgBgvY,GAAc,aAAc,CAC1CvI,iBAAkB,OAEpBuI,GAAat3T,YAEblkE,EAAcmQ,WAAW,YAAa,SACtCqrX,GAAahmY,OAAS,eAGtB,MAAMorY,GAAWx9W,GAAaO,aAAa+0P,GAAU,CACnDntR,OAAQ,CACNwmT,SAAU,aAEZwC,mBAAoB,CAClBssF,eAAgB,SAAUr5W,GACxB,OAAOA,EAAO,UAAYA,IAAS,EAAI,IAAM,MAGjDi7U,aAAc,CACZnwV,KAAM,OACNutB,GAAI,KACJkkG,MAAO,QACPzvG,QAAS,WAEXkmQ,eAAgB,CACd9rQ,GAAI,KACJoyW,GAAI,KACJC,GAAI,KACJC,GAAI,KACJvgE,aAAc,iBACdC,WAAY,kBACZC,WAAY,kBACZC,SAAU,mBACVqgE,MAAO,CAAC,KAAM,KAAM,KAAM,MAC1BC,KAAM,CAAC,iBAAkB,kBAAmB,kBAAmB,qBAEjEC,eAAgB,CACdC,KAAM,OACNC,GAAI,KACJ7gE,KAAM,OACN8gE,IAAK,MACLC,kBAAmB,kBACnBC,KAAM,OACNC,OAAQ,SACRtsR,OAAQ,SACRsrN,aAAc,iBACdC,WAAY,eACZC,WAAY,eACZC,SAAU,cAEZg2C,UAAW,CACT8qB,KAAM,OACNC,SAAU,WACVC,MAAO,QACPh3H,IAAK,MACL42H,KAAM,OACNC,OAAQ,SACRtsR,OAAQ,SACR0sR,aAAc,aACdC,OAAQ,UAEVt4B,UAAW,CACTu4B,sBAAuB,kDACvBC,sBAAuB,4DAEzBC,cAAe,CACbC,YAAa,YACbC,eAAgB,eAChBC,iBAAkB,kBAEpB5e,mBAAoB,CAClB6e,cAAe,OACfC,gBAAiB,aACjBliD,UAAW,aACXE,QAAS,WACTiiD,UAAW,SAEbr6B,eAAgB,CACdmB,UAAW,aACXC,SAAU,YACVC,WAAY,eAEdqP,YAAa,CACX4pB,aAAc,eACdC,OAAQ,WAEV1d,WAAY,CACVG,oBAAqB,yBAEvB36C,cAAe,CACbC,gBAAiB,CACfP,kBAAmB,SACnBl4U,KAAM,WAER44U,cAAe,CACbT,cAAe,gBACfD,kBAAmB,UAErBW,WAAY,CACVV,cAAe,YACfC,iBAAkB,MAClBF,kBAAmB,SACnBl4U,KAAM,OAER+4B,IAAK,CACH/4B,KAAM,aAERm/B,KAAM,CACJn/B,KAAM,cAER84U,WAAY,CACVZ,kBAAmB,SACnBl4U,KAAM,aAER+4U,YAAa,CACX/4U,KAAM,SAERg5U,WAAY,CACVd,kBAAmB,SACnBl4U,KAAM,QAERi5U,aAAc,CACZj5U,KAAM,SAERk5U,iBAAkB,CAChBl5U,KAAM,kBAERo5U,iBAAkB,CAChBp5U,KAAM,gBAERq5U,aAAc,CACZr5U,KAAM,UAERu9B,KAAM,CACJv9B,KAAM,SAERs5U,UAAW,CACTt5U,KAAM,mBAGV4+W,4BAA6B,CAC3B+xB,eAAgB,4BAChBC,qBAAsB,uDACtBC,yBAA0B,wGAC1BC,0BAA2B,2BAC3BC,4BAA6B,yBAC7BC,eAAgB,qCAChBC,qBAAsB,uDACtBC,yBAA0B,+FAC1BC,0BAA2B,oBAC3BC,4BAA6B,kBAC7BluR,IAAK,MACLE,OAAQ,SACR3gH,MAAO,KAETq9U,iBAAkB,CAChBuxD,QAAS,QAETC,MAAO,QAGPC,gBAAiB,EACfhyW,KAAAA,KACI,aAAaA,IAGnBiyW,iBAAkB,EAChBjyW,KAAAA,KACI,cAAcA,IAGpBkyW,uBAAwB,EACtBlyW,KAAAA,EACAK,OAAAA,KACI,aAAaL,QAAWK,IAE9B8xW,iBAAkB,EAChB56P,SAAAA,KACI,SAASA,SAGf66P,yBAA0B,EACxB76P,SAAAA,EACAv3G,KAAAA,KACI,SAASu3G,cAAqBv3G,IAGpCqyW,0BAA2B,EACzB96P,SAAAA,EACAv3G,KAAAA,KACI,SAASu3G,eAAsBv3G,IAGrCsyW,gCAAiC,EAC/B/6P,SAAAA,EACAv3G,KAAAA,EACAK,OAAAA,KACI,SAASk3G,cAAqBv3G,QAAWK,IAE/CkyW,UAAW,YACXC,UAAW,aACXC,UAAW,YACXC,UAAW,aACXC,UAAW,YACXC,aAAc,WAEdp5W,IAAK,MACL+B,QAAS,UACTs3W,cAAe,cAOfC,WAAY,EACV17V,SAAAA,EACApX,KAAAA,KACI,GAAGoX,KAAYpX,KAEvBshV,iBAAkB,CAChByxB,eAAgB,eAChBlvR,OAAQ,SACRqsR,KAAM,OACN8C,UAAW,YACXC,MAAO,QACPC,kBAAmB,SACnBC,mBAAoB,UACpBC,oBAAqB,WACrBC,mBAAoB,UACpBC,KAAM,OACNC,SAAU,SACVC,aAAc,aACdC,UAAW,WAEb/yB,oBAAqB,CACnBlnV,IAAK,MACL+B,QAAS,UACTs3W,cAAe,eAEjB1xB,yBAA0B,CACxBoxB,UAAW,QACXC,UAAW,SACXC,UAAW,QACXC,UAAW,SACXC,UAAW,QACXC,aAAc,QAEhB1xB,6BAA8B,CAC5BwyB,MAAO,QACPC,MAAO,QACPC,UAAW,WAEb5zB,yBAA0B,CACxB+xB,MAAO,QACP8B,OAAQ,SACRC,QAAS,UACTC,OAAQ,UAEV9zB,gBAAiB,CACf+zB,KAAM,OACNC,OAAQ,aAGVtiB,QAAS,CACPuiB,cAAe17W,GAAQ,eAAeA,KAIxCkiW,mBAAoB,CAClBlF,aAAc,oBACdC,YAAa,mBACbC,UAAW,aACXye,aAAc,sCAEhBxZ,sBAAuB,CACrByZ,iBAAkB,iBAClBC,cAAe,OACfC,YAAa,MAEfC,cAAe,CACbC,uBAAwB,wBAG1B/+E,gBAAiB,CACfg/E,oBAAqB,oBAEvBvyF,eAAgB,CACdz+N,SAAU,cAIdpvD,GAAuBvB,eAAe,KAAM,CAC1CC,KAAM,UACNf,OAAQs9W,KAMV,MAAMhlU,GAAS,CAAC,aAAc,YAAa,kBAAmB,gBAAiB,kBAAmB,iBAAkB,0BAClHoqU,GAAmB,CAAC,SAAU,QAAS,YAAa,cAAe,eAAgB,aAAc,sBAQnG,IAAIC,GAAiBzrX,GAAU,MAAMyrX,UAAsBzrX,EACzDnf,mBACE,MAAO,gBAETpO,yBAAyBgc,GAEvB,IAAK,MAAM7D,KAAQ4gY,GAAkB,QAC5B/8X,EAAQ7D,GAEjBoC,MAAM8E,yBAAyBrD,GAGjChc,iBAAiBiN,GACf,MAAM2+F,EAAUvrG,KAAKurG,QAAQ9sF,iBAAiB7R,GAC5CT,EAAS+N,MAAMuE,iBAAiB7R,GAElC,GAAI2+F,EAAS,CACXp/F,EAAOo/F,QAAUA,EACjB,MAAM2wJ,YACJA,GACE/vP,EAEJ,GAAI+vP,EAAa,CACf,IAAK,MAAMtwL,KAAS0C,GAAQ,CAC1B,GAAI4tL,EAAYtwL,GAAQ,CACtB2/B,EAAQ3/B,GAASswL,EAAYtwL,KAInC,GAAI3tE,OAAOD,KAAKutG,GAASzsG,SAAW,EAAG,QAC9BqN,EAAOo/F,gBAIXp/F,EAAO+tB,YAEP/tB,EAAO+vP,YACd,OAAO/vP,EAETq2D,qBAMF,MAAMo2U,GAAW97W,IAAWA,GAAUv1B,MAAMC,QAAQs1B,GAAUA,EAAS,CAACA,GACtE+7W,GAAa,CAAC36W,EAAShuB,EAAOs1B,IAAkBtH,GAAWA,EAAQhuB,KAAW,KAAOguB,EAAQhuB,GAASs1B,EAQxG,IAAIszW,GAAe5rX,IACjB,IAAIy7C,EACJ,OAAOA,EAAS,MAAMmwU,UAAqB5rX,GAAU7R,IAQnD09X,iBACE,MAAO,CAAC/4Y,KAAKw8B,MAEfw8W,kBACE,IAAIC,EACJ,MAAMl5Y,EAAKC,MACT+4Y,WACEA,EAAUxrR,WACVA,EAAU2rR,oBACVA,GACEn5Y,EACJo5Y,GAAqBF,EAAwBl5Y,EAAGo5Y,qBAAuB,MAAQF,SAA+B,EAAIA,EAAwBL,GAAS74Y,EAAGq5Y,0BACxJ,IAAI11X,EAAK5Y,EACT,GAAIouY,EAAqB,CACvBpuY,EAAM/K,EAAGyuB,SAAS0qX,EAAqBn5Y,EAAI,CAACA,QACvC,CACL,MAAMs5Y,EAAUR,GAAWM,EAAmB,EAAG5rR,GAEjDziH,EAAM+0B,GAAW/C,OAAOi8W,EAAW,GAAIM,GACvC31X,EAAMq1X,EAAWj6Y,OAAS,IAAMq6Y,IAAsB,MAAQA,SAA2B,OAAS,EAAIA,EAAkBr6Y,QAAU,GAAK+gC,GAAW/C,OAAOi8W,EAAW,GAAIM,KAAax5W,GAAW/C,OAAOi8W,EAAW,GAAIM,GACtN,GAAI31X,EAAK,CAEP5Y,EAAM+0B,GAAWy5W,YAAYP,EAAYF,GAAWM,EAAmB,EAAG,IAAI5rR,IAAaxtH,EAAGw5Y,iBAAiBhsR,OAGnH,OAAOziH,EAETnL,wBAAwBm9B,GACtB,OAAO87W,GAAS97W,GAElB0lC,qBACCtjE,EAAgBypE,EAAQ,QAAS,eAAgBzpE,EAAgBypE,EAAQ,eAAgB,CAM1F4kD,WAAY,eAMZgsR,cAAe,MAsBfJ,kBAAmB,KAqBnBD,oBAAqB,OACnBvwU,GAWN,IAAI6wU,GAAgBtsX,GAAU,MAAMssX,UAAsBtsX,GAAU7R,IAClEtN,mBACE,MAAO,eASTpO,+BAA+B+kU,EAAkB+0E,EAAgB,OAC/D,GAAIz5Y,KAAK6oI,WAAa67L,EAAkB,CACtC,IAAIg1E,EAAuBC,EAAUC,EACrC,IAAIC,GAAWH,EAAwB15Y,KAAKi/V,iBAAiB3sS,aAAe,MAAQonV,SAA+B,OAAS,EAAIA,EAAsBh1E,EAAiB/5T,IAEvK,IAAKkvY,GAAWn1E,EAAiBvqB,SAASpkO,SAAU,CAClD,IAAK,MAAM7b,KAAQwqQ,EAAiBvqB,SAASnkO,OAAQ,CACnD,IAAI8jU,EACJD,GAAWC,EAAyB95Y,KAAKi/V,iBAAiB3sS,aAAe,MAAQwnV,SAAgC,OAAS,EAAIA,EAAuB,GAAGp1E,EAAiB/5T,MAAMuvD,EAAKvvD,MACpL,GAAIkvY,EAAS,CACX,QAKN,OAAOJ,EAAgBI,GAAWF,EAAWE,KAAa,MAAQF,SAAkB,OAAS,GAAKC,EAAqBD,EAASrnV,aAAe,MAAQsnV,SAA4B,OAAS,EAAIA,EAAmBzpX,MAErN,OAAO,KASTxwB,0BAA0B8gL,EAAauzC,EAAiB,MACtD,IAAI+lL,EACJ,OAAQA,EAAwBt5N,EAAYk8I,aAAe,MAAQo9E,SAA+B,OAAS,EAAIA,EAAsB,IAF/E,GAGlDN,EAAgB,OACpB,GAAIh5N,EAAY42J,oBAAqB,CACnC,IAAI2iE,EACJ,MAAMH,GAAWG,EAAyBh6Y,KAAKi/V,iBAAiB3sS,aAAe,MAAQ0nV,SAAgC,OAAS,EAAIA,EAAuBv5N,EAAYl5F,OACvK,OAAOkyT,EAAgBI,EAAUA,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQvnV,UAAUniC,MAEvG,MAAMu0S,EAAmB1kU,KAAKm1S,gBAAgBioB,iCAAiC38I,EAAauzC,GAC5F,OAAOh0N,KAAK6xW,+BAA+BntC,EAAkB+0E,GAW/D95Y,2BAA2B8gL,EAAauzC,EAAgBylL,EAAgB,OAEtE,GAAIzlL,EAAgB,CAClB,MAAO,CAACh0N,KAAK0nW,0BAA0BjnL,EAAauzC,EAAgBylL,QAGjE,CACH,OAAOh5N,EAAYk8I,UAAUlxT,QAAO,CAACU,EAAQ6nN,KAC3C,MAAMtpK,EAAK1qD,KAAK0nW,0BAA0BjnL,EAAauzC,EAAgBylL,GACvE/uV,GAAMv+C,EAAO3N,KAAKksD,GAClB,OAAOv+C,IACN,KAcPxM,sBAAsBs6Y,EAAgB96Q,GACpC,OAAOn/H,KAAKmoN,mBAAmBu9K,iBAAiBuU,EAAgB96Q,GASlEx/H,iBAAiBs6Y,GACf,OAAOj6Y,KAAKi1V,sBAAsBglD,GAQpCt6Y,mBAAmBs6Y,GACjB,IAAIC,EACJ,GAAID,aAA0BtsV,MAAO,CACnCssV,EAAiBA,EAAet7Y,OAElC,MAAM83C,GAAWyjW,EAAkBD,KAAoB,MAAQC,SAAyB,OAAS,EAAIA,EAAgBj2V,QAAQjkD,KAAKurV,eAClI,GAAI90S,EAAS,CACX,GAAIA,EAAQ/f,QAAQgpR,QAAS,CAC3B,OAAO1/S,KAAKq1S,WAAWxoO,QAAQp2B,EAAQ/f,QAAQgpR,SAEjD,GAAIjpQ,EAAQ/f,QAAQyjX,aAAc,CAChC,OAAOn6Y,KAAKm1S,gBAAgBtoO,QAAQp2B,EAAQ/f,QAAQyjX,cAAchqX,OAGtE,OAAO,KAGTxwB,sBAAsB82C,GACpB,OAAOz2C,KAAKs1V,mBAAmB7+S,GAQjC92C,wBAAwB82C,GACtB,MAAMs9S,EAAet9S,EAAQwN,QAAQjkD,KAAKurV,eACxC7mB,EAAmBqvB,GAAgB/zV,KAAKm1S,gBAAgBtoO,QAAQknR,EAAar9T,QAAQyjX,cACrF15N,EAAcszK,GAAgB/zV,KAAKq1S,WAAWxoO,QAAQknR,EAAar9T,QAAQgpR,SAE7E,OAAO1/S,KAAKm1S,gBAAgBqoB,cAAckH,EAAkBjkJ,GAI9D9gL,aAAaq0N,GAEX,OAAOh0N,KAAK4rE,MAAMnmE,QAAQuuN,IAAmB,EAK/CxxJ,qBAWF,IAAI43U,GAAsBltX,GAAU,MAAMktX,UAA4BltX,GAAU7R,IAC9EtN,mBACE,MAAO,qBA+LTpO,4BAA4Bo0V,EAAc5jU,GAExC,MAAMswJ,EAAczgL,KAAKs1V,mBAAmBvB,GAC5C,OAAOtzK,GAAe,CACpBA,YAAAA,EACAuzC,eAAgBh0N,KAAKi1V,sBAAsBlB,GAC3CrvB,iBAAkB1kU,KAAKy2V,wBAAwB1C,GAC/CA,aAAAA,EACA5jU,MAAAA,GAGJxwB,4BAA4BuxO,EAAU/gN,GACpC,MAAM6jM,EAAiBh0N,KAAKipT,WAAajpT,KAAKi1V,sBAAsB9kU,GAASnwB,KAAK4rE,MAAMiB,QAAQqkK,EAASvmO,IACzG,MAAO,CACLqpN,eAAAA,GAOJr0N,iBAAiBwwB,GACf,MAAMhkB,EAAS+N,MAAMugQ,iBAAiBtqP,GACpCpwB,EAAKC,KACP,GAAID,EAAGs/W,eAAevgX,OAAQ,CAC5BiB,EAAGwtB,QAAQxtB,EAAGusV,mBAAqB,UAAW,CAC5CpoB,aAAcnkU,EAAGs/W,eACjB/D,kBAAmBv7W,EAAGs7W,oBACtBlrV,MAAAA,EAEAswJ,YAAa1gL,EAAGs/W,eAChB36C,iBAAkB3kU,EAAGs7W,sBAGzB,OAAOlvW,EAMTxM,eAAewwB,GACbjW,MAAMmgY,eAAelqX,GACrB,MAAMpwB,EAAKC,KACX,GAAID,EAAGs/W,eAAevgX,OAAQ,CAC5BiB,EAAGwtB,QAAQxtB,EAAGusV,mBAAqB,QAAS,CAC1CpoB,aAAcnkU,EAAGs/W,eACjB/D,kBAAmBv7W,EAAGs7W,oBACtBlrV,MAAAA,EAEAswJ,YAAa1gL,EAAGs/W,eAChB36C,iBAAkB3kU,EAAGs7W,uBAQ3B74S,qBAwBF,IAAI83U,GAA2BptX,GAAU,MAAMotX,UAAiCptX,GAAU7R,IACxFtN,mBACE,MAAO,0BAGTvO,0BACE,MAAO,CAcL+6Y,sBAAuB,UAoBvB95B,eAAgB,SAchB+5B,mBAAoB,GAwBpBh6B,oBAAqB,UAErBi6B,kBAAmB,GA0BnBzzF,YAAa,QA+Cb0zF,uBAAwB,KAMxBC,wBAAyB,KAuBzBxP,eAAgB,KAqBhBx0B,oBAAqB,KA2ErBikC,cAAe,KAMfC,qBAAsB,KAOtBC,kBAAmB,OAOnBC,kBAAmB,KAUnBC,0BAA2BhyD,GAU3BiyD,2BAA4B/xD,GAgB5B17B,gBAAiB,KAsBjB7F,kBAAmB,KAQnBM,yBAA0B,KAO1BD,uBAAwB,OAYxBkzF,cAAe,KACfC,yBAA0B,IAU1BC,iBAAkB,GAClBC,oBAAqB,KACrB5L,kBAAmB,YACnBC,gBAAiB,QAKrB/vY,kBAAkBqnT,GAEhBhnT,KAAKq7Y,oBAAsBr0F,EAE3B,OAAOhnT,KAAKq7Y,oBAAoBxuY,KAElClN,0BAA0BqnT,GACxB,OAAOhnT,KAAKs7Y,eAAet0F,GAE7BrnT,0BAA0BqnT,EAAau0F,GACrC,MAAMx7Y,EAAKC,KACX,GAAIu7Y,EAAgB,CAClBx7Y,EAAG02C,QAAQmI,UAAU98C,OAAO,iBAAiBy5Y,EAAe1uY,QAE9D9M,EAAG02C,QAAQmI,UAAU7/B,IAAI,iBAAiBioS,EAAYn6S,QACtD,IAAK9M,EAAGyd,cAAe,CACrBzd,EAAGy7W,wBACHz7W,EAAGwtB,QAAQ,gBAGf5tB,8BAA8BqY,GAC5BtF,EAAcuC,UAAU,YAAa,QAAS,wCAC9CjV,KAAK06Y,uBAAyB1iY,EAEhCrY,6BAA6BqY,GAC3B,IAAKhY,KAAKwd,cAAe,CACvBxd,KAAKw7W,yBAMT77W,eAAeJ,GACb,IAAIowD,EACJ,IAAKA,EAASpwD,KAAW,MAAQowD,SAAgB,GAAKA,EAAO8e,QAAS,CACpElvE,EAAQA,EAAMynT,aAAehnT,KAAKq7Y,oBAEpC,UAAW97Y,IAAU,SAAU,CAC7BA,EAAQ,CACNsN,KAAMtN,GAGV,OAAOA,EAUTI,sBAAsBqnT,GACpB,MAAMjnT,EAAKC,KACX,IAAKD,EAAGqrV,aAAc,CACpB,OAAO,KAET,MAAMxgC,kBACFA,EAAiB5wQ,WACjBA,GACEj6C,GACJ8M,KACEA,GACEm6S,EACN,IAAKjnT,EAAGy7Y,QAAS,CACfz7Y,EAAGy7Y,QAAU,GAEf,OAAQ3uY,GAEN,IAAK,QACH,CACE,IAAK9M,EAAGy7Y,QAAQC,gBAAiB,CAC/B17Y,EAAGy7Y,QAAQC,gBAAkB,IAAI17Y,EAAGk7Y,2BAA2BjqW,GAAa55B,OAAO,CACjFm0S,UAAWxrT,EACX6qT,kBAAAA,EACA68B,uBAAwBztS,EAAW0hW,2BACnCh0D,4BAA6B1tS,GAC5BgtQ,IAEL,OAAOjnT,EAAGy7Y,QAAQC,gBAGtB,IAAK,OACH,CACE,IAAK17Y,EAAGy7Y,QAAQG,eAAgB,CAC9B57Y,EAAGy7Y,QAAQG,eAAiB,IAAI57Y,EAAGi7Y,0BAA0BhqW,GAAa55B,OAAO,CAC/Em0S,UAAWxrT,EACX6qT,kBAAAA,EACA68B,uBAAwBztS,EAAW4hW,0BACnCl0D,4BAA6B1tS,GAC5BgtQ,IAEL,OAAOjnT,EAAGy7Y,QAAQG,eAEtB,QACE,OAAO,MAWbnuF,sBACE,IAAIulF,EACJ,QAASA,EAAuB/yY,KAAKwkP,kBAAoB,MAAQuuJ,SAA8B,OAAS,EAAIA,EAAqBvlF,kBAAoBxtT,KAAKwrT,iBAQ5JsS,0BACE,IAAIxQ,EACJ,QAASA,EAAwBttT,KAAKwtT,mBAAqB,MAAQF,SAA+B,OAAS,EAAIA,EAAsBlC,cAAgB,KAMvJzrT,kBAAkBw6S,EAAUlsR,GAC1B,OAAOA,EAMTtuB,yBAAyBq0N,GACvBh0N,KAAKmoN,mBAAmB6vI,yBAAyBhkI,GAOnDr0N,aAAa8gL,GACX,MAAMk8I,EAAY38T,KAAKq1S,WAAWmqB,qBAAqB/+I,GACvDk8I,EAAU39T,SAAQg1N,GAAkBh0N,KAAKg4V,yBAAyBhkI,KAIpEr0N,kBAAkBq0N,GAChB,IAAI6nL,EACJ,OAAQA,EAAwB7nL,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAem3K,kBAAoB,MAAQ0Q,SAA+B,EAAIA,EAAwB77Y,KAAKmrY,eAI7MxrY,aAAaq0N,GACX,IAAI8nL,EACJ,OAAQA,EAAwB9nL,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAe6/I,aAAe,MAAQioC,SAA+B,EAAIA,EAAwB97Y,KAAK6zW,UAKxMl0W,kBAAkBq0N,GAChB,IAAI+nL,EACJ,OAAQA,EAAwB/nL,EAAexkD,aAAe,MAAQusO,SAA+B,EAAIA,EAAwB/7Y,KAAKorV,aAAeprV,KAAKwvK,UAAYxvK,KAAKg8Y,iBAAiBhoL,GAE9Lr0N,iBAAiBq0N,GACf,IAAIioL,EACJ,OAAQA,EAAwBjoL,EAAeo3F,eAAiB,MAAQ6wF,SAA+B,EAAIA,EAAwBj8Y,KAAK89T,oBAK1In+T,yBAAyBq0N,GACvB,IAAIkoL,EACJ,MAAMvtO,EAAM3uK,KAAK04N,WAAW1E,GAC5B,OAAQkoL,EAAwBvtO,IAAQ,MAAQA,SAAa,OAAS,EAAIA,EAAIozF,sBAAwB,MAAQm6I,SAA+B,EAAIA,EAAwBl8Y,KAAKm8Y,kBAAkBnoL,GAIlMr0N,0BAA0Bq0N,EAAgBooL,EAAoB,MAC5D,MAAMjR,EAAiBnrY,KAAKq8Y,kBAAkBroL,EAAgBooL,GAC5D5sO,EAAYxvK,KAAKs8Y,yBAAyBtoL,EAAgBooL,GAC5D,MAAO,CACLvoC,UAAW7zW,KAAKu8Y,aAAavoL,EAAgBooL,GAC7C12I,cAAetxP,KAAKC,IAAIm7J,EAAY27N,EAAiB,EAAG,GACxD37N,UAAAA,EACA27N,eAAAA,GAGJxrY,cAAc8gL,EAAauzC,GACzB,OAAOvzC,EAAYkrN,YAAc33K,EAAe23K,YAAc3rY,KAAK2rY,WAErEhsY,cAAc8gL,EAAauzC,GACzB,IAAIwoL,EAAoBC,EACxB,OAAOh8N,EAAYgoI,cAAgB+zF,EAAqB/7N,EAAYtwJ,SAAW,MAAQqsX,SAA4B,OAAS,EAAIA,EAAmB/zF,eAAiBg0F,EAAsBh8N,EAAYnuK,UAAY,MAAQmqY,SAA6B,OAAS,EAAIA,EAAoBh0F,aAAez0F,EAAey0F,YAAczoT,KAAKyoT,WAiB3U9oT,mBAAmB8gL,EAAauzC,EAAgB0oL,EAAiB,CAC/DnvV,SAAU,OAGV,MAAMxtD,EAAKC,KAGTgzN,EAAajzN,EAAGooN,mBAAmBsyJ,sBAAsBh6L,EAAauzC,EAAgB0oL,IACtF93E,QACEA,GACEnkJ,EAEJkgJ,GAAelgJ,EAAYtgK,KAAK+gW,gBAAkBzgM,EAAYkgJ,YAE9D+D,EAAmBE,GAAWnkJ,EAAY+7I,YAAYzrS,MAAKlrB,GAAKA,EAAE25S,aAAexrF,EAAe59I,cAEhGyoR,EAAe,CACbngT,UAAW,sBACXhoB,QAAS,CACPimX,eAAgB,YAGtB,GAAI3pL,EAAY,CACd,IAAI4pL,EACJ5pL,EAAWhjE,SAAW,IACtB,IAAIsyE,EAAY7hD,EAAY8wJ,YAC5B,GAAIv+G,EAAWk+H,kBAAmB,CAChC,GAAI5uH,IAAc,KAAMA,EAAY,WAAW,GAAIA,IAAc,QAASA,EAAY,MAExF,GAAItP,EAAWm+H,gBAAiB,CAC9B,GAAI7uH,IAAc,KAAMA,EAAY,aAAa,GAAIA,IAAc,MAAOA,EAAY,MAMxF,MAEEu6K,EAAU38Y,QAAQugL,EAAYh9F,wBAA0BihP,IAAqB,MAAQA,SAA0B,OAAS,EAAIA,EAAiBjhP,wBAC7Iq5T,EAAa,CACXn9Y,CAACq0N,EAAel+M,KAAMk+M,EAAel+M,IACrCnW,CAACI,EAAGsrY,iBAAkB5qN,EAAYw7I,cAAgBx7I,EAAY92G,eAC9DhqE,CAACI,EAAGurY,UAAWuR,EACfl9Y,CAACI,EAAGwrY,eAAgB9qN,EAAYp8F,aAChC1kF,CAACI,EAAGyrY,oBAAqBx4K,EAAWm+H,gBACpCxxV,CAACI,EAAG0rY,sBAAuBz4K,EAAWk+H,kBACtC6rD,kBAAmB/pL,EAAWgqL,aAC9BC,gBAAiBjqL,EAAWkqL,WAC5BC,eAAgB18N,EAAYnjG,WAC5BqlR,QAAS5iW,EAAG01C,KAEd2nW,EAAoB,CAClBz9Y,CAAC,GAAGI,EAAGo5V,mBAAoBnlI,EAAerkJ,SAC1C8gH,aAAchQ,EAAY5nG,WAAa6rP,IAAqB,MAAQA,SAA0B,OAAS,EAAIA,EAAiB7rP,UAC5HwkU,oBAAqBrpL,EAAehgJ,SACpCspU,sBAAuBtpL,EAAej+I,UAExCwnU,EAAU98N,EAAY42J,oBAAsB,IAAI75R,GAAiBijI,EAAYylJ,YAAY32T,QACzFiuY,EAAiB/8N,EAAY42J,oBAAsB52J,EAAYylJ,YAAY32T,QAAU,IAAIiuC,GAC3Fw1K,EAAWyqL,aAAe,GAE1BzqL,EAAW0qL,OAAS,KAEpB,GAAI94E,EAAS,CACX,MAAMlsI,EAAWgsI,GAAoB3kU,EAAG4/W,qBAAqBj7C,GAC7D1zR,GAAa55B,OAAO0lY,EAAY,CAC9Bn9Y,CAACI,EAAGo5V,UAAW,EACfwkD,cAAeh9E,EACfi9E,qBAAsB5qL,EAAW9rN,MAAQnH,EAAGq7Y,iBAC5Cz7Y,CAACI,EAAG2rY,eAAgBjrN,EAAY6wJ,cAAgB,MAChD3xU,CAAC,yBAAyB2iO,KAAcpiO,QAAQH,EAAGgyH,SAAS8rR,cAAgBp9N,EAAY5nG,UACxFl5E,CAACI,EAAG+9Y,kBAAmBplN,EACvB/4L,CAACI,EAAGg+Y,yBAA0Bh+Y,EAAGg+Y,0BAA4BrlN,GAAY34L,EAAGmsX,gBAAgBzrM,GAC5Fu9N,cAAev9N,EAAYs/I,YAC3Bk+E,eAAgBx9N,EAAYw7I,aAC5B42C,aAAcpyL,EAAYy9N,WAE5BlrL,EAAW0sF,QAAUj/H,EAAY91K,GACjC,MAAMghY,EAAa5rY,EAAGo+Y,cAAc19N,EAAauzC,GAC/Cy0F,EAAa1oT,EAAGq+Y,cAAc39N,EAAauzC,GAC3CqqL,EAAet+Y,EAAGm7Y,eAAiBn7Y,EAAG42W,qBAAuBv0W,WAAW0F,QAAQw2Y,eAAiB,KACnGttW,GAAa55B,OAAOgmY,EAAmB,CACrCz9Y,CAAC,GAAGI,EAAGo5V,iBAAkB,EACzBolD,mBAAoB59E,IAEtB,GAAI09E,EAAc,CAChB,MAAMnuY,EAAQ8iN,EAAWrkD,IAAMqkD,EAAWrkD,IAAIz+J,OAAS8iN,EAAW79K,IAAMp1C,EAAGk3C,WAAal3C,EAAG07U,SACzF+iE,EAAUtuY,EAAQ,GAAK,IACzB8iN,EAAWyqL,aAAe,oBAAoBe,OAC9Cz+Y,EAAGmjE,SAAW9uD,KAAKC,IAAItU,EAAGmjE,UAAY,EAAGs7U,GAIzC,IAAKz+Y,EAAG0+Y,yBAA0B,CAChC1+Y,EAAG0+Y,yBAA2B39V,GAAY3xB,GAAG,CAC3CsnB,QAAS12C,EAAGk/V,iBACZ1/S,SAAUx/C,EAAGwrV,cAEb3+T,KAAM,KACNqkH,aAAc,IAAMlxI,EAAGgd,WAAW,CAChC/E,GAAI,uBACJ8E,MAAO/c,EAAGmjE,SACVx0C,kBAAmB,OAGrB5B,QAAS,CACP5F,IAAK,uBACLpK,MAAO/c,EAAGo7Y,yBAA2Bp7Y,EAAGmjE,UAE1C5mD,QAASvc,KAIfizN,EAAWy1F,WAAaA,EACxBz1F,EAAW24K,WAAaA,EAExB34K,EAAW0xG,iBAAmB1xG,EAAWonF,WAAasqB,EAGxD1xG,EAAW84E,WAAa96P,GAAa55B,OAAOomY,EAAgBJ,GAC5DpqL,EAAWl9M,IAAMk7B,GAAa55B,OAAOmmY,EAAST,GAC9C9pL,EAAW1qE,QAAU,IAAI9qG,GAAaijI,EAAY/uK,IAAI3R,EAAG2+Y,uBAAyBj+N,EAAYn4B,SAE9F,GAAIm4B,EAAY42J,oBAAqB,CACnCrkH,EAAW3xN,MAAQ,GACnB2xN,EAAWyqL,cAAgBh9N,EAAYp/K,OAAS,OAG7C,CACH2xN,EAAW3xN,MAAQo/K,EAAYp/K,OAAS,GAG1C2xN,EAAWmnF,SAAWnnF,EAAWgB,eAAiBA,EAClDhB,EAAWwsF,WAAaxsF,EAAW4a,MACnC,GAAIg3F,EAAS,CACX,IAAI+5E,EAAe,KACjBC,EAAuB,KACvBr/Y,EACF,GAAIQ,EAAG66Y,cAAe,CAEpB,MAAMiE,EAAgB9+Y,EAAG66Y,cAAc/zY,KAAK9G,EAAG86Y,sBAAwB96Y,EAAI,CACzE0gL,YAAAA,EACAuzC,eAAAA,EACA0wG,iBAAkB1xG,EAAW0xG,iBAC7B1xG,WAAAA,IAGF,UAAWA,EAAWl9M,MAAQ,SAAU,CACtCk9M,EAAWl9M,IAAM,IAAI0nC,GAAaw1K,EAAWl9M,KAE/C,UAAWk9M,EAAW84E,aAAe,SAAU,CAC7C94E,EAAW84E,WAAa,IAAItuP,GAAaw1K,EAAW84E,YAGtD,UAAW94E,EAAW1qE,UAAY,SAAU,CAC1C0qE,EAAW1qE,QAAU,IAAI9qG,GAAaw1K,EAAW1qE,SAEnD,GAAIvoJ,EAAGg7Y,kBAAmB,CACxBx7Y,EAAQQ,EAAGg7Y,kBAAkB8D,OACxB,CACLt/Y,EAAQs/Y,QAEL,GAAI9+Y,EAAGg7Y,kBAAmB,CAE/Bx7Y,EAAQQ,EAAGg7Y,kBAAkBt6N,QACxB,GAAI1gL,EAAG+6Y,kBAAmB,CAE/Bv7Y,EAAQ6K,EAAaY,WAAWy1K,EAAY1gL,EAAG+6Y,oBAAsB,IAEvE,IAAK/6Y,EAAGg7Y,mBAAqBxzY,MAAMC,QAAQjI,GAAQ,CACjD,IAAIu/Y,EACJjgD,EAAax3S,SAAW,GAExB,GAAIs5Q,GAAe5gU,EAAGygX,sBAAwB,WAAajhX,GAAS,MAAQA,IAAU,GAAI,CACxFs/V,EAAax3S,SAAS8mC,QAAQywT,EAAuB,CACnDn+X,IAAK,QACL4mC,SAAU,KAGd,IAAKy3V,EAAsB9rL,EAAW1qE,WAAa,MAAQw2P,SAA6B,GAAKA,EAAoBhgZ,OAAQ,CACvH+/V,EAAax3S,SAAS8mC,QAAQ,CAC5B1tE,IAAK,IACLi+B,UAAWs0K,EAAW1qE,UAI1B,GAAI/gJ,MAAMC,QAAQjI,GAAQ,EACvBq/Y,GAAwB//C,GAAcx3S,SAAS7oD,QAAQe,QAGrD,GAAI6K,EAAa20Y,OAAOx/Y,GAAQ,CACnC,GAAIs/V,EAAax3S,SAASvoD,OAAQ,CAChC6/Y,EAAe,CACbl+X,IAAK,OACLP,MAAO,oBACPyoC,KAAMppD,OAEH,CACLs/V,EAAax3S,SAAW,KACxBw3S,EAAal2S,KAAOppD,QAInB,UAAWA,IAAU,iBAAmBA,IAAU,SAAU,CAC/Do/Y,EAAep/Y,OAGZ,GAAIA,GAAS,KAAM,CACtBo/Y,EAAez1Y,OAAO3J,GAGxB,GAAIo/Y,GAAgB,KAAM,EAEvBC,GAAwB//C,GAAcx3S,SAAS7oD,KAAKmgZ,GACrD3rL,EAAWl9M,IAAIiJ,IAAI,iBAErB,GAAI8/U,EAAal2S,MAAQ,MAAQk2S,EAAax3S,SAASvoD,OAAQ,CAC7Dk0N,EAAW3rK,SAAS7oD,KAAKqgW,QAEtB,CACLA,EAAal2S,KAAOppD,EACpByzN,EAAW3rK,SAAS7oD,KAAKqgW,IAG7B,MAAM8sC,WACJA,EAAUljF,WACVA,GACEz1F,EAEJA,EAAW84E,WAAW,eAAe6/F,KAAgBA,EAErD,GAAI1zV,GAAUu8K,aAAai0F,GAAa,CACtCz1F,EAAW84E,WAAW,eAAe2c,KAAgBA,OAChD,GAAIA,EAAY,CACrB,MAAMu2F,EAAYrT,EAAa,QAAU,mBACzC34K,EAAW3xN,MAAQ,GAAG29Y,KAAav2F,KAAgBz1F,EAAW3xN,MAC9D2xN,EAAW84E,WAAW,sBAAwB,EAGhD,GAAI94E,EAAW3xN,OAASs/T,GAAek+B,EAAc,CACnDA,EAAax9V,MAAQ2xN,EAAW3xN,aACzB2xN,EAAW3xN,MAGpB2xN,EAAWl9M,IAAI,yBAA2B8mY,EAAuB5pL,EAAW1qE,WAAa,MAAQs0P,SAA8B,OAAS,EAAIA,EAAqB99Y,OAEjKk0N,EAAW6rI,aAAeA,EAC1B7rI,EAAW69J,gBAAkB,GAE7B9wX,EAAGk/Y,qBAAqBjsL,GAE1B,OAAOA,EAQTrzN,qBAAqBknP,IAGrBlnP,0BAA0B8E,GACxB,OAAOA,IAAS,KAAO,UAAYA,EAErC9E,0BAA0B8E,EAAM63F,GAC9B,MAAM19C,UACJA,GACE5+C,KAAKy2C,QACT,GAAI6lD,EAAK,CACP19C,EAAU98C,OAAO,aAAaw6F,KAEhC,GAAI73F,EAAM,CACRm6C,EAAU7/B,IAAI,aAAata,KAE3B,GAAI/E,EAAc4D,UAAW,CAC3Bs7C,EAAU7/B,IAAI,iCAQpBpf,wBAAwBu/Y,GACtB,IAAIC,EACJ,MAAMp/Y,EAAKC,MACVm/Y,EAAwBp/Y,EAAG0+Y,4BAA8B,MAAQU,SAA+B,OAAS,EAAIA,EAAsBt4Y,KAAK9G,GACzIA,EAAG0+Y,yBAA2B,KAC9B1+Y,EAAG42W,oBAAsBuoC,EACzBn/Y,EAAGm7Y,cAAgB,KACnBn7Y,EAAG+4L,UAELn5L,uBACE,MAAMI,EAAKC,KACXD,EAAG0+Y,2BACH1+Y,EAAGm7Y,cAAgB,MAEnBn7Y,EAAG42W,oBAAsB,MAEzB,GAAIj3W,EAAc4D,UAAW,CAC3BvD,EAAGgd,YAAW,IAAMhd,EAAG02C,QAAQmI,UAAU98C,OAAO,gCAAgC,MAWpFnC,uBAAuB8gL,GACrB,MAAM1gL,EAAKC,KACTmkD,EAAOpkD,EAAGygX,oBACZ,GAAIr8T,IAAS,UAAW,CACtB,MAAM1N,EAAU12C,EAAGq/Y,0BAA4Br/Y,EAAGq/Y,wBAA0BnnW,GAAU72C,cAAc,CAClGs9C,UAAW,8CACX2I,SAAU,CAAC,CACT3I,UAAW,0BACX2I,SAAU,CAAC,CACT3I,UAAW,0BAGfpsC,OAAQvS,EAAGk/V,oBAGbxoT,EAAQgS,cAAgB,KACxBhS,EAAQkd,kBAAkBA,kBAAkBjC,UAAYtnD,EAAaY,WAAWy1K,EAAYh8K,MAC5F,OAAOgyC,EAAQuM,YAEjB,GAAImB,IAAS,WAAY,CACvB,OAAO/vC,KAAKC,IAAIosK,EAAYh8K,KAAK3F,OAASiB,EAAGy6Y,mBAAoBz6Y,EAAG06Y,mBAEtE,GAAIt2V,IAAS,OAAQ,CACnB,OAAO/vC,KAAKC,IAAIosK,EAAY0vM,eAAgBpwX,EAAG06Y,mBAEjD,OAAO,EAET96Y,0BAA0BwkD,GACxBnkD,KAAKy2C,QAAQmI,UAAUuF,IAAS,UAAY,MAAQ,UAAU,2BAC9D,IAAKnkD,KAAKwd,cAAe,CACvBxd,KAAKw7W,yBAGT77W,4BAA4By7C,GAC1Bp7C,KAAKy2C,QAAQmI,UAAU8X,OAAO,8CAA+Ctb,IAAa,UAE5Fz7C,uBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAKw7W,yBAGT77W,2BACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAKw7W,yBAOTh5S,qBAYF,IAAI68U,GAAmBnyX,GAAU,MAAMmyX,UAAwB15D,GAAgBz4T,GAAU7R,KACvFtN,mBACE,MAAO,kBAeT44U,2BACE,MAAO,CACLrxC,cAAe,CACbkjB,SAAU,aAEZnjB,WAAY,CACVmjB,SAAU,SACVnrS,UAAW,CACTiyX,cAAe,4BACfv/S,gBAAiB,6BACjBw/S,YAAa,qBACb1rT,OAAQ,gBACRiP,UAAW,mBACX08S,SAAU,kBACVrkN,WAAY,4BAGhBg6G,gBAAiB,CACfqjB,SAAU,cACVnrS,UAAW,CACT0yE,gBAAiB,qBAEjBw/S,YAAa,0BACb1rT,OAAQ,qBACRiP,UAAW,wBACXxc,aAAc,CACZtuE,GAAI,2BAGJ6U,MAAO,OAIbuoR,gBAAiB,CACfojB,SAAU,gBAEZjjB,qBAAsB,GACtB2iC,eAAgB,GAChBC,uBAAwB,IAG5B34U,0BACE,MAAO,CAOLosE,MAAO,KAMP6zU,eAAgB,YAMhBC,aAAc,UAMdC,uBAAwB,MAQxBC,iBAAkB,KAYlB1jJ,YAAa,MAKjBv8P,cAAc4rG,EAASu6O,GACrB5rU,MAAMk7W,cAAc7pR,EAASu6O,GAC7B9lV,KAAKupE,gBAAgB,mBACrBgiC,EAAQp8E,GAAG,CACT1qB,KAAM,kBACNq0L,QAAS,mBACTx8K,QAAStc,OAKbL,kBAAiBwiT,gBACfA,IAEA,MAAMpiT,EAAKC,KAEX,GAAID,EAAG6qD,UAAW,CAChB,GAAIu3P,EAAiB,CACnB,GAAIpiT,EAAGkpT,WAAY,CACjBlpT,EAAGkzY,2BAA6B,MAChClzY,EAAGy7W,yBAGP,GAAIz7W,EAAG8/Y,uBAAwB,CAC7B9/Y,EAAG+/Y,WAAW//Y,EAAG8/Y,wBACjB9/Y,EAAG8/Y,uBAAyB,KAE9B,GAAI9/Y,EAAGkzY,2BAA4B,CACjClzY,EAAGy7W,sBAAsB,OAAQr5D,GACjCpiT,EAAGkzY,2BAA6B,WAI/B,CACHlzY,EAAG22R,YAAY,UAAW32R,EAAI,CAAC,QAKnCJ,kBAAkBu8P,GAChB,MAAMn8P,EAAKC,KACX,GAAIk8P,IAAgBA,EAAY41D,cAAe,CAG7C51D,EAAcn8P,EAAG6/Y,iBAAiB/uR,IAAI,CACpC06L,UAAWxrT,GACVm8P,GAILn8P,EAAGwmV,aAAerqF,EAClBn8P,EAAGggZ,gBAAgB7jJ,GAIrBtwL,YAEE,IAAK5rE,KAAKi7L,QAAUj7L,KAAKipT,WAAY,CAEnCjpT,KAAKi7L,OAAS,IAAIr0F,GAAM,CACtB1sE,KAAM,CAAC,CAELvvB,GAAM,sBAENmL,IAAK,6BAIX,OAAOoE,MAAM0xD,MAEfA,UAAUA,GACR1xD,MAAM0xD,MAAQA,EAGhBjsE,yBAAyBgvK,GAAKtsE,SAC5BA,EAAQpwB,QACRA,IAEA,MAAM12D,EAAO1c,UACbmB,KAAKq4X,mBAAkB,KAIrBr4X,KAAKmoN,mBAAmBp1L,WAAasvE,IAAapwB,EAAQtqE,MAAKuoB,GAAKA,EAAE8jD,WACtE95D,MAAM85Q,yBAAyBrlH,KAAQpzJ,GACvCvb,KAAKmoN,mBAAmBp1L,UAAY,SAClCsvE,GAEN1iG,WAAWwwB,GACTjW,MAAM8lY,WAAW7vX,GACjB,GAAInwB,KAAK6oI,UAAW,CAClB7oI,KAAKigZ,oBAAoB9vX,EAAM8hD,UAGnCtyE,qBACEZ,OAAQ6sE,EAAK4G,OACbA,EAAMD,QACNA,IAGA,IAAI2tU,EAAc,EAClB,GAAI,aAAc3tU,EAAS,CACzB2tU,IAEF,GAAI,aAAc3tU,EAAS,CACzB2tU,IAEF,GAAIA,IAAgBjiZ,OAAOD,KAAKu0E,GAASzzE,OAAQ,CAC/Cob,MAAMimY,uBAAuBthZ,YAKjCc,oBAAoB21S,GAElB,GAAIA,GAAiBt1S,KAAKorV,aAAc,CACtC91C,EAAc8qG,UAAYpgZ,KAAK2K,GAC/B3K,KAAK4rE,MAAQ0pO,GAGjBugE,uBACE,OAAO71W,KAAK4rE,QAAU5rE,KAAKs1S,cAI7B31S,gBAAgB+G,GACd1G,KAAKmoN,mBAAmBk4L,sBAAwBrgZ,KAAKmoN,mBAAmBk4L,qBAAqB35Y,GAS/F/G,0BAA0BwwB,GACxB,GAAInwB,KAAKk2V,uBAAwB,CAC/B,OAAOl2V,KAAKo/V,2BAA2BjvU,IAQ3CxwB,2BAA2B+G,GAGzB,IAAK1G,KAAK6oI,YAAc7oI,KAAKiqV,OAASvjV,EAAOo+T,UAAY9kU,KAAKm1S,gBAAgBmrG,qBAAsB,CAClG,OAEFtgZ,KAAKmoN,mBAAmB8lK,mBAAmBvnX,GAO7C/G,eAAc4yE,QACZA,IAEA,IAAIguU,EAAqB,IAAIhuU,EAAQsC,SAAUtC,EAAQiB,UAAU3pE,KAAI42K,GAAezgL,KAAKq1S,WAAWmqB,qBAAqB/+I,KAEzH8/N,EAAqBh5Y,MAAMsG,UAAU8Y,OAAOloB,MAAM,GAAI8hZ,GAEtD,IAAI1hY,IAAI0hY,GAAoBvhZ,SAAQg1N,GAAkBh0N,KAAKg4V,yBAAyBhkI,KAMtFr0N,oBAAmB4yE,QACjBA,IAEA,MAAM41I,mBACJA,EAAkBojL,cAClBA,GACEvrY,KAIJ,IAAIuyE,EAAQsC,SAAUtC,EAAQiB,UAAUx0E,SAAQyhL,GAAeA,EAAY+7I,YAAYx9T,SAAQ0lU,GAAoBv8G,EAAmBknC,UAAUq1E,EAAkB6mE,EAAe,UAGnL5rY,kBAAiByyD,OACfA,IAEA,GAAIA,IAAW,SAAU,CACvB,MAAMmgB,QACJA,GACEvyE,KAAKq1S,WACT,IAAI9iO,EAAQsC,SAAUtC,EAAQiB,YAAajB,EAAQrvD,SAASlkB,SAAQyhL,GAAezgL,KAAKwgZ,aAAa//N,MAGzG9gL,oBAAmB4yE,QACjBA,IAEAvyE,KAAKygZ,kCAAkCluU,GAEzC5yE,yBAAwB4yE,QACtBA,IAEA,MAAM41I,mBACJA,EAAkBojL,cAClBA,GACEvrY,KACJ,IAAIuyE,EAAQsC,SAAUtC,EAAQiB,UAAUx0E,SAAQ0lU,IAC9Cv8G,EAAmBknC,UAAUq1E,EAAkB6mE,EAAe,SAIlE5rY,uBAAsByyD,OACpBA,IAEA,GAAIA,IAAW,SAAU,CACvBpyD,KAAKygZ,kCAAkCzgZ,KAAKm1S,gBAAgB5iO,UAGhE5yE,kCAAkC4yE,GAChC,MAAMguU,EAAqB,IAAIhuU,EAAQsC,SAAUtC,EAAQiB,YAAajB,EAAQrvD,SAASrZ,KAAI66T,GAAoBA,EAAiBg8E,gBAEhI,IAAI7hY,IAAI0hY,GAAoBvhZ,SAAQg1N,GAAkBh0N,KAAKg4V,yBAAyBhkI,KAEtFr0N,0BAAyBsyE,QACvBA,EAAOyC,YACPA,IAEA,GAAIA,EAAa,CACf,OAEF,MAAM30E,EAAKC,KACX,IAAI47C,EAEJ,IAAK77C,EAAGyd,gBAGRzd,EAAG8/Y,wBAA0B9/Y,EAAGyiX,kBAAoBvwS,EAAQrmE,SAAS7L,EAAGyiX,mBAAoB,CAE1F,GAAIvwS,EAAQrmE,SAAS7L,EAAG8/Y,wBAAyB,CAC/C9/Y,EAAG8/Y,uBAAyB,KAO9B,GAAI1lV,GAAewD,sBAAwB,MAAO,CAKhD,IAAK,IAAI/+D,EAAI,EAAGwwB,EAAI6iD,EAAQnzE,OAAQF,EAAIwwB,IAAMwsB,EAAQh9C,IAAK,CACzD,MAAMw7S,EAAanoO,EAAQrzE,GAC3B,GAAIw7S,EAAWD,UAAYC,EAAWD,SAAS1rO,QAAS,CAEtD,IAAIlpD,EAAOxlB,EAAGosG,QAAQiuM,GAKtB,IAAK70R,GAAQ0sD,EAAQrmE,SAAS2Z,GAAO,CACnCA,EAAOxlB,EAAG6+W,YAAYxkE,GAExB,GAAI70R,IAAS0sD,EAAQrmE,SAAS2Z,GAAO,CACnCq2B,EAASr2B,KAMjB,GAAIq2B,EAAQ,CAIV77C,EAAG+/Y,WAAWlkW,GACd77C,EAAG8/Y,uBAAyBjkW,MAezB,CACH3D,GAAUmrE,sBAAsBrjH,EAAGg/D,gBA6BzC04Q,eAAeA,GACbz3U,KAAKurG,QAAQksO,WAAaA,EAE5BA,iBACE,OAAOz3U,KAAKurG,QAAQksO,WA2BtBW,uBAAuBA,GACrBp4U,KAAKurG,QAAQ6sO,mBAAqBA,EAEpCA,yBACE,OAAOp4U,KAAKurG,QAAQ6sO,mBAStBz4U,yBACEZ,OAAQs2S,EAAU3uS,OAClBA,IAEA,MAAM3G,EAAKC,KACTuW,EAAQ8+R,EAAW96N,WAAW1gD,SAASsT,UACzC,GAAIptC,EAAG4/Y,uBAAwB,CAC7Bj5Y,EAAO3G,EAAG0/Y,gBAAkBlpY,EAAM0sP,MAAMljQ,EAAGotC,WAC3CzmC,EAAO3G,EAAG2/Y,cAAgBnpY,EAAM0sP,MAAMljQ,EAAGqtC,UAW7CztC,0BAA0Bg9T,EAAWppO,GACnC,MAAMw0N,SACFA,EAAQzS,cACRA,GACEt1S,KACJ0uX,EAAe,GACjB/xD,EAAYA,GAAarnB,EAAcrjO,QACvC0qP,EAAU39T,SAAQm7S,IAChBA,EAASlsR,OAAOjvB,SAAQmxB,IACtB,IAAK43R,EAASy2C,iBAAiBruU,IAAUojE,IAAaA,EAAS1sF,KAAK7G,KAAM,CACxEm6S,SAAAA,EACAhqR,MAAAA,IACE,CACF,OAGF,IAAIi0T,EAAYhwU,KAAK+oB,MAAM4qR,EAASo8B,gBAAgBh0T,EAAMgd,YACxDk3S,EAAUjwU,KAAKuqB,KAAKopR,EAASo8B,gBAAgBh0T,EAAMid,UAErD,GAAIg3S,IAAc,EAAG,CACnBA,EAAY,EAEd,GAAIC,KAAa,EAAG,CAClBA,EAAUt8B,EAASq4B,MAAMthV,OAE3B,EAAG,CACD,IAAK4vX,EAAatqC,GAAY,CAC5BsqC,EAAatqC,GAAa,CAACj0T,OACtB,CACLu+V,EAAatqC,GAAW5lV,KAAK2xB,YAEtBi0T,EAAYC,SAG3B,OAAOqqC,EAOTlsT,qBAOF,MAAMm+U,GAAuB,CACzB/gW,MAAO,UACP5C,WAAY,IAEd4jW,GAA0B,CACxB1jW,UAAW,MACX4X,MAAO,OAOX,IAAI+rV,GAAmB3zX,GAAU,MAAM2zX,UAAyB3zX,GAAU7R,IACxEtN,mBACE,MAAO,kBAoBTpO,0BAA0B8gL,EAAa7zK,EAAU+zY,IAC/C,MAAM5gZ,EAAKC,KACT28T,EAAYl8I,EAAYk8I,WAAa,CAACl8I,GACxC,GAAIk8I,EAAU79T,OAAS,EAAG,CACxB,MAAM,IAAI4R,MAAM,mIAElB,IAAKisT,EAAU79T,OAAQ,CACrB8V,QAAQC,KAAK,kFAET9U,EAAG4qX,4BAA4BhuD,EAAU,GAAIl8I,EAAa7zK,GAmBlEjN,yBAAyB+kU,KAAqBnpT,GAC5C,OAAOvb,KAAK2qX,4BAA4BjmD,EAAiBvqB,SAAUuqB,EAAiBv0S,SAAU5U,GAqBhG5b,kCAAkCq0N,EAAgBvzC,EAAa7zK,EAAU+zY,IACvE,MAAM5gZ,EAAKC,KACTg3V,EAAav2K,EAAYtzI,UACzB8pT,EAAWx2K,EAAYrzI,QACvB0zW,EAAiBrgO,EAAY6+I,aAAe03B,EAAaj3V,EAAGgoT,SAAS56Q,WAAa8pT,EAAWl3V,EAAGgoT,SAAS36Q,UAAY,EAEvH,GAAIvuC,UAAUC,OAAS,EAAG,CACxB8N,EAAU/N,UAAU,GAEtB,IAAI6rD,EACJ,GAAI99C,EAAQowC,YAAc,KAAM,CAC9BpwC,EAAQowC,WAAa,GAOvB,GAAI8jW,GAAkBl0Y,EAAQg+W,iBAAmB,MAAO,CACtD,MAAMm2B,EAAuBhhZ,EAAGgoT,SAAS36Q,QAAUrtC,EAAGgoT,SAAS56Q,UAE/D,GAAI2zW,IAAmB,EAAG,CACxB/gZ,EAAGqhV,YAAY,IAAI5yU,KAAKwoV,EAAWzuT,UAAYw4W,EAAuB,GAAI,IAAIvyY,KAAKyoV,EAASjnV,UAAY+wY,EAAuB,QAI5H,CAEH,GAAID,EAAiB,EAAG,CACtB/gZ,EAAGqhV,YAAY,IAAI5yU,KAAKwoV,GAAa,IAAIxoV,KAAKwoV,EAAWzuT,UAAYw4W,QAGlE,CACHhhZ,EAAGqhV,YAAY,IAAI5yU,KAAKyoV,EAAS1uT,UAAYw4W,GAAuB,IAAIvyY,KAAKyoV,MAInF,GAAIl3V,EAAG6rE,MAAM8a,KAAM,CACjB,IAAIs6T,SAEIA,EAAejhZ,EAAG8uO,YAAc,MAAQmyK,SAAsB,OAAS,EAAIA,EAAan6Y,KAAK9G,EAAIi0N,IAG3GtpK,EAAK3qD,EAAG2nW,0BAA0BjnL,EAAauzC,GAC/C,GAAItpK,EAAI,CAEN,IAAKzS,GAAUia,YAAYxH,GAAK,CAC9BA,EAAKA,EAAGD,WAEV,MAAMm4D,EAAW7iH,EAAG2uV,gBAAgBprO,WAGpCvjH,EAAG2uV,gBAAgBvlE,kBAAoB,WAEjCvmK,EAASqpB,eAAevhF,EAAI99C,QAC7B,GAAIk0Y,GAAkBl0Y,EAAQg+W,iBAAmB,MAAO,CAC7Dh2W,QAAQC,KAAK,kHACR,IAAK4rK,EAAYw7I,eAAiBl8T,EAAGs1S,WAAW36M,YAAY+lF,GAAc,CAC/E7rK,QAAQC,KAAK,oEACR,GAAI4rK,EAAY6+I,YAAa,OAE5Bv/T,EAAGkhZ,8BAA8BjtL,EAAgBvzC,EAAa7zK,OAC/D,OAEC7M,EAAGmhZ,uBAAuBltL,EAAgBpnN,IAQpDjN,8BAA8BwhZ,EAAaC,EAAUx0Y,EAAU+zY,IAG7D,OAAO,IAAIpwY,SAAQC,IACjB,MAAMzQ,EAAKC,KAGTqhZ,EAAkBpjZ,OAAOmZ,OAAO,CAC9B4lC,WAAY,IACXpwC,EAASg0Y,IACZh+R,EAAW7iH,EAAG2uV,gBAAgBprO,WAC9B6uB,EAAMpyI,EAAGuhZ,oBAAoBF,EAAUD,GACvCrU,EAAmBlqR,EAASr1D,SAE9B,IAAKu/U,IAAqB36P,EAAK,CAC7B3hI,IACA,OAGF2hI,EAAIhuI,EAAIiQ,KAAKuqB,KAAKwzG,EAAIhuI,GACtBguI,EAAI3tG,EAAIpwB,KAAKuqB,KAAKwzG,EAAI3tG,GACtB,GAAIzkC,EAAG01C,IAAK,CAEV08F,EAAIv3G,WAAW76B,EAAG6qT,kBAAkB+C,UAAYm/E,EAAiB5lY,MAAO,GAI1EirI,EAAIv3G,UAAUkyW,EAAiB3oY,EAAIy+G,EAAS5rE,WAAY81V,EAAiBtoW,EAAIo+E,EAASp+E,GACtF,MAEE+8W,EAAgBr5X,OACdu4J,YAAAA,EACAhqI,QAAAA,EACAmL,cAAAA,MAEA,GAAI6+H,IAAgB2gO,EAAU,CAE5B,MAAM12V,EAAKjU,GAAWmL,EACtBp/B,UAEMg/X,EACN50Y,EAAQswC,WAAajF,GAAUiF,UAAUwN,GACzC99C,EAAQkoD,OAASpK,EAAGoK,QACpBtkD,MAIJgS,EAAWziB,EAAGovB,GAAG,CACfsyX,YAAaF,IAEfC,EAAuB5+R,EAASqpB,eAAekG,EAAKkvQ,MAe1D1hZ,uBAAuBq0N,EAAgBpnN,EAAU+zY,IAC/C,GAAI3gZ,KAAKipT,WAAY,CACnB,OAAOjpT,KAAKmoN,mBAAmB+4L,uBAAuBltL,EAAgBpnN,OACjE,CACL,OAAO5M,KAAK+yP,kBAAkB/+B,EAAgBpnN,IAOlD41D,qBAWF,IAAIk/U,GAAoBx0X,GAAU,MAAMw0X,UAA0Bx0X,GAAU7R,IAC1EtN,mBACE,MAAO,mBAWTpO,kBAAkBq0N,EAAgBvzC,EAAaj5G,EAAQ,KAAM4oR,GAC3D,OAAOpwV,KAAKmoN,mBAAmB+pI,qBAAqBrzV,WAStDc,kBAAkBq0N,EAAgB7mL,EAAWC,GAC3C,OAAOptC,KAAKmoN,mBAAmBw5L,gBAAgB9iZ,WAIjDc,sBAAsB+kU,EAAkBk9E,GACtC,OAAO5hZ,KAAKshZ,oBAAoB58E,EAAiBv0S,MAAOu0S,EAAiBvqB,SAAUynG,GAWrFjiZ,oBAAoB8gL,EAAauzC,EAAgB0oL,EAAiB,MAAO7nI,EAAU,OACjF,OAAO70Q,KAAKmoN,mBAAmBm5L,uBAAuBziZ,WAwBxDc,WAAWwwB,EAAOusX,EAAiB,OACjC,OAAOvsX,EAAMwsS,UAAU9yT,KAAIswS,GAAYn6S,KAAKshZ,oBAAoBnxX,EAAOgqR,EAAUuiG,KAMnFl6U,qBAMF,MAAMjH,GAAiB,CAAC,cAAe,OAAQ,aAAc,aAAc,WAAY,aAiBvF,IAAIsmV,GAAkB30X,GAAU,MAAM20X,UAAwB30X,GAAU7R,IACtEtN,mBACE,MAAO,iBAkCTpO,WACE,OAAOqxC,GAAauqB,eAAerhD,MAAMmvD,WAAYrpE,KAAMu7D,IAO7D57D,WAAWwpE,GACT,IAAI24U,EACJ9hZ,KAAKw8P,iBACL,IAAIulJ,EAAcxmV,GAAetpD,QACjC,IAAKk3D,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM69O,eAAiB,WAAY,QAC7E79O,EAAM69O,YACb+6F,EAAY7pY,OAAO6pY,EAAYt8Y,QAAQ,eAAgB,GAGzD,GAAI0jE,IAAU,MAAQA,SAAe,IAAM24U,EAAwB34U,EAAMmkU,oBAAsB,MAAQwU,SAA+B,GAAKA,EAAsB56Y,MAAO,CACtK66Y,EAAcA,EAAY3jZ,QAAOuS,GAAKA,IAAM,aAE9CqgC,GAAauqB,eAAev7D,KAAMmpE,EAAO44U,GACzC7nY,MAAMovD,WAAWH,GACjBnpE,KAAK68P,cAAc,MAKrBr6L,qBAUF,IAAIw/U,GAAkB90X,GAAU,MAAM80X,UAAwB90X,GAAU7R,IACtEtN,mBACE,MAAO,iBAGTvO,0BACE,MAAO,CAOLyiZ,sBAAuB,MAOvBC,oBAAqB,MAOrB3gI,gBAAiB,OAGrB1/P,2BACE,MAAO,CAMLwvU,iBAAkB,MAOlB8wD,uBAAwB,MAQxBrE,iBAAkB,uBAOlBsE,+BAAgC,MAQhCC,iCAAkC,KAQlCtE,wBAAyB,8BAMzBuE,mBAAoB,IA6CxB3iZ,iBACE,IAAIo5L,EACJ7+K,MAAMuB,kBACLs9K,EAAkB/4L,KAAKH,aAAe,MAAQk5L,SAAyB,OAAS,EAAIA,EAAgB5pK,GAAG,CACtGmyK,SAAU,kBACVhlL,QAAStc,OAKbsiZ,uBAAuBA,GACrB,KAAMA,aAA8Bz2T,IAAa,CAC/Cy2T,EAAqB,IAAIz2T,GAAWy2T,GAEtCtiZ,KAAKuiZ,oBAAsBD,EAE3BA,EAAmBnzX,GAAG,CACpBi2D,OAAQ,IAAI7pE,IAASvb,KAAKurG,QAAQi3S,+BAA+B,8BAA8B,IAAIjnY,KAAUvb,KAAKmZ,cAAgBnZ,KAAKyiZ,8BAA8BlnY,IAAOA,GAE5KgnQ,aAAc,mCACdjmQ,QAAStc,OAGbsiZ,yBACE,OAAOtiZ,KAAKuiZ,oBAEd5iZ,cAAcs8J,EAAWy8B,EAAUqpF,GACjC,OAAO9lH,EAAUn9J,OAAS,EAAI45L,EAAS55L,OAAS,GAAKijR,EAAWjjR,OAAS,EAAI,SAAW45L,EAAS55L,OAAS,EAAI,SAAW,WAAa,QAIxIa,yBAAyB68T,GACvB,OAAO15S,GAAYyoE,OAAOixO,EAAY3yT,KAAIuwS,GAAcA,EAAWjqR,SAOrEkvV,qBACE,OAAOr/W,KAAK0iZ,yBAAyB1iZ,KAAKsiZ,mBAAmBz2Y,QAE/DwzW,mBAAmBpxV,GACjB,IAAI00X,EAEJ,MAAMnmF,EAAc,GACpBvuS,EAASnL,GAAYm7B,QAAQhwB,IAC5B00X,EAAU10X,KAAY,MAAQ00X,SAAiB,OAAS,EAAIA,EAAQ3jZ,SAAQmxB,IAC3E,GAAInwB,KAAK4iZ,kBAAkBzyX,KAAW,MAAO,CAC3CqsS,EAAYh+T,QAAQ2xB,EAAMqsS,iBAI9Bx8T,KAAKsiZ,mBAAmBpqY,OAAO,EAAGlY,KAAKsiZ,mBAAmBt+X,MAAOw4S,GAOnE6+C,0BACE,OAAOr7W,KAAKsiZ,mBAAmBz2Y,OAEjCwvW,wBAAwB7+C,GAEtBx8T,KAAKsiZ,mBAAmBpqY,OAAO,EAAGlY,KAAKsiZ,mBAAmBt+X,MAAOw4S,GAAe,IAQlF78T,gBAAgBwwB,GACd,MAAMmyX,mBACJA,GACEtiZ,KACJ,OAAOE,QAAQoiZ,EAAmBt+X,OAASs+X,EAAmB12Y,SAASukB,EAAMqsS,cAkB/E78T,kBAAkBwwB,IAOlBxwB,qBAAqBy6S,GACnB,OAAOp6S,KAAKsiZ,mBAAmB12Y,SAASwuS,GAS1Cz6S,OAAOkjZ,EAAmBC,EAAoB,OAC5C,GAAID,EAAkBtnF,aAAc,CAClCv7T,KAAKuxV,iBAAiBsxD,EAAmBC,OACpC,CACL9iZ,KAAKwxV,YAAYqxD,EAAmBC,IAUxCnjZ,YAAYwwB,EAAO2yX,EAAoB,OAGrC,IAAK9iZ,KAAKksX,gBAAgB/7V,GAAQ,CAChCnwB,KAAK+iZ,aAAa,CAAC5yX,GAAQ2yX,IAU/BnjZ,iBAAiBy6S,EAAY0oG,EAAoB,MAAO3yX,GAGtD,IAAKnwB,KAAK2/W,qBAAqBvlE,GAAa,CAC1C0oG,EAAoB9iZ,KAAKsiZ,mBAAmBvjY,IAAIq7R,GAAcp6S,KAAKq7W,oBAAsBjhE,GAS7Fz6S,SAASkjZ,GACP,GAAIA,EAAkBtnF,aAAc,CAClCv7T,KAAKgjZ,mBAAmBH,OACnB,CACL7iZ,KAAKijZ,cAAcJ,IAQvBljZ,cAAcwwB,GACZ,GAAInwB,KAAKksX,gBAAgB/7V,GAAQ,CAC/BnwB,KAAKsiZ,mBAAmBxgZ,UAAUquB,EAAMqsS,cAS5C78T,mBAAmBy6S,GACjB,GAAIp6S,KAAK2/W,qBAAqBvlE,GAAa,CACzCp6S,KAAKsiZ,mBAAmBxgZ,OAAOs4S,IASnCz6S,aAAasuB,EAAQ60X,EAAoB,OACvC,GAAIA,EAAmB,CACrB,MAAMtmF,EAAcvuS,EAAOxiB,QAAO,CAAC+wT,EAAarsS,KAC9C,GAAInwB,KAAK4iZ,kBAAkBzyX,KAAW,MAAO,CAC3CqsS,EAAYh+T,QAAQ2xB,EAAMqsS,aAE5B,OAAOA,IACN,IACHx8T,KAAKsiZ,mBAAmBvjY,IAAIy9S,OACvB,CACLx8T,KAAKq/W,eAAiBpxV,GAQ1BtuB,eAAesuB,GACbjuB,KAAKsiZ,mBAAmBxgZ,OAAOmsB,EAAOxiB,QAAO,CAAC+wT,EAAarsS,KACzDqsS,EAAYh+T,QAAQ2xB,EAAMqsS,aAC1B,OAAOA,IACN,KAOL78T,kBAAkB68T,GAChBx8T,KAAKsiZ,mBAAmBvjY,IAAIy9S,GAO9B78T,oBAAoB68T,GAClBx8T,KAAKsiZ,mBAAmBxgZ,OAAO06T,GAMjC78T,sBACEK,KAAKq7W,oBAAsB,GAS7B17W,kCAAiC6kB,MAC/BA,EAAKC,SACLA,EAAQvU,MACRA,IAEA,MAAMnQ,EAAKC,KACTi8J,EAAYl8J,EAAGwiZ,oBAAoB12Y,OACnC6sL,EAAWl0K,EACXu9P,EAAat9P,EAAW,EAAIi0K,EAASzmL,MAAM/B,EAAOuU,EAAWvU,GAAS,GACtEkiD,EAASryD,EAAGmjZ,cAAcjnP,EAAWy8B,EAAUqpF,GACjD,GAAIhiR,EAAGwtB,QAAQ,6BAA8B,CAC3C6kC,OAAAA,EACA6pG,UAAWl8J,EAAG2iZ,yBAAyBzmP,IAAc,GACrDy8B,SAAU34L,EAAG2iZ,yBAAyBhqN,IAAa,GACnDqpF,WAAYhiR,EAAG2iZ,yBAAyB3gI,IAAe,OAClD,MAAO,CACZ,OAAO,MAET,GAAIhiR,EAAGwtB,QAAQ,kCAAmC,CAChD6kC,OAAAA,EACA6pG,UAAAA,EACAy8B,SAAAA,EACAqpF,WAAAA,MACK,MAAO,CACZ,OAAO,OAGXpiR,4BAA2Bk1E,MACzBA,EAAK3xD,QACLA,IAEA,MAAMnjB,EAAKC,KACTi8J,EAAYl8J,EAAGs7W,oBACf3iL,EAAW7jH,GAAS,GACpBktM,EAAa7+P,GAAW,GAC1B,SAASk/V,EAAgB19C,EAAkBv9T,GACzC,MAAMs5K,EAAcikJ,EAAiBv0S,MACrC,GAAIswJ,EAAa,CACf,MAAMs9N,wBACFA,GACEh+Y,EACJ02C,EAAU12C,EAAG8xW,+BAA+BntC,GAC9C3kU,EAAGooN,mBAAmBknC,UAAUq1E,EAAkB3kU,EAAG+9Y,iBAAkB32Y,GACvE42Y,GAA2Bh+Y,EAAG+rX,2BAA2BrrM,GAAazhL,SAAQ0rD,IAC5E,GAAIA,IAAOjU,EAAS,CAClB,MAAM0sW,EAAwBpjZ,EAAG02V,wBAAwB/rS,GACzD3qD,EAAGooN,mBAAmBknC,UAAU8zJ,EAAuBpF,EAAyB52Y,GAChF,GAAIA,EAAQ,CAEVujD,EAAGrpD,MAAMy9I,UAAY,OAErBp0F,EAAGrpD,MAAMy9I,UAAY,GAEvBp0F,EAAG9L,UAAU8X,OAAOqnV,EAAyB52Y,QAKrD46Q,EAAW/iR,SAAQwzE,GAAU4vS,EAAgB5vS,EAAQ,SACrDkmH,EAAS15L,SAAQwzE,GAAU4vS,EAAgB5vS,EAAQ,QACnD,GAAIzyE,EAAGmiZ,qBAAuBniZ,EAAGkiZ,sBAAuB,CACtDliZ,EAAGqjZ,sBAAsBrjZ,EAAGs/W,gBAI9Bt/W,EAAGsjZ,qBAAuBpnP,EAAUpyJ,KAAIuwS,IAAU,CAChDsF,QAAStF,EAAWsF,QACpBF,WAAYpF,EAAWoF,eAEzB,IAAKz/S,EAAGm2B,OAAQ,CACd,MAAMk8B,EAASpyD,KAAKkjZ,cAAcjnP,EAAWy8B,EAAUqpF,GACvDhiR,EAAGwtB,QAAQ,4BAA6B,CACtC6kC,OAAAA,EACA6pG,UAAAA,EACAy8B,SAAAA,EACAqpF,WAAAA,IAEFhiR,EAAGwtB,QAAQ,uBAAwB,CACjC6kC,OAAAA,EACA6pG,UAAWl8J,EAAGs/W,eACd3mL,SAAU34L,EAAG2iZ,yBAAyBhqN,GACtCqpF,WAAYhiR,EAAG2iZ,yBAAyB3gI,MAQ9CpiR,oBAAmByyD,OACjBA,EACA6f,QAASuqP,IAET,MAAMz8T,EAAKC,KACXD,EAAGm2B,QAAUn2B,EAAGqiZ,+BAChB,GAAIhwV,IAAW,SAAU,CACvBryD,EAAGujZ,oBAAoB9mF,QAClB,GAAIpqQ,IAAW,cAAgBryD,EAAGs1S,WAAWovB,cAAe,CACjE1kU,EAAGgiX,2BACE,GAAI3vT,IAAW,WAAaryD,EAAGsjZ,qBAAsB,CAC1D,IAAKtjZ,EAAGsiZ,iCAAkC,CACxCtiZ,EAAGgiX,0BACE,CACL,MAAMnmD,EAAiB77T,EAAGsjZ,qBAAqBx5Y,KAAIgmD,GAAY2sQ,EAAYzrS,MAAKlrB,GAAKA,EAAE65S,UAAY7vP,EAAS6vP,SAAW75S,EAAE25S,aAAe3vP,EAAS2vP,eACjJz/S,EAAGs7W,oBAAsBv4V,GAAYygY,MAAM3nF,IAG/C77T,EAAGm2B,OAAS,MAEdv2B,4BAA2BZ,OACzBA,EAAMqzD,OACNA,EAAM6f,QACNA,IAGA,IAAKlzE,EAAOykZ,0BAA4BpxV,IAAW,YAAc6f,EAAQnzE,OAAQ,CAC/EkB,KAAK+hX,sBAEP7nW,MAAMklV,8BAA8BvgW,WAMtCc,2BAA2BwwB,EAAOszX,GAChC,MAAM1jZ,EAAKC,KAGX,GAAID,EAAG4/W,qBAAqB8jC,GAAgB,CAC1C,GAAI1jZ,EAAGwhR,iBAAmBpxP,EAAM2yB,QAAS,CACvC/iD,EAAGijZ,mBAAmBS,EAAe1jZ,EAAGsxV,iBAAkBlhU,SAEvD,GAAInwB,KAAK4iZ,kBAAkBa,EAActzX,SAAW,MAAO,CAChEpwB,EAAGwxV,iBAAiBkyD,EAAetzX,EAAM2yB,SAAW/iD,EAAGsxV,iBAAkBlhU,IAO7ExwB,iBAAgBwwB,MACdA,EAAKxe,KACLA,IAEA,IAAK3R,KAAKmiZ,uBAAwB,CAChC,MAAM/nG,EAAazoS,IAASA,EAAKklC,WAAauH,QAAQC,aAAer+C,KAAKy2V,wBAAwB9kV,GAAQA,GAC1G,GAAIyoS,EAAY,CACdp6S,KAAK0jZ,2BAA2BvzX,EAAOiqR,OAGpC,CACHp6S,KAAK+hX,wBAIXpiX,0BAA0BJ,GACxB,OAAOS,KAAK2jZ,mBAAmBpkZ,GAEjCI,4BAA4BJ,GAC1B,OAAOS,KAAK2jZ,mBAAmBpkZ,GAEjCI,mBAAmBJ,GACjB,MAAMQ,EAAKC,KACX,GAAIT,EAAO,CACTQ,EAAGo0U,YAAcp0U,EAAGo0U,aAAe,IAAIt1T,IACvC9e,EAAGqjZ,sBAAsBrjZ,EAAGs/W,qBACvB,GAAIt/W,EAAGo0U,YAAa,CACzBp0U,EAAGqjZ,wBAEL,OAAO7jZ,EAGTI,sBAAsBukU,EAAe,IACnC,MAAMnkU,EAAKC,MACTm0U,YACEA,EAAW9+B,WACXA,GACEt1S,EACJ6jZ,EAAsB7jZ,EAAGgyH,SAASugN,aAEpC6B,EAAYn1U,SAAQyhL,IAClB,IAAKyjJ,EAAat4T,SAAS60K,GAAc,CACvCA,EAAYtgK,KAAK+8B,UAAY,MAC7Bi3R,EAAY76T,OAAOmnK,GACnB,GAAI40H,EAAWzpS,SAAS60K,GAAc,CACpCA,EAAY6xJ,aAAatzU,SAAQ82U,GAAO8tE,EAAoBztC,YAAYrgC,EAAK,sBAInF5R,EAAallU,SAAQyhL,IACnB,MAAMojO,EAAS,CAACpjO,GAEhB,MAAOojO,EAAO/kZ,OAAQ,CACpB,MAAM0zE,EAASqxU,EAAOjyY,MACtBuiU,EAAYp1T,IAAIyzD,GAChB,GAAIzyE,EAAGmiZ,oBAAqB,CAC1B1vU,EAAO4uO,aAAapiT,SAAQ8kZ,IAC1BF,EAAoB1mW,UAAU4mW,EAAU,gBACvC3vE,EAAYl2T,IAAI6lY,EAASrjG,UAAYojG,EAAOrlZ,KAAKslZ,EAASrjG,YAG/D,GAAI1gT,EAAGkiZ,sBAAuB,CAC5BzvU,EAAO8uO,aAAatiT,SAAQ+kZ,IAC1BH,EAAoB1mW,UAAU6mW,EAAU,gBACvC5vE,EAAYl2T,IAAI8lY,EAASvjG,YAAcqjG,EAAOrlZ,KAAKulZ,EAASvjG,eAKnE2zB,EAAYn1U,SAAQwzE,GAAUA,EAAOryD,KAAK+8B,UAAY,UAGxDn9C,EAAG02C,QAAQmI,UAAU8X,OAAO,iBAAkBwtQ,EAAaplU,OAAS,GACpEiB,EAAGy7W,wBAEL77W,qBAAqBqzN,GACnB,GAAIhzN,KAAKkiZ,qBAAuBliZ,KAAKiiZ,sBAAuB,CAC1DjvL,EAAWl9M,IAAI,eAAiBk9M,EAAWvyC,YAAYtgK,KAAK+8B,UAE9DhjC,MAAM+kY,qBAAqBjsL,GAE7BrzN,cAAc4rG,EAASjP,GAErBt8F,KAAK+hX,sBACL7nW,MAAMk7W,cAAc7pR,EAASjP,GAG/B38F,YACE,IAAIqkZ,GACHA,EAAwBhkZ,KAAKuiZ,uBAAyB,MAAQyB,SAA+B,OAAS,EAAIA,EAAsBjoY,UACjI7B,MAAM8B,YAMRwmD,qBAOF,MAAM1c,GAAiB9hD,GAAKA,EAAE8hD,iBAC5Bm+V,GAAa,CACXlsP,WAAY,EACZC,UAAW,EACXH,QAAS,EACTC,UAAW,GAEbosP,GAAa,CACX7gS,QAAS,KAEX8gS,GAAgBlmZ,OAAOmR,OAAO,IAKhC,IAAIg1Y,GAAmBl3X,GAAU,MAAMk3X,UAAwBpgV,GAAU92C,GAAU7R,KACjFtN,mBACE,MAAO,kBAGTvO,0BACE,MAAO,CASLK,UAAW,CACToxK,aAAc,KACdwC,eAAgB,KAChBz1K,KAAM,CACJqmZ,MAAO,kBACPpsP,MAAO,kBACPk8O,OAAQ,cACR1nJ,UAAW,cACX50F,QAAS,eACTC,UAAW,iBACXI,OAAQ,cAER8xD,IAAK,QACLs6L,YAAa,eAGjBC,gBAAiB,CACfzsP,UAAW,EACXD,QAAS,EACTG,UAAW,EACXD,WAAY,IAIlBl2I,2BACE,MAAO,CAQLmvJ,SAAU,WAOVwzO,gBAAiB,KAEjBC,kBAAmB,IACnBC,uBAAwB,IACxBC,mBAAoB,IACpB1iY,WAAY,CACVwiY,kBAAmB,IAczB9kZ,UAAUwY,GACR,MAAMpY,EAAKC,KACXD,EAAGk/W,aAAel/W,EAAGk/W,aAAajqW,KAAKjV,GACvCA,EAAG6kZ,YAAc7kZ,EAAGgtB,SAAShtB,EAAG6kZ,YAAa7kZ,EAAG0kZ,kBAAmB1kZ,GACnEma,MAAMsB,UAAUrD,GAElBxY,gBAAgBE,GACd,MAAME,EAAKC,KACXD,EAAGoe,UAAU,kBACb,OAAO,IAAIuyJ,GAAU3wK,EAAGsQ,YAAY6nE,aAAa,CAC/CyjD,SAAU57H,EACVpB,OAAQoB,EAAGurV,uBACXz6K,aAAc9wK,EAAG8wK,aACjBC,aAAc,IAAI/wK,EAAGo5V,gBACrBnoL,SAAUjxK,EAAGixK,SACbmB,iBAAkBpyK,EAAGgtB,SAAShtB,EAAGoyK,iBAAkB,CACjDr1J,MAAO/c,EAAG2kZ,uBACVhlW,UAAWoG,KAEbssH,aAAcryK,EAAGgtB,SAAShtB,EAAGqyK,aAAc,CACzCt1J,MAAO/c,EAAG4kZ,mBACVjlW,UAAWoG,MAEZjmD,IAELF,YACEK,KAAKH,UAAUkc,UACf7B,MAAM8B,YAERrc,aAAa6yE,GAGX,OAAQA,EAAOjD,aAAavvE,MAAM6kZ,UAAY7kZ,KAAK+nT,SAASy2C,iBAAiBhsR,GAE/E7yE,iBAAiBqyH,GACf,IAAIsoJ,EAAiBwqI,EACrB,MAAM/kZ,EAAKC,MACTH,UACEA,GACEE,EACJ0xK,EAAkB5xK,EAAUwQ,YAAYqhK,mBAAmB1/C,GAG7D,KAAMsoJ,EAAkBv6Q,EAAGm/N,eAAiB,MAAQo7C,SAAyB,OAAS,EAAIA,EAAgBhzE,aAAe,KAAOw9M,EAAmB/kZ,EAAGm/N,eAAiB,MAAQ4lL,SAA0B,OAAS,EAAIA,EAAiB/tM,UAAYh3M,EAAGykP,iBAAmBxyH,EAASrzH,OAAOslD,QAAQpkD,EAAUixK,eAAiB9+C,EAAS/yH,MAAQ,QAAS,CACpV,MAAM8lZ,EAAkBhlZ,EAAGilZ,4BAC3B,GAAID,EAAiB,CACnBhlZ,EAAG+/Y,WAAWiF,EAAiB,CAC7BE,QAASjzR,IAEX,OAAO,WAEJ,CAGL,IAAKjyH,EAAGwkZ,gBAAgB9yO,KAAqBz/C,EAASrzH,OAAO2D,QAAQvC,EAAGF,UAAUixK,cAAe,CAC/F,IAAIo0O,EACJ,OAAQA,EAAwBhrY,MAAMugQ,oBAAsB,MAAQyqI,SAA+B,OAAS,EAAIA,EAAsBr+Y,KAAK7G,KAAMgyH,KAIvJryH,0BAA0BmF,EAAW9E,KAAKk/N,aACxC,MAAMn/N,EAAKC,MACTmoN,mBACEA,EAAkB0O,WAClBA,EAAUw+E,WACVA,GACEt1S,EACN,GAAIA,EAAGqrV,aAAc,CACnB,IAAI+5D,EACJ,IAAIC,EAAiBj9L,EAAmBk9L,OAAO3zY,IAAImlN,EAAW8B,OAAO7zN,EAASwiM,WAC9E,IAAK69M,EAAkBC,KAAoB,MAAQD,SAAyB,GAAKA,EAAgBrmZ,OAAQ,CACvG,IAAIwmZ,EACJ,OAAQA,EAAmBF,EAAe,MAAQ,MAAQE,SAA0B,OAAS,EAAIA,EAAiB/8V,YAAYm8Q,qBACzH,CACL,IAAI6gF,EAAuBC,EAC3BJ,GAAkBG,EAAwBp9L,EAAmBqsK,YAAY9iX,IAAI5M,EAAS6F,OAAS,MAAQ46Y,SAA+B,OAAS,EAAIA,EAAsBhiG,WACzK,IAAKiiG,EAAmBJ,KAAoB,MAAQI,SAA0B,GAAKA,EAAiB1mZ,OAAQ,CAC1G,IAAI2mZ,EAEJ,OAAQA,EAAwBL,EAAehnZ,QAAO4F,GAAKqxS,EAAW36M,YAAY12F,EAAEy8K,eAAc,MAAQ,MAAQglO,SAA+B,OAAS,EAAIA,EAAsB/gF,uBAGnL,CACL,MAAMrZ,EAAgB,IAAIljG,EAAmBqsK,YAAY3oX,UAAU,GACjEu5Y,EAAiB/5F,GAAiBptT,OAAO4N,OAAOw/S,GAClD,GAAI+5F,IAAmB,MAAQA,SAAwB,GAAKA,EAAetmZ,OAAQ,CACjF,OAAOsmZ,EAAehnZ,QAAO4F,GAAKqxS,EAAW36M,YAAY12F,EAAEgvN,WAAWvyC,eAAc,GAAGuyC,WAAW0xG,mBAIxG/kU,kBAAkBi/Q,GAChB,MAAM8mI,EAAkB9mI,EAAWjgR,OAAOslD,QAAQjkD,KAAKk2N,mBAEvD,GAAIl2N,KAAKsrV,uBAAuBvzS,SAAS6mO,EAAWjgR,QAAS,CAC3D,MAAMoB,EAAKC,MACTuxK,gBACEA,GACExxK,GACJpB,OACEA,GACEigR,EACJ+mI,EAAahnZ,EAAOslD,QAAQlkD,EAAGF,UAAUixK,cACzC80O,EAAkBD,EAAa5lZ,EAAG0uO,qBAAqB,CACrDnnC,SAAUvnM,EAAGkpT,WAAa,EAAIlpT,EAAGu1S,cAAc7vS,QAAQ1F,EAAGk1V,sBAAsBt2V,IAChFo4M,OAAQh3M,EAAGykP,eACX7lP,OAAAA,IACG,IAAIo3N,GAASp3N,GAGpB,GAAIgnZ,EAAY,CACd,IAAI7mI,EACJ,MAAM1/C,aACJA,GACEr/N,EACJA,EAAGq/N,aAAewmL,GACjB9mI,EAAqB/+Q,EAAGo/Q,kBAAoB,MAAQL,SAA4B,OAAS,EAAIA,EAAmBj4Q,KAAK9G,EAAIA,EAAIq/N,EAAcwmL,EAAiBr0O,EAAiB,MAC9K,OAGF,GAAIm0O,KAAqBn0O,GAAmB0yO,GAAW1yO,EAAgBtyK,MAAO,CAC5E,MAAM8lZ,EAAkBhlZ,EAAGilZ,0BAA0BY,GACrD,GAAIb,EAAiB,CACnBhlZ,EAAG+/Y,WAAWiF,EAAiB,CAE7B94Q,eAAgB/rI,QAAQqxK,GAAmBA,EAAgB1kK,OAAS,aACpEo4Y,QAAS1zO,GAAmBqtG,IAE9B,SAKN,GAAI8mI,EAAiB,CACnBxrY,MAAMq3O,kBAAkBqtB,IAO5Bj/Q,oBAAoB4vO,EAAc3iO,GAChC,MAAM7M,EAAKC,KACXuvO,EAAexvO,EAAG0uO,qBAAqBc,GACvC,GAAIA,EAAapZ,WAAap2N,EAAGykP,eAAe75O,QAAW,CACzD,OAAOuP,MAAM60N,UAAUQ,EAAc3iO,IAMzCjN,gBAAgBwwB,GACd,OAAOA,EAAMu0S,iBAEf/kU,YAAY+kU,EAAkBmhF,GAC5B,MAAM9lZ,EAAKC,MACTs1S,cACEA,GACEv1S,GACJ+lZ,YACEA,GACE/lZ,EAAGooN,oBAEPh7K,UACEA,EAASC,QACTA,GACErtC,EAAGgoT,SACPtnI,EAAcikJ,EAAiBv0S,MAC/B41X,EAAiBhmZ,EAAGs1S,WAAW8S,UAAU,CACvCn0F,eAAgB0wG,EAAiBvqB,SACjChtQ,UAAAA,EACAC,QAAAA,IACChvC,OAAO4B,KAAKi/W,cAAchnW,KAAK6tY,GACpC,IAAI9xL,EAAiB0wG,EAAiBvqB,SACpC6rG,EAAgBD,EAAeA,EAAetgZ,QAAQg7K,GAAe,GAEvE,IAAKulO,EAAe,CAGlB,IAAK,IAAIC,EAAS3wG,EAAc7vS,QAAQuuN,GAAkB,IAAKgyL,GAAiBH,GAAYG,IAAkBvlO,IAAgBwlO,GAAU,EAAGA,IAAU,CACnJjyL,EAAiBshF,EAActiN,MAAMizT,GACrC,MAAMh4X,EAASluB,EAAGs1S,WAAW8S,UAAU,CACrCn0F,eAAAA,EACA7mL,UAAAA,EACAC,QAAAA,IACChvC,OAAO2B,EAAGk/W,cAAchnW,KAAK6tY,GAChCE,EAAgB/3X,EAAOnvB,QAAUmvB,EAAOA,EAAOnvB,OAAS,IAG5D,OAAOiB,EAAGo1S,gBAAgBioB,iCAAiC4oF,EAAehyL,GAE5Er0N,iBAAiBqyH,GACf,MAAMjyH,EAAKC,KACTkmZ,EAAqBnmZ,EAAG6+W,YAAY7+W,EAAGomZ,gBAAgBn0R,IACzDA,EAASlsE,iBACT,GAAIogW,EAAoB,CACtB,IAAKl0R,EAASlvE,QAAS,CACrB/iD,EAAGgiX,sBAEL,OAAOhiX,EAAG+/Y,WAAWoG,EAAoB,CACvCjB,QAASjzR,IAIb,OAAOjyH,EAAGqmZ,iBAAiBp0R,GAE7BryH,QAAQ+kU,EAAkBmhF,GACxB,MAAM9lZ,EAAKC,MACTs1S,cACEA,GACEv1S,GACJ+lZ,YACEA,GACE/lZ,EAAGooN,oBAEPh7K,UACEA,EAASC,QACTA,GACErtC,EAAGgoT,SACPtnI,EAAcikJ,EAAiBv0S,MAC/B41X,EAAiBhmZ,EAAGs1S,WAAW8S,UAAU,CACvCn0F,eAAgB0wG,EAAiBvqB,SAEjChtQ,UAAAA,EACAC,QAAAA,IACChvC,OAAO4B,KAAKi/W,cAAchnW,KAAK6tY,GACpC,IAAI9xL,EAAiB0wG,EAAiBvqB,SACpCksG,EAAYN,EAAeA,EAAetgZ,QAAQg7K,GAAe,GAEnE,IAAK4lO,EAAW,CAGd,IAAK,IAAIJ,EAAS3wG,EAAc7vS,QAAQuuN,GAAkB,IAAKqyL,GAAaR,GAAYQ,IAAc5lO,IAAgBwlO,EAAS3wG,EAActxR,MAAOiiY,IAAU,CAC5JjyL,EAAiBshF,EAActiN,MAAMizT,GACrC,MAAMh4X,EAASluB,EAAGs1S,WAAW8S,UAAU,CACrCn0F,eAAAA,EACA7mL,UAAAA,EACAC,QAAAA,IACChvC,OAAO2B,EAAGk/W,cAAchnW,KAAK6tY,GAChCO,EAAYp4X,EAAO,IAGvB,OAAOluB,EAAGo1S,gBAAgBioB,iCAAiCipF,EAAWryL,GAExEr0N,aAAaqyH,GACX,MAAMjyH,EAAKC,KACTsmZ,EAAiBvmZ,EAAGosG,QAAQpsG,EAAGomZ,gBAAgBn0R,IACjDA,EAASlsE,iBACT,GAAIwgW,EAAgB,CAClB,IAAKt0R,EAASlvE,QAAS,CACrB/iD,EAAGgiX,sBAEL,OAAOhiX,EAAG+/Y,WAAWwG,EAAgB,CACnCrB,QAASjzR,IAIb,OAAOjyH,EAAGqmZ,iBAAiBp0R,GAE7BryH,iBAAiBqyH,GACf,IAAKA,EAASE,SAAWF,EAAS/yH,IAAIwG,QAAQ,WAAa,EAAG,CAC5DzF,KAAK,WAAWgyH,EAAS/yH,IAAIuG,UAAU,WAAWwsH,IAGtDryH,iBAAiB4mZ,GAAkBt6Q,eACjCA,EAAiB,KAAIg5Q,QACrBA,EAAU,IACRd,IACF,MAAMpkZ,EAAKC,MACTH,UACEA,GACEE,GACJ2yK,mBACEA,GACE7yK,EACN,GAAI0mZ,EAAkB,CACpB,GAAIt6Q,EAAgB,CAElBpsI,EAAU+/D,SAAW,WACf7/D,EAAGymZ,yBAAyBD,EAAkBrC,IACpDrkZ,EAAU+/D,SAAW,UAChB,CACL//D,EAAU6yK,mBAAqB,KAIjC,IAAK3yK,EAAGmc,aAAelc,KAAK6xW,+BAA+B00C,GAAmB,CAC5ExmZ,EAAGyiX,iBAAmB+jC,EACtB1mZ,EAAU6yK,mBAAqBA,EAC/B7yK,EAAU0tB,QAAQ,WAAY,CAC5B4C,MAAO80X,EACPtzY,KAAM5R,EAAG8xW,+BAA+B00C,GAAkBtiW,QAAQpkD,EAAUixK,kBAKpF0xM,qBAAqB99C,GACnB,MAAM+hF,EAAezmZ,KAAK6xW,+BAA+BntC,EAAkB,MAC3E,GAAI+hF,EAAc,CAChBzmZ,KAAKH,UAAUkxK,WAAa01O,GAGhCjkC,uBACE,MAAMzxM,WACJA,GACE/wK,KAAKH,UACT,GAAIkxK,EAAY,CACd,OAAO/wK,KAAKy2V,wBAAwB1lL,IAGxC21O,0BACE,MAAM/zO,mBACJA,GACE3yK,KAAKH,UACT,GAAI8yK,EAAoB,CACtB,OAAO3yK,KAAKs1V,mBAAmB3iL,IAGnChzK,aAAaqyH,GACX,MAAMjyH,EAAKC,KACT+zV,EAAe/hO,EAASrzH,OAAOslD,QAAQlkD,EAAGwrV,eAC5C,IAAKxrV,EAAGF,UAAU+/D,UAAYm0R,EAAc,CAC1C/hO,EAAS0yM,iBAAmB3kU,EAAG02V,wBAAwB1C,GACvD/hO,EAASyuD,YAAc1gL,EAAGu1V,mBAAmBvB,GAC7C/hO,EAASgiG,eAAiBj0N,EAAGk1V,sBAAsBlB,GAErD,OAAO/hO,EAETryH,YAAYqyH,GACV,MAAMjyH,EAAKC,KACX,IAAKD,EAAG84E,UAAY94E,EAAGykZ,gBAAiB,CACtC,MAAMvyU,EAAUlyE,EAAGs1S,WAAW4nB,qBAAuBl9T,EAAGs/W,eAAiBt/W,EAAGs7W,oBAC5Et7W,EAAGorX,aAAal5S,EAAQ7zE,QAAO8xB,IAAMA,EAAE2oD,aAG3Cl5E,aAAaqyH,GACXhyH,KAAK+uO,UAAU,CACbznC,SAAUtnM,KAAKk/N,YAAY53B,SAAW,EACtCyP,OAAQ/2M,KAAKwkP,iBAEfxyH,EAASE,QAAU,KAErBvyH,eAAeqyH,GACb,GAAIhyH,KAAKk/N,YAAY53B,SAAWtnM,KAAKs1S,cAActxR,MAAQ,EAAG,CAC5DhkB,KAAK+uO,UAAU,CACbznC,SAAUtnM,KAAKk/N,YAAY53B,SAAW,EACtCyP,OAAQ/2M,KAAKwkP,iBAEfxyH,EAASE,QAAU,MAGvBvyH,YAAYqyH,GACV,IAAKA,EAASrzH,OAAOslD,QAAQ,eAAgB,CAC3CjkD,KAAK+uO,UAAU,CACbznC,SAAUtnM,KAAKk/N,YAAY53B,SAC3ByP,OAAQ/2M,KAAKwkP,iBAEfxyH,EAASE,QAAU,MAGvBvyH,gBAAgBqyH,IAGhBryH,gBAAgBqyH,IAGhBmsJ,2BAIE,IAAKn+Q,KAAKH,UAAUkxK,WAAY,CAC9B,OAAO72J,MAAMikQ,sBAMjB37M,qBA6BF,MAAMmkV,GAAwB,CAC1BC,eAAgB,EAEhBC,aAAc,GAEhBC,GAAuB,CACrBhzV,WAAY,EACZizV,gBAAiB,EACjBF,aAAc,GAEhBG,GAAY,QACZC,GAAoB,EAClBxgF,YAAa3iT,IAEb2iT,YAAa1iT,KACTD,EAAMC,EACZmjY,GAAiB,CACf/5W,UAAW,EACXC,QAAS,EACT9kB,SAAU,GAEd,SAAS6+X,GAAY57F,EAAW9qI,EAAa2mO,EAAQj0W,EAAWoiT,GAC9D,IAAI8xD,EAKJ,MAAMt/F,SACFA,GACEwD,EACJ/uR,EAAOikJ,EAAY9vG,kBAAoB4kR,EAAiB90K,EAAY/uK,IAAIyhC,GAAastI,EAAYttI,GACjGstR,GAAoB4mF,EAAwB5mO,EAAYggJ,oBAAsB,MAAQ4mF,SAA+B,OAAS,EAAIA,EAAsBxgZ,KAAK45K,EAAattI,GAG1Km0W,EAAe/7F,EAAU6zD,aAAe3+L,EAAYtgK,KAAK40U,aAAet0B,GAC1E,GAAI6mF,EAAc,CAChB,IAAI9zL,EAAOu0F,EAASo8B,gBAAgB3nT,GACpC,GAAIg3L,GAAQ,EAAG,CAEb,GAAI4zL,GAAU5zL,IAASp/M,KAAKkxB,MAAMkuL,IAASA,EAAO,EAAG,CACnDA,IAEF,MAAMy2F,EAAY71S,KAAK+oB,MAAMq2L,GAC3B+zL,EAAax/F,EAAS/0N,MAAMi3N,GAC9B,OAAOs9F,EAAWp0W,GAAWnjC,WAGjC,OAAOwsB,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKxsB,UAO1D,MAAMw3Y,WAA4BnsY,GAAOmF,MAAM2kU,KAG7C3lV,0BACE,MAAO,CAIL86X,aAAc,EAOdmtB,WAAY,IACZjtB,mBAAoB,KAGxB5iX,wBACE,MAAO,CAEL48W,YAAa,IAAIhjX,IAEjB6zY,OAAQ,IAAI7zY,IACZk2Y,aAAc,GAEdC,eAAgB,KAChBC,uBAAwB,IAAI/oY,IAC5BgpY,kBAAmB,IAAIhpY,KAG3Blf,UAAU4rT,GACR,MAAMxrT,EAAKC,KACXD,EAAG8/D,OAAS9/D,EAAGwrT,UAAYA,EAC3BxrT,EAAG+lZ,YAAc/lZ,EAAG+lZ,YAAY9wY,KAAKu2S,GAErCA,EAAUjoM,WAAWn0F,GAAG,CACtB4xF,OAAQ,gBACRl0F,KAAM,EACNvQ,QAASvc,IAEXwrT,EAAU10F,WAAW1nM,GAAG,CACtB1qB,KAAM,aACN+gP,WAAY,eACZsiK,WAAY,eACZC,aAAc,iBACdC,gBAAiB,0BACjB1rY,QAASvc,IAEXma,MAAMsB,UAAU,IAElB7b,QACAA,2BACE,MAAMk3N,WACJA,GACE72N,KAAKurT,UACT,GAAIvrT,KAAKurT,UAAU1iL,UAAW,CAE5BguF,EAAW2V,WAAW3V,EAAWnnD,OAKrC4kL,uBACE,OAAOt0V,KAAK2uY,kBAEdhvY,cAAcw/H,EAAIukN,EAAgBl8Q,EAAOm6T,EAAkB,OACzD,MAAMp2E,UACJA,GACEvrT,KACJ,IAAImqT,EAAQhrL,EAAG,GACf,IAAK33D,EAAO,CACV2iP,EAAQnqT,KAAK4jY,8BAA8Bz5E,GAE7CA,EAAQoB,EAAUs4E,QAAQ15E,GAC1B,OAAOoB,EAAUX,kBAAkBihC,oBAAoB1hC,EAAOu5B,EAAgBi+C,GAEhFhiY,8BAA8BwE,GAC5B,MAAMonT,UACFA,GACEvrT,MACJsjH,WACEA,GACEioM,EAAUmjC,gBAChB,IAAIviV,EAAShI,EAAIonT,EAAU+/B,uBAAuBh0S,wBAAwBhC,KAAOlzC,WAAW2+J,QAG5F,GAAIwqJ,EAAU91Q,IAAK,CACjBtpC,GAAUm3G,EAAWsC,KAAOxxG,KAAK41B,IAAIuhR,EAAUv0Q,gBAC1C,CACL7qC,GAAUo/S,EAAUv0Q,WAEtB,OAAO7qC,EAETxM,0BAA0BwE,GACxB,MAAMonT,UACFA,GACEvrT,MACJsjH,WACEA,GACEioM,EAAUmjC,gBAChB,IAAIviV,EAAShI,EAAIonT,EAAU+/B,uBAAuBh0S,wBAAwBhC,KAC1E,GAAIi2Q,EAAU91Q,IAAK,CACjBtpC,GAAUm3G,EAAWsC,KAAOxxG,KAAK41B,IAAIuhR,EAAUv0Q,gBAC1C,CACL7qC,GAAUo/S,EAAUv0Q,WAEtB,OAAO7qC,EAUTxM,kBAAkBq0N,EAAgBvzC,EAAaj5G,EAAQ,KAAM4oR,EAAiB63D,EAAU,OACtF,IAAIpoC,EAAkBQ,EACtB,MAAMtgX,EAAKC,MACTurT,UACEA,GACExrT,GACJurV,uBACEA,EAAsBvjC,SACtBA,GACEwD,EACJ4/E,IAAmB8c,GAAWj0L,IAAmBu3F,EAAU8wF,kBAAkBroL,IAAmB,EAClG,IAAI6H,EACJ,GAAI7H,EAAgB,CAClB,MAAM+/H,EAAetzK,GAAe8qI,EAAUugE,2BAA2BrrM,EAAauzC,GAAgB,GACtG6H,EAAStlL,GAAUvxB,KAAKumS,EAAU7yF,WAAW1E,EAAerpN,IAAI4kD,WAAW,UAAW+7R,GACtF,GAAIyI,EAAc,CAChB,MAAMksB,EAAc1pU,GAAUvxB,KAAK+uU,EAAczI,GACjDzvH,EAAOr3L,EAAIy7U,EAAYz7U,EACvBq3L,EAAOxmL,OAAS4qU,EAAY5qU,WACvB,CACLwmL,EAAOr3L,EAAIq3L,EAAOr3L,EAAI2mW,EACtBtvK,EAAOxmL,OAASwmL,EAAOxmL,OAAS81V,OAE7B,CAGLtvK,EAAStlL,GAAUvxB,KAAKsmU,GAAwB1vS,OAAO,KAAM,GAC7DigL,EAAO30N,MAAQokV,EAAuB9yS,YACtCqjL,EAAOr3L,EAAIq3L,EAAOr3L,EAAI2mW,EACtBtvK,EAAOxmL,OAASwmL,EAAOxmL,OAAS81V,EAElC,MAAM+c,EAAUngG,EAAS56Q,UACvBg7W,EAAQpgG,EAAS36Q,QACnBgjT,IAAoByvB,EAAmBzvB,KAAqB,MAAQyvB,SAA0B,OAAS,EAAIA,EAAiBr3V,QAAU4nU,KAAqBiwB,EAAwB90D,EAAU2uC,sBAAwB,MAAQmmB,SAA+B,OAAS,EAAIA,EAAsBx5W,KAAK0kT,EAAWv3F,EAAgBvzC,KAAiB,CAC9Uj4J,MAAO0/X,EACPxkY,IAAKykY,GAEP,IAAI3/O,EAAS+iJ,EAAUg3C,sBAAsBnS,EAAgB5nU,MAAQqX,GAAWxrB,IAAI6zY,EAAS93D,EAAgB5nU,OAAS0/X,GACpHE,EAAO78F,EAAUg3C,sBAAsBnS,EAAgB1sU,IAAMmc,GAAWlX,IAAIw/X,EAAO/3D,EAAgB1sU,KAAOykY,GAC5G,IAAK3gV,EAAO,CACVghG,EAASzoK,EAAGgkY,0BAA0Bv7N,GACtC4/O,EAAOroZ,EAAGgkY,0BAA0BqkB,GAEtCvsL,EAAOvmL,KAAOlhC,KAAKuU,IAAI6/I,EAAQ4/O,GAC/BvsL,EAAOzmL,MAAQhhC,KAAKC,IAAIm0J,EAAQ4/O,GAChC,OAAOvsL,EAUTl8N,aAAas7V,EAAW9tT,EAAWC,GACjC,MAAMm+Q,UACFA,GACEvrT,MACJ+nT,SACEA,GACEwD,EACJ58I,EAAM48I,EAAU7yF,WAAWuiI,EAAUtwV,IAEvC,IAAKgkK,EAAK,CACR,OAAO,KAET,MAAMu5O,EAAUngG,EAAS56Q,UACvBg7W,EAAQpgG,EAAS36Q,QACjB5kB,EAAQ2kB,EAAYtN,GAAWxrB,IAAI6zY,EAAS/6W,GAAa+6W,EACzDxkY,EAAM0pB,EAAUvN,GAAWlX,IAAIw/X,EAAO/6W,GAAW+6W,EACjD3/O,EAAS+iJ,EAAUg3C,sBAAsB/5U,GACzC4/X,EAAO78F,EAAUg3C,sBAAsB7+U,EAAK,KAAM,MAClD8gB,EAAImqI,EAAIx5H,IACRhxC,EAAIiQ,KAAKuU,IAAI6/I,EAAQ4/O,GACrB/yW,EAAS7Q,EAAImqI,EAAIv3H,aACnB,OAAO,IAAIb,GAAUpyC,EAAGqgC,EAAGpwB,KAAKC,IAAIm0J,EAAQ4/O,GAAQjkZ,EAAGkxC,EAAS7Q,GAElE7kC,oBAAoB8gL,EAAauzC,EAAgB0oL,EAAgB7nI,EAAU,OACzE,MAAMwzI,EAAeroZ,KAAKw0X,YAAY9iX,IAAIsiN,EAAerpN,IACzD,IAAIq8S,EAAc,KAChBshG,EAAS,MACX,GAAID,EAAc,CAChBrhG,EAAcqhG,EAAa9kG,WAAWxyR,MAAKoO,GAAKA,EAAEshJ,cAAgBA,IAGpE,IAAKumI,EAAa,CAChBA,EAAchnT,KAAKy6W,sBAAsBh6L,EAAauzC,EAAgB,CACpEzmK,SAAU,KACVw6P,SAAU20F,IAEZ4L,EAAS,KAEX,GAAIthG,EAAa,CAEf,MAAMuhG,EAASvoZ,KAAKurT,UAAU10F,WAAW++D,gBAAgB5hE,EAAgB,KAAM6gD,GAC7E2zI,EAAcxhG,EAAY7xQ,IAAMozW,EAAOpzW,IACvCg9F,EAAM,IAAI57F,GAAUywQ,EAAY1xQ,KAAMkzW,EAAaxhG,EAAY9/S,MAAO8/S,EAAY//S,QAEpFkrI,EAAII,QAAU+1Q,EACdn2Q,EAAIwiH,OAAS4zJ,EAAOpzW,IACpBg9F,EAAIohO,UAAYg1C,EAAOlzW,OACvB88F,EAAIqtK,WAAaxrF,EAAerpN,GAChC,OAAOwnI,EAET,OAAO,KAITxyI,iBAAiBs6Y,GACf,MAAMl6Y,EAAKC,MACTurT,UACEA,GACExrT,EACJ02C,EAAUwjW,EAAepjW,SAAWojW,EAAiBA,EAAet7Y,OAEpE+rD,EAAKjU,EAAQI,WAAauH,QAAQgF,UAAY3M,EAAQe,cAAgBf,EACtEgyW,EAAY/9V,EAAGzG,QAAQsnQ,EAAUggC,eACnC,GAAIk9D,EAAW,CACb,OAAO1oZ,EAAGu1S,cAAczoO,QAAQ47U,EAAU/xX,QAAQ8oR,YAEpD,OAAO+L,EAAUnpH,qBAAqB13I,GAIxC/qD,gBAAgB4rG,GACdrxF,MAAMorU,gBAAgB/5O,GACtBvrG,KAAKkzY,oBAAsB,KAE3B,IAAKlzY,KAAKurT,UAAU/tS,cAAe,CACjCxd,KAAK0oZ,SAAS,CACZC,SAAU,OAGdp9S,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQp8E,GAAG,CAC3D1qB,KAAM,UACNq0L,QAAS,mBACTg9K,gBAAiB,2BACjBx5V,QAAStc,OAGbL,2BACE,MAAM4rT,UACJA,EAASs8F,kBACTA,GACE7nZ,KAEJ,GAAIurT,EAAU3gQ,UAAW,CACvB,GAAI2gQ,EAAU1iL,YAAc0iL,EAAUpjE,iBAAkB,CACtD,GAAI0/J,EAAkBt2Y,KAAM,CAC1BvR,KAAK4oZ,eAAef,GACpB7nZ,KAAK6oZ,iBAAiBhB,GAExBA,EAAkBppW,aAIjB,CACH8sQ,EAAU70B,YAAY,gBAG1B/2R,kBAAiBkmT,aACfA,EAAY1D,gBACZA,IAEA,MAAMpiT,EAAKC,MACTurT,UACEA,EAASq8F,uBACTA,GACE7nZ,EAEN,GAAIwrT,EAAU3gQ,UAAW,CACvB,GAAI2gQ,EAAU1iL,YAAc0iL,EAAU/tS,gBAAkB+tS,EAAUpjE,iBAAkB,CAElF,GAAIpoP,EAAGmzY,qBAAuB/wF,GAAmB0D,EAAc,CAC7D0F,EAAUu9F,uBAAuB,MACjC,MAAMjyL,WACJA,GACE00F,EAEJ,GAAI10F,EAAW8wB,OAAQ,CACrB5nP,EAAG2oZ,WAEH,IAAKn9F,EAAU0nF,2BAA4B,CAIzC,GAAIp8K,EAAW8wB,OAAO5wB,WAAaw0F,EAAU3/O,MAAM5nD,MAAO,CACxDunS,EAAU/+E,WAAW,WAChB,CAEL++E,EAAUiwD,sBAAsB,OAAQz7W,EAAG4nZ,gBAAkB9hG,IAAiB1D,IAGlFpiT,EAAG4nZ,eAAiB,UAGjB,CACH9wL,EAAWimC,eAEb/8P,EAAGmzY,oBAAsB,WAGtB,GAAI0U,EAAuBr2Y,KAAM,CAEpCxR,EAAG8oZ,iBAAiBjB,GAEtBA,EAAuBnpW,aAItB,CACH8sQ,EAAU70B,YAAY,UAAW60B,EAAW,CAAC,QAKjD5rT,wBAAwBw1S,GACtBn1S,KAAKkzY,oBAAsB,KAC3Bh5X,MAAM8pT,wBAAwB7uB,GAC9B,GAAIA,EAAiB,CACnBA,EAAgBhmR,GAAG,CACjB1qB,KAAM,kBACNs7F,gBAAiB,0BACjBgpT,iBAAkB,2BAClBzsY,QAAStc,QAIfL,yBAAwByyD,OACtBA,EACA6f,QAASqpS,EAAoB,GAAEnwR,SAC/BA,EAAQ5Y,QACRA,IAEA,MAAMxyE,EAAKC,MACTurT,UACEA,GACExrT,EACJipZ,EAAc,IAAInqY,IAAIy8V,EAAkB7+G,SAAQioE,IAC9C,IAAIukF,EAAuBC,EAAwBC,EACnD,MAAO,CAACzkF,EAAiBllB,eAEpBypG,GAAyBC,EAAyBxkF,EAAiBvqB,YAAc,MAAQ+uG,SAAgC,OAAS,GAAKC,EAAyBD,EAAuBlzU,UAAY,MAAQmzU,SAAgC,OAAS,EAAIA,EAAuBt/Y,KAAIqwD,GAAQA,EAAKvvD,QAAS,MAAQs+Y,SAA+B,EAAIA,EAAwB,QAIrX,GAAIlpZ,EAAGu1S,cAAcjkN,YAActxF,EAAGu1S,cAAcyoB,aAAc,CAChE,OAEF,OAAQ3rQ,GAEN,IAAK,UACH,CAEE,IAAKryD,EAAGs1S,WAAW4nB,qBAAsB,CACvC,GAAI+rF,EAAYz3Y,KAAM,CACpBxR,EAAGqpZ,0BAA0BJ,OACxB,CACLjpZ,EAAG2oZ,WACHn9F,EAAUiwD,yBAGd,OAEJ,IAAK,MACL,IAAK,SACL,IAAK,iBAEHz7W,EAAGqpZ,0BAA0BJ,GAC7B,OACF,IAAK,YACHjpZ,EAAGmzY,oBAAsB,KACzB,OACF,IAAK,UAEH/nT,EAASnsF,SAAQ,EAAEqqZ,EAAe5qC,MAChCuqC,EAAYjqY,IAAIsqY,EAAc7pG,YAC9BwpG,EAAYjqY,IAAI0/V,EAAcj/D,eAGhCz/S,EAAGqpZ,0BAA0BJ,GAC7B,OAEF,IAAK,SACHjpZ,EAAG2oZ,WACHn9F,EAAUu9F,uBAAuB,MACjCv9F,EAAUiwD,wBACV,OACF,IAAK,SACH,CACE,GAAI,YAAajpS,GAAW,eAAgBA,GAAW,OAAQA,EAAS,CAEtE,GAAI,eAAgBA,EAAS,CAC3By2U,EAAYjqY,IAAIwzD,EAAQitO,WAAW3lS,UAErC9Z,EAAGupZ,4BAA4BN,GAEjC,MAEJ,IAAK,eACH,CACE,MAAMn0U,MACJA,EAAKrB,SACLA,EAAQtwD,QACRA,GACEqvD,EAGJ,GAAIiB,EAAU,CACZ+3O,EAAUiwD,4BACL,CACL3mS,EAAM71E,SAAQkxB,GAAK84X,EAAYjqY,IAAImR,EAAEsvR,cACrCt8R,EAAQlkB,SAAQkxB,GAAK84X,EAAYjqY,IAAImR,EAAEsvR,cACvCz/S,EAAGupZ,4BAA4BN,MAKzCrpZ,0BAAyByyD,OACvBA,EAAM6f,QACNA,IAEA,GAAI7f,IAAW,QAAS,CACtBpyD,KAAK0oZ,WACL1oZ,KAAKurT,UAAUiwD,yBAKnB77W,mBAAmB01S,GACjBr1S,KAAKkzY,oBAAsB,KAC3Bh5X,MAAMsrU,mBAAmBnwC,GACzB,GAAIA,EAAY,CACdA,EAAWlmR,GAAG,CACZ1qB,KAAM,aACNskZ,iBAAkB,sBAClBzsY,QAAStc,QAIfL,qBAAoByyD,OAClBA,IAEA,GAAIA,IAAW,QAAS,CACtB,MAAMm5P,UACJA,GACEvrT,KACJ,GAAIurT,EAAU1V,eAAiB0V,EAAU1iL,UAAW,CAClD7oI,KAAK0oZ,WACLn9F,EAAUiwD,0BAQhB77W,oBAAmByyD,OACjBA,EACA6f,QAASiyP,EAAe,GAAE1xP,OAC1BA,EAAM2Y,SACNA,EAAQ5Y,QACRA,EAAOxzE,OACPA,IAEA,MAAMgB,EAAKC,MACTurT,UACEA,GACExrT,EACJs3U,EAAsBt4U,EAAOykZ,yBAC7BwF,EAAc,IAAInqY,IACpB,IAAK0sS,EAAU1iL,UAAW,CACxB,OAEFq7L,EAAallU,SAAQyhL,IACnB,IAAI8oO,EACJ,OACGA,EAAwB9oO,EAAYkxJ,oBAAsB,MAAQ43E,SAA+B,OAAS,EAAIA,EAAsBvqZ,SAAQg1N,GAAkBg1L,EAAYjqY,IAAIi1M,EAAerpN,SAGlM,GAAI0sU,EAAqB,CACvB,OAAQjlR,GAIN,IAAK,YACL,IAAK,UACHryD,EAAG2oZ,WACHn9F,EAAUiwD,wBACV,OAEJz7W,EAAG8oZ,iBAAiBG,OACf,CACL,OAAQ52V,GAEN,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,OACH,OACF,IAAK,SAEH,OACF,IAAK,eACHryD,EAAG2oZ,WACHn9F,EAAUiwD,wBACV,OACF,IAAK,UACHz7W,EAAG2oZ,WACH3oZ,EAAGmzY,oBAAsB,KACzB,OACF,IAAK,MACL,IAAK,iBAEH,MACF,IAAK,UAEH/nT,EAASnsF,SAAQ,EAAC,CAAGylT,MAEnBA,EAASkY,UAAU9yT,KAAImqN,GAAkBg1L,EAAYjqY,IAAIi1M,EAAerpN,SAE1E,MACF,IAAK,YACL,IAAK,SAEH,IAAK4gT,EAAU1V,cAAe,CAC5B91S,EAAGmzY,oBAAsB,KACzB,OAIFnzY,EAAG2oZ,WACHn9F,EAAUu9F,uBAAuB,MACjCv9F,EAAUiwD,wBACV,OACF,IAAK,SACH,CAEE,MAAMguC,EAAYh3U,EAAOi3U,SAAWxrZ,OAAOD,KAAKu0E,GAAS5qE,MAAKlD,IAAS+tE,EAAOi3U,QAAQl5L,SAAS9rN,MAAUxG,OAAOD,KAAKu0E,GAAS5qE,MAAKlD,IAASyiZ,GAAeziZ,KAC3J,IAAIilZ,EAAc,EAClB,cAAen3U,GAAWm3U,IAC1B,YAAan3U,GAAWm3U,IACxB,aAAcn3U,GAAWm3U,IACzB,GAAI,eAAgBn3U,EAAS,CAC3By2U,EAAYjqY,IAAIwzD,EAAQitO,WAAW3lS,UAGrC,IAAK2vY,GAELE,KAAiB,aAAcn3U,GAAWm3U,IAAgB,IAAM,gBAAiBn3U,GAAW,aAAcA,GAAW,aAAcA,EAAS,CAC1I,IAAI2kP,EAAayyF,EAGjB,IAAKzyF,EAAcn3T,EAAGwrG,WAAa,MAAQ2rN,SAAqB,GAAKA,EAAY0yF,yBAA2BD,EAAe5pZ,EAAGwrG,WAAa,MAAQo+S,SAAsB,GAAKA,EAAa7zG,cAAe,CACxM/1S,EAAGupZ,4BAA4BN,OAC1B,CACLjpZ,EAAG8oZ,iBAAiBG,IAGxB,QAGNjpZ,EAAGqpZ,0BAA0BJ,IAKjCrpZ,sBAAsB21S,GACpBt1S,KAAKkzY,oBAAsB,KAC3Bh5X,MAAMqrU,sBAAsBjwC,GAC5B,GAAIA,EAAe,CACjBt1S,KAAK0oZ,SAAS,CACZmB,iBAAkB,OAEpBv0G,EAAcnmR,GAAG,CACf1qB,KAAM,gBACNs7F,gBAAiB,wBACjBzjF,QAAStc,QAIfs1S,oBACE,OAAOt1S,KAAK6/D,OAAO+L,MAErBjsE,uBAAsByyD,OACpBA,EAAMiwC,SACNA,EAAQpwB,QACRA,EAAOM,QACPA,IAEA,MAAMxyE,EAAKC,KAETgpZ,EAAc/2U,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQwqL,SAAQvsO,GAAKA,EAAE8jD,SAAW,CAAC9jD,EAAEvlB,GAAIulB,EAAEkmD,aAAe,CAAClmD,EAAEvlB,MAC/H,IAAK5K,EAAGwrT,UAAU1iL,UAAW,CAC3B,OAEF,OAAQz2E,GACN,IAAK,MAGH,IAAKiwC,EAAU,CAEb,GAAIpwB,EAAQ9hE,OAAM+f,GAAKA,EAAE8jD,WAAW,CAClCj0E,EAAG8oZ,iBAAiBG,OAGjB,CACHjpZ,EAAGqpZ,0BAA0BJ,IAGjC,OACF,IAAK,SACH,CAGE,IAAKjpZ,EAAGwrG,QAAQqpN,oBAAsBriP,EAAQrD,OAAQ,CAEpDnvE,EAAG8oZ,iBAAiBG,GAEtB,OAEJ,IAAK,SAGH,OACF,IAAK,YACHjpZ,EAAG2oZ,SAAS,CACVmB,iBAAkB,OAEpB,OAGF,IAAK,UACH,OAEJb,GAAejpZ,EAAG6oZ,eAAeI,GAInCrpZ,gBAAegvK,IACbA,IAGA,GAAIA,EAAIhkK,IAAM,KAAM,CAGlB3K,KAAK8pZ,yBAAyBn7O,EAAK,QAIvChvK,mBAAmBq0N,GACjB,IAAI+1L,EACJ,MAAMx+F,UACFA,GACEvrT,KACJwvK,EAAY+7I,EAAU4wF,kBAAkBnoL,GACxCgzF,EAAcuE,EAAU+vF,eAAetnL,GACvCg2L,EAAahjG,EAAYn6S,KAC3B,GAAIm9Y,IAAe,SAAWz+F,EAAU1V,gBAAkB7hF,EAAe3tI,gBAEvE0jU,EAAwB/1L,EAAesmF,YAAc,MAAQyvG,SAA+B,OAAS,EAAIA,EAAsBx4Y,MAAQ,EAAG,CAC1I,MAAM4jS,gBACFA,EAAeE,WACfA,EAAU0S,SACVA,GACEwD,GACJsoD,UACEA,EAASs3B,eACTA,EAAczlI,cACdA,GACE6lD,EAAU0+F,0BAA0Bj2L,GAGxCk2L,GAAe70G,EAAWjpN,YAAc+oN,EAAgB/oN,aAAU,CAAMq0F,GAAeA,EAAY+7I,YAAY70T,MAAK9B,GAAKA,EAAEs0S,WAAanmF,EAAet+I,WAAay/N,EAAgBvpS,SAAS/F,MAC7LooB,EAASonR,EAAW8S,UAAU,CAC5Bn0F,eAAAA,EACAo0F,mBAAoBmD,EAAUlD,sBAC9Bl7Q,UAAW46Q,EAAS56Q,UACpBC,QAAS26Q,EAAS36Q,QAClBhvC,OAAQ8rZ,IACPjyY,KAAKgvY,IAAmBp9Y,KAAI42K,IAC7B,MAKEtzI,EAAYszI,EAAY9vG,gBAAkB8vG,EAAY/uK,IAAI,aAAe+uK,EAAYtzI,UACrFC,EAAUqzI,EAAY9vG,gBAAkB8vG,EAAY/uK,IAAI,WAAa+uK,EAAYrzI,SAAWD,EAC9F,MAAO,CACLszI,YAAAA,EACAuzC,eAAAA,EACA83G,QAAS3+R,EAAUn9B,UACnB2xU,MAAOv0S,EAAQp9B,cAGnBm6Y,EAAgB5+F,EAAU6+F,sBAAsBpjG,GAChDqjG,EAAqBF,EAAcxiE,oBAAoB15T,EAAQ,MACjE,GAAIk8X,EAAct9Y,OAAS,WAAY,CACrC,OAAOw9Y,EAET,OAAOA,EAAqB3kJ,GAAiB2kJ,EAAqB,GAAKx2C,EAAYs3B,EAAiB,EAEtG,OAAO37N,EAIT7vK,mBACE,MAAM2jH,WACJA,GACEtjH,KAAKurT,UAAUmjC,gBAInB1uV,KAAKgoY,2BAA2B1kR,EAAWn/G,GAE7CxE,4BACE,MAAMI,EAAKC,MACTurT,UACEA,GACExrT,EACNA,EAAG2oZ,WAEH,GAAIn9F,EAAUpjE,iBAAkB,CAC9BpoP,EAAGwpE,gBAAgB,oBACnBgiP,EAAUp8R,GAAG,CACX1qB,KAAM,mBACN9E,eAAc4tB,QACZA,IAQA,GAAIg+R,EAAU1V,eAAiBtoR,EAAS,CACtCxtB,EAAGovY,qBAGP7yX,QAASvc,EACT6sB,KAAM,OAIV7sB,EAAGovY,mBAULxvY,sBAAsB8gL,GACpB,MAAO,QAQT9gL,oBAAoB8gL,GAClB,MAAO,MAIT9gL,YAAY0zY,GACV,GAAIA,EAAgB,CAClBrzY,KAAK0oZ,YAIT/oZ,iBACEK,KAAK0oZ,WAGP/oZ,iBAAiBuH,EAAOD,EAAQomI,EAAUC,GAGxC,GAAIrmI,EAASqmI,EAAW,CACtBttI,KAAKsqZ,gBAIT3qZ,aAAY8tE,QACVA,EAAOw9Q,SACPA,IAGA,GAAIjrV,KAAKs1S,cAAc7vS,QAAQwlV,EAASz4Q,OAAO2nO,UAAYn6S,KAAKurT,UAAU5jE,OAAO5wB,UAAW,CAC1FtpJ,EAAQh3B,QAAQ30C,UAIpBnC,UAAU+kU,EAAkB5uT,EAAKiJ,EAAM,KAAMwrY,EAAa,OACxD,MAAM9zW,EAAUz2C,KAAK6/D,OAAOgyS,+BAA+BntC,EAAkB6lF,GAE3ElC,EAAeroZ,KAAKw0X,YAAY9iX,IAAIgzT,EAAiBj2P,QAAUi2P,EAAiBhzT,IAAI,cAAgBgzT,EAAiBllB,YACrH34D,EAAYwhK,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAa9kG,WAAWxyR,MAAKoO,GAAKA,EAAEugR,UAAYglB,EAAiBhlB,UAE3I,GAAI74D,EAAW,CACbA,EAAU0jK,EAAa,aAAe,OAAOz0Y,GAAOiJ,EAGtD,GAAI03B,EAAS,CAEXA,EAAQmI,UAAU7/B,EAAM,MAAQ,UAAUjJ,GAE1C2gC,EAAQoc,cAAcnU,UAAU5oC,GAAOiJ,GAI3Cpf,cAAa+vK,KACXA,IAEAA,EAAK1wK,SAAQ2vK,GAAO3uK,KAAKqlZ,OAAO/rY,OAAOq1J,KACvC3uK,KAAKsqZ,eAGP3qZ,gBACEK,KAAKwqZ,eAAiB,MAIxB7qZ,2BACE,IAAKK,KAAKwqZ,eAAgB,CACxBxqZ,KAAKsqZ,gBAIT3qZ,2BAA2BohK,GACzB,MAAMhhK,EAAKC,MACTurT,UACEA,EAAS+uE,aAETA,GACEv6X,GACJ2uV,gBACEA,EAAe3mC,SACfA,EAAQtyQ,IACRA,GACE81Q,GACJrkT,MACEA,GACEwnV,GACJ/gC,UACEA,GACEpC,EAAUX,kBACdpiS,EAAQu4I,EAKR0pP,EAAY/7D,EAAgBprO,WAAWsC,OAAS,GAAKxxG,KAAK41B,IAAI0kT,EAAgBprO,WAAWsC,OAASxxG,KAAKkxB,MAAM9c,GAAS,EACtH2kB,EAAYo+Q,EAAUopC,iBAAiB,CACrCxqC,MAAO/1S,KAAKC,IAAI,EAAGmU,EAAQ8xW,GAC3BrB,UAAW,OAEb7rV,EAAUq9W,EAAY1iG,EAAS36Q,QAAUm+Q,EAAUopC,iBAAiB,CAClExqC,MAAO3hS,EAAQthB,EAAQozX,EACvBrB,UAAW,QACPlxE,EAAS36Q,QACjB,GAAID,IAAco+Q,EAAUg8E,oBAAqB,CAC/CxnY,EAAG4uY,kBAAoB,CACrBxhW,UAAAA,EACAC,QAAAA,EACA0+R,QAAS3+R,EAAUn9B,UACnB2xU,MAAOv0S,EAAQp9B,WAEjBjQ,EAAG2qZ,eAAiBj1W,EAElB,CACAH,KAAMq4Q,EAAY5sJ,EAAU75J,EAAQozX,EACpCllV,MAAOu4Q,EAAY5sJ,EAAUu5N,GAG7B,CACAhlV,KAAMyrH,EAAUu5N,EAChBllV,MAAO2rH,EAAU75J,EAAQozX,GAG3B,MAAMvoM,EAAQw5H,EAAU63C,SAASrxK,MAAQ,CACvC5kJ,UAAAA,EACAC,QAAAA,GAEFm+Q,EAAUo/F,yBAAyB54N,GAEnC,IAAKw5H,EAAUpjE,kBAAoBojE,EAAU10F,WAAWnnD,KAAK5wK,OAAQ,CAGnE,GAAIysT,EAAU10F,WAAWnnD,KAAK,GAAG/kK,KAAO,KAAM,CAC5C,OAEF4gT,EAAU10F,WAAWnnD,KAAK1wK,SAAQ2vK,GAAO5uK,EAAG+pZ,yBAAyBn7O,EAAK,SAC1E5uK,EAAGuqZ,iBAKT3qZ,yBAAyBq0N,GACvBh0N,KAAK6oZ,iBAAiB,CAAC70L,EAAerpN,KAExChL,0BAEEK,KAAK0oZ,WAIP/oZ,4BAA4BqpZ,GAC1BA,EAAYhqZ,SAAQ2L,GAAM3K,KAAK6nZ,kBAAkB9oY,IAAIpU,KAOvDhL,0BAA0BqpZ,GACxBhpZ,KAAK4oZ,eAAeI,GACpBA,EAAYhqZ,SAAQ2L,GAAM3K,KAAK4nZ,uBAAuB7oY,IAAIpU,KAQ5DhL,iBAAiB4wG,EAAK+sB,EAAa,MACjC,MAAMv9H,EAAKC,MACTurT,UACEA,GACExrT,EACJ2vK,EAAO,GACPo+G,EAAS,GACX/tR,EAAG6oZ,eAAer4S,GAClB,IAAKg7M,EAAUpjE,iBAAkB,CAC/B53I,EAAIvxG,SAAQ2L,IACV,MAAMgkK,EAAM48I,EAAU7yF,WAAW/tN,GACjC,GAAIgkK,EAAK,CACPe,EAAKlxK,KAAKmwK,OACL,CACLm/G,EAAOtvR,KAAKmwK,OAGhB48I,EAAU8sE,mBAAkB,KAE1B9sE,EAAU00F,oBAAoBnyH,EAAOjkR,KAAIc,GAAM3K,KAAKs1S,cAAczoO,QAAQliE,KAAM,MAEhF4gT,EAAU10F,WAAW2V,WAAW98D,KAC/BpyC,IAKP39H,2BAA2BirZ,EAAWnqO,EAAauzC,GACjD,MAAM6/I,UACJA,EAASs3B,eACTA,EAAczlI,cACdA,GACE1lQ,KAAKurT,UAAU0+F,0BAA0Bj2L,EAAgBvzC,EAAYnuK,QACzE,OAAOs4Y,IAAc,EAAIzf,EAAiBA,EAAiByf,EAAYllJ,EAAgBklJ,EAAY/2C,EAErGl0W,0BAA0BkrZ,EAAaC,EAAgBrqO,EAAauzC,GAClE,MAAM6/I,UACFA,EAASs3B,eACTA,EAAczlI,cACdA,GACE1lQ,KAAKurT,UAAU0+F,0BAA0Bj2L,EAAgBvzC,EAAYnuK,QACzE0R,EAAQ,EAAI8mY,EACZF,EAAYC,EAAc7mY,EAE1B/c,GAAUy+P,GAAiB1hP,EAAQ,GAAK6vV,GAAai3C,EACrD31W,EAAMg2V,EAAiByf,EAAY3jZ,EAAS2jZ,EAAY/2C,EAC1D,MAAO,CACL1+T,IAAAA,EACAluC,OAAAA,GAWJtH,wBAAwB8gL,EAAauzC,EAAiBvzC,EAAY05H,UAChE,MAAMoR,UACFA,GACEvrT,KACJgzN,EAAau4F,EAAUw/F,mBAAmBtqO,EAAauzC,EAAgB,CACrE+zF,SAAU,KACVx6P,SAAU,OAEdylK,EAAWw1L,YAAcx1L,EAAWrkD,IAAMqkD,EAAW79K,IAAM69K,EAAWrkD,IAAIx5H,IAAMo2Q,EAAU+1F,oBAAoB7gO,EAAauzC,EAAgB,MAAM7+K,IACjJ,MAAMiI,EAAYp9C,KAAKyhZ,YAAYzuL,IACjCt8L,QACEA,GACE0mB,SACCA,EAAU4yG,gBACVt5H,EAAQgpR,eACRhpR,EAAQ8oR,kBACR9oR,EAAQyjX,oBACRzjX,EAAQ27B,OACf37B,EAAQwrO,UAAY,KACpB9kN,EAAU9qC,OAAStS,KAAKurT,UAAU0zC,iBAGlC7hT,EAAUqL,cAAgB,KAC1B,MAAMt8C,EAAS8rC,GAAU72C,cAAcg8C,GACvCjxC,EAAOq2I,aAAer2I,EAAOmsD,WAC7BmoH,EAAYlxG,aAAag8O,GAAW2yD,wBAA0B,KAC9D,OAAO/xW,EAMTxM,YAAYkG,EAAGye,GACb,GAAItkB,KAAK06Y,uBAAwB,CAC/B,OAAO16Y,KAAK06Y,uBAAuB70Y,EAAE46K,aAAe56K,EAAGye,EAAEm8J,aAAen8J,GAE1E,MAEE0mY,EAASnlZ,EAAE4oE,QAAU5oE,EAAE4gU,YAAc5gU,EAAEolZ,aAAeplZ,EAAEimU,QAExDo/E,EAAOrlZ,EAAE4oE,QAAU5oE,EAAE28T,UAAY38T,EAAEslZ,WAAatlZ,EAAE87U,MAClDypE,EAAS9mY,EAAEmqD,QAAUnqD,EAAEmiT,YAAcniT,EAAE2mY,aAAe3mY,EAAEwnT,QACxDu/E,EAAO/mY,EAAEmqD,QAAUnqD,EAAEk+S,UAAYl+S,EAAE6mY,WAAa7mY,EAAEq9T,MAClD2pE,EAAQzlZ,EAAE4oE,QAAU5oE,EAAEpB,KAAOoB,EAAE46K,YAAYh8K,KAC3C8mZ,EAAQjnY,EAAEmqD,QAAUnqD,EAAE7f,KAAO6f,EAAEm8J,YAAYh8K,KAC7C,OAAOumZ,EAASI,GAAUC,EAAOH,IAASI,EAAQC,GAAS,EAAID,GAASC,EAAQ,EAAI,GAYtF5rZ,YAAY8gL,EAAa61J,EAAgBC,EAAcgf,GACrD,MAAMx1V,EAAKC,MACTurT,UACEA,GACExrT,GACJ6qT,kBACEA,GACEW,EACN,IAAIugB,EAAUq7E,GAAY57F,EAAW9qI,EAAa,MAAO61J,EAAgBif,GACvE5T,EAAQwlE,GAAY57F,EAAW9qI,EAAa,KAAM81J,EAAcgf,GAChE7uB,EAAaib,EAAQ7V,EACvB,GAAIvgB,EAAUi1D,sBAAwB,WAAa95C,IAAe,EAAG,CACnE,MAAM8kF,EAAc5gG,EAAkB2lE,sBAAsB,UAC1Dk7B,EAAalgG,EAAUmgG,uBAAuBjrO,GAC9Cn4J,EAAWmjY,GAAc,EAAID,GAC/B9kF,EAAap+S,EAAW,GAAK,IAC7B,OAAQijS,EAAUk1D,gBAChB,IAAK,QACL,IAAK,OACH9+B,EAAQ7V,EAAUpF,EAClB,MACF,IAAK,MACL,IAAK,QACHib,EAAQ7V,EACRA,EAAU6V,EAAQjb,EAClB,MACF,QAEEib,EAAQ7V,EAAUpF,EAAa,EAC/BoF,EAAU6V,EAAQjb,EAClB,OAGN,MAAO,CACLoF,QAAAA,EACA6V,MAAAA,EACAjb,WAAAA,GAUJ/mU,gBAAgB0lU,EAAU41B,GACxB,IAAI0wD,EACJ,MAAM5rZ,EAAKC,MACTurT,UACEA,GACExrT,GACJgoT,SACEA,EAAQ6C,kBACRA,GACEW,GACJ7rS,SACEA,EAAQC,UACRA,GACE0lT,EACJkwB,EAAiBx1V,EAAG6rZ,4BAA8BD,EAAwBpgG,EAAUx5L,SAASyjO,eAAiB,MAAQm2D,SAA+B,OAAS,EAAIA,EAAsBvrV,WAAa1gD,GAAYC,KAAe0lT,EAAS1E,YACzO6qF,EAAc5gG,EAAkB2lE,sBAAsB,WACtD5/S,gBACEA,GACE00P,EACJiR,EAAiBif,EAAiB,gBAAkB,YACpDhf,EAAegf,EAAiB,cAAgB,UAMhDs2D,EAAgBl7U,IAAoB4kR,EAAiBlwB,EAAS3zT,IAAI4kU,GAAkBjR,EAASiR,GAE7Fw1E,EAAcn7U,IAAoB4kR,EAAiBlwB,EAAS3zT,IAAI6kU,GAAgBlR,EAASkR,IAAiBs1E,EAC1GE,EAAchkG,EAAS+jB,QACvBkgF,EAAYjkG,EAAS45B,OACrB7V,QACEA,EAAO6V,MACPA,EAAKjb,WACLA,GACE3mU,EAAGksZ,YAAY5mF,EAAUiR,EAAgBC,EAAcgf,GAQ3DrE,EAAoBplB,EAAUigF,GAAejgF,EAAUkgF,IAAc,EAKrE76D,EAAkBxP,EAAQqqE,GAAarqE,GAASoqE,IAAgB,EAChEG,EAAkBxlF,GAAc,IAAO,IACvCx/T,EAAQiqV,EAAkBq6D,EAAcU,EAAkB,KAC1Dv9O,EAAM48I,EAAU7yF,WAAWuiI,GAC7B,MAAO,CACLx6K,YAAa4kJ,EACb0wB,WAAY1wB,EAEZ78S,MAAOqjY,EACPnoY,IAAKooY,EACLl+K,MAAOqtH,EAAUtwV,GACjB08C,SAAU,GACVykR,QAAAA,EACA6V,MAAAA,EACAjb,WAAAA,EACAwqB,kBAAAA,EACAC,gBAAAA,EACAjqV,MAAAA,EACAynK,IAAAA,EACA4mL,eAAAA,GASJ51V,+BAA+BqzN,GAC7B,MAAM84G,QACFA,EAAO6V,MACPA,EAAKjb,WACLA,GACE1zG,EAEJ7mN,EAAS2/T,GAAW,MAAQ6V,GAAS,MAAQ3hV,KAAKmsZ,4BAA4Bn5L,EAAY84G,EAAS6V,EAAOjb,GAC5G,GAAIv6T,EAAQ,CACVlO,OAAOmZ,OAAO47M,EAAY7mN,GAC1B,OAAO,KAET,OAAO,MAWTxM,4BAA4BqzN,EAAY84G,EAAS6V,EAAOjb,GACtD,MAAMnb,UACFA,GACEvrT,MACJ+nT,SACEA,EAAQ6C,kBACRA,GACEW,GACJ2lC,kBACEA,EAAiBC,gBACjBA,EAAe1wK,YACfA,GACEuyC,EACJ+4L,EAAchkG,EAAS+jB,QACvB0/E,EAAc5gG,EAAkB2lE,sBAAsB,UACtD27B,EAAkBxlF,GAAc,IAAO,IACvCx/T,EAAQiqV,EAAkBq6D,EAAcU,EAAkB,KAC5D,IAAI9D,EAAO78F,EAAUg3C,sBAAsB5gB,EAAO,CAC9Cn6Q,MAAO,KACPg7R,iBAAkB,KAClBz+O,MAAO,OAETykD,EACAw0O,EAAe,MACfE,EAAa,MAEf,GAAIhsD,EAAmB,CACrB1oL,GAAUsjK,EAAUigF,IAAgB,IAAO,IAAMP,EAEjD,GAAIjgG,EAAU91Q,IAAK,CACjB+yH,EAAS+iJ,EAAUmjC,gBAAgBprO,WAAW9qE,YAAcgwH,OAI3D,CAEHA,EAAS+iJ,EAAUg3C,sBAAsBz2B,EAAS,CAChDtkQ,MAAO,KACPg7R,iBAAkB,KAClBz+O,MAAO,MACP+8Q,mBAAoBsnB,KAAU,IAEhCpL,EAAex0O,KAAY,EAE7B,GAAI2oL,EAAiB,CAEnB,GAAIzxV,EAAc8D,UAAY+nT,EAAUx5L,SAASq6R,aAAc,CAC7DhE,EAAO78F,EAAUg3C,sBAAsBx6C,EAAS45B,WAC3C,CAELymE,EAAO5/O,EAASthK,GAASqkT,EAAU91Q,KAAO,EAAI,QAE3C,CACLynW,EAAakL,KAAU,EAEzB,GAAIlL,IAAeF,EAAc,CAG/BoL,EAAO78F,EAAUg3C,sBAAsB5gB,EAAO,CAC5Cn6Q,MAAO,KACPg7R,iBAAkB,KAClBz+O,MAAO,KACP+8Q,mBAAoB,OAKxB,GAAI55X,EAAQ8/Y,GAAW,CAErB,GAAI91D,IAAsB,EAAG,CAE3B,GAAIC,IAAoB,EAAG,CACzB3oL,GAAU,IACV4/O,EAAO78F,EAAU/mE,eAAet9O,MAAQ,QAGrC,CACHshK,EAAS4/O,EAAOpB,SAIf,GAAI71D,IAAoB,EAAG,CAC9Bi3D,EAAO5/O,EAASw+O,IAGpB,GAAIhK,GAAgBE,EAAY,CAE9B10O,EAAS+iJ,EAAUg3C,sBAAsBz2B,EAAS,CAChDtkQ,MAAO,KACPg7R,iBAAkB,KAClBz+O,MAAO,MACP+8Q,mBAAoB,KACpBzsX,IAAKstU,IAEPymE,EAAO78F,EAAUg3C,sBAAsB5gB,EAAO,CAC5Cn6Q,MAAO,KACPg7R,iBAAkB,KAClBz+O,MAAO,KACP+8Q,mBAAoB,KACpBn4W,IAAKmjT,IAEP,GAAItjK,IAAW4/O,EAAM,CAEnB3nO,EAAYlxG,aAAag8O,GAAWs5F,SAAW,KAE/C,OAAO,MAGX,MAAO,CACLvvW,KAAMlhC,KAAKuU,IAAI6/I,EAAQ4/O,GAIvBlhZ,MAAOkN,KAAK41B,IAAIo+W,EAAO5/O,KAAYiY,EAAYkgJ,cAAgBlgJ,EAAYtgK,KAAK+gW,eAAiB,EAAI,GACrG87B,aAAAA,EACAE,WAAAA,GAGJv9Y,6BAA6BqzN,EAAYioI,GACvC,MAAM1vC,UACFA,GACEvrT,MACJwoB,MACEA,EAAK9E,IACLA,GACEsvM,GACJm4K,eACEA,EAAczlI,cACdA,GACE6lD,EAAU0+F,0BAA0BhvD,GAE1C,GAAI1vC,EAAU6zD,UAAW,CACvBpsJ,EAAWi4L,YAAcziY,EAAMxY,UAC/BgjN,EAAWm4L,UAAYznY,EAAI1T,UAE7BgjN,EAAW79K,IAAM/gC,KAAKC,IAAI,EAAG82X,GAC7B,GAAI5/E,EAAU6/E,mBAAoB,CAEhCp4K,EAAW/rN,OAASy+P,GAiBxB/lQ,sBAAsB0lU,EAAU41B,EAAWyhD,EAAiB,OAC1D,MAAM38Y,EAAKC,MACTurT,UACEA,GACExrT,GACJgoT,SACEA,GACEwD,EACJ8gG,EAAyB3P,IAAmB,MAAQA,EAAe30F,SACnEukG,EAAyB5P,IAAmB,MAAQA,EAAenvV,SAGrE,GAAI8+V,GAA0BtkG,EAASy2C,iBAAiBn5B,GAAW,CACjE,MAAM12J,EAAM48I,EAAU7yF,WAAWuiI,GACjC,GAAItsL,GAAO29O,EAAwB,CACjC,MAAMpyX,EAAOn6B,EAAGwsZ,gBAAgBlnF,EAAU41B,GAC1C,IAAKl7V,EAAGysZ,+BAA+BtyX,GAAO,CAC5C,OAAO,KAETn6B,EAAG0sZ,6BAA6BvyX,EAAM+gU,GACtC,OAAO/gU,IAKbv6B,aAAaq0N,EAAgBkrG,EAAWw9E,EAAiB,MAAON,EAAmB0J,GACjF,MAAM/lZ,EAAKC,MACTurT,UACEA,GACExrT,GACJgoT,SACEA,GACEwD,EAEJhI,EAAa2b,EAAUzzT,QAAO,CAACU,EAAQs0K,KAErC,GAAIi8N,GAAkB30F,EAASy2C,iBAAiB/9K,GAAc,CAC5D,MAAMisO,EAAWnhG,EAAUw/F,mBAAmBtqO,EAAauzC,EAAgB,OAE3E,GAAI04L,EAAU,CACZvgZ,EAAO3N,KAAKkuZ,IAGhB,OAAOvgZ,IACN,IAELo3S,EAAWtrS,KAAK6tY,IAAgB,MAAQA,SAAqB,EAAIA,EAAc/lZ,EAAG+lZ,aAClF,IAAIt2O,EAAY+7I,EAAU+wF,yBAAyBtoL,EAAgBooL,GACnE,MAGEuQ,EAAkBppG,EAAWnlT,QAAO,EAClCqiL,YAAAA,KACIA,EAAYmkJ,UAAYnkJ,EAAYtgK,KAAKkhW,oBAC/Cr6D,EAAcuE,EAAU+vF,eAAetnL,EAAgBooL,GACvD+N,EAAgB5+F,EAAU6+F,sBAAsBpjG,GAClD,GAAImjG,EAAe,CACjB,MAAMt2C,UACFA,EAASs3B,eACTA,EAAczlI,cACdA,GACE6lD,EAAU0+F,0BAA0Bj2L,EAAgBooL,GACxDwQ,EAAgBzC,EAAc0C,YAAYF,EAAiB34L,IAAmB,EAChF,GAAIm2L,EAAct9Y,OAAS,WAAY,CACrC2iK,EAAYo9O,MACP,CACLp9O,EAAYo9O,EAAgBlnJ,GAAiBknJ,EAAgB,GAAK/4C,EAAYs3B,EAAiB,QAI9F,GAAIwhB,EAAgB7tZ,OAAS,EAAG,CACnC,IAAK,IAAIF,EAAI,EAAGA,EAAI+tZ,EAAgB7tZ,OAAQF,IAAK,CAC/C,MAAMs7B,EAAOyyX,EAAgB/tZ,GAE7Bs7B,EAAKujX,cAAgB,YAAY7+Y,EAAI,KAGzC,MAAO,CACL4wK,UAAAA,EACA+zI,WAAAA,GAIJ5jT,qBAAqBq0N,EAAgB0oL,EAAiB,OACpD,MAAM38Y,EAAKC,MACTurT,UACEA,GACExrT,GACJs1S,WACEA,EAAUF,gBACVA,EAAe4S,SACfA,GACEwD,EAEJw6F,EAAiB1wG,EAAW8S,UAAU,CACpCC,mBAAoBmD,EAAUlD,sBAC9Br0F,eAAAA,EACA7mL,UAAW46Q,EAAS56Q,UACpBC,QAAS26Q,EAAS36Q,QAClBhvC,QAAS+2S,EAAgB/oN,YAAcipN,EAAWjpN,aAAU,CAAMq0F,GAAeA,EAAY+7I,YAAY70T,MAAK9B,GAAKA,EAAEs0S,WAAanmF,EAAet+I,WAAay/N,EAAgBvpS,SAAS/F,QAIzLq5T,EAAY3T,EAAUuhG,kBAAkB94L,EAAgB+xL,IAAmB,GAC7E,OAAOhmZ,EAAGgtZ,aAAa/4L,EAAgBkrG,EAAWw9E,GAGpD/8Y,YAAYu6B,EAAMs1I,GAChB,MAAM+7I,UACFA,GACEvrT,MACJg0N,eACEA,EAAc0wG,iBACdA,EAAgBjkJ,YAChBA,GACEvmJ,EAEJm4B,EAASqyQ,EAEP1kU,KAAKm1S,gBAAgBqoB,cAAckH,EAAkBjkJ,GAAa91K,GAElEuvB,EAAKwlR,QACPstG,EAAqB,CACnBtuW,UAAWxkB,EAAKpkB,IAChBzU,MAAO64B,EAAK74B,OAAS,GACrBgmD,SAAUntB,EAAKmtB,SACf3wB,QAAS,CAGP05V,YAAa,SAEfjnU,YAAa,CACXmI,YAAa,mBAIjBy7P,EAAgB,CACdruQ,UAAWxkB,EAAK4xQ,WAChB97I,SAAU,aAAc91H,EAAOA,EAAK81H,UAAY,EAChD3oG,SAAU,CAAC2lW,KAAuB9yX,EAAK22V,iBACvCxvX,MAAO,CACL8zC,IAAKjb,EAAKsuX,YACVlzW,KAAMpb,EAAKob,KAGXruC,OAAQizB,EAAKwkU,SAAWlvL,EAAYt1I,EAAKjzB,OAIzCC,MAAOgzB,EAAKhzB,OAASgzB,EAAKjzB,OAC1B5F,MAAO64B,EAAKujX,aACZjoM,SAAUt7K,EAAKjzB,OAAS,MAE1ByvB,QAAS,CAEP8oR,WAAYxrF,EAAerpN,GAC3B+0S,QAASxlR,EAAKwlR,QAEdrtP,OAAQ2hK,EAAehgJ,SAAW,GAAG3hB,KAAU2hK,EAAerpN,KAAO0nD,GAGvE9J,YAAaruB,EAGbuuB,eAAgBi8Q,IAAqB,MAAQA,SAA0B,OAAS,EAAIA,EAAiBn1P,aAAag8O,GAAW9iQ,gBAAkBg4H,EAAYlxG,aAAag8O,GAAW9iQ,cAEnLU,YAAa,CACXmI,YAAa,cAEb6qD,iBAAkB,IAIxB,GAAIjiF,EAAKwkU,SAAU,CACjBxkU,EAAKjzB,OAASuoK,EAGhB,GAAIt1I,EAAKkhC,OAAQ,CACf2xP,EAAc3xP,OAASlhC,EAAKkhC,OAG9B,GAAIspQ,EAAkB,CACpB3X,EAAcr2R,QAAQyjX,aAAez1E,EAAiB/5T,GAExDuvB,EAAK6yR,cAAgBA,EACrBxB,EAAUh+R,QAAQ,oBAAqB,CACrCylM,WAAY94L,EACZkjB,UAAW2vQ,IAEb,OAAOA,EAQTptT,yBAAyBstZ,EAAax2V,EAAQ,KAAMk/S,EAAO,MACzD,MAAMnjS,EAASxyE,KAAKurT,UAAU3/O,MAAMiB,QAAQogV,EAAYhjL,MAAQgjL,EAAYtiZ,GAAKsiZ,GAC/Et+O,EAAM3uK,KAAKurT,UAAU10F,WAAWyN,UAAU9xJ,GAC5C,GAAI/b,EAAO,CACTz2D,KAAK4oZ,eAAe,CAACp2U,IAEvB,GAAIm8F,GAAOn8F,EAAQ,CACjBxyE,KAAK0/N,SAAS,CACZ/wD,IAAAA,EACAn8F,OAAAA,IAEF,GAAI/b,GAASk/S,EAAM,CACjB31W,KAAKsqZ,iBAKX3qZ,kBAAkBq0N,GAChB,MAAMj0N,EAAKC,KAEX,IAAI89X,EAAiB/9X,EAAGy0X,YAAY9iX,IAAIsiN,EAAerpN,IACvD,IAAKmzX,GAAkBA,EAAe92V,QAAS,CAG7C,GAAIjnC,EAAGgzB,UAAW,CAChB,OAEF+qW,EAAiB/9X,EAAGmtZ,qBAAqBl5L,EAAgB,OACzDj0N,EAAGy0X,YAAYljX,IAAI0iN,EAAerpN,GAAImzX,GAExC,OAAOA,EAETn+X,gCAAgCm+X,EAAgBnvN,EAAKr5H,EAAMF,GACzD,MAAMr1C,EAAKC,MACTynZ,WACEA,EAAUl8F,UACVA,GACExrT,GACJstL,OACEA,EAAMmoK,YACNA,GACEjqC,EAAUx5L,SAEdo7R,EAAa33D,IAAgBA,EAAY51R,UAAYytH,IAAWA,EAAOztH,WAAaytH,EAAO/3I,MAAQ+3I,EAAOj4I,OAASi4I,EAAOlyH,QAAUkyH,EAAO3vI,OAC3IsgV,EAAkB,GACpB,IAAIovB,EAASC,EAEbvvB,EAAev6E,WAAWvkT,SAAQuzI,IAChC66Q,EAAU93W,EACV+3W,EAAWj4W,EAEX,GAAI+3W,GAAc56Q,EAAOrrI,QAAU,EAAG,CACpCkmZ,GAAW3F,EACX4F,GAAY5F,EAEd,GAAIl1Q,EAAOj9F,KAAOi9F,EAAOrrI,OAASkmZ,GAAW76Q,EAAOj9F,MAAQ+3W,EAAU,CACpE96Q,EAAOi2Q,YAAcj2Q,EAAOp9F,IAAMw5H,EAAIx5H,IACtC6oV,EAAgBx/X,KAAKuB,EAAG0hZ,YAAYlvQ,EAAQurP,EAAetuN,gBAG/D,OAAOwuN,EAGTr+X,UAASgvK,IACPA,EACAn8F,OAAQwhJ,EAAcziN,KACtBA,EAAO,KAGP,GAAIyiN,EAAe3tI,aAAc,CAE/BrmF,KAAKqlZ,OAAO/rY,OAAOq1J,GACnB,OAEF,MAAM5uK,EAAKC,MACTs1C,KACEA,EAAIF,MACJA,GACEr1C,EAAG2qZ,eACP5sB,EAAiB/9X,EAAGg+X,kBAAkB/pK,GAExC,IAAK8pK,EAAgB,CACnB,OAGFvsX,EAAKtK,OAAS62X,EAAetuN,UAE7Bj+J,EAAK2wP,UAAY,KACjB,MAAM87H,EAAkBj+X,EAAGk+X,gCAAgCH,EAAgBnvN,EAAKr5H,EAAMF,GACtFr1C,EAAGslZ,OAAO/zY,IAAIq9J,EAAKqvN,GAEnBj+X,EAAGyqZ,eAAiB,KAGtB7qZ,eACE,IAAI2tZ,EACJ,MAAM/hG,UACFA,EAAS85F,OACTA,EAAM7qB,mBACNA,GACEx6X,KACJutZ,EAAyB,GACzBC,GAAWF,EAAwB/hG,EAAU36B,cAAgB,MAAQ08H,SAA+B,EAAIA,EAAwB,EAChIG,EAAUD,EAAUhzB,EACpBkzB,EAAaF,EAAUjiG,EAAU32D,eAAe3tP,OAASuzX,EACzDmzB,EAAanzB,EAAqB,EAClCozB,GAAiBriG,EAAU6/E,mBAI7Bia,EAAOrmZ,SAAQ,CAACg/X,EAAiBrvN,KAE/B,GAAIg/O,GAAch/O,EAAIt5H,OAASo4W,GAAW9+O,EAAIx5H,IAAMu4W,EAAY,CAC9D,IAAK,IAAI9uZ,EAAI,EAAGA,EAAIo/X,EAAgBl/X,OAAQF,IAAK,CAC/C,MAAMuZ,EAAS6lX,EAAgBp/X,GAC7Bs7B,EAAO/hB,EAAOowC,YAChB,GAAIolW,GAAcC,GAAiB1zX,EAAKsuX,YAActuX,EAAKjzB,OAASwmZ,GAAWvzX,EAAKsuX,YAAckF,EAAY,CAC5GH,EAAuB/uZ,KAAK2Z,KAUlC,IAAK,IAAIvZ,EAAI,EAAGA,EAAIo/X,EAAgBl/X,OAAQF,IAAK,CAC/Co/X,EAAgBp/X,GAAKF,EAAe,GAAIs/X,EAAgBp/X,QAG5DoB,KAAKutZ,uBAAyBA,EAC9BhzS,GAAQ+K,KAAK,CACXloE,UAAW,CACT6L,aAAc,KACd5B,SAAUkmW,GAEZ3rW,cAAe2pQ,EAAU0zC,iBACzB3tS,YAAa,SAEb3xD,UAASyyD,OACPA,EAAMhV,UACNA,EAASyV,cACTA,EAAajR,cACbA,IAEA,IAAIisW,EACJ,GAAIz7V,IAAW,UAAYhV,IAAc,MAAQA,SAAmB,IAAMywW,EAAwBzwW,EAAUmL,eAAiB,MAAQslW,SAA+B,GAAKA,EAAsBnQ,QAAS,CACtM,OAEF,MAGEoQ,EAAYnH,GAAsBv0V,GAClC27V,EAAWjH,GAAqB10V,GAElC,GAAI07V,GAAaj7V,IAAkB,MAAQA,SAAuB,GAAKA,EAActK,YAAa,CAChG,MAAMk4H,YACFA,EAAWuzC,eACXA,EAAc0wG,iBACdA,GACE7xQ,EAActK,YAClBp4B,EAAQ,CACN6iM,WAAYngK,EAActK,YAC1B9R,QAASmL,EACT6+H,YAAAA,EACAuzC,eAAAA,EACA0wG,iBAAAA,GAIJ,GAAI9iR,IAAkB3J,GAAUwmB,iBAAiB7c,GAAgB,CAC/D2pQ,EAAUxsP,aAAajK,QAGzBy2P,EAAUh+R,QAAQ,eAAgB4C,GAEpC,GAAI49X,EAAU,CACZ,MAAMttO,YACFA,EAAWuzC,eACXA,EAAc0wG,iBACdA,GACEtnR,EAAUmL,YACdp4B,EAAQ,CACN6iM,WAAY51K,EAAUmL,YACtB9R,QAASmL,EACTosW,iBAAkB57V,IAAW,eAC7B67V,UAAW77V,IAAW,kBACtBquH,YAAAA,EACAuzC,eAAAA,EACA0wG,iBAAAA,GAGJnZ,EAAUh+R,QAAQ,cAAe4C,OAQzCxwB,eAAeymG,GACbA,EAAetjF,GAAYm7B,QAAQmoD,GACnC,MAAM4iT,EAAc5iT,EAAav8F,IAAI8xE,GAAM6F,MAC3CwnU,EAAYhqZ,SAAQwgT,IAElB,MAAMj1S,EAASvK,KAAKw0X,YAAY9iX,IAAI8tS,GACpC,GAAIj1S,EAAQ,CACVA,EAAOy8B,QAAU,KAEnB,MAAM2nI,EAAM3uK,KAAKurT,UAAU7yF,WAAW8mF,GACtC7wI,GAAO3uK,KAAKqlZ,OAAO/rY,OAAOq1J,MAG9BhvK,UAASgpZ,SACPA,EAAW,MAAKkB,iBAChBA,EAAmB,OACjB,IACF,MAAMrO,QACJA,GACEx7Y,KAAKurT,UACT,GAAIs+F,GAAoBrO,EAAS,CAC/B,IAAK,MAAMjpQ,KAAUipQ,EAAS,CAC5BA,EAAQjpQ,GAAQ8mK,cAKpB,MAAM4lD,iBACJA,GACEj/V,KAAKurT,UACT,GAAI0zC,GAAoB0pD,EAAU,CAEhC1pD,EAAiB3sS,UAAY2sS,EAAiBpsS,cAAgB,KAC9D,IAAK,MAAM9E,KAASkxS,EAAiB53S,SAAU,CAE7C0G,EAAM8E,cAAgB9E,EAAMxF,YAAc,MAG9CvoD,KAAKw0X,YAAY/1U,QACjBz+C,KAAKqlZ,OAAO5mW,SAIhBv/C,EAAgBsoZ,GAAqB,QAAS,uBAC9CA,GAAoBt/Y,OAAS,sBAU7B,MAAMgmZ,WAAuBtmE,MAC3B/lU,2BACE,MAAO,CACLgmU,UAAW,aACXv9L,SAAU,eAId3qJ,YAAYsuB,EAAQm9R,EAAa+/E,EAAgBt3B,EAAWrwL,EAAawjI,GACvE,MAAMjnT,EAAKC,KACTgqZ,EAAahjG,EAAYn6S,KAC3B,OAAO9M,EAAGkpV,kBAAkBh7T,GAAQ,CAAC22T,EAASupE,EAAclmE,EAAMO,KAEhE,GAAIwhE,IAAe,OAAQ,CACzBplE,EAAQ19U,MAAQkkT,EAAc+/E,EAAiB,EAC/CvmD,EAAQtvS,MAAQ61V,MACX,CAELvmD,EAAQwpE,YAAc5lE,EACtB,MAAM6lE,EAAazpE,EAAQypE,WAAapmE,EAAKz/T,MAAQ2lY,EAAe3lE,EAElE8lE,EAAkBl6Y,KAAKkxB,MAAM,EAAIkjT,GAEjC+lE,EAAkBF,EAAa7lE,EAE/Bt7F,EAAiBk+D,EAAc+/E,EAAiB,EAAIt3B,GAAay6C,EAAkB,GAErF,GAAItE,IAAe,SAAWsE,IAAoB,EAAG,CACnD1pE,EAAQtvS,MAAQ+4W,EAAajjG,EAAc,EAAIyoD,EAC/CjvB,EAAQ19U,MAAQkkT,EAAcijG,EAAajjG,EAAc,EAAIyoD,EAAY,EACzEjvB,EAAQxpR,OAAS,EAAImzV,MAGlB,CAEH3pE,EAAQ19U,MAAQshV,EAAWt7F,EAE3B03F,EAAQtvS,MAAQ+4W,EAAanhK,EAAiBi+I,EAAiBt3B,EAAY06C,GAG/E3pE,EAAQ9uU,IAAI,sBAAwB8uU,EAAQ19U,MAAQnH,EAAGwrT,UAAU6vF,qBAIvE8S,GAAehmZ,OAAS,iBAKxB,MAAMsmZ,GAAsB,CACxB5H,eAAgB,EAEhBC,aAAc,GAEhB4H,GAAqB,CACnB36V,WAAY,EACZizV,gBAAiB,EACjBF,aAAc,GAEhB6H,GAAe,CACbvhX,UAAW,EACXC,QAAS,EACT9kB,SAAU,GAEZqmY,GAAc1wZ,OAAOmR,OAAO,IAM9B,MAAMw/Y,WAA0BvzY,GAAOmF,MAAMwjD,GAAWmhR,KAEtDvtU,wBACE,MAAO,CACLi3Y,SAAU,IAAIr9Y,IACdgjX,YAAa,IAAIhjX,IACjBs9Y,iBAAkB,GAClBlH,uBAAwB,IAAI/oY,IAC5BkwY,mBAAoB,GAGxBpvZ,UAAU4rT,GACRvrT,KAAK6/D,OAAS7/D,KAAKurT,UAAYA,EAC/BvrT,KAAKgvZ,eAAiB,IAAId,GAAe,CACvC3iG,UAAAA,IAEFrxS,MAAMsB,UAAU,IAElB7b,OACE,MAAMI,EAAKC,MACTurT,UACEA,EAASiC,gBACTA,GACEztT,EAENytT,EAAgBlY,cAAgBv1S,EAAGu1S,cACnCkY,EAAgBr+R,GAAG,CACjB1qB,KAAM,kBACNwqZ,kBAAmB,8BACnB3yY,QAASvc,IAEXA,EAAGmzO,YAAc,KACjB,GAAIq4E,EAAU1iL,UAAW,CACvB9oI,EAAG2/N,WAEL8tF,EAAgBtgE,eAAiBq+D,EAAU+/B,uBAAuBtoS,YAIpErjD,iBAAiBs6Y,EAAgB96Q,GAC/B,MAAMp/H,EAAKC,MACTurT,UACEA,GACExrT,EACJowB,EAAQ8pX,EAAepjW,SAAW,KAAOojW,EACzCxjW,EAAUtmB,EAAQA,EAAMxxB,OAASs7Y,EACjC1nL,EAASpiM,EAAQ,CAACA,EAAM4yB,QAAS5yB,EAAM8yB,SAAWk8E,EAElDz0E,EAAKjU,EAAQI,WAAauH,QAAQgF,UAAY3M,EAAQe,cAAgBf,EACtEs9S,EAAerpS,EAAGzG,QAAQsnQ,EAAUggC,eACtC,GAAIwI,EAAc,CAChB,OAAOxoC,EAAUjW,cAAczoO,QAAQknR,EAAar9T,QAAQ8oR,YAG9D,IAAK/oQ,EAAQwN,QAAQ,wBAAyB,CAC5C,OAAO,KAET,IAAKsuK,EAAQ,CACX,MAAM,IAAI7hN,MAAM,gLAGlB,MAAMR,EAAQkE,KAAK+oB,MAAMo1L,EAAO,GAAKxyN,EAAGytT,gBAAgBpC,aACxD,OAAOG,EAAUjW,cAActiN,MAAM9iF,GAEvCvQ,UAAU+kU,EAAkB5uT,EAAKiJ,EAAM,KAAMwrY,EAAa,OACxD,IAAI2E,EACJ,MAAMroK,GAAaqoK,EAAqBlvZ,KAAK6uZ,SAASn9Y,IAAIgzT,EAAiBhlB,YAAc,MAAQwvG,SAA4B,OAAS,EAAIA,EAAmBxqF,EAAiBllB,YAC9K,GAAI34D,EAAW,CACbA,EAAU7zB,WAAWu3L,EAAa,aAAe,OAAOz0Y,GAAOiJ,EAG/D,MAAM03B,EAAUz2C,KAAK6/D,OAAOgyS,+BAA+BntC,EAAkB6lF,GAC7E,GAAI9zW,EAAS,CACXA,EAAQmI,UAAU7/B,EAAM,MAAQ,UAAUjJ,KAMhDnW,cAAcw/H,EAAIukN,EAAgBl8Q,EAAOm6T,EAAkB,OACzD,IAAIx3E,EAAQhrL,EAAG,GACf,IAAK33D,EAAO,CACV2iP,EAAQnqT,KAAK4jY,8BAA8Bz5E,GAE7C,OAAOnqT,KAAKurT,UAAUX,kBAAkBihC,oBAAoB1hC,EAAOu5B,EAAgBi+C,GAErFhiY,8BAA8B6kC,GAC5B,OAAOA,EAAIxkC,KAAKurT,UAAU+/B,uBAAuBh0S,wBAAwBnC,IAAM/yC,WAAW4+J,QAE5FrhK,0BAA0B6kC,GACxB,OAAOA,EAAIxkC,KAAKurT,UAAU+/B,uBAAuBh0S,wBAAwBnC,IAAM/yC,WAAW4+J,QAI5FrhK,oBAAoBwwB,EAAOgqR,GACzB,IAAIg1G,EACJ,MAAMzvG,EAAUvvR,EAAMxlB,GACpB60S,EAAarF,EAASxvS,GACxB,IAAIqoN,WACFA,KACIm8L,EAAsBnvZ,KAAK6uZ,SAASn9Y,IAAIguS,MAAc,MAAQyvG,SAA6B,OAAS,EAAIA,EAAoB3vG,KAAgBmvG,GAClJ,IAAK37L,EAAY,CACf,IAAIo8L,EAAqBC,EAEzBrvZ,KAAKsvZ,eAAetvZ,KAAKurT,UAAUjW,cAAczoO,QAAQ2yO,IAEzDxsF,GAAco8L,EAAsBpvZ,KAAK6uZ,SAASn9Y,IAAIguS,MAAc,MAAQ0vG,SAA6B,OAAS,GAAKC,EAAwBD,EAAoB5vG,MAAiB,MAAQ6vG,SAA+B,OAAS,EAAIA,EAAsBr8L,WAEhQ,OAAOA,EAAa,IAAIz8K,GAAUy8K,EAAW19K,KAAM09K,EAAW79K,IAAK69K,EAAW9rN,MAAO8rN,EAAW39K,OAAS29K,EAAW79K,KAAO,KAE7Hx1C,kBAAkBq0N,EAAgBvzC,EAAaj5G,GAC7C,IAAI64S,EACJ,MAAMtgX,EAAKC,MACTurT,UACEA,GACExrT,EAEJ87N,EAAStlL,GAAUvxB,KAAKumS,EAAU+/B,uBAAwB//B,EAAU+/B,wBACtE,GAAIt3H,EAAgB,CAElB6H,EAAOvmL,KAAOv1C,EAAGu1S,cAAc7vS,QAAQuuN,GAAkBu3F,EAAUuS,oBACnEjiG,EAAOzmL,MAAQymL,EAAOvmL,KAAOi2Q,EAAUuS,oBAEzC,MAAMt1S,EAAQ+iS,EAAUxD,SAAS56Q,UAC/BzpB,EAAM6nS,EAAUxD,SAAS36Q,QACzBgjT,IAAoBiwB,EAAwB90D,EAAU2uC,sBAAwB,MAAQmmB,SAA+B,OAAS,EAAIA,EAAsBx5W,KAAK0kT,EAAWv3F,EAAgBvzC,KAAiB,CACvMj4J,MAAAA,EACA9E,IAAAA,GAEF+kJ,EAAS8iJ,EAAUg3C,sBAAsB1iU,GAAWxrB,IAAImU,EAAO4nU,EAAgB5nU,QAC/E+mY,EAAOhkG,EAAUg3C,sBAAsB1iU,GAAWlX,IAAIjF,EAAK0sU,EAAgB1sU,MAC7E,IAAK8jD,EAAO,CACVq0J,EAAO1mL,IAAMp1C,EAAGgkY,0BAA0Bt7N,GAC1CozD,EAAOxmL,OAASt1C,EAAGgkY,0BAA0BwrB,OACxC,CACL1zL,EAAO1mL,IAAMszH,EACbozD,EAAOxmL,OAASk6W,EAElB,OAAO1zL,EAETl8N,aAAaq0N,EAAgB7mL,EAAWC,GACtC,MAAMrtC,EAAKC,MACTurT,UACEA,GACExrT,EACJoE,EAAIpE,EAAGu1S,cAAc7vS,QAAQuuN,GAAkBu3F,EAAUuS,oBACzDoqF,EAAU38F,EAAUxD,SAAS56Q,UAC7Bg7W,EAAQ58F,EAAUxD,SAAS36Q,QAC3B5kB,EAAQ2kB,EAAYtN,GAAWxrB,IAAI6zY,EAAS/6W,GAAa+6W,EACzDxkY,EAAM0pB,EAAUvN,GAAWlX,IAAIw/X,EAAO/6W,GAAW+6W,EACjD1/O,EAAS8iJ,EAAUg3C,sBAAsB/5U,GACzC+mY,EAAOhkG,EAAUg3C,sBAAsB7+U,EAAK,KAAM,MAClD8gB,EAAIpwB,KAAKuU,IAAI8/I,EAAQ8mP,GACrBtoZ,EAASmN,KAAK41B,IAAIy+H,EAAS8mP,GAC7B,OAAO,IAAIh5W,GAAUpyC,EAAGqgC,EAAG+mR,EAAUuS,oBAAqB72T,GAE5DqtV,uBACE,MAAM/oC,EAAYvrT,KAAKurT,UACrBz9J,EAAYy9J,EAAUjoM,WAAW9+E,EACjCv9B,EAASskT,EAAUjoM,WAAW/qE,aAC9BpL,EAAYo+Q,EAAUglC,sBAAsBziM,IAAcy9J,EAAUxD,SAAS56Q,UAC7EC,EAAUm+Q,EAAUglC,sBAAsBziM,EAAY7mJ,IAAWskT,EAAUxD,SAAS36Q,QACtF,MAAO,CACLD,UAAAA,EACAC,QAAAA,EACA0+R,QAAS3+R,EAAUn9B,UACnB2xU,MAAOv0S,EAAQp9B,WAMnBrQ,6BAA4BuH,MAC1BA,EAAKmmI,SACLA,IAEA,MAAMttI,EAAKC,MACTurT,UACEA,GACExrT,EAENA,EAAGytT,gBAAgBtmT,MAAQqkT,EAAU/mE,eAAet9O,MAAQnH,EAAGu1S,cAActxR,MAAQ9c,EACrFnH,EAAG2oZ,WAEH3oZ,EAAG+4L,QAAQ1kL,KAAK41B,IAAI9iC,EAAQmmI,GAAY,IAO1C1tI,gBAAgB4rG,GACdrxF,MAAMorU,gBAAgB/5O,GACtB,GAAIA,EAAS,CACXA,EAAQp8E,GAAG,CACT1qB,KAAM,UACNq0L,QAAS,mBACTx8K,QAAStc,QAIfL,mBACE,MAAMI,EAAKC,MACTurT,UACEA,EAASq8F,uBACTA,GACE7nZ,EAEN,GAAIwrT,EAAU3gQ,UAAW,CACvB,GAAI2gQ,EAAU1tL,WAAa0tL,EAAUpjE,iBAAkB,CAErD,GAAIpoP,EAAGmzY,oBAAqB,CAC1BnzY,EAAG2oZ,WAEH3oZ,EAAG+4L,UACH/4L,EAAGmzY,oBAAsB,WAGtB,GAAI0U,EAAuBr2Y,KAAM,CACpCxR,EAAG+4L,UAEL8uN,EAAuBnpW,aAItB,CACH8sQ,EAAU70B,YAAY,UAAW60B,EAAW,CAAC,QAKjD5rT,mBAAmB01S,GACjBn7R,MAAMsrU,mBAAmBnwC,GACzBr1S,KAAKkzY,oBAAsB,KAC3B,GAAI79F,EAAY,CACdA,EAAWlmR,GAAG,CACZ1qB,KAAM,aACNskZ,iBAAkB,sBAClBzsY,QAAStc,QAIfL,qBAAoByyD,OAClBA,IAEA,GAAIA,IAAW,QAAS,CACtBpyD,KAAKkzY,oBAAsB,MAG/BvzY,oBAAmByyD,OACjBA,EACA6f,QAASiyP,EAAe,GAAE1xP,OAC1BA,EAAM2Y,SACNA,EAAQ5Y,QACRA,EAAOuyP,SACPA,IAEA,MAAM/kU,EAAKC,KACTgpZ,EAAc,IAAInqY,IACpBqlT,EAAallU,SAAQyhL,IACnBA,EAAYk8I,UAAU39T,SAAQg1N,GAAkBg1L,EAAYjqY,IAAIi1M,EAAerpN,SAEjF,OAAQynD,GAEN,IAAK,OACL,IAAK,QACL,IAAK,OACL,IAAK,SAEH,OACF,IAAK,UACHryD,EAAGyvZ,+BACH,OACF,IAAK,MACL,IAAK,iBAEH,MACF,IAAK,UAEHrkU,EAASnsF,SAAQ,EAAC,CAAGylT,MAEnBA,EAASkY,UAAU9yT,KAAImqN,GAAkBg1L,EAAYjqY,IAAIi1M,EAAerpN,SAG1E5K,EAAG6oZ,eAAeI,GAClB,MACF,IAAK,YACL,IAAK,SAGHjpZ,EAAG2oZ,WACH3oZ,EAAG+4L,UACH,OACF,IAAK,SACH,CAEE,MAAM0wN,EAAYh3U,EAAOi3U,SAAWxrZ,OAAOD,KAAKu0E,GAAS5qE,MAAKlD,IAAS+tE,EAAOi3U,QAAQl5L,SAAS9rN,MAAUxG,OAAOD,KAAKu0E,GAAS5qE,MAAKlD,IAASiqZ,GAAajqZ,KAEzJ,IAAIgrZ,EAAc,EAClB,GAAI,cAAel9U,EAASk9U,IAC5B,GAAI,YAAal9U,EAASk9U,IAC1B,GAAI,aAAcl9U,EAASk9U,IAE3B,IAAKjG,GAAaiG,EAAa,CAC7B1vZ,EAAG6oZ,eAAeI,GAClBjpZ,EAAG+4L,UAEL,QAGN/4L,EAAGqpZ,0BAA0BJ,GAI/BrpZ,sBAAsB21S,GACpB,MAAMv1S,EAAKC,KACXka,MAAMqrU,sBAAsBjwC,GAC5Bv1S,EAAGmzY,oBAAsB,KACzB,GAAInzY,EAAGytT,gBAAiB,CACtBztT,EAAGytT,gBAAgBlY,cAAgBA,EAErCA,EAAcnmR,GAAG,CACf1qB,KAAM,gBACNs7F,gBAAiB,wBACjBgpT,iBAAkB,yBAElBl7S,KAAM,IAAM9tG,EAAGwrT,UAAUmkG,aACzBpzY,QAASvc,EACT8sB,KAAM,IAGR,GAAI9sB,EAAGmzO,aAAenzO,EAAGwrT,UAAU1iL,UAAW,CAE5C9oI,EAAGsrT,cAAgBtrT,EAAGurT,aAAe,KACrCvrT,EAAG2oZ,WACH3oZ,EAAG2/N,YAGP//N,uBACEZ,OAAQu2S,EAAaljP,OACrBA,EAAM6f,QACNA,EAAU,GAAEO,OACZA,EAAM2Y,SACNA,EAAQ5Y,QACRA,IAEA,MAAMxyE,EAAKC,KAETuwU,EAAkBplP,EAAWA,EAASthF,KAAIqmB,GAAKA,EAAE,KAAM+hD,EACvD+2U,EAAc,IAAInqY,IAAI0xT,EAAgB1mU,KAAImqN,GAAkBA,EAAerpN,MAE7E5K,EAAGsrT,cAAgBtrT,EAAGurT,aAAe,KAErC,GAAIvrT,EAAGwrT,UAAU1V,cAAe,CAC9B,OAAQzjP,GACN,IAAK,SACH,GAAImgB,IAAY,MAAQA,SAAiB,GAAKA,EAAQ5nE,GAAI,CACxD5K,EAAG6oZ,eAAe,CAACr2U,EAAQ5nE,GAAGkP,SAAU04D,EAAQ5nE,GAAGpL,YAC9C,CACLQ,EAAG6oZ,eAAe,CAACp2U,EAAO7nE,KAG5B,MACF,IAAK,SAGH5K,EAAG2oZ,WACH,MAIJ,GAAIn2U,GAAW,gBAAiBA,EAAS,CACvCxyE,EAAG2oZ,WAEL3oZ,EAAG+4L,QAAQ,UAGR,CACH,OAAQ1mI,GACN,IAAK,UACL,IAAK,SACL,IAAK,YACHryD,EAAGyvZ,+BACH,OACF,IAAK,UACL,IAAK,MACH,CAEE,MAAMG,EAAap/E,EAAgB9kU,QAAO,CAACyE,EAAOsiE,IAAWp+D,KAAKuU,IAAIzY,EAAOolS,EAAc7vS,QAAQ+sE,KAAU8iO,EAActxR,OAC3H,IAAK,IAAIplB,EAAI+wZ,EAAY/wZ,EAAI02S,EAActxR,MAAOplB,IAAK,CACrDoqZ,EAAYjqY,IAAIu2R,EAActiN,MAAMp0F,GAAG+L,MAI/C5K,EAAGqpZ,0BAA0BJ,IAGjCrpZ,wBAAuByyD,OACrBA,IAEA,MAAMryD,EAAKC,KACX,GAAIoyD,IAAW,QAAS,CACtB,MAAM,IAAI1hD,MAAM,wDAElB,GAAI0hD,IAAW,OAAQ,CAErBryD,EAAGsrT,cAAgBtrT,EAAGurT,aAAe,KACrCvrT,EAAG2oZ,WACH3oZ,EAAG+4L,WAKPn5L,wBAAwBw1S,GACtBj7R,MAAM8pT,wBAAwB7uB,GAC9Bn1S,KAAKkzY,oBAAsB,KAC3B,GAAI/9F,EAAiB,CACnBA,EAAgBhmR,GAAG,CACjB1qB,KAAM,kBACNs7F,gBAAiB,0BACjBgpT,iBAAkB,2BAClBzsY,QAAStc,QAIfL,yBAAwByyD,OACtBA,EACA6f,QAASqpS,EAAoB,GAAEnwR,SAC/BA,EAAQ5Y,QACRA,IAEA,MAAMxyE,EAAKC,KACTgpZ,EAAc,IAAInqY,IAAIy8V,EAAkBzxW,KAAI66T,GAAoBA,EAAiBllB,cAEnF,GAAIz/S,EAAGwrT,UAAU1V,cAAe,CAC9B,OAAQzjP,GACN,IAAK,SACHryD,EAAG6oZ,eAAeI,GAClB,MACF,IAAK,SACHjpZ,EAAG2oZ,WACH,MACF,IAAK,SACH,CAEE,GAAI,eAAgBn2U,EAAS,CAC3By2U,EAAYjqY,IAAIwzD,EAAQitO,WAAW3lS,UAGrC,IAAK5b,OAAOD,KAAKu0E,GAASn0E,QAAOmY,GAASA,IAAU,YAAcA,IAAU,UAASzX,OAAQ,CAC3F,OAEFiB,EAAG6oZ,eAAeI,IAGxBjpZ,EAAG+4L,QAAQ,UAGR,CACH,GAAIvmH,GAAW,eAAgBA,EAAS,CACtCy2U,EAAYjqY,IAAIwzD,EAAQitO,WAAW3lS,UAErC,OAAQu4C,GACN,IAAK,YACHryD,EAAGyvZ,+BACH,OACF,IAAK,UAEHrkU,EAASnsF,SAAQ,EAAEqqZ,EAAe5qC,MAChCuqC,EAAYjqY,IAAIsqY,EAAc7pG,YAC9BwpG,EAAYjqY,IAAI0/V,EAAcj/D,eAGpCz/S,EAAGqpZ,0BAA0BJ,IAGjCrpZ,0BAAyByyD,OACvBA,EAAM6f,QACNA,IAEA,GAAI7f,IAAW,QAAS,CACtBpyD,KAAK0oZ,WACL1oZ,KAAKwvZ,gCAKT7vZ,YAAY0zY,GACV,GAAIA,EAAgB,CAClBrzY,KAAK0oZ,WACL1oZ,KAAKurT,UAAUqkG,oBAAsB,OAIzCjwZ,yBAAyBq0N,GACvBh0N,KAAK6vZ,eAAe77L,GAEtBr0N,2BAA2BohK,GACzB,GAAIA,IAAY/gK,KAAK8vZ,YAAa,CAChC9vZ,KAAK0/N,WACL1/N,KAAK8vZ,YAAc/uP,GAGvBphK,2BACEK,KAAK0/N,WAEP//N,uBAAuBq0N,EAAgBpnN,GACrC,MAAM2+S,UACFA,GACEvrT,KACJmE,EAAIonT,EAAUjW,cAAc7vS,QAAQuuN,GAAkBu3F,EAAUuS,oBAClE,OAAOvS,EAAUq8E,qBAAqBzjY,EAAGyI,GAG3CjN,iBAAiBuH,GACflH,KAAKwtT,gBAAgBtgE,eAAiBhmP,EACtClH,KAAK0/N,WAEP8tF,sBACE,OAAOxtT,KAAKurT,UAAU/mE,eAAegpE,gBAGvC7tT,iBACEK,KAAK0oZ,WAGP/oZ,eACAA,2BACAA,6BACAA,mBACAA,sBASAA,sBAAsB8gL,GACpB,MAAO,MAQT9gL,oBAAoB8gL,GAClB,MAAO,SAST9gL,0BAA0BqpZ,GACxBhpZ,KAAK4oZ,eAAeI,GACpBA,EAAYhqZ,SAAQ2L,GAAM3K,KAAK4nZ,uBAAuB7oY,IAAIpU,KAM5DhL,+BACEK,KAAK0oZ,WACL1oZ,KAAKkzY,oBAAsB,KAI7B6c,oBACE,OAAO/vZ,KAAKkkW,iBAAiB,MAG/Bp3C,uBACE,MAAMxhR,MACJA,EAAKlF,KACLA,GACEpmC,KAAKkkW,mBACT,MAAO,CACL54T,MAAOtrC,KAAKs1S,cAActiN,MAAM1nD,GAChClF,KAAMpmC,KAAKs1S,cAActiN,MAAM5sD,IAGnCzmC,iBAAiBqwZ,GACf,MAAMzkG,UACFA,EAASjW,cACTA,GACEt1S,MACJ89T,oBACEA,EAAmB/8J,QACnBA,GACEwqJ,GACJ/yQ,YACEA,GACE+yQ,EAAUmjC,gBAAgBprO,WAC9ByrS,EAAqBiB,EAAahwZ,KAAK+uZ,mBAAqB,EAC5DkB,EAAgBlvP,EAAUguP,EAC1BmB,EAAcnvP,EAAUvoH,EAAcu2W,EACxC,KAAMz5G,IAAkB,MAAQA,SAAuB,GAAKA,EAActxR,OAAQ,CAChF,MAAO,CACLsnB,OAAQ,EACRlF,MAAO,GAIX,GAAImlR,EAAUQ,qBAAsB,CAClC,IAAIzgR,EACFlF,EACA5d,EACA9E,EAAM,EACR4xR,EAAct2S,SAAQ,CAACm7S,EAAUv7S,KAC/Bu7S,EAAS5qO,aAAag8O,GAAW0B,WAAazkS,EAAQ9E,EACtDA,EAAM8E,EAAQ2xR,EAASiR,YACvB,GAAI5iS,EAAQ0nY,EAAa,CACvB,OAAO,MAET,GAAIxsY,EAAMusY,GAAiB3kX,GAAS,KAAM,CACxCA,EAAQ1sC,OACH,GAAI4pB,EAAQ0nY,EAAa,CAC9B9pX,EAAOxnC,MAGX,MAAO,CACL0sC,MAAAA,EACAlF,KAAAA,OAIC,CACH,MAAO,CACLkF,MAAOl3B,KAAKC,IAAID,KAAK+oB,MAAM4jI,EAAU+8J,GAAuBixF,EAAoB,GAChF3oX,KAAMhyB,KAAKuU,IAAIvU,KAAK+oB,OAAO4jI,EAAUwqJ,EAAUmjC,gBAAgBxnV,OAAS42T,GAAuBixF,EAAoBz5G,EAActxR,MAAQ,KAK/Iu8V,gBACE,MAAMh1D,UACJA,GACEvrT,KACJ,IAAImwZ,EAAa5kG,EAAUglC,sBAAsBn8U,KAAKuU,IAAI4iS,EAAUt0Q,UAAYs0Q,EAAUviD,WAAauiD,EAAUkwB,SAAW,GAAIlwB,EAAU56B,qBAAuB46B,EAAUjoM,WAAW7rE,cAAgB,IAGtM,IAAK04W,EAAY,CACfA,EAAa5kG,EAAUxD,SAAS3hR,KAAKgH,QAEvC,IAAIgjX,EAAU7kG,EAAUglC,sBAAsBn8U,KAAKC,IAAIk3S,EAAUt0Q,UAAYs0Q,EAAUkwB,SAAU,IAEjG,IAAK20E,EAAS,CACZA,EAAU7kG,EAAUxD,SAASz8Q,MAAM6B,UACnCgjX,EAAa5kG,EAAUglC,sBAAsBhlC,EAAUviD,WAAauiD,EAAUkwB,SAAW,GAE3F,MAAO,CACL20E,QAAAA,EACAD,WAAAA,GAGJxwZ,sBAAsB8gL,EAAauzC,EAAgB0oL,EAAiB,OAClE,IAAIiP,EACJ,MAAM5rZ,EAAKC,MACTurT,UACEA,GACExrT,GACJ2f,SACEA,EAAQC,UACRA,GACE8gK,GACJsrI,qBACEA,GACER,EACJgqC,IAAmBo2D,EAAwBpgG,EAAUx5L,SAASyjO,eAAiB,MAAQm2D,SAA+B,OAAS,EAAIA,EAAsBvrV,UAAYrgE,EAAGswZ,yBAA2B3wY,GAAYC,KAAe8gK,EAAYkgJ,YAC1O2V,EAAiBif,EAAiB,gBAAkB,YACpDhf,EAAegf,EAAiB,cAAgB,UAKhDpoT,EAAYszI,EAAY9vG,iBAAmB8vG,EAAYggJ,iBAAiB6V,KAAoBif,EAAiB90K,EAAY/uK,IAAI4kU,GAAkB71J,EAAY61J,GAC3JlpS,EAAUqzI,EAAY9vG,iBAAmB8vG,EAAYggJ,iBAAiB8V,KAAkBgf,EAAiB90K,EAAY/uK,IAAI6kU,GAAgB91J,EAAY81J,GACrJ40D,EAAiB5/E,EAAU8wF,kBAAkBroL,GAC7C7+K,EAAMo2Q,EAAUg3C,sBAAsBp1T,GACtCoiC,EAAeykJ,EAAezkJ,aAAag8O,GAI3Cj2Q,EAAOy2Q,EAAuBx8O,EAAa09O,WAAaltT,EAAGu1S,cAAc7vS,QAAQuuN,GAAkBu3F,EAAUuS,oBAC7G48C,EAAgBnvD,EAAUywF,iBAAiBhoL,GAC3C9sN,EAAQwzW,EAAgBywB,EAAiB,EACzC1kE,EAAct5R,EAAUn9B,UACxBwyT,EAAYp1R,EAAQp9B,UACtB,IAAIqlC,EAASk2Q,EAAUg3C,sBAAsBn1T,GAC3CnmC,EAASouC,EAASF,EAEpB,GAAIE,KAAY,EAAG,CACjBpuC,EAASmN,KAAKkxB,OAAOk9R,EAAYiE,GAAelb,EAAUX,kBAAkB2lE,sBAAsB,gBAClGl7U,EAASF,EAAMluC,EAEjB,MAAO,CACLw5K,YAAAA,EACAuzC,eAAAA,EACA1+K,KAAAA,EACAH,IAAAA,EACAE,OAAAA,EACAqlU,cAAAA,EACAxzW,MAAAA,EACAD,OAAAA,EACAkmC,UAAAA,EACAC,QAAAA,EACAq5R,YAAAA,EACAjE,UAAAA,EACA+yB,eAAAA,EACAluS,SAAU,GAEV7+B,MAAO2kB,EACPzpB,IAAK0pB,EACL0+R,QAASrF,EACTkb,MAAOnf,GAMX7iU,YAAYkG,EAAGye,GACb,MAAM0mY,EAASnlZ,EAAEyqZ,aAAezqZ,EAAE4gU,YAEhCykF,EAAOrlZ,EAAE0qZ,WAAa1qZ,EAAE28T,UACxB4oF,EAAS9mY,EAAEgsY,aAAehsY,EAAEmiT,YAC5B4kF,EAAO/mY,EAAEisY,WAAajsY,EAAEk+S,UACxB8oF,EAAQzlZ,EAAE4oE,QAAU5oE,EAAEpB,KAAOoB,EAAE46K,YAAYh8K,KAC3C8mZ,EAAQjnY,EAAEmqD,QAAUnqD,EAAE7f,KAAO6f,EAAEm8J,YAAYh8K,KAC7C,OAAOumZ,EAASI,GAAUC,EAAOH,IAASI,EAAQC,GAAS,EAAID,GAASC,EAAQ,EAAI,GAItF5rZ,eAAeq0N,GACb,MAAMj0N,EAAKC,MACTurT,UACEA,GACExrT,GACJgsT,qBACEA,GACER,GAEF5gT,GAAI60S,GACFxrF,EACJzkJ,EAAeykJ,EAAezkJ,aAAag8O,IAE3CpW,gBACEA,EAAeE,WACfA,EAAU0S,SACVA,GACEwD,EAEJv1S,EAAQjW,EAAGy0X,YAAYljX,IAAIkuS,EAAY,IAAI9tS,IAAI8tS,GAE/CgxG,EAAgBjlG,EAAUjW,cAAc7vS,QAAQuuN,IAChD6/I,UACEA,EAASs3B,eACTA,GACE5/E,EAAU0+F,0BAA0Bj2L,GAE1C,IAAI/lM,EAASonR,EAAW8S,UAAU,CAChCC,mBAAoBmD,EAAUlD,sBAC9Br0F,eAAAA,EACA7mL,UAAW46Q,EAAS56Q,UACpBC,QAAS26Q,EAAS36Q,QAClBhvC,QAAS+2S,EAAgB/oN,YAAcipN,EAAWjpN,aAAU,CAAMq0F,GAAeA,EAAY+7I,YAAY70T,MAAK9B,GAAKA,EAAEs0S,WAAanmF,GAAkBmhF,EAAgBvpS,SAAS/F,QAG/KooB,EAASs9R,EAAUuhG,kBAAkB94L,EAAgB/lM,GACrD,MAAMwiY,EAAaxiY,EAAOxiB,QAAO,CAACilZ,EAAUjwO,KAC1C,GAAIA,EAAY6+I,YAAa,CAC3B,MAAMtsG,EAAau4F,EAAUw/F,mBAAmBtqO,EAAauzC,EAAgB,OAE3E6yB,EAAY,CACV7zB,WAAAA,GAEF29L,EAAiB3/W,GAAa4/W,WAAW7wZ,EAAG8uZ,SAAU77L,EAAW0sF,QAAS,IAG5EixG,EAAenxG,GAAc34D,EAE7B7wO,EAAMg9M,EAAW0sF,SAAW74D,EAE5B,GAAI7zB,EAAW0rI,SAAU,CAGvB1rI,EAAW19K,KAAOy2Q,EAAuBx8O,EAAa09O,WAAaujG,EAAgBjlG,EAAUuS,oBAC7F9qG,EAAW9rN,MAAQqkT,EAAUywF,iBAAiBhoL,OAG3C,CACH08L,EAASlyZ,KAAKw0N,IAGlB,OAAO09L,IACN,IAEHD,EAAWx4Y,KAAKlY,EAAG+lZ,aAEnB/lZ,EAAGivZ,eAAenC,YAAY4D,EAAYllG,EAAUywF,iBAAiBhoL,GAAiBm3K,EAAgBt3B,EAAW28C,EAAejlG,EAAU+vF,eAAetnL,IACzJ,OAAOh+M,EAOTrW,wBAAwB8gL,GACtB,MAAM8qI,UACFA,GACEvrT,KACJgzN,EAAau4F,EAAUw/F,mBAAmBtqO,EAAaA,EAAY05H,SAAU,CAC3E4N,SAAU,KACVx6P,SAAU,OAEdylK,EAAW79K,IAAM69K,EAAWrkD,IAAMqkD,EAAW79K,IAAM69K,EAAWrkD,IAAIx5H,IAAMo2Q,EAAU+1F,oBAAoB7gO,EAAaA,EAAY05H,SAAU,MAAMhlQ,IAC/I,MAAMiI,EAAYp9C,KAAKyhZ,YAAY,CAC/BzuL,WAAAA,KAEFt8L,QACEA,GACE0mB,SACCA,EAAU4yG,gBACVt5H,EAAQgpR,eACRhpR,EAAQ8oR,kBACR9oR,EAAQyjX,oBACRzjX,EAAQ27B,OACf37B,EAAQwrO,UAAY,KACpB9kN,EAAU9qC,OAAStS,KAAKurT,UAAU0zC,iBAGlC7hT,EAAUqL,cAAgB,KAC1B,MAAMt8C,EAAS8rC,GAAU72C,cAAcg8C,GACvCjxC,EAAOq2I,aAAer2I,EAAOmsD,WAC7BmoH,EAAYlxG,aAAag8O,GAAW2yD,wBAA0B,KAC9D,OAAO/xW,EAKTxM,YAAYknP,GAEV,MAAM0kE,UACFA,GACEvrT,KACJk6B,EAAO2sN,EAAU7zB,YACjBgB,eACEA,EAAc0wG,iBACdA,EAAgBjkJ,YAChBA,GACEvmJ,EAEJ6yR,EAAgB,CACdruQ,UAAWxkB,EAAK4xQ,WAChB97I,UAAW,EACX3oG,SAAU,CAAC,CACT3I,UAAWxkB,EAAKpkB,IAChBzU,OAAQ64B,EAAK22X,eAAiB,KAAO32X,EAAK74B,OAAS,IACnDgmD,SAAUntB,EAAKmtB,SACf3wB,QAAS,CAGP05V,YAAa,SAEfjnU,YAAa,CACXmI,YAAa,sBAEXp3B,EAAK22V,iBACXxvX,MAAO,CACL8zC,IAAKjb,EAAKib,IACVx1C,CAAC4rT,EAAU91Q,IAAM,QAAU,QAASvb,EAAKob,KAEzCruC,OAAQw5K,EAAYkgJ,YAAc,MAAQzmS,EAAKjzB,OAC/CC,MAAOgzB,EAAKhzB,MACZ7F,MAAO64B,EAAKujX,cAAgB,GAC5BjoM,SAAU/0B,EAAYkgJ,YAAcvsT,KAAKuU,IAAIuR,EAAKhzB,MAAO,IAAM,MAEjEwvB,QAAS,CAEP8oR,WAAYxrF,EAAerpN,GAC3B+0S,QAASxlR,EAAKwlR,QAGdrtP,OAAQqyQ,EAAmB1kU,KAAKm1S,gBAAgBqoB,cAAckH,EAAkBjkJ,GAAa91K,GAAKuvB,EAAKwlR,SAGzGn3P,YAAas+L,EAGbp+L,eAAgBi8Q,GAAoBjkJ,GAAalxG,aAAavvE,KAAKurT,WAAW9iQ,cAE9EU,YAAa,CACXmI,YAAa,cAEb6qD,iBAAkB,IAGxB4wM,EAAcruQ,UAAU,kBAAoB,EAE5C,GAAIxkB,EAAKkhC,OAAQ,CACf2xP,EAAc3xP,OAASlhC,EAAKkhC,OAG9B,GAAIspQ,EAAkB,CACpB3X,EAAcr2R,QAAQyjX,aAAez1E,EAAiB/5T,GAExD3K,KAAKurT,UAAUh+R,QAAQ,oBAAqB,CAC1CylM,WAAY94L,EACZkjB,UAAW2vQ,IAGblmE,EAAUkmE,cAAgBA,EAC1B,OAAOA,EAETptT,eAAeq0N,GACb,MAAMj0N,EAAKC,MAET8wZ,UACEA,EAASC,aACTA,GACEhxZ,EAEJixZ,EAAc,GAChB,IAAIC,EAAgBlxZ,EAAGy0X,YAAY9iX,IAAIsiN,EAAerpN,IAEtD,IAAKsmZ,EAAe,CAClBA,EAAgBlxZ,EAAGuvZ,eAAet7L,GAGpC,IAAK,MAAM0rF,KAAWuxG,EAAe,CACnC,MAAMpqK,EAAYoqK,EAAcvxG,IAC9B8iB,UACEA,EAASiE,YACTA,EAAWhmJ,YACXA,GACEomE,EAAU7zB,WAChB,GAEAwvG,GAAasuF,GAAarqF,GAAesqF,IAExCtwO,EAAYlxG,aAAaxvE,EAAGwrT,WAAW2yD,wBAAyB,CAC/D8yC,EAAYxyZ,KAAKuB,EAAG0hZ,YAAY56J,KAGpC,OAAOmqK,EAETrxZ,eAAey9C,GACb,MAAMsB,EAAYtB,GAAaA,EAAUsB,UACzC,OAAOA,GAAaA,EAAU1+C,KAAKurT,UAAU4tC,SAAW,SAI1Dx5V,WACE,MAAMI,EAAKC,MACTurT,UACEA,GACExrT,GACJu1S,cACEA,GACEiW,GAGFjgR,MAAO+/Q,EACPjlR,KAAMklR,GACJvrT,EAAGgwZ,eAEPK,QACEA,EAAOD,WACPA,GACEpwZ,EAAGwgX,UACPywC,EAAc,GACdE,EAAoB,GAGtB,IAAKnxZ,EAAGmzO,cAAgBq4E,EAAU1V,gBAAkB0V,EAAUjuO,WAAY,CACxE,OAGF,IAAKz9C,GAAW2L,QAAQ4kX,EAASrwZ,EAAGqwZ,WAAavwX,GAAW2L,QAAQ2kX,EAAYpwZ,EAAGowZ,YAAa,CAE9FpwZ,EAAGqwZ,QAAUA,EACbrwZ,EAAGowZ,WAAaA,EAChBpwZ,EAAG+wZ,UAAYV,EAAQpgZ,UACvBjQ,EAAGgxZ,aAAeZ,EAAWngZ,UAC7B,MAAM+hL,EAAQhyL,EAAGqjW,SAASrxK,MAAQ,CAChC5kJ,UAAWijX,EACXhjX,QAAS+iX,GAEX5kG,EAAUo/F,yBAAyB54N,GAErC,GAAIs5H,KAAmB,GAAKC,KAAkB,EAAG,CAE/C,IAAK,IAAI1sT,EAAIysT,EAAezsT,GAAK0sT,EAAc1sT,IAAK,CAClDoyZ,EAAYxyZ,KAAKC,MAAMuyZ,EAAajxZ,EAAG8vZ,eAAev6G,EAActiN,MAAMp0F,MAG9E2sT,EAAU4lG,wBAAwBD,GAClCF,EAAYxyZ,KAAKC,MAAMuyZ,EAAaE,GACpC32S,GAAQ+K,KAAK,CACXloE,UAAW,CACT6L,aAAc,KACd5B,SAAU2pW,GAEZpvW,cAAe2pQ,EAAU0zC,iBACzB3tS,YAAa,SAEb3xD,UAASyyD,OACPA,EAAMhV,UACNA,EAASyV,cACTA,EAAajR,cACbA,IAGA,GAAI7hD,EAAGqxZ,eAAeh0W,GAAY,CAChC,MAGE0wW,EAAYU,GAAoBp8V,GAChC27V,EAAWU,GAAmBr8V,GAEhC,GAAI07V,GAAa/tZ,EAAGqxZ,eAAev+V,KAAmBA,EAAcqnD,WAAY,CAC9E,MAAMhgF,EAAO24B,EAActK,YAAYyqK,WACrC7iM,EAAQ,CACN6iM,WAAY94L,EACZwqS,iBAAkBxqS,EAAKwqS,iBACvBjkJ,YAAavmJ,EAAKumJ,YAClBuzC,eAAgB95L,EAAK85L,eACrBv9K,QAASmL,GAIb,GAAIA,IAAkB3J,GAAUwmB,iBAAiB7c,GAAgB,CAC/D2pQ,EAAUxsP,aAAajK,QAGzBy2P,EAAUh+R,QAAQ,eAAgB4C,GAEpC,GAAI49X,EAAU,CACZ,MAAM7zX,EAAOkjB,EAAUmL,YAAYyqK,WACjC7iM,EAAQ,CACN6iM,WAAY94L,EACZwqS,iBAAkBxqS,EAAKwqS,iBACvBjkJ,YAAavmJ,EAAKumJ,YAClBuzC,eAAgB95L,EAAK85L,eACrBv9K,QAASmL,EACTosW,iBAAkB57V,IAAW,eAC7B67V,UAAW77V,IAAW,mBAE1BjiC,EAAMkhY,eAAiBj/V,IAAW,eAElCm5P,EAAUh+R,QAAQ,cAAe4C,QAMzC,GAAIpwB,EAAGsrT,gBAAkBA,GAAiBtrT,EAAGurT,eAAiBA,EAAc,CAE1E,MAAMv5H,EAAQhyL,EAAGytT,gBAAgBV,iBAAmB,CAClDzB,cAAAA,EACAC,aAAAA,GAGFvrT,EAAGsrT,cAAgBA,EACnBtrT,EAAGurT,aAAeA,EAClBC,EAAU+lG,6BAA6Bv/N,GACvCw5H,EAAUh+R,QAAQ,sBAAuBwkK,IAG7CpyL,QAAQ29H,GACNt9H,KAAKurT,UAAU8sE,mBAAkB,IAAMr4X,KAAK0/N,YAAYpiG,GAG1D39H,iBAAiBqpZ,GACfhpZ,KAAK4oZ,eAAeI,GACpBhpZ,KAAK84L,UAGPn5L,yBAAyBstZ,EAAax2V,EAAQ,KAAMk/S,EAAO,MACzD31W,KAAK6oZ,iBAAiB,CAACoE,EAAYtiZ,KAErChL,gBAGAyjW,eACE,OAAOpjW,KAAKurT,UAAU63C,SAKxBzjW,eAAeqpZ,GACb,MAAMx0B,YACJA,EAAWq6B,SACXA,GACE7uZ,KACJgpZ,EAAYhqZ,SAAQwgT,IAClB,GAAIg1E,EAAYv2W,IAAIuhS,GAAa,CAG/BvhT,OAAO4N,OAAO2oX,EAAY9iX,IAAI8tS,IAAaxgT,SAAQ,EACjDg0N,YACE0sF,QAAAA,cAGKmvG,EAASn9Y,IAAIguS,GAASF,MAE/Bg1E,EAAYl7W,OAAOkmS,OAIzB7/S,WACEK,KAAKw0X,YAAY/1U,QACjBz+C,KAAK6uZ,SAASpwW,SAKlBmwW,GAAkB1mZ,OAAS,oBAK3B,MAAMqpZ,GAAqB,CACzB/yX,MAAO,aACPoF,KAAM,CAAC,iBAAkB,gCACzBpG,IAAK,gBAiEP,MAAMm3W,WAAsBzG,GAAa1tX,MAAMi5S,GAAiBq/E,GAAaU,GAAcY,GAAoBiF,GAAiBwB,GAAiBgB,GAAgBvH,GAAyBoH,GAAkBM,GAAgBoC,GAAiBzL,KAE3O5qY,mBACE,MAAO,gBAGTlB,kBACE,MAAO,gBAETrN,0BACE,MAAO,CAoBLg9B,KAAM,CACJj9B,MAAO,KACPiiB,QAAS,CACPlK,MAAO,SAYXorU,SAAU,OAQV3wJ,MAAO,OAiDPmoK,mBAAoB,KA2CpBg3C,uBAAwB,GAsBxBsgB,sBAAuB,KAEvBC,wBAAyB,uBACzBnlE,mBAAoB,SAGxBzqU,2BACE,MAAO,CAMLsiC,KAAM,aAQNg1S,SAAU,cAQVk1C,YAAa,sBAQbjI,wBAAyB,oBAOzBjsC,aAAc,KAMd3qL,UAAW,GAyBXkiP,wBAAyB,IACzB9R,iBAAkB5lE,GAClB/3T,WAAY,CACV48J,cAAe,CACbnvD,UAAW,GACXI,UAAW,KAmMnBnwH,iBACE,MAAMI,EAAKC,KACXka,MAAMuB,iBACN1b,EAAGovB,GAAG,SAAUpvB,EAAG4xZ,iBAAkB5xZ,GACrC,GAAIA,EAAGyxZ,sBAAuB,CAC5BzxZ,EAAGovB,GAAG,mBAAoBpvB,EAAG6xZ,yBAKjCjyZ,mBAOAisE,YACE,OAAO1xD,MAAM0xD,MAEfA,UAAUA,GACR1xD,MAAM0xD,MAAQA,EAShBkhP,uBACE,IAAI+kG,EAAqBC,EACzB,MAAM/xZ,EAAKC,KACX,GAAID,EAAGkpT,WAAY,CACjB,OAAOlpT,EAAGooN,mBAAmB2kG,iBAE/B,MAAO,CACLxhR,MAAOvrC,EAAG6rE,MAAMiB,SAASglV,EAAsB9xZ,EAAG4uO,mBAAqB,MAAQkjL,SAA6B,OAAS,EAAIA,EAAoBlnZ,IAC7Iy7B,KAAMrmC,EAAG6rE,MAAMiB,SAASilV,EAAqB/xZ,EAAGmlQ,kBAAoB,MAAQ4sJ,SAA4B,OAAS,EAAIA,EAAmBnnZ,KAK5IhL,iBACEK,KAAKmoN,mBAAmBs8J,iBACxBvqW,MAAMuqW,iBAER9kX,wBACE68B,KAAM2Q,EAAS6mL,eACfA,EAAcrlD,IACdA,IAEA,MAAM5uK,EAAKC,KACX,GAAID,EAAG84E,UAAYm7I,EAAe3tI,cAAgB2tI,EAAen7I,SAAU,CACzE,OAEF94E,EAAG+yX,YAAY3lV,EAAW6mL,EAAgBrlD,GAE5ChvK,kBAAiBs3C,UACfA,IAEAj3C,KAAKmoN,mBAAmB8/K,yBAAyBhxV,GAQnDt3C,eAAe8gL,IAUf2qK,mBACE,OAAOprV,KAAKmkD,OAAS,aASvB8kQ,iBACE,OAAOjpT,KAAKmkD,OAAS,WAQvBA,WACE,OAAOnkD,KAAKiqV,MAEd9lS,SAASA,GACP,MAAMpkD,EAAKC,KACXD,EAAGkqV,MAAQ9lS,EACX,IAAKpkD,EAAGokD,GAAO,CACbpkD,EAAG02C,QAAQmI,UAAU7/B,IAAI,SAASolC,KAClC,GAAIA,IAAS,aAAc,CACzBpkD,EAAGi6C,WAAa,IAAIwtW,GAAoBznZ,GACxC,GAAIA,EAAG8oI,UAAW,CAChB9oI,EAAGi6C,WAAWklC,aAEX,GAAI/6B,IAAS,WAAY,CAC9BpkD,EAAGsiH,SAAW,IAAIusS,GAAkB7uZ,GACpC,GAAIA,EAAG89H,SAAU,CACf99H,EAAGsiH,SAASnjC,UAKpBipI,yBACE,OAAOnoN,KAAKA,KAAKmkD,MAKnBxkD,iBAAiBwwB,GACf,OAAOjW,MAAMugQ,iBAAiBtqP,GAEhCxwB,eAAewwB,GACb,OAAOjW,MAAMmgY,eAAelqX,GAE9BxwB,mBAAmBwwB,GACjB,OAAOjW,MAAM+rX,mBAAmB91W,GAElCxwB,kBAAkBwwB,GAChB,OAAOjW,MAAMqsX,kBAAkBp2W,GAKjCxwB,oBACAA,kCAEAA,wBAEAA,uBAEAA,gCAEAA,0BAEAA,yBAGA+hX,qBACE,MAAM7kB,UACJA,EAASrC,SACTA,EAAQ+vB,gBACRA,GACEvqX,KAAK+xH,SACT,OAAO7xH,SAAS28V,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAUz8R,WAAao6R,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASp6R,WAAamqT,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBnqT,UAG3PzgE,UAAU8gL,EAAauzC,EAAgBv9K,GACrC,MAAM12C,EAAKC,MACTq1S,WACEA,EAAUF,gBACVA,GACEp1S,EAEN,IAAKA,EAAG2hX,eAAgB,CACtB,OAAO,MAET,GAAIjhM,EAAY40H,aAAeA,EAAY,CACzC,MAAMuX,sBACFA,GACE7sT,EACJwwU,EAAkB,GAGpB9vJ,EAAYnjG,WAAa,KACzB,IAAIg+R,EAAoB,GACxB,GAAItnJ,EAAgB,CAClBu8G,EAAgB/xU,KAAKw1N,GACrBsnJ,EAAoBnmE,EAAgBuqB,sBAAsBj/I,EAAauzC,GAGzE,GAAIj0N,EAAGwtB,QAAQ,iBAAkB,CAC/BkzJ,YAAAA,EACA8vJ,gBAAAA,EACA+qC,kBAAAA,MACK,MAAO,CAEZnmE,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBrzS,OAAOw5W,GACzF,OAAO,MAETv7W,EAAG6sT,sBAAwB,MAC3BvX,EAAWt2R,IAAI0hK,GACf1gL,EAAGwrG,QAAQ6wJ,cAAc3rP,MAAK,IAAM1Q,EAAG6sT,sBAAwBA,IAE/D7sT,EAAGu6O,eAmBP36O,kBAAkBwtC,EAAW6mL,GAC3B,IAAI+9L,EAAqBC,EAAoBC,EAC7C,MAAMlyZ,EAAKC,MACT4sT,sBACEA,EAAqB76L,SACrBA,EAAQsjL,WACRA,EAAUF,gBACVA,GACEp1S,EACJwwU,EAAkB,CAACv8G,GACnBk+L,EAAwBnyZ,EAAGyxZ,sBAAsBU,sBACjDh6Q,EAAkBg6Q,EAAwB78G,EAAW96N,WAAWoD,cAAcr1D,SAAW,EACzF6pY,EAAsBD,EAAwB78G,EAAW96N,WAAWoD,cAAcmgO,aAAe/9S,EAAGgoT,SAAS9/Q,KAC7Gw4I,EAAc40H,EAAW3mO,aAAa,CACpCvhC,UAAAA,EACAC,QAASvN,GAAW9gB,IAAIouB,EAAW+qG,EAAiBi6Q,GACpD7pY,SAAU4vH,EACV4lK,aAAcq0G,EACd1tZ,KAAM1E,EAAGo7B,EAAE,wBAEbi3X,EAAqBlyZ,UAAU6xZ,EAAsBhgS,EAAS8qO,aAAe,MAAQk1D,SAA6B,OAAS,EAAIA,EAAoB3xV,YAAc4xV,EAAqBjgS,EAASyoO,YAAc,MAAQw3D,SAA4B,OAAS,EAAIA,EAAmB5xV,YAAc6xV,EAAwBlgS,EAASw4P,mBAAqB,MAAQ0nC,SAA+B,OAAS,EAAIA,EAAsB7xV,UACja,GAAIrgE,EAAG84E,UAAYm7I,EAAe3tI,eAAiBtmF,EAAGo6V,eAAiBp6V,EAAGk+T,qBAAqBx9I,EAAYtzI,UAAWszI,EAAYrzI,QAAS,KAAM4mL,GAAiB,CAChK,OAIFvzC,EAAYnjG,WAAa80U,EACzBryZ,EAAGuhX,eAAe7gM,GAClB,MAAM66L,EAAoBnmE,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBuqB,sBAAsBj/I,EAAauzC,GAU/I,GAAIj0N,EAAGwtB,QAAQ,iBAAkB,CAC/BkzJ,YAAAA,EACA8vJ,gBAAAA,EACA+qC,kBAAAA,MACK,MAAO,CAEZnmE,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBrzS,OAAOw5W,GACzF,OAEFv7W,EAAG6sT,sBAAwB,MAC3BvX,EAAWt2R,IAAI0hK,GACf1gL,EAAGwrG,QAAQ6wJ,cAAc3rP,MAAK,IAAM1Q,EAAG6sT,sBAAwBA,IAI/D7sT,EAAGu9E,WAAa,KAChBv9E,EAAGu6O,cACHv6O,EAAGu9E,WAAa,MAQhBv9E,EAAGwtB,QAAQ,mBAAoB,CAC7BkzJ,YAAAA,EACAuzC,eAAAA,IAEF,GAAIo+L,EAAoB,CACtBryZ,EAAGsrX,UAAU5qM,EAAauzC,EAAgBj0N,EAAGsyZ,gBAAgB5xO,KAYjE9gL,qBAAqB6oB,EAAO9E,EAAKu7S,EAAc9kB,GAC7C,OAAOn6S,KAAKq1S,WAAW4oB,qBAAqBz1S,EAAO9E,EAAKu7S,EAAc9kB,GAwBxEx6S,oBAAoB4tB,GAClBrT,MAAM2iP,cAAc,OACpB,MAAM98P,EAAKC,KACX,IAAKD,EAAGooP,kBAAoB56N,EAAS,CAEnC,IAAKxtB,EAAG81S,cAAe,CAGrB91S,EAAGooN,mBAAmB+qL,oBAAsB,KAC5C,OAAOnzY,EAAGwrG,QAAQ6wJ,cAGpB,IAAKr8P,EAAGmc,YAAa,CAEnBnc,EAAGy7W,0BAMT77W,kBACE,MAAMI,EAAKC,KACX,GAAID,EAAG8wO,cAAe,CACpB,IAAIyhL,EACJr6W,GAAU28G,cAAc70J,EAAG8wO,cAAe,iBAAkB9wO,EAAGu1S,cAActxR,MAAQ,IAAMsuY,EAAkBvyZ,EAAGm8P,eAAiB,MAAQo2J,SAAyB,GAAKA,EAAgBjgV,aAK3L1yE,aAAaq0N,GACX,GAAIh0N,KAAKorV,aAAc,CACrB,MAAMnkV,EAASjH,KAAKmoN,mBAAmBoqM,mBAAmBv+L,GAC1Dh0N,KAAK62N,WAAWgqC,iBAAiB7sC,EAAerpN,GAAI1D,GACpD,OAAOA,GAIXtH,oBAAoB4wU,EAAiBr6S,EAAS,OAE5Cq6S,EAAgBvxU,SAAQg1N,GAAkBA,GAAkBh0N,KAAK8hQ,aAAa9tC,KAC9E,IAAK99L,EAAQ,CACXl2B,KAAK62N,WAAWo8C,oBAAoB,OAIxCtzQ,uBAAuBu2B,EAAS,OAC9B,MAAM01C,MACFA,EAAKirJ,WACLA,GACE72N,KACJgkB,EAAQ5P,KAAKuU,IAAIijD,EAAM5nD,MAAOhkB,KAAK0xZ,yBAErC,GAAI1tY,EAAO,CACT6yM,EAAW69C,oBACX,IAAK,IAAI91Q,EAAI,EAAGA,EAAIolB,EAAOplB,IAAK,CAE9BoB,KAAK8hQ,aAAal2L,EAAMonB,MAAMp0F,IAGhC,IAAKs3B,EAAQ,CACX2gM,EAAWo8C,oBAAoB,QAcrC8lI,iBACE,MAAMh5Y,EAAKC,KACT8K,EAAM,CAAC/K,EAAGotC,WACZ,GAAIptC,EAAGgyL,QAAU,OAAQ,CACvBjnL,EAAItM,KAAKuB,EAAG8hU,UAEd,OAAO/2T,EAETsuY,+BACE,OAAOmY,GAAmBvxZ,KAAK+xL,OAUjC8vI,eACE,MAAMA,EAAW7hU,KAAKotC,QAGtB,OAAOy0R,GAAYhiS,GAAW9gB,IAAI8iT,GAAW,EAAG,OAElDliU,eAAehB,GACbA,EAASs5C,GAAUo6W,gBAAgB1zZ,GACnC,OAAOqB,KAAKs1V,mBAAmB32V,GAEjCgB,gBAAgB8gL,GACd,OAAOzgL,KAAK0nW,0BAA0BjnL,GAExC9gL,YAAYsoC,GACV,OAAOpI,GAAW0J,cAActB,GAElCtoC,YAAYsoC,GACV,IAAKjoC,KAAKwd,cAAe,CACvB,MAAMg1Y,EAAcxyZ,KAAKw8B,KACvB2kJ,EAAUnhL,KAAKw8B,KAAOqD,GAAW2I,QAAQgqX,EAAavqX,GAExD,GAAIuqX,EAAYxiZ,YAAcmxK,EAAQnxK,UAAW,CAC/ChQ,KAAK4iL,WAAWzB,KAItBxhL,eAAesoC,GACb,OAAOpI,GAAW0J,cAActB,GAElCtoC,WAAWwhL,GACT,MAAMphL,EAAKC,KACTwoB,EAAQqX,GAAW2I,QAAQ24I,EAASphL,EAAGgyL,OACzChyL,EAAGqhV,YAAY54T,EAAOqX,GAAW9gB,IAAIyJ,EAAO,EAAGzoB,EAAGgyL,QAElDhyL,EAAGqsY,YAAc,CACf5vW,KAAMqD,GAAWxrB,IAAI8sK,EAASphL,EAAGgoT,SAAS56Q,WAC1CyS,MAAO,QACPyjE,QAAS,MAEXtjH,EAAGwtB,QAAQ,qBAEb5tB,WACEK,KAAKw8B,KAAOqD,GAAW9gB,IAAI/e,KAAKw8B,MAAO,EAAGx8B,KAAK0iV,UAEjD/iV,OACEK,KAAKw8B,KAAOqD,GAAW9gB,IAAI/e,KAAKw8B,KAAM,EAAGx8B,KAAK0iV,UAchD/iV,qBAAoBwtC,UAClBA,EAASszI,YACTA,EAAWuzC,eACXA,EAAcv9K,QACdA,IAEA,MAAM12C,EAAKC,KAEX,IAAKD,EAAGs1S,WAAWzpS,SAAS60K,GAAc,EACvCA,GAAe1gL,EAAGs1S,WAAWt2R,IAAI0hK,GAEpCA,EAAYtzI,UAAYA,EACxBszI,EAAYrpK,OAAO48M,GACnB,GAAIv9K,EAAS,CACX,MAAMg8W,EAAYl8W,GAAUvxB,KAAKyxB,EAAS12C,EAAGk/V,kBAE7ChnT,GAAU6d,eAAerf,EAAS,EAAG,GACrCwB,GAAUinU,WAAWzoU,EAASg8W,EAAUjuX,EAAGiuX,EAAUtuZ,GACrDo2G,GAAQ1oD,SAAS9xD,EAAGk/V,iBAAkBxoT,EAASgqI,EAAY+7I,YAAY,GAAG7xT,UAEtE5K,EAAGwrG,QAAQ6wJ,eAIrBl9P,EAAgBy1Y,GAAe,aAAc,CAC3ChP,iBAAkB,uBAClB+sB,0BAA2B,6BAE7B/d,GAAc/9T,YAEd+9T,GAAczsY,OAAS,gBAsDvB,MAAMyqZ,WAA8B75X,GAAY02O,KAC9C3tP,2BACE,MAAO,CAML+wY,kBAAmB,KAiBnBC,aAAc,CAAC,CACb5nZ,KAAM,OACNsL,MAAO,QACN,CACDtL,KAAM,SACNsL,MAAO,YACPrP,MAAO,KACN,CACD+D,KAAM,OACNsL,MAAO,UACPrP,MAAO,MAaT4rZ,YAAa,MAGjBnzZ,UAAUwY,EAAS,MAAOoD,GACxBrB,MAAMsB,UAAUrD,KAAWoD,GAC3B,IAAKvb,KAAK8yZ,YAAa,CACrB9yZ,KAAK8yZ,YAAc,CAACjtZ,EAAGye,IAAMze,EAAEw/E,WAAa/gE,EAAE+gE,YAGlD1lF,iBAAiBwY,GACf+B,MAAM41P,iBAAiB33P,GACvBA,EAAO06Y,aAAe16Y,EAAO06Y,aAAahpZ,KAAI42N,IAC5C,UAAWA,IAAQ,SAAU,CAC3B,MAAO,CACLlqN,MAAOkqN,OAEJ,CACL,OAAOA,MAIb9gO,mBAAmBwY,GACjB,MAAMpY,EAAKC,KACTsf,EAActf,KAAKrB,kBAAkBg2Y,GACrCnnF,EAAkBztT,EAAGiwQ,gBAAgB73P,GACrC06Y,EAAevzY,EAAcvf,EAAGgzZ,qBAAqB56Y,GAAU,GAC/D4rL,EAAUypH,EAAgB7mS,OAAOksY,GACjCnjP,EAAO3vK,EAAGkwQ,aAAa93P,GACzB,MAAO,CACL4rL,QAAAA,EACAr0B,KAAAA,GAGJ/vK,qBAAqBwY,GACnB,OAAOA,EAAO06Y,aAAahpZ,KAAIktM,GAAU/2M,KAAKgzZ,mBAAmBj8M,EAAQ5+L,KAE3ExY,mBAAmBo3M,EAAQ5+L,GACzB,MAAMjR,MACFA,EAAKoyC,SACLA,GACEy9J,GACJ04D,mBACEA,GACEt3P,EACN,MAAO,CACL5B,MAAOwgM,EAAOxgM,MACdhX,MAAOw3M,EAAO9rM,KACd/D,MAAOkN,KAAKC,IAAInN,GAASuoQ,EAAoBn2N,GAAYm2N,GACzDwjJ,YAAa,KACbpmZ,KAAM7M,KAAKqwQ,cAAct5D,EAAQ/2M,KAAKrB,OAAO02S,aAGjD11S,aAAawY,GACX,MAAMpY,EAAKC,MACTrB,OACEA,GACEoB,EACN,IAAIoM,EACJ,KAAMxN,aAAkBg2Y,IAAgB,CACtCxoY,EAAS+N,MAAM+1P,aAAa93P,OACvB,CACLhM,EAAS,GAETxN,EAAO22S,cAAczrS,KAAImqN,IAEvB,MAAM/lM,EAAS+lM,EAAe/lM,QAAU,GAExCA,EAAOhW,KAAKlY,EAAG+yZ,aAEf,IAAK7kY,EAAOnvB,OAAQ,CAClBmvB,EAAOzvB,KAAK,IAEdyvB,EAAOjvB,SAAQyhL,GAAet0K,EAAO3N,KAAKuB,EAAGmzZ,WAAW/6Y,EAAQ67M,EAAgBvzC,SAElF,GAAItoK,EAAOy6Y,mBAAqBz6Y,EAAO06Y,aAAa/zZ,OAAQ,CAC1D,MAAMq0Z,EAAoBx0Z,EAAO02S,WAAW/2O,OAAMmiH,IAAgBA,EAAYk8I,UAAU79T,SACxF,GAAIq0Z,EAAkBr0Z,OAAQ,CAE5B,MAAMo0P,EAAQ,IAAI3rP,MAAM4Q,EAAO4rL,QAAQjlM,QAAQopM,KAAK,IACpDgrD,EAAM10P,KAAKuB,EAAGo7B,EAAE,0CAChBhvB,EAAO3N,KAAK00P,GAEZigK,EAAkBn0Z,SAAQyhL,GAAet0K,EAAO3N,KAAKuB,EAAGmzZ,WAAW/6Y,EAAQ,KAAMsoK,OAIrFt0K,EAASA,EAAO/N,QAAO80P,GAASA,EAAMp0P,SAExC,OAAOqN,EAETxM,WAAWwY,EAAQgiS,EAAUhqR,GAC3B,MAAM4zK,QACFA,EAAO8uN,aACPA,GACE16Y,EACJ+6O,EAAQ,GACRkgK,EAAgBpzZ,KAAK2uE,cAAcwrO,EAAUp2G,EAAS5rL,GAExDi7Y,GAAiBlgK,EAAM10P,QAAQ40Z,GAC/B,IAAKj5G,IAAaA,EAAS9zN,aAAc,CACvC,MAAMgtU,EAAarzZ,KAAK2uE,cAAcx+C,EAAO0iY,EAAc16Y,GAE3Dk7Y,GAAcngK,EAAM10P,QAAQ60Z,GAE9B,OAAOngK,GAGXy/J,GAAsBzqZ,OAAS,wBAwE/B,MAAMqwY,WAAsB9nI,GAC1B1iQ,mBACE,MAAO,gBAET8T,2BACE,MAAO,CAOL+rP,cAAe+kJ,GAKf5lJ,eAAgB,OAItBwrI,GAAcrwY,OAAS,gBACvBijO,GAAmB2F,gBAAgBynK,GAAe,MAAO,aAuWzD,MAAMxtK,WAAkB4pK,GACtB5mY,mBACE,MAAO,YAGTlB,kBACE,MAAO,aAIXk+N,GAAUn0J,YACVm0J,GAAU7iO,OAAS,YAYnB,MAAMorZ,WAAqBtrS,GACzBj6G,mBACE,MAAO,eAETlB,kBACE,MAAO,eAETrN,0BACE,MAAO,CAML+rG,QAAS,KAOT0sF,aAAc,QAOd0E,WAAY,MACZ5oE,wBAAyB,MACzB85D,SAAU,OAGdluL,cAAc4rG,GACZ,IAAIgoT,EACJ,IAAKA,EAAwBhoT,EAAQ0lN,UAAUpjN,QAAU,MAAQ0lT,SAA+B,GAAKA,EAAsB3tZ,IAAK,CAC9H5F,KAAKT,MAAQgsG,EAAQ0lN,UAAUpjN,KAAKjoG,KAGxCjG,UAASJ,MACPA,EAAKg2I,WACLA,IAEA,GAAIA,GAAcv1I,KAAKurG,QAAS,CAC9BvrG,KAAKurG,QAAQ0lN,UAAUpjN,KAAKjoG,IAAMrG,EAClCS,KAAKurG,QAAQsC,SAKnBylT,GAAa18U,YACb08U,GAAaprZ,OAAS,eAgBtB,MAAMsrZ,WAAuBrpS,GAC3Bp8G,mBACE,MAAO,iBAGTlB,kBACE,MAAO,iBAET+b,uBACE,MAAO,CACLoyN,YAAa,OAGjBx7O,0BACE,MAAO,CAML61S,WAAY,KACZn9G,YAAa,KACbC,uBAAwB,KACxBqB,QAAShnH,GAAUpoE,EAAaY,WAAWwnE,EAAO/tE,MAAQ,IAS1DgvZ,aAAc,IAAM,MAGxB9zZ,YAAY6yE,EAAQ5zE,GAClB,MAAM6pT,WACFA,GACEj2O,EAEJ18D,EAAMmiC,GAAUu8K,aAAai0F,GAAc,qBAAqBA,IAAe,GAE/EpnT,GAASyU,GAAO2yS,EAAa,iBAAiBA,KAAgB,GAChE,OAAOzoT,KAAKk4L,YAAc,qCAAqCpiL,KAAOzU,WAAiB,GAEzF1B,iBAAiB01S,GACf,IAAIq+G,EAAuB76N,EAC3B,MAAM94L,EAAKC,KAET2zZ,GAAsBD,EAAwB3zZ,EAAGwd,cAAcquD,SAAW,MAAQ8nV,SAA+B,GAAKA,EAAsBv4U,QAAUp7E,EAAGwd,cAAcquD,MAAMruD,eAAiBs7K,EAAY94L,EAAG6rE,SAAW,MAAQitH,SAAmB,OAAS,EAAIA,EAAU1gL,QAE1Qm9R,cACEA,GACED,EACJzpO,EAAQ7rE,EAAG6rE,MAAQ0pO,EAAc70O,MAAM1gE,EAAG0zZ,aAAc,KAAM/0Z,EAAeA,EAAe,GAAIi1Z,GAAqB,GAAI,CACvHj0T,UAAW,QAEbk0T,EAAkB,CAChBxuU,OAAQ,gBACR9oE,QAASvc,GAGb6rE,EAAMt9C,GAAGslY,GACTt+G,EAAcnmR,GAAGykY,GACjB,IAAKt+G,EAActxR,MAAO,CACxBsxR,EAAc/pM,QAAQp8E,GAAG,CACvB1qB,KAAM,UACNq0L,QAAS,aACTx8K,QAASvc,QAEN,CACLA,EAAG8zZ,cAGPl0Z,mBAAmB8zZ,GAEjB,MAAM1zZ,EAAKC,KACX,OAAO,SAAUkwB,GACf,OAAOujY,EAAa5sZ,KAAK9G,EAAImwB,IAGjCvwB,aACE,MAAM01S,WACJA,EAAU38G,SACVA,GACE14L,KACJ,GAAIq1S,EAAWrxR,OAASqxR,EAAWC,cAActxR,MAAO,CAGtD,IAAKhkB,KAAK+6L,iBAAkB,CAC1BrC,EAAS35K,IAAI/e,KAAK4rE,MAAMk0B,YAE1B9/F,KAAKupE,gBAAgB,YAGzB5pE,gBACEZ,OAAQ6sE,EAAKxZ,OACbA,IAKA,GAAIA,IAAW,UAAYpyD,KAAK8zZ,eAAgB,CAC9C,MAAMA,eACFA,GACE9zZ,MACJ4/D,SACEA,GACEk0V,EACJ97M,GAAepsI,EAAMwgB,YAAcpsF,KAAKy5L,YAC1C,GAAIue,IAAgBp4I,EAAU,CAC5Bk0V,EAAel0V,SAAWo4I,EAC1Bh4M,KAAKg7O,eAGT9gO,MAAM2gM,kBAAkBh8M,WAE1Bc,mBACEZ,OAAQ25L,EAAQ7jH,MAChBA,EAAK3xD,QACLA,IAGA,MAAMnjB,EAAKC,KAGT4/D,GAAY7/D,EAAG6rE,MAAMwgB,YAAcrsF,EAAG05L,YACxCv/K,MAAMq0L,qBAAqB1vM,WAI3B,IAAKkB,EAAG+zZ,eAAgB,CAItB/zZ,EAAG+zZ,eAAiB/zZ,EAAGs1S,WAAWj/M,UAAU,CAC1CzrF,GAAI,GAAG5K,EAAG4K,qBACVw9E,SAAUnkF,IAAMA,EAAEm2S,UAAYp6S,EAAG24L,SAAS9sL,SAAS5H,EAAE24T,WACrD/8P,SAAAA,GACC,MACH,OAGF7/D,EAAG+zZ,eAAel0V,SAAWA,EAE7B7/D,EAAGi7O,cACH,GAAIj7O,EAAGmuB,eAAek3D,OAAQ,CAC5B,MAAM7lF,EAAQm5L,EAAS7sL,OACrBgO,EAAWta,EAAMonB,OAAOzD,GAC1BJ,GAAYhhB,OAAO+X,EAAUg7D,GAQ7B90E,EAAGwzL,mBAAmB,CACpBh0L,MAAAA,EACAsa,SAAAA,KASNta,YACE,OAAOS,KAAK04L,SAAS7sL,OAEvBlM,cACEK,KAAKq1S,WAAWj3S,UAIpBo1Z,GAAe58U,YACf48U,GAAetrZ,OAAS,iBAmBxB,MAAM6rZ,WAA4BxqS,GAChCx7G,mBACE,MAAO,sBAETlB,kBACE,MAAO,aAETrN,0BACE,MAAO,CAWLw0Z,WAAY,KAMZ3+G,WAAY,MAGhB11S,UAAUwY,GAGR,GAAI,WAAYA,EAAQ,CACtBA,EAASzZ,EAAeA,EAAe,GAAIyZ,GAAS,GAAI,CACtD67Y,WAAY77Y,EAAO8V,gBAEd9V,EAAO8V,OACdvb,EAAcuC,UAAUvC,EAAc,YAAc,WAAa,YAAa,QAAS,wDAEzFwH,MAAMsB,UAAUrD,GAElBxY,YACEK,KAAKi0Z,mBACL,OAAO/5Y,MAAMgtL,aAAaroM,WAE5Bc,iBAAiBq0Z,EAAYE,GAC3B,MAAMn0Z,EAAKC,MACT4+C,UACEA,GACE7+C,EAAG4hH,eACT,IAAI0zL,WACFA,GACEt1S,EACJA,EAAG02C,QAAQmI,UAAU8X,OAAO,2BAA4Bx2D,QAAQ8zZ,IAChEA,GAAcp1W,EAAU7/B,IAAI,iBAAiBi1Y,KAC7Cp1W,EAAU98C,OAAO,iBAAiBoyZ,KAClC,GAAIF,EAAY,CACd,IAAK3+G,EAAY,CACf,MAAM8+G,EAAkBp0Z,EAAG6+D,IAAG36B,GAAKA,EAAEoxQ,aACrC,GAAI8+G,EAAiB,CACnB9+G,EAAa8+G,EAAgB9+G,eACxB,CACL,MAAM,IAAI3kS,MAAM,6DAGf,CACL3Q,EAAG49X,UAAY,KAEjB,IAAK59X,EAAGyd,cAAe,CACrBzd,EAAG81X,iBAAiBxgF,GACpBt1S,EAAGmnM,aAGPvnM,mBACE,MAAMI,EAAKC,KACX,GAAID,EAAGi0Z,WAAY,CACjBj0Z,EAAG49X,UAAY59X,EAAGs1S,WAAW++G,eAAe,CAC1CjnX,UAAWptC,EAAGotC,UACdC,QAASrtC,EAAGqtC,QACZyxR,QAAS9+T,EAAG49X,aAIlBh+X,iBAAiB01S,GAEf,GAAIA,EAAW9lR,aAAa,SAAU,UAAWvvB,SAAW,EAAG,CAC7D,IAAI8lU,EACJzwB,IAAe,MAAQA,SAAoB,OAAS,GAAKywB,EAAczwB,EAAWr1S,KAAKg0Z,WAAa,KAAO,SAAW,MAAQluF,SAAqB,OAAS,EAAIA,EAAYj/T,KAAKwuS,EAAY,CAC3LjwN,OAAQ,UACR9oE,QAAStc,QAIfL,cAAawnM,KACXA,EAAI3qK,KACJA,IAEA,IAAI63X,EAAmBC,EACvB,MAAMN,WACFA,GACEh0Z,KACJgkB,GAASqwY,EAAoBr0Z,KAAKu0Z,eAAiB,MAAQF,SAA2B,OAAS,GAAKC,EAAwBD,EAAkB3iZ,OAAS,MAAQ4iZ,SAA+B,OAAS,EAAIA,EAAsBztZ,KAAKwtZ,EAAmBx0X,GAAWsgJ,QAAQ3jJ,IAC9Q,GAAIxY,EAAO,CACTi0B,GAAU72C,cAAc,CACtBs1B,QAAS,CACP1S,MAAAA,GAEF9D,MAAO,CACLvgB,CAACq0Z,IAAe,QAAU,sBAAwB,wBAAyB,EAC3Er0Z,CAACo0Z,GAAoBS,mBAAmBxwY,IAAS,GAEnD1R,OAAQ60L,EACRxnM,CAACq0Z,IAAe,QAAU,OAAS,IAAKhwY,KAI9CrkB,0BAA0BqkB,GACxB,GAAIA,EAAO,CACT,GAAIA,EAAQ,EAAG,CACb,MAAO,6BAET,GAAIA,EAAQ,EAAG,CACb,MAAO,6BAET,MAAO,8BAET,MAAO,GAETrkB,kBAAkBwgB,GAEhBA,EAAKq3D,YAAc,KACnBt9D,MAAMkG,WAAWD,IAIrB4zY,GAAoBn9U,YACpBm9U,GAAoB7rZ,OAAS,sBAK7B,MAAMusZ,GAAoBxwX,GAAKA,EAAEwwX,kBAuCjC,MAAMtpS,WAAiBk3E,GACrBt0L,mBACE,MAAO,WAETlB,kBACE,MAAO,WAETrN,0BACE,MAAO,CAcL+rT,UAAW,KAaXhgN,QAAS,MAGb5rG,YACEua,MAAMsB,aAAa3c,WAEnB,IAAKmB,KAAK2rE,IAAK,CACb3rE,KAAKurT,UAAYvrT,KAAK4+D,GAAG61V,KAG7B90Z,gBAAgB4rT,GACd,OAAOA,EAAUkpG,kBAAoBlpG,EAAYpgM,GAASt+C,QAAQ0+O,GAEpE5rT,gBAAgB4rT,GACd,MAAMrvD,YACJA,GACEqvD,EACJ,GAAIrvD,EAAa,CACfA,EAAY/sO,GAAG,CACb0+E,KAAM,oBACNvxF,QAAStc,WAIR,CACHA,KAAK00Z,oBAEP10Z,KAAK2rE,IAAM4/O,EAAUhgN,QAAQ5/B,IAE/BhsE,gCAEQK,KAAKurT,UAAUhgN,QAAQ6wJ,cAE7B,IAAKp8P,KAAKkc,YAAa,CACrBlc,KAAK2rE,IAAI0pB,SACTr1F,KAAKkjM,sBAIX/3E,GAASv0C,YACTu0C,GAASjjH,OAAS,WAkDlB,MAAMysZ,WAAwB3sS,GAC5BroH,YACEua,MAAMsB,aAAa3c,WACnBmB,KAAKurT,UAAUp8R,GAAG,CAChB6qV,aAAch6W,KAAK40Z,qBACnBt4Y,QAAStc,OAIburT,gBACE,OAAOvrT,KAAK6/D,QAAU7/D,KAAK4+D,IAAG8iD,GAAUA,EAAOs8O,kBAAmB1xS,GAAOgS,OAAMojD,GAAUA,EAAOs8O,iBAGlGr+V,cAAc28U,GACZt8U,KAAK4rE,MAAQ5rE,KAAKurT,UAAU+wB,QAAQ77Q,OAAMvwC,GAAKosT,EAAQ1wU,SAASskB,EAAEvlB,MAClE3K,KAAK4rE,MAAM3zD,MAAK,CAACpS,EAAGye,IAAMg4T,EAAQ72U,QAAQI,EAAE8E,IAAM2xU,EAAQ72U,QAAQ6e,EAAE3Z,MAGtEhL,sBAAqB68U,OACnBA,IAEA,MAAMz8U,EAAKC,KACX,IAAKD,EAAG80Z,aAAc,CACpB90Z,EAAG+jM,eAAiB,KAEpB,GAAI/jM,EAAG6rE,MAAMhgE,SAAS4wU,EAAO7xU,IAAK,CAChC5K,EAAGR,MAAQi9U,MAGR,CACHz8U,EAAG0+C,QAEL1+C,EAAG+jM,eAAiB,OAGxBnkM,UAAS6yE,OACPA,IAEA,IAAKxyE,KAAK8jM,eAAgB,CACxB,MAAMynH,UACFA,GACEvrT,MACJ87U,SACEA,EAAQtzT,MACRA,EAAK40T,YACLA,GACE5qQ,EACN+4O,EAAU/uD,iBACVx8P,KAAK60Z,aAAe,KACpBtpG,EAAU/B,WAAah3O,EACvBxyE,KAAK60Z,aAAe,MACpB,GAAI/4E,GAAYsB,EAAa,CAC3B,IAAI03E,EAAch5E,EAClB,GAAItzT,UAAgBA,IAAU,SAAU,CACtC,IAAIusY,EACJD,GAAeC,EAAwBl1X,GAAWkO,cAAcvlB,MAAY,MAAQusY,SAA+B,EAAIA,EAAwBvsY,EAEjJ,IAAI2kB,EAAYtN,GAAW2I,QAAQ+iR,EAAUp+Q,UAAW2nX,GACxD,GAAItiV,EAAOhqD,cAAgBA,IAAU,SAAU,CAC7C2kB,EAAYtN,GAAW9gB,IAAIouB,EAAW3kB,EAAOszT,GAE/C,MAAM1uS,EAAUvN,GAAW9gB,IAAIouB,EAAWiwS,EAAatB,GACvDvwB,EAAU61B,YAAYj0S,EAAWC,GAEnCm+Q,EAAUv0Q,WAAa,EACvBu0Q,EAAU1uD,cAAc,OAI5Bl9P,qBACEua,MAAMsf,qBACNx5B,KAAKkzL,uBAITh0L,EAAgBy1Z,GAAiB,QAAS,mBAC1Cz1Z,EAAgBy1Z,GAAiB,OAAQ,mBACzCz1Z,EAAgBy1Z,GAAiB,eAAgB,CAQ/Cr4E,QAAS,CAAC,aAAc,aAAc,eAOtCz8Q,OAAQ,KAaRguH,SAAU,MACV8O,WAAY,KACZ1E,aAAc,OACd/xD,YAAa,gBAEfyuR,GAAgB/9U,YAChB+9U,GAAgBzsZ,OAAS,kBAGzB,MAAM8sZ,IAAW5gZ,KAAK4V,IAAI,EAAG,IAC7B,MAAMirY,GAAU7gZ,KAAK4V,IAAI,EAAG,IAAM,EAElC,MAAMkrY,GAAiBttZ,GAAOA,EAAIqK,MAAM,EAAG,GAAG3H,cAAgB1C,EAAIqK,MAAM,GAExE,MAAMkjZ,GAAgB51Z,GAAStB,OAAOsB,KAAWA,EAEjD,MAAMF,GAAiB,CAACV,EAAQwT,EAAU5S,KACxCtB,OAAOoB,eAAeV,EAAQwT,EAAU,CACtC5S,MAAAA,EACAhB,WAAY,KACZiB,aAAc,OAEhB,OAAOD,GAGT,MAAM61Z,GAAiB71Z,GACd,SAAUZ,EAAQ02Z,GACvB12Z,EAAO02Z,GAAe91Z,GAI1B,MAAM+1Z,GAAc,CAACC,EAAWC,KAC9B,IAAK,MAAMj2Z,KAASg2Z,EAAWC,EAAUz2Y,IAAIxf,GAC7C,OAAOi2Z,GAGT,MAAM14Y,GAAQ2uJ,GAAW,IAAIl7J,SAAQC,GAAWuM,WAAWvM,EAASi7J,KACpE,IAAIgqP,GAAuB,KAC3B,MAAMC,GAAsB,SAAUlvY,GACpC,GAAIivY,KAAyB,KAAMA,UAA8BE,qBAAuB,YACxF,GAAIF,KAAyB,KAAM,CACjC,OAAOE,mBAAmBD,oBAAoBlvY,OACzC,CACL,OAAOA,EAAKnW,YAAY5L,OAAS,sBAIrC,MAAMmxZ,GAAY,IAAIr6Y,IAAS3Y,UAC/B,MAAMizZ,GAAarvY,GAAQovY,GAE3B,MAAMtoO,GAAWuoO,KAGjB,IAAIC,IACJ,SAAWA,GACTA,EAAc,UAAY,SAC1BA,EAAc,UAAY,UAF5B,CAGGA,KAAkBA,GAAgB,KAErC,MAAMC,GAAavgZ,OAAO,cAC1B,MAAMwgZ,IAAe,EACrB,MAAMC,IAAyB,EAE/B,MAAMC,WAAoBrpH,GACxBltS,cACEua,SAASrb,WACTmB,KAAKwe,QAAU,IAAIhN,IACnBxR,KAAKm2Z,QAAU,GACfn2Z,KAAKo2Z,aAAe,EAEtBz2Z,UAAU44D,GACRv4D,KAAKq2Z,aAAa99V,GAEpB54D,aAAa44D,GACXv4D,KAAKm2Z,QAAQ33Z,KAAKC,MAAMuB,KAAKm2Z,QAAS59V,EAAY1uD,KAAIy9C,IAC7C,CACLA,KAAMA,EACNtiC,KAAM+wY,GACNjtQ,MAAOlmJ,eAGX5C,KAAKs2Z,YAEP32Z,OAAO2nD,EAAMivW,IACb52Z,kBAAkB2nD,IAClB3nD,QAAQ2nD,EAAMryB,GACZ,OAAO6gY,GAAcjuS,OAEvBloH,YAAY2nD,EAAM9gC,GAChB,MAAM,IAAI9V,MAAM,0BAElB/Q,YAAY2nD,EAAM6uW,EAASK,GACzB,MAAM,IAAI9lZ,MAAM,0BAElB/Q,eAAe2nD,GACb,OAAOtnD,KAAKwe,QAAQ9M,IAAI41C,GAE1B3nD,eAAe2nD,EAAMmvW,EAAWt7R,GAC9B,IAAKA,EAAM,CACTA,EAAO,CACLs7R,UAAAA,EACAC,WAAY12Z,KAAKo2Z,cAEnBp2Z,KAAKwe,QAAQlN,IAAIg2C,EAAM6zE,OAClB,CACLA,EAAKs7R,UAAYA,EACjBt7R,EAAKu7R,WAAa12Z,KAAKo2Z,aAEzB,OAAOj7R,EAETx7H,YAEE,MAAMw2Z,EAAUn2Z,KAAKm2Z,QACrB,IAAIr3Y,EACJ,MAAOA,EAAQq3Y,EAAQr3Z,OAAQ,CAC7B,MAAMwoD,EAAO6uW,EAAQr3Y,EAAQ,GAAGwoC,KAChC,MAAMqvW,EAAc32Z,KAAK42Z,eAAetvW,GAGxC,GAAIqvW,GAAeA,EAAYF,YAAcR,IAAyBU,EAAYD,aAAe12Z,KAAKo2Z,aAAc,CAClHD,EAAQvkZ,MACR,SAEF,GAAI+kZ,GAAeA,EAAYD,aAAe12Z,KAAKo2Z,cAAgBO,EAAYF,YAAcT,GAAa,CAIxG,GAAIW,EAAYF,UAAY33Y,EAAO,CAEjC,GAAI9e,KAAK62Z,QAAQvvW,EAAM6uW,KAAaL,GAAcgB,OAAQ,UACrD,CACLH,EAAYF,UAAYR,GACxBj2Z,KAAK+2Z,kBAAkBzvW,GAEzB6uW,EAAQvkZ,UACH,CAEL,GAAI5R,KAAKg3Z,OAAO1vW,EAAM6uW,EAAQr3Y,EAAQ,MAAQ,MAAO,MAErD,MAAMm4Y,EAAej3Z,KAAKk3Z,eAAe5vW,EAAMxoC,EAAO63Y,GACtD,MAAMQ,EAAehB,EAAQr3Z,OAC7BkB,KAAKo3Z,YAAY9vW,EAAM6uW,EAASc,GAKhC,GAAId,EAAQr3Z,SAAWq4Z,EAAc,CACnCF,EAAaR,UAAYR,GACzBj2Z,KAAK+2Z,kBAAkBzvW,GACvB6uW,EAAQvkZ,UAOlB,SAASylZ,GAAUpiY,GACjB,MAAMn2B,EAASm2B,EAAMn2B,OACrB,GAAIA,IAAW,EAAG,MAAO,GACzB,MAAMw4Z,EAAcriY,EAAMn2B,EAAS,GAAGwoD,KACtC,MAAM4nP,EAAQ,CAACooH,GACf,IAAI1+W,EAAU95C,EAAS,EACvB,IAAIy4Z,EAAS3+W,EACb,MAAOA,GAAW,GAAK3jB,EAAM2jB,GAAS5zB,OAASsyY,EAAa,CAE1D,MAAO1+W,GAAW,GAAK3jB,EAAM2jB,GAAS5zB,OAASiQ,EAAMsiY,GAAQvyY,KAAM4zB,IACnE,GAAIA,GAAW,EAAG,CAEhBs2P,EAAM1wS,KAAKy2B,EAAM2jB,GAAS0O,MAC1BiwW,EAAS3+W,GAIb,GAAIA,EAAU,EAAG,MAAO,GACxBs2P,EAAM1wS,KAAK84Z,GACX,OAAOpoH,EAAM/qM,UAGf,IAAIqzT,GAAoD,SAAUC,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAE9D,IAAIynY,GAAa,EAMjB,MAAMC,GAAoBD,KAU1B,MAAME,WAAgBhrH,GACpBltS,cACEua,SAASrb,WAITmB,KAAK83Z,UAAYH,KAIjB33Z,KAAK+3Z,OAAS,IAAIl5Y,KAItB,MAAMm5Y,WAA4B9B,GAChCv2Z,YAAY84D,EAAY09V,GACtB,GAAI19V,aAAsBo/V,GAAS,CACjC1B,EAAQ33Z,KAAK,CACX8oD,KAAMmR,EAAW34C,OACjBkF,KAAMyzC,EACNqwF,MAAOlmJ,gBAEJ,CACL,MAAMq1Z,EAAWj4Z,KAAKgW,MAAMkiZ,gBAAgBxmZ,IAAI+mD,GAChDw/V,GAAYA,EAASj5Z,SAAQm5Z,GAAWhC,EAAQ33Z,KAAK,CACnD8oD,KAAM6wW,EACNnzY,KAAMyzC,EACNqwF,MAAOlmJ,gBAMf,MAAMw1Z,WAAsBlsH,GAAM,CAACW,KAAOv2R,GAAQ,MAAM8hZ,UAAsB9hZ,EAC5E3W,cACEua,SAASrb,WAITmB,KAAKq4Z,UAAY,IAAIx5Y,IAIrB7e,KAAKi4Z,SAAW,IAAIp5Y,IACpB7e,KAAKs4Z,iBAAmB11Z,UACxB5C,KAAKu4Z,kBAAoB31Z,UAE3Bs1Z,sBACE,GAAIl4Z,KAAKs4Z,mBAAqB11Z,UAAW,OAAO5C,KAAKs4Z,iBACrDt4Z,KAAK2uS,YACL,OAAO3uS,KAAKs4Z,iBAEdE,uBACE,GAAIx4Z,KAAKu4Z,oBAAsB31Z,UAAW,OAAO5C,KAAKu4Z,kBACtDv4Z,KAAK2uS,YACL,OAAO3uS,KAAKu4Z,kBAEd54Z,IAAIw4Z,GACFn4Z,KAAKs4Z,iBAAmB11Z,UACxB5C,KAAKu4Z,kBAAoB31Z,UACzB5C,KAAKi4Z,SAASl5Y,IAAIo5Y,GAEpBx4Z,IAAIw4Z,GACF,OAAOn4Z,KAAKi4Z,SAASh6Y,IAAIk6Y,GAE3Bx4Z,YACEK,KAAKs4Z,iBAAmB,IAAI9mZ,IAC5BxR,KAAKu4Z,kBAAoB,IAAI/mZ,IAC7BxR,KAAKi4Z,SAASj5Z,SAAQm5Z,IACpB,IAAIK,EAAmBx4Z,KAAKu4Z,kBAAkB7mZ,IAAIymZ,EAAQr4Y,QAC1D,IAAK04Y,EAAkB,CACrBA,EAAmB,IAAI35Y,IACvB7e,KAAKu4Z,kBAAkBjnZ,IAAI6mZ,EAAQr4Y,OAAQ04Y,GAE7CA,EAAiBz5Y,IAAIo5Y,GACrBA,EAAQJ,OAAO/4Z,SAAQmnI,IACrB,IAAI+xR,EAAkBl4Z,KAAKs4Z,iBAAiB5mZ,IAAIy0H,GAChD,IAAK+xR,EAAiB,CACpBA,EAAkB,IAAIr5Y,IACtB7e,KAAKs4Z,iBAAiBhnZ,IAAI60H,EAAO+xR,GAEnCA,EAAgBn5Y,IAAIo5Y,SAI1Bx4Z,oBACE,OAAOooS,GAAWM,GAAex+R,GAAI7J,KAAKi4Z,UAAUE,GAAWA,EAAQJ,OAAOlsZ,aAEhFlM,WACE,IAAI84Z,EAAW,MACf,MAAMC,EAAcV,GAAoBnnS,IAAI,CAC1C76G,MAAOhW,KACP62Z,QAAS,KACP4B,EAAW,KACX,OAAO3C,GAAcjuS,UAGzB6wS,EAAYC,UAAUpxZ,MAAMyd,KAAKhlB,KAAK44Z,sBACtC,OAAOH,QAOX,MAAMI,WAAyBT,IAU/B,MAAMU,WAAwBjsH,GAC5BltS,cACEua,SAASrb,WAITmB,KAAKg5Y,YAAcp2Y,UAKnB5C,KAAK+4Z,0BAA4B,IAAIl6Y,IACrC7e,KAAKg5Z,uBAAyB,IAAIxnZ,IAGpC7R,QACEK,KAAKg5Z,uBAAuBv6W,QAQ9B9+C,QAAQwmI,GACN,MAAM57H,EAASvK,KAAKg5Z,uBAAuBtnZ,IAAIy0H,EAAMm8J,MACrD,GAAI/3R,IAAW3H,UAAW,OAAO2H,EACjC,MAAM0zU,EAAaj+U,KAAKi5Z,gBAAgB9yR,GACxCnmI,KAAKg5Z,uBAAuB1nZ,IAAI60H,EAAMm8J,KAAM27C,GAC5C,OAAOA,EAETt+U,gBAAgBwmI,GACd,MAAMuyR,EAAcQ,GAAUroS,IAAI,CAChCpjD,QAASztE,KACTmmI,MAAAA,IAEF,MAAMgzR,EAAiB5xZ,MAAMyd,KAAK0zY,EAAYnzY,QAAQ1b,KAAIs/D,IACjD,CACL80Q,WAAY90Q,EAAMiwV,eAClBC,qBAAsB9xZ,MAAMyd,KAAKmkD,EAAMmwV,kBAAkBrB,UAAUxsZ,QAAO,CAACuY,EAAOm0Y,IAAYhvV,EAAMowV,iBAAiBpB,GAAWn0Y,EAAQ,EAAIA,GAAO,GACnJw1Y,qBAAsBrwV,EAAMqwV,2BAGhCL,EAAelhZ,MAAK,CAACwhZ,EAAMC,KACzB,GAAID,EAAKD,qBAAuBE,EAAKF,qBAAsB,OAAQ,EACnE,GAAIC,EAAKD,qBAAuBE,EAAKF,qBAAsB,OAAO,EAClE,OAAOE,EAAKL,qBAAuBI,EAAKJ,wBAE1C,GAAIF,EAAer6Z,OAAS,EAAG,OAAOq6Z,EAAe,GAAGl7E,gBAAgB,UAU5E,IAAI07E,IACJ,SAAWA,GACTA,EAAmBA,EAAmB,WAAa,GAAK,UAIxDA,EAAmBA,EAAmB,oBAAsB,GAAK,mBAIjEA,EAAmBA,EAAmB,oBAAsB,GAAK,mBAIjEA,EAAmBA,EAAmB,kBAAoB,GAAK,kBAbjE,CAcGA,KAAuBA,GAAqB,KAK/C,MAAMC,WAA6B/sH,GACjCltS,cACEua,SAASrb,WAITmB,KAAKytE,QAAU7qE,UACf5C,KAAKmmI,MAAQvjI,UACb5C,KAAK65Z,MAAQ,GAEfv3H,WACE,GAAItiS,KAAK65Z,QAAU,GAAI,OAAO75Z,KAAK65Z,MACnC,OAAO75Z,KAAK65Z,MAAQ75Z,KAAK85Z,YAE3B9gB,kBACE,OAAOh5Y,KAAKytE,QAAQurU,YAKtB/6D,iBACE,OAAOj+U,KAAKytE,QAAQj9D,QAAQxQ,MAE9BL,cAAc4b,GACZrB,MAAMq2J,cAAch1J,GACpBvb,KAAKmmI,MAAQ,IAAI30H,IAAIq3R,GAAG7oS,KAAKg5Y,YAAYqf,WAAWxuZ,KAAIkwZ,GAAY,CAACA,EAAUJ,GAAmBK,YAEpGr6Z,YACE,OAAOuJ,OAAOC,gBAAgB0/R,GAAG7oS,KAAKg5Y,YAAYqf,WAAW5wH,gBAAgB,GAAG59R,KAAIy+F,GAAStoG,KAAKi6Z,gBAAgB3xT,MAEpH3oG,gBAAgB2oG,GACd,OAAOA,EAAM4xT,aAAY,CAACC,EAAUJ,EAAU7pZ,IAAUiqZ,EAAWn6Z,KAAKmmI,MAAMz0H,IAAIqoZ,IAAa7pZ,EAAQ,GAAG,GAQ5GvQ,qBAAqBo6Z,GACnB,MAAM5zR,EAAQnmI,KAAKmmI,MAAMz0H,IAAIqoZ,GAC7B/5Z,KAAKmmI,MAAM70H,IAAIyoZ,EAAU5zR,EAAQwzR,GAAmBS,kBAEtDz6Z,iBAAiBo6Z,GACf,OAAO75Z,QAAQF,KAAKmmI,MAAMz0H,IAAIqoZ,GAAYJ,GAAmBS,kBAE/Dz6Z,uBACE,OAAOkpS,GAAG7oS,KAAKg5Y,YAAYqf,WAAWj6Z,QAAO27Z,GAAY/5Z,KAAKq6Z,iBAAiBN,KAQjFp6Z,qBAAqBo6Z,GACnB,MAAM5zR,EAAQnmI,KAAKmmI,MAAMz0H,IAAIqoZ,GAC7B/5Z,KAAKmmI,MAAM70H,IAAIyoZ,EAAU5zR,EAAQwzR,GAAmBW,kBAEtD36Z,iBAAiBo6Z,GACf,OAAO75Z,QAAQF,KAAKmmI,MAAMz0H,IAAIqoZ,GAAYJ,GAAmBW,kBAE/D36Z,uBACE,OAAOkpS,GAAG7oS,KAAKg5Y,YAAYqf,WAAWj6Z,QAAO27Z,GAAY/5Z,KAAKu6Z,iBAAiBR,KAQjFp6Z,sBAAsBo6Z,GACpB,MAAM5zR,EAAQnmI,KAAKmmI,MAAMz0H,IAAIqoZ,GAC7B/5Z,KAAKmmI,MAAM70H,IAAIyoZ,EAAU5zR,EAAQwzR,GAAmBa,gBAEtD76Z,eAAeo6Z,GACb,OAAO75Z,QAAQF,KAAKmmI,MAAMz0H,IAAIqoZ,GAAYJ,GAAmBa,gBAE/D76Z,qBACE,OAAOkpS,GAAG7oS,KAAKg5Y,YAAYqf,WAAWj6Z,QAAO27Z,GAAY/5Z,KAAKy6Z,eAAeV,MAGjFvC,GAAa,CAAClqO,IAAWssO,GAAqB/rZ,UAAW,eAAgB,GAEzE,MAAMqrZ,WAAkBrsH,GACtBltS,cACEua,SAASrb,WACTmB,KAAKytE,QAAU7qE,UACf5C,KAAKmmI,MAAQvjI,UACb5C,KAAK6+H,SAAWj8H,UAChB5C,KAAK06Z,iBAAmB93Z,UACxB5C,KAAK26Z,mBAAqB/3Z,UAE5B02Z,wBACE,GAAIt5Z,KAAK26Z,qBAAuB/3Z,UAAW,OAAO5C,KAAK26Z,mBACvD,MAAM3kZ,EAAQoiZ,GAAcvnS,IAAI,CAC9BwnS,UAAWr4Z,KAAKg5Y,YAAYqf,UAC5BJ,SAAUpvH,GAAG7oS,KAAK46Z,yBAAyB/wZ,KAAIs/D,GAASA,EAAMuxV,mBAAkBpnV,UAElF,OAAOtzE,KAAK26Z,mBAAqB3kZ,EAEnCgjY,kBACE,OAAOh5Y,KAAKytE,QAAQurU,YAEtBr5Y,yBACE,IAAIi5C,EAAU54C,KACd,MAAO44C,GAAWA,EAAQ8hX,iBAAkB,OACpC9hX,EACNA,EAAUA,EAAQimF,UAGtBl/H,+BAA+Bw4Z,GAC7B,OAAO5wZ,MAAMyd,KAAKmzY,EAAQJ,QAAQpwZ,MAAKoyZ,GAAY/5Z,KAAKmmI,MAAMk0R,iBAAiBN,KAGjFp6Z,uBACE,MAAMk7Z,EAAehxZ,GAAI7J,KAAKmmI,MAAM20R,wBAAwBf,IACnD,CACLA,SAAAA,EACAgB,WAAY,SAGhB,MAAMC,EAAqBnxZ,GAAI7J,KAAKmmI,MAAM60R,sBAAsBjB,IACvD,CACLA,SAAAA,EACAgB,WAAY,UAGhB,MAAME,EAAepyH,GAAG,CAACgyH,EAAcG,IAAqBr0Y,SAASshR,cAAav9O,GAAMA,EAAGqvW,WAC3F,OAAOkB,EAAaxvZ,QAAO,CAACyvZ,GAC1BnB,SAAAA,EACAgB,WAAAA,MAEA,IAAItnS,EAAS,EAEb,MAAM0nS,EAA0Bn7Z,KAAKs5Z,kBAAkBd,iBAAiB9mZ,IAAIqoZ,GAC5E,GAAIoB,EAAyB,CAC3B,MAAMhD,EAAUgD,EAAwB5pZ,OAAS,EAAIhK,MAAMyd,KAAKm2Y,GAAyB,GAAK,KAG9F,GAAIhD,GAAWn4Z,KAAKu5Z,iBAAiBpB,IAAYn4Z,KAAKo7Z,+BAA+BjD,GAAU,CAC7F,GAAI4C,EAAYtnS,GAAU,SAASA,GAAU,QACxC,CACL,GAAIsnS,EAAYtnS,GAAU,SAASA,GAAU,KAIjD,MAAM4nS,EAAiBr7Z,KAAKs5Z,kBAAkBpB,gBAAgBxmZ,IAAIqoZ,GAClE,KAAMsB,GAAkBA,EAAe9pZ,KAAO,GAAI,CAChD,GAAIwpZ,EAAYtnS,GAAU,SAASA,GAAU,IAE/C,OAAOynS,EAAcznS,IACpB,GAEL9zH,cAAc27Z,EAAUC,GACtB,MAAMC,EAAwBx7Z,KAAKy7Z,4BAA4BH,GAC/D,MAAMI,EAAwB17Z,KAAKy7Z,4BAA4BF,GAC/D,GAAIC,IAA0BE,EAAuB,OAAQ,EAC7D,GAAIA,IAA0BF,EAAuB,OAAO,EAC5D,MAAMG,EAAiC37Z,KAAK47Z,qCAAqCN,GACjF,MAAMO,EAAiC77Z,KAAK47Z,qCAAqCL,GACjF,GAAII,EAAiCE,EAAgC,OAAQ,EAC7E,GAAIF,EAAiCE,EAAgC,OAAO,EAC5E,GAAI77Z,KAAKu5Z,iBAAiB+B,KAAct7Z,KAAKu5Z,iBAAiBgC,GAAW,OAAQ,EACjF,GAAIv7Z,KAAKu5Z,iBAAiBgC,KAAcv7Z,KAAKu5Z,iBAAiB+B,GAAW,OAAO,EAChF,OAAO,EAET37Z,iBAAiBw4Z,GACf,OAAOn4Z,KAAKytE,QAAQsrV,0BAA0B96Y,IAAIk6Y,GAEpDx4Z,qCAAqCw4Z,GACnC,IAAIn0Y,EAAQ,EACZzc,MAAMyd,KAAKmzY,EAAQJ,QAAQ/4Z,SAAQ+6Z,IACjC,GAAI/5Z,KAAKmmI,MAAMk0R,iBAAiBN,IAAa/5Z,KAAKmmI,MAAMs0R,eAAeV,GAAW/1Y,OAEpF,OAAOA,EAETrkB,kCAAkCw4Z,GAChC,OAAO5wZ,MAAMyd,KAAKmzY,EAAQJ,QAAQ5nZ,OAAM4pZ,GAAY/5Z,KAAKmmI,MAAMk0R,iBAAiBN,IAAa/5Z,KAAKmmI,MAAMs0R,eAAeV,KAEzHp6Z,4BAA4Bw4Z,GAC1B,OAAO5wZ,MAAMyd,KAAKmzY,EAAQJ,QAAQ5nZ,OAAM4pZ,GAAY/5Z,KAAKmmI,MAAMk0R,iBAAiBN,KAElFp6Z,oBAAoBw4Z,GAClB,MAAM2D,EAA4Bv0Z,MAAMyd,KAAKmzY,EAAQJ,QAAQ5nZ,OAAM4pZ,GAAY/5Z,KAAKmmI,MAAMk0R,iBAAiBN,IAAa/5Z,KAAKmmI,MAAMo0R,iBAAiBR,IAAa/5Z,KAAKs5Z,kBAAkBd,iBAAiBv6Y,IAAI87Y,KAC7M,MAAM/jZ,EAAQoiZ,GAAcvnS,IAAI,CAC9BonS,SAAU,IAAIp5Y,IAAI7e,KAAKs5Z,kBAAkBrB,YAE3CjiZ,EAAM+I,IAAIo5Y,GACV,OAAO2D,IAA8B9lZ,EAAMyiZ,WAE7C94Z,uBAAuBw4Z,GACrB,MAAM4D,EAAkC/7Z,KAAKs5Z,kBAAkBd,iBAAiBv6Y,IAAIk6Y,EAAQr4Y,QAC5F,MAAMk8Y,EAAiCh8Z,KAAKmmI,MAAMo0R,iBAAiBpC,EAAQr4Y,QAC3E,OAAOi8Y,GAAmCC,GAAkCz0Z,MAAMyd,KAAKmzY,EAAQJ,QAAQpwZ,MAAKoyZ,IAAa/5Z,KAAKmmI,MAAMo0R,iBAAiBR,KAAc/5Z,KAAKmmI,MAAMk0R,iBAAiBN,KAEjMp6Z,oBACE,OAAO4H,MAAMyd,KAAKhlB,KAAKg5Y,YAAYif,UAAU75Z,QAAO+5Z,IAAYn4Z,KAAKs5Z,kBAAkBr7Y,IAAIk6Y,KAE7Fx4Z,QACE,MAAMs8Z,EAAoBj8Z,KAAKi8Z,oBAC/BA,EAAkBhkZ,KAAKjY,KAAKk8Z,cAAclnZ,KAAKhV,OAC/C,IAAIm8Z,EAAU,KACd,IAAK,MAAMhE,KAAW8D,EAAmB,CACvC,IAAKj8Z,KAAKo8Z,oBAAoBjE,IAAYn4Z,KAAKq8Z,uBAAuBlE,GAAU,SAChF,MAAMmE,EAAYpD,GAAUroS,IAAI,CAC9BgO,SAAU7+H,KACVytE,QAASztE,KAAKytE,QACd04D,MAAOnmI,KAAKmmI,MACZu0R,iBAAkBvC,UAEbmE,EAAU/2Y,OACjB42Y,EAAU,MAEZ,GAAIA,QAAen8Z,KAErBL,eACE,OAAO,IAAI6R,IAAIq3R,GAAG7oS,KAAKg5Y,YAAYqf,WAAWxuZ,KAAIkwZ,IAChD,MAAM9B,EAAWj4Z,KAAKs5Z,kBAAkBd,iBAAiB9mZ,IAAIqoZ,GAC7D,GAAI9B,EAAU,CACZ,IAAK,MAAMsE,KAAgBtE,EAAU,CACnC,MAAO,CAAC8B,EAAUwC,EAAazE,YAGnC,MAAO,CAACiC,EAAUnC,SAKxB,IAAI4E,GAAoD,SAAU/E,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAG9D,MAAMusY,GAA6BjnZ,OAAO,8BAgB1C,MAAMknZ,WAAe7vH,IACrB2vH,GAAa,CAACpH,GAAe,OAAQsH,GAAO7uZ,UAAW,YAAa,GACpE2uZ,GAAa,CAACpH,GAAe,OAAQsH,GAAO7uZ,UAAW,YAAa,GAEpE,MAAM8uZ,GAA2BnnZ,OAAO,4BAkCxC,MAAMonZ,GAAqBF,GAAO7rS,IAAI,CACpChhH,QAAS8sZ,KAGX,MAAME,GAAernZ,OAAO,gBAI5B,MAAMsnZ,WAAqBJ,GACzB/8Z,cACEua,SAASrb,WACTmB,KAAK6P,QAAUgtZ,IAGnBL,GAAa,CAACpH,GAAe,QAAS0H,GAAajvZ,UAAW,YAAa,GAQ3E,MAAMkvZ,GAASpkT,GAAUmkT,GAAajsS,IAAI,CACxClY,OAAAA,IAGF,MAAMqkT,GAAoBxnZ,OAAO,qBACVknZ,GAAO7rS,IAAI,CAChChhH,QAASmtZ,KAGX,MAAMC,GAAiBznZ,OAAO,kBACbknZ,GAAO7rS,IAAI,CAC1BhhH,QAASotZ,KAGX,MAAMC,GAAsB1nZ,OAAO,uBACbknZ,GAAO7rS,IAAI,CAC/BhhH,QAASqtZ,KAGX,MAAMC,GAAc3nZ,OAAO,eAC3B,MAAM4nZ,WAAoBV,GACxB/8Z,cACEua,SAASrb,WACTmB,KAAK6P,QAAUstZ,IAGnBX,GAAa,CAACpH,GAAe,QAASgI,GAAYvvZ,UAAW,YAAa,GAC1E,MAAMwvZ,GAAQ,CAACp4W,EAAYq4W,KAAkBC,IAAiBH,GAAYvsS,IAAI,CAC5E5rE,WAAAA,EACAs4W,aAAc,CAACD,KAAkBC,KAEnC,MAAMC,GAAqBhoZ,OAAO,sBAClC,MAAMioZ,WAA2Bf,GAC/B/8Z,cACEua,SAASrb,WACTmB,KAAK6P,QAAU2tZ,IAGnBhB,GAAa,CAACpH,GAAe,QAASqI,GAAmB5vZ,UAAW,YAAa,GACjF,MAAM6vZ,GAAeC,GAAUF,GAAmB5sS,IAAI,CACpD8sS,OAAAA,IAGF,MAAMC,GAAwBpoZ,OAAO,yBACrC,MAAMqoZ,WAA8BnB,GAClC/8Z,cACEua,SAASrb,WACTmB,KAAK6P,QAAU+tZ,IAGnB,MAAME,GAAkB74W,GAAc44W,GAAsBhtS,IAAI,CAC9D5rE,WAAAA,IAGF,MAAM84W,GAAwBvoZ,OAAO,yBACrC,MAAMwoZ,WAA8BtB,GAClC/8Z,cACEua,SAASrb,WACTmB,KAAK6P,QAAUkuZ,IAGnB,MAAME,GAAkBh5W,GAAc+4W,GAAsBntS,IAAI,CAC9D5rE,WAAAA,IAGF,MAAMi5W,GAAyB1oZ,OAAO,0BACtC,MAAM2oZ,WAA+BzB,GACnC/8Z,cACEua,SAASrb,WACTmB,KAAK6P,QAAUquZ,IAGnB,MAAM9D,GAAmBn1W,GAAck5W,GAAuBttS,IAAI,CAChE5rE,WAAAA,IAGF,MAAMm5W,GAAkC5oZ,OAAO,mCAC/C,MAAM6oZ,WAAwC3B,GAC5C/8Z,cACEua,SAASrb,WACTmB,KAAK6P,QAAUuuZ,IAGnB,MAAME,GAA4Br5W,GAAco5W,GAAgCxtS,IAAI,CAClF5rE,WAAAA,IAGF,MAAMs5W,GAA4B/oZ,OAAO,6BACzC,MAAMgpZ,WAAkC9B,GACtC/8Z,cACEua,SAASrb,WACTmB,KAAK6P,QAAU0uZ,IAGnB,MAAME,GAAsBx5W,GAAcu5W,GAA0B3tS,IAAI,CACtE5rE,WAAAA,IAGF,MAAMy5W,GAAwClpZ,OAAO,yCAWrD,MAAMmpZ,GAA8BnpZ,OAAO,+BAe3C,MAAMopZ,WAAmChF,GASvCj6Z,YAAY0gC,EAAG4kB,EAAY+0D,GACzB,GAAI35E,EAAEy9X,GAAgB74W,KAAgB,KAAMjlD,KAAK6+Z,qBAAqB7kT,GACtE,GAAI35E,EAAE+5X,GAAiBn1W,IAAcjlD,KAAK8+Z,qBAAqB9kT,IAcnE,MAAM+kT,WAAuB7yH,GAAM,IAAI51R,GAAQ,MAAMyoZ,UAAuBzoZ,EAC1E3W,cACEua,SAASrb,WACTmB,KAAKitF,SAAWrqF,UAChB5C,KAAKg/Z,gBAAkBp8Z,UAEzBjD,uBACE,OAAOO,QAAQF,KAAKitF,UAAYjtF,KAAKg/Z,iBAEvCr/Z,yBACE,OAAOO,QAAQF,KAAKg/Z,iBAAmBh/Z,KAAKg/Z,gBAAgB71X,MAE9Dh9B,aACE,OAAOnM,KAAKg/Z,iBAAmBh/Z,KAAKg/Z,gBAAgB71X,KAAOnpC,KAAKg/Z,gBAAgBz/Z,MAAQqD,UAE1FjD,iBAAiBs/Z,KAAa1jZ,GAC5B,MAAM0xE,EAAWjtF,KAAKitF,SAAWjtF,KAAKk/Z,YAAYr4Z,KAAK7G,KAAKytE,SAAWztE,KAAMi/Z,KAAa1jZ,GAC1F,OAAOvb,KAAKg/Z,gBAAkB/xU,EAAS1nE,OAEzC5lB,oBAAoBJ,GAClB,OAAOS,KAAKg/Z,gBAAkBh/Z,KAAKitF,SAAS1nE,KAAKhmB,GAEnDI,qBACEK,KAAKg/Z,gBAAkBp8Z,UACvB5C,KAAKitF,SAAWrqF,UAElBjD,aAAas/Z,KAAa1jZ,GACxB,MAAM,IAAI7K,MAAM,wCAElB/Q,kBAAkBs/Z,KAAa1jZ,GAC7Bvb,KAAKm/Z,iBAAiBF,KAAa1jZ,GACnC,OAAQvb,KAAKo/Z,yBAA0B,CACrCp/Z,KAAKq/Z,oBAAoBJ,EAASj/Z,KAAKg/Z,gBAAgBz/Z,QAGzDS,KAAKitF,SAAWrqF,UAChB,OAAO5C,KAAKmM,OAEdxM,yBAAyBs/Z,KAAa1jZ,GACpCvb,KAAKm/Z,iBAAiBF,KAAa1jZ,GACnC,OAAQvb,KAAKo/Z,yBAA0B,CACrCp/Z,KAAKq/Z,0BAA0BJ,EAASj/Z,KAAKg/Z,gBAAgBz/Z,QAG/DS,KAAKitF,SAAWrqF,UAChB,OAAO5C,KAAKmM,aAIhB,MAAMmzZ,GAAgC9pZ,OAAO,iCAC7C,MAAM+pZ,GAA6B,CACjChga,MAAO+/Z,IAET,MAAME,WAAwBtzH,GAAM,IAAI51R,GAAQ,MAAMkpZ,UAAwBlpZ,EAC5E3W,cACEua,SAASrb,WACTmB,KAAKg/Z,gBAAkBp8Z,UAEzBjD,uBACE,OAAOO,QAAQF,KAAKg/Z,iBAEtBr/Z,yBACE,OAAOO,QAAQF,KAAKg/Z,iBAAmBh/Z,KAAKg/Z,gBAAgB71X,MAE9Dh9B,aACE,OAAOnM,KAAKg/Z,iBAAmBh/Z,KAAKg/Z,gBAAgB71X,KAAOnpC,KAAKg/Z,gBAAgBz/Z,MAAQqD,UAE1FjD,iBAAiBs/Z,KAAa1jZ,GAE5Bvb,KAAKg/Z,gBAAkBO,GACvB,OAAOv/Z,KAAKg/Z,gBAAkB,CAC5B71X,KAAM,KACN5pC,MAAOS,KAAKk/Z,YAAYr4Z,KAAK7G,KAAKytE,SAAWztE,KAAMi/Z,KAAa1jZ,IAGpE5b,oBAAoBJ,GAClB,MAAM,IAAImR,MAAM,4CAElB/Q,qBACEK,KAAKg/Z,gBAAkBp8Z,UAEzBjD,YAAYs/Z,KAAa1jZ,GACvB,MAAM,IAAI7K,MAAM,wCAElB/Q,kBAAkBs/Z,KAAa1jZ,GAC7Bvb,KAAKm/Z,iBAAiBF,KAAa1jZ,GACnC,OAAOvb,KAAKmM,OAEdxM,yBAAyBs/Z,KAAa1jZ,GACpC,MAAM,IAAI7K,MAAM,4DAIpB,SAAS+uZ,GAA2BC,EAAQl5Y,EAAMjL,EAAM6nD,GACtD,MAAMu8V,EAAMn5Y,EAAK/nB,MAAM2kE,GAAS,KAAM7nD,GACtC,IAAIqkZ,EAAYD,EAAIp6Y,OACpB,OAAQq6Y,EAAUz2X,KAAM,CACtBy2X,EAAYD,EAAIp6Y,KAAKm6Y,EAAOE,EAAUrga,QAExC,OAAOqga,EAAUrga,MAGnB2oB,eAAe23Y,GAA4BH,EAAQl5Y,EAAMjL,EAAM6nD,GAC7D,MAAMu8V,EAAMn5Y,EAAK/nB,MAAM2kE,GAAS,KAAM7nD,GACtC,IAAIqkZ,EAAYD,EAAIp6Y,OACpB,OAAQq6Y,EAAUz2X,KAAM,CACtB,MAAM22X,EAAmBJ,EAAOE,EAAUrga,OAC1C,GAAIuga,aAA4BvvZ,QAASqvZ,EAAYD,EAAIp6Y,WAAWu6Y,QAAuBF,EAAYD,EAAIp6Y,KAAKu6Y,GAElH,OAAOF,EAAUrga,MAInB,IAAIwga,IACJ,SAAWA,GACTA,EAASA,EAAS,UAAY,GAAK,SACnCA,EAASA,EAAS,QAAU,GAAK,QAFnC,CAGGA,KAAaA,GAAW,KAC3B,IAAIC,GAAY,EAEhB,MAAMC,WAAcrzH,GAAS,CAACp7R,MAAM8E,GAAQ,MAAM2pZ,UAAc3pZ,EAC9D3W,cACEua,SAASrb,WAETmB,KAAKkga,UAAYt9Z,UACjB5C,KAAKilD,WAAariD,UAElB5C,KAAKT,MAAQqD,UACb5C,KAAKs9Z,cAAgB16Z,UACrB5C,KAAKmga,kBAAoBv9Z,UACzB5C,KAAKoga,uBAAyB,MAE9Bpga,KAAK6+H,SAAWj8H,UAChB5C,KAAKykQ,OAAS7hQ,UACd5C,KAAKqga,SAAWrL,GAChBh1Z,KAAKsga,yBAA2B,MAChCtga,KAAKuga,UAAY,EACjBvga,KAAKy2Z,UAAYT,GACjBh2Z,KAAK02Z,WAAa,EAClB12Z,KAAKy0B,QAAU7xB,UACf5C,KAAKwga,cAAgB59Z,UAEvBjD,WAAWyyC,GACT,MAAMh5B,EAAW,IAAIpZ,KACrBoyC,GAASn0C,OAAOmZ,OAAOgC,EAAUg5B,GACjC,OAAOh5B,EAETnL,YACE,OAAOjO,KAAKilD,WAAWh3C,MAEzBixZ,kBACE,OAAOl/Z,KAAKilD,WAAWi6W,YAEzBzxV,cACE,OAAOztE,KAAKilD,WAAWwoB,SAAWztE,KAAKilD,WAEzCtlD,mBACEK,KAAKuga,UAAYtL,GAEnBt1Z,UACEK,KAAKyga,qBAEP9ga,WACE,OAAOO,QAAQF,KAAKykQ,QAAUzkQ,KAAKykQ,SAAWzkQ,MAEhDL,aAAa+ga,GACX1ga,KAAK02Z,WAAagK,EAClB1ga,KAAKy2Z,UAAYT,GAGjB,GAAIh2Z,KAAKuga,UAAY,EAAGvga,KAAKuga,UAAY,EACzCvga,KAAKoga,uBAAyB,MAC9Bpga,KAAKyga,qBAULzga,KAAK2ga,gBACL3ga,KAAKy0B,QAAU7xB,UACf,GAAI5C,KAAKykQ,QAAUzkQ,KAAKykQ,SAAWzkQ,KAAM,CACvCA,KAAKmga,kBAAoBv9Z,UAGzB,GAAI5C,KAAKT,QAAUqD,UAAW,CAC5B5C,KAAKs9Z,cAAgBt9Z,KAAKT,MAE5BS,KAAKT,MAAQqD,cACR,CACL5C,KAAKykQ,OAAS7hQ,UACd5C,KAAKT,MAAQqD,UAEf,GAAI5C,KAAKilD,WAAW27W,sBAAwB5ga,KAAKs9Z,gBAAkBuD,GAAW,CAC5E7ga,KAAKsga,yBAA2B,KAChCtga,KAAKs9Z,cAAgB16Z,WAGzBjD,SAAS8kQ,GACPzkQ,KAAKT,MAAQklQ,EAAOllQ,MACpBS,KAAKs9Z,cAAgB74J,EAAO64J,cAC5Bt9Z,KAAKmga,kBAAoB17J,EAAO07J,kBAChCnga,KAAKoga,uBAAyB37J,EAAO27J,uBAEvCzga,kBACEK,KAAKT,MAAQqD,UACb5C,KAAKs9Z,cAAgB16Z,UACrB5C,KAAKmga,kBAAoBv9Z,UAE3BjD,oBAAoBmha,GAClB,MAAMr8J,EAASzkQ,KAAKykQ,OACpB,GAAIA,IAAWzkQ,KAAK6+H,SAAU,MAAM,IAAInuH,MAAM,iBAC9C1Q,KAAK+ga,SAASt8J,GACd,MAAMq/I,EAAW9jZ,KAAKgha,cACtB,IAAK,MAAO/7W,EAAYg8W,KAAUx8J,EAAOu8J,cAAe,CACtD,MAAME,EAAcpd,EAASpyY,IAAIuzC,GACjC,IAAKi8W,EAAa,CAChB,MAAMniG,EAAS+hG,EAAYpvZ,IAAIuzC,GAC/B,IAAK85Q,GAAUA,EAAOshG,WAAaY,EAAMZ,SAAUvc,EAASxyY,IAAI2zC,EAAY85Q,GAAUkiG,IAG1F,GAAIx8J,EAAO+7J,gBAAkB59Z,UAAW,CACtC,MAAMu+Z,EAAenha,KAAKoha,kBAC1B,IAAK,MAAOn8W,EAAYg8W,KAAUx8J,EAAO28J,kBAAmB,CAC1D,MAAMF,EAAcC,EAAazvZ,IAAIuzC,GACrC,IAAKi8W,EAAa,CAChB,MAAMniG,EAAS+hG,EAAYpvZ,IAAIuzC,GAC/B,IAAK85Q,GAAUA,EAAOshG,WAAaY,EAAMZ,SAAUc,EAAa7vZ,IAAI2zC,EAAY85Q,GAAUkiG,KAKhGjha,KAAKykQ,OAASzkQ,KAEdykQ,EAAO48J,kBACP58J,EAAOhmN,QAgCT9+C,UAAU8kQ,GACRzkQ,KAAKykQ,OAASA,EACdzkQ,KAAKqga,SAAW57J,EAAO47J,SAEzB1ga,YACE,GAAIK,KAAKykQ,OAAQ,OAAOzkQ,KAAKykQ,OAC7B,OAAOzkQ,KAAKsha,cAEd3ha,cACEK,KAAKqga,SAAWL,KAChB,OAAOhga,KAAKykQ,OAASzkQ,KAEvBL,cACE,OAAOK,KAETL,kBACE,GAAIK,KAAKwga,gBAAkB59Z,UAAW,OAAO5C,KAAKwga,cAClD,OAAOxga,KAAKwga,cAAgB,IAAIhvZ,IAElC7R,cAAc4ha,EAAS10Z,GACrB,MAAMi3Y,EAAWj3Y,IAASkzZ,GAASyB,OAASxha,KAAOA,KAAKoha,kBACxDtd,EAASxyY,IAAIiwZ,EAAQt8W,WAAYs8W,GAEnC5ha,gBACEK,KAAKy+C,QACL,GAAIz+C,KAAKwga,gBAAkB59Z,UAAW5C,KAAKwga,cAAc/hX,QAE3D9+C,WACE,OAAOK,KAAKykQ,OAASzkQ,KAAKykQ,OAAOllQ,MAAQqD,UAE3CjD,SAASJ,GACP,GAAIS,KAAKykQ,QAAUzkQ,KAAKykQ,SAAWzkQ,KAAM,MAAM,IAAI0Q,MAAM,yCACzD1Q,KAAKyha,YAAYlia,MAAQA,EAK3BI,WACE,OAAOK,KAAKqlB,aAAeziB,UAE7BjD,mBACE,GAAIK,KAAK0ha,WAAY,OAAO,MAC5B,OAAO1ha,KAAK2ha,wBAEdhia,wBACE,OAAOK,KAAKs9Z,gBAAkB16Z,UAOhCjD,iBAAiB+yG,GACf,GAAI1yG,KAAKsga,yBAA0B,CACjCtga,KAAKsga,yBAA2B,MAChCtga,KAAKs9Z,cAAgBt9Z,KAAKilD,WAAW28W,mBAAmB/6Z,KAAK7G,KAAKilD,WAAWwoB,SAAWztE,KAAKilD,WAAYjlD,KAAKilD,WAAYjlD,KAAM0yG,GAElI,OAAO1yG,KAAKs9Z,cAiBd39Z,sBAAsB40T,EAAUv1T,GAC9B,IAAI45C,EAAU54C,KACd,MAAO44C,EAAS,CACd,IAAK,MAAMkrW,KAAYlrW,EAAQooX,cAAcn1Z,SAAU,CACrD,GAAIi4Y,EAASuc,WAAa9rG,EAASstG,kBAAkB/d,EAAS7+V,YAAYo7W,SAAUrha,EAAQ8kZ,GAE9F,GAAIlrW,EAAQ8oX,WAAY9oX,EAAUA,EAAQimF,cAAcjmF,EAAU,MAGtEj5C,6BAA6B40T,EAAUv1T,GACrC,IAAI45C,EAAU54C,KACd,MAAO44C,EAAS,CACd,IAAK,MAAMkrW,KAAYlrW,EAAQooX,cAAcn1Z,SAAU,CACrD,MAAMi2Z,EAAcvtG,EAASstG,kBAAkB/d,EAAS7+V,YACxD,GAAI68W,GAAehe,EAASuc,WAAayB,EAAYzB,SAAUrha,EAAQ8kZ,GAEzE,GAAIlrW,EAAQ4nX,gBAAkB59Z,UAAW,CACvC,IAAK,MAAMkhZ,KAAYlrW,EAAQ4nX,cAAc30Z,SAAU,CACrD,MAAMi2Z,EAAcvtG,EAASstG,kBAAkB/d,EAAS7+V,YACxD,GAAI68W,GAAehe,EAASuc,WAAayB,EAAYzB,SAAUrha,EAAQ8kZ,IAG3E,GAAIlrW,EAAQ8oX,WAAY9oX,EAAUA,EAAQimF,cAAcjmF,EAAU,MAGtEj5C,wCAAwC+yG,EAAa1zG,GACnD,IAAI45C,EAAU54C,KACd,MAAO44C,EAAS,CACd,IAAK,MAAMkrW,KAAYlrW,EAAQooX,cAAcn1Z,SAAU,CACrD,MAAMi2Z,EAAcpvT,EAAYqvT,wBAAwBje,EAAS7+V,YACjE,GAAI68W,GAAehe,EAASuc,WAAayB,EAAYzB,SAAUrha,EAAQ8kZ,GAEzE,GAAIlrW,EAAQ4nX,gBAAkB59Z,UAAW,CACvC,IAAK,MAAMkhZ,KAAYlrW,EAAQ4nX,cAAc30Z,SAAU,CACrD,MAAMi2Z,EAAcpvT,EAAYqvT,wBAAwBje,EAAS7+V,YACjE,GAAI68W,GAAehe,EAASuc,WAAayB,EAAYzB,SAAUrha,EAAQ8kZ,IAG3E,GAAIlrW,EAAQ8oX,WAAY9oX,EAAUA,EAAQimF,cAAcjmF,EAAU,MAItEj5C,iCAAiC+yG,EAAa1zG,GAC5C,IAAI45C,EAAU54C,KACd,MAAO44C,EAAS,CACd,IAAK,MAAMkrW,KAAYlrW,EAAQooX,cAAcn1Z,SAAU,CACrD,MAAMi2Z,EAAcpvT,EAAYmvT,kBAAkB/d,EAAS7+V,YAC3D,GAAI68W,GAAehe,EAASuc,WAAayB,EAAYzB,SAAUrha,EAAQ8kZ,GAEzE,GAAIlrW,EAAQ8oX,WAAY9oX,EAAUA,EAAQimF,cAAcjmF,EAAU,YAKxE,MAAMioX,GAAYrrZ,OAAO,aAEzB,IAAIwsZ,GAAoD,SAAUvK,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAW9D,IAAI+xY,IACJ,SAAWA,GAETA,EAAOA,EAAO,aAAe,GAAK,YAClCA,EAAOA,EAAO,0BAA4B,GAAK,yBAC/CA,EAAOA,EAAO,uCAAyC,GAAK,sCAE5DA,EAAOA,EAAO,qBAAuB,GAAK,qBAN5C,CAOGA,KAAWA,GAAS,KAgBvB,MAAM1hX,WAAassP,GACjBltS,cACEua,SAASrb,WAITmB,KAAKyE,KAAO7B,UAQZ5C,KAAK+X,KAAO,MAEZ/X,KAAKkia,MAAQ,KAEblia,KAAKmia,KAAO,KACZnia,KAAK4ga,qBAAuB,MAiC9Bjha,YAAY0gC,GACV,MAAM,IAAI3vB,MAAM,wCAQlB/Q,SAASksB,EAAIG,GACX,OAAOH,IAAOG,GAGlBg2Y,GAAa,CAAC5M,GAAe6M,GAAOG,oBAAqB7hX,GAAK1yC,UAAW,aAAc,GACvFm0Z,GAAa,CAAC5M,GAAe,OAAQ70W,GAAK1yC,UAAW,YAAa,GASlE,MAAMw0Z,WAAmB9hX,GACvB5gD,cACEua,SAASrb,WAITmB,KAAKytE,QAAU7qE,UAEjBjD,SAASuga,GAGP,MAAMoC,EAAWtia,KAAKuia,WAAW1xS,MACjCyxS,EAASpC,UAAYA,EACrBoC,EAASr9W,WAAajlD,KACtBsia,EAAShC,yBAA2Btga,KAAK4ga,qBACzC,OAAO0B,EAET3ia,MAAMI,EAAI2yG,EAAauuT,EAAO3D,KAAkB/hZ,GAC9C0lZ,EAAQA,GAASvuT,EAAY8vT,eAAezia,GAC5Ckha,EAAM3D,cAAgBA,EACtB2D,EAAMd,kBAAoB5kZ,EAAKzc,OAAS,EAAIyc,EAAO3Y,UAErDjD,mBAAmB+yG,EAAa4qT,KAAkB/hZ,GAChDm3F,EAAY+vT,MAAMzia,KAAMs9Z,KAAkB/hZ,GAS5C5b,aAAa82S,EAAO6mH,KAAkB/hZ,GACpCk7R,EAAMgsH,MAAMzia,KAAMs9Z,KAAkB/hZ,GAMtC5b,mBAAmB82S,GACjB,OAAOA,EAAMisH,UAAU1ia,MAMzBL,cAAc82S,GACZ,OAAOA,EAAM/oM,KAAK1tG,MAEpBL,oBAAoB+yG,GAClB,OAAOA,EAAYhF,KAAK1tG,MAE1BL,yBAAyB+yG,GACvB,OAAOA,EAAYgwT,UAAU1ia,MAK/BL,mBAAmBI,EAAIkha,EAAOvuT,GAC5B,OAAO9vG,UAOTjD,WAAW82S,IAMX92S,WAAW82S,KAOb,MAAMksH,GAAY1C,GAAMh0H,IAAIuzH,GAAgBvzH,IAAIz6R,MAEhD,MAAMoxZ,GAAW3C,GAAMh0H,IAAI8yH,GAAe9yH,IAAIz6R,MAM9C,MAAMqxZ,WAAiBR,GACrB1ia,YAAYmja,GACV,MAAM,IAAIpyZ,MAAM,mHAElB/Q,MAAMI,EAAI2yG,EAAauuT,EAAO3D,KAAkB/hZ,GAC9C0lZ,EAAQA,GAASvuT,EAAY8vT,eAAezia,GAC5Ckha,EAAM1ha,MAAQ+9Z,EACd2D,EAAMd,kBAAoB5kZ,EAAKzc,OAAS,EAAIyc,EAAO3Y,WAGvDo/Z,GAAa,CAAC5M,GAAe6M,GAAOc,YAAaF,GAASh1Z,UAAW,aAAc,GACnFm0Z,GAAa,CAAC5M,GAAeuN,KAAaE,GAASh1Z,UAAW,kBAAmB,GAIjF,SAASm1Z,MAAaznZ,GACpB,OAAOsnZ,GAAShyS,OAAOt1G,GAMzB,MAAM0nZ,WAA4BZ,GAChC1ia,YAAYmja,GACV,OAAOA,EAAMlG,KAGjBoF,GAAa,CAAC5M,GAAeuN,KAAaM,GAAoBp1Z,UAAW,kBAAmB,GAI5F,SAASq1Z,MAAwB3nZ,GAC/B,OAAO0nZ,GAAoBpyS,OAAOt1G,GAMpC,MAAM4nZ,WAA2Bd,GAC/B1ia,aAAamja,GACX,aAAalG,IAGjBoF,GAAa,CAAC5M,GAAewN,KAAYO,GAAmBt1Z,UAAW,kBAAmB,GAI1F,SAASu1Z,MAAuB7nZ,GAC9B,OAAO4nZ,GAAmBtyS,OAAOt1G,GAGnC,MAAM8nZ,GAAyBp+W,IAC7B,MAAM,IAAIv0C,MAAM,sBAAsBu0C,MAGxC,IAAIq+W,GAAQ,EACZ,MAAMC,WAAiB12H,GACrBltS,cACEua,SAASrb,WACTmB,KAAKkga,UAAYoD,KACjBtja,KAAKyE,KAAO,YAAczE,KAAKkga,UAC/Blga,KAAK6+H,SAAWj8H,UAChB5C,KAAKojE,MAAQ,IAAI5xD,IACjBxR,KAAKwja,eAAiB,EACtBxja,KAAKyja,eAAiB,EACtBzja,KAAK0ja,cAAgB,IAAI7kZ,IAE3Blf,kBAAkBslD,GAChB,IAAIsvQ,EAAWv0T,KACf,MAAOu0T,EAAU,CACf,MAAM9oQ,EAAQ8oQ,EAASnxP,MAAM1xD,IAAIuzC,GACjC,GAAIwG,EAAO,OAAOA,EAClB8oQ,EAAWA,EAAS11L,SAEtB,OAAO,KAETl/H,cAAcslD,GACZ,MAAM68W,EAAc9ha,KAAK6ha,kBAAkB58W,GAC3C,OAAO/kD,QAAQ4ha,GAAeA,EAAYz8Y,aAAew7Y,IAE3Dlha,gBACE,IAAI40T,EAAWv0T,KACf,MAAOu0T,EAAU,OACTA,EACNA,EAAWA,EAAS11L,WAM1B,MAAM8kS,GACJhka,cACEK,KAAKlB,OAAS,EACdkB,KAAKq8P,OAAS,GACdr8P,KAAK4ja,YAAc3O,GAErBt1Z,iBACE,IAAK,IAAIf,EAAIoB,KAAK4ja,cAAgB3O,GAAUj1Z,KAAK4ja,YAAc,EAAGhla,EAAIoB,KAAKq8P,OAAOv9P,OAAQF,IAAK,CAC7F,GAAIoB,KAAKq8P,OAAOz9P,GAAI,OAAOoB,KAAK4ja,YAAchla,EAEhD,OAAOoB,KAAK4ja,YAAc3O,GAE5Bt1Z,kBACE,IAAK,IAAIf,EAAIoB,KAAK4ja,cAAgB3O,GAAUj1Z,KAAK4ja,YAAc,EAAGhla,EAAIoB,KAAKq8P,OAAOv9P,OAAQF,IAAK,CAC7F,MAAMqP,EAAQjO,KAAKq8P,OAAOz9P,GAC1B,GAAIqP,EAAO,CACTjO,KAAKlB,QAAUmP,EAAMnP,OACrBkB,KAAKq8P,OAAOz9P,GAAK,KACjBoB,KAAK4ja,YAAchla,EAAI,EACvB,OAAOqP,IAkBbtO,MACE,IAAK,IAAIf,EAAIoB,KAAK4ja,cAAgB3O,GAAUj1Z,KAAK4ja,YAAc,EAAGhla,EAAIoB,KAAKq8P,OAAOv9P,OAAQF,IAAK,CAC7F,MAAMqP,EAAQjO,KAAKq8P,OAAOz9P,GAC1BoB,KAAK4ja,YAAchla,EACnB,GAAIqP,GAASA,EAAMnP,OAAS,EAAG,CAC7BkB,KAAKlB,SACL,OAAOmP,EAAM2D,OAGjB5R,KAAK4ja,YAAc3O,GAErBt1Z,KAAK+qD,GACH,MAAMm5W,EAAUn5W,EAAGz8C,MACnB,IAAIA,EAAQjO,KAAKq8P,OAAOwnK,GACxB,IAAK51Z,EAAO,CAEV,IAAK,IAAIrP,EAAIoB,KAAKq8P,OAAOv9P,OAAQF,EAAIila,EAASjla,IAAKoB,KAAKq8P,OAAOz9P,GAAK,KACpEqP,EAAQjO,KAAKq8P,OAAOwnK,GAAW,GAEjC51Z,EAAMzP,KAAKksD,GACX1qD,KAAKlB,SACL,GAAI+ka,EAAU7ja,KAAK4ja,YAAa5ja,KAAK4ja,YAAcC,EAErDlka,EAAE6V,OAAOy3E,YACP,IAAK,IAAIruF,EAAI,EAAGA,EAAIoB,KAAKq8P,OAAOv9P,OAAQF,IAAK,CAC3C,MAAMqP,EAAQjO,KAAKq8P,OAAOz9P,GAC1B,GAAIqP,QAAcA,IAMxB,MAAM61Z,WAAyBj3H,GAC7BltS,WACE,MAAMoka,EAAmB,GACzB,MAAMC,EAAc,GACpBhka,KAAKkvS,MAAMlwS,SAAQ,EACjByF,KAAAA,EACAgpE,QAAAA,MAEAs2V,EAAiBvla,KAAKiG,GACtB,GAAIu/Z,EAAYA,EAAYlla,OAAS,KAAO2uE,EAASu2V,EAAYxla,KAAKivE,MAExE,MAAO,aAAeu2V,EAAYn6Z,KAAIsmB,GAAS,IAAMA,EAAMxlB,KAAIV,KAAK,QAAU,sBAAwB85Z,EAAiB95Z,KAAK,OAkBhI,MAAMg6Z,WAA6C/N,GACjDv2Z,cAEEua,SAASrb,WACTmB,KAAK0yG,YAAc9vG,UAErBjD,QAAQ2nD,EAAMryB,GACZ,OAAO6gY,GAAcjuS,OAEvBloH,cAAcqlB,EAAMutB,EAAI4jX,GACtB,IAAI+N,EAAQlka,KAAKwe,QAAQ9M,IAAI6gC,GAC7B,IAAK2xX,EAAO,CACVA,EAAQ,CACNzN,UAAWT,GACXU,WAAY12Z,KAAKo2Z,cAEnBp2Z,KAAKwe,QAAQlN,IAAIihC,EAAI2xX,GAEvB/N,EAAQ33Z,KAAK,CACX8oD,KAAM/U,EACNvtB,KAAAA,EACA8jI,MAAOlmJ,YAGXjD,YAAYqlB,EAAMmxY,GAChB,MAAM2L,EAAc9ha,KAAK0yG,YAAYmvT,kBAAkB78Y,GACvD,GAAI88Y,EAAa,CACfA,EAAYqC,iCAAiCnka,KAAK0yG,aAAa0xT,IAC7Dpka,KAAKqka,cAAcr/Y,EAAMo/Y,EAAcn/W,WAAYkxW,QAU3D,MAAMmO,WAA6Bz3H,GACjCltS,cACEua,SAASrb,WACTmB,KAAKwe,QAAU,IAAIhN,IACnBxR,KAAK0yG,YAAc9vG,UACnB5C,KAAKuka,aAAe3ha,UACpB5C,KAAKwka,OAAS5ha,UACd5C,KAAKm2Z,QAAU,GACfn2Z,KAAKo2Z,aAAe,EAEtBz2Z,UAAU44D,GACRv4D,KAAKq2Z,aAAa99V,GAEpB54D,aAAa44D,GACXv4D,KAAKm2Z,QAAQ33Z,KAAKC,MAAMuB,KAAKm2Z,QAAS59V,GACtCv4D,KAAKs2Z,YAEP32Z,gBACE,GAAIK,KAAKm2Z,QAAQr3Z,OAAQ,MAAM,IAAI4R,MAAM,0DACzC1Q,KAAKo2Z,eAEPz2Z,kBAAkBslD,EAAYuxW,GAC5B,IAAKvxW,EAAWltC,MAAQktC,EAAWh3C,QAAUg0Z,GAAOc,UAAW/ia,KAAKwka,OAAOhma,KAAKg4Z,GAElF72Z,QAAQ2nD,EAAMryB,GACZ,OAAO6gY,GAAcgB,OAKvBn3Z,cAAcqlB,EAAMutB,EAAI4jX,GACtB,IAAI8K,EAAQjha,KAAKwe,QAAQ9M,IAAI6gC,GAC7B,IAAK0uX,EAAO,CACVA,EAAQ1uX,EAAG+vX,SAAStia,KAAKuka,cACzBtD,EAAMvK,WAAa12Z,KAAKo2Z,aACxBp2Z,KAAKwe,QAAQlN,IAAIihC,EAAI0uX,GAEvB9K,EAAQ33Z,KAAK+zC,GAEf5yC,YAAYqlB,EAAMmxY,EAASK,GACzB,MAAMsL,EAAc9ha,KAAKuka,aAAa1C,kBAAkB78Y,GACxD,GAAI88Y,EAAa,CAGftL,EAAU33R,SAAWijS,EACrBA,EAAY2C,wCAAwCzka,KAAK0yG,aAAa0xT,IACpEpka,KAAKqka,cAAcr/Y,EAAMo/Y,EAAcn/W,WAAYkxW,MAGvD,IAAK,MAAMuO,KAAsBlO,EAAUwK,cAAchja,OAAQ,CAC/DgC,KAAKqka,cAAcr/Y,EAAM0/Y,EAAoBvO,GAE/C,GAAIK,EAAUgK,gBAAkB59Z,UAAW,IAAK,MAAM8ha,KAAsBlO,EAAU4K,kBAAkBpja,OAAQ,CAC9GgC,KAAKqka,cAAcr/Y,EAAM0/Y,EAAoBvO,IAGjDx2Z,YACE,MAAM6e,EAAUxe,KAAKwe,QACrB,MAAM23Y,EAAUn2Z,KAAKm2Z,QACrB,IAAIr3Y,EACJ,MAAOA,EAAQq3Y,EAAQr3Z,OAAQ,CAC7B,MAAMwoD,EAAO6uW,EAAQr3Y,EAAQ,GAC7B,IAAI03Y,EAAYh4Y,EAAQ9M,IAAI41C,GAC5B,GAAIkvW,GAAaA,EAAUC,YAAcR,IAAyBO,EAAUE,aAAe12Z,KAAKo2Z,aAAc,CAC5GI,EAAU+J,YACVpK,EAAQvkZ,MACR,SAEF,GAAI4kZ,GAAaA,EAAUE,aAAe12Z,KAAKo2Z,cAAgBI,EAAUC,YAAcT,GAAa,CAIlG,GAAIQ,EAAUC,UAAY33Y,EAAO,CAE/B,GAAI9e,KAAK62Z,QAAQvvW,EAAM6uW,KAAaL,GAAcgB,OAAQ,MAC1DN,EAAU+J,gBACL,CACL/J,EAAUC,UAAYR,GACtBj2Z,KAAK+2Z,kBAAkBzvW,EAAMkvW,GAE/BL,EAAQvkZ,UACH,CACL,MAAMulZ,EAAehB,EAAQr3Z,OAC7B,IAAK03Z,EAAW,CACdA,EAAYlvW,EAAKg7W,SAAStia,KAAKuka,cAC/B/N,EAAUE,WAAa12Z,KAAKo2Z,aAC5B53Y,EAAQlN,IAAIg2C,EAAMkvW,GAEpBx2Z,KAAKo3Z,YAAY9vW,EAAM6uW,EAASK,GAChC,GAAIA,EAAUE,WAAa12Z,KAAKo2Z,aAAc,CAC5CI,EAAUmO,aAAa3ka,KAAKo2Z,cAE9BI,EAAUC,UAAY33Y,EACtB03Y,EAAU+J,YAKV,GAAIpK,EAAQr3Z,SAAWq4Z,EAAc,CACnCX,EAAUC,UAAYR,GACtBj2Z,KAAK+2Z,kBAAkBzvW,EAAMkvW,GAC7BL,EAAQvkZ,UASlB,MAAMgzZ,GAAiB7E,GAASyB,OAChC,MAAMqD,GAAe9E,GAAS+E,KAE9B,MAAMC,WAAoBl4H,GACxBltS,cACEua,SAASrb,WACTmB,KAAKuka,aAAe3ha,UACpB5C,KAAKgla,eAAiBzB,GACtBvja,KAAK0oF,UAAY9lF,UACjB5C,KAAKy2S,MAAQ7zS,UACb5C,KAAKw3K,SAAW,MAChBx3K,KAAK04Z,YAAc91Z,UACnB5C,KAAK8G,QAAU,IAAI0K,IAInBxR,KAAKila,SAAW,IAAItB,GAEpB3ja,KAAKkla,YAAc,GACnBlla,KAAKmla,aAAevia,UACpB5C,KAAKola,cAAgBxia,UAErB5C,KAAKqla,qBAAuB,EAC5Brla,KAAKsla,6BAA+B,EACpCtla,KAAKula,kCAAoC,IACzCvla,KAAKwla,iCAAmC,IAExCxla,KAAKyla,2CAA6C,IAClDzla,KAAK0la,mCAAqC,EAE1C1la,KAAK0jT,QAAUnzS,QAAQC,UACvBxQ,KAAK2la,mBAAqB,MAC1B3la,KAAK4la,aAAehja,UACpB5C,KAAK6la,QAAU,MACf7la,KAAK8la,0BAA4B,MACjC9la,KAAK+la,iBAAmB,MAE1Bpma,cAAc4b,GACZrB,MAAMq2J,cAAch1J,GACpBvb,KAAK04Z,YAAc4L,GAAqBzzS,IAAI,CAC1CryG,QAASxe,KAAK8G,QACd4rG,YAAa1yG,KACbuka,aAAcvka,KAAKuka,aACnBC,OAAQxka,KAAKila,WAEf,IAAKjla,KAAK0oF,UAAW1oF,KAAK0oF,UAAY1oF,KAAKgla,eAAen0S,IAAI,CAC5DgO,SAAU7+H,KAAKuka,eASjBvka,KAAKmla,aAAuCnla,KAAK0tG,KAAK14F,KAAKhV,MAC3DA,KAAKola,cAAgBpla,KAAK0ia,UAAU1tZ,KAAKhV,MAE3CsuV,YACE,OAAOtuV,KAAK8G,QAAQyK,KAAO,EAE7B5R,oBACE,GAAIK,KAAK2la,mBAAoB,OAC7B3la,KAAK2la,mBAAqB,KAC1B,IAAK,MAAMK,KAAqBhma,KAAKuka,aAAab,cAAe,CAC/D,MAAM/rZ,EAAW3X,KAAK8G,QAAQ4K,IAAIs0Z,GAClC,GAAIruZ,GAAYA,EAAS0N,aAAew7Y,GAAW,SACnD7ga,KAAK2+J,MAAMqnQ,IAYfrma,iBACE,OAAOK,KAAKkla,YAAYlla,KAAKkla,YAAYpma,OAAS,GAOpDa,WAAW+/Z,GACT,GAAIA,aAAkBnvZ,QAAS,OAAOmvZ,EACtC,OAAO1/Z,KAAKy2S,MAAMipH,EAAO7vZ,SAAS6vZ,EAAQ1/Z,MAG5CL,UAAU+/Z,GACR,GAAIA,aAAkBnvZ,QAAS,CAC7B,MAAM,IAAIG,MAAM,sDAElB,OAAO1Q,KAAKy2S,MAAMipH,EAAO7vZ,SAAS6vZ,EAAQ1/Z,MAG5CL,UAAUslD,GAER,KAAMA,aAAsBo9W,IAAa,OAAOria,KAAKima,WAAWhhX,GAChE,IAAIwG,EACJ,MAAMy6W,EAAclma,KAAKmma,iBACzB,GAAID,EAAa,CACfz6W,EAAQzrD,KAAKoma,QAAQnhX,EAAYihX,EAAatB,QACzC,CACLn5W,EAAQzrD,KAAK8G,QAAQ4K,IAAIuzC,GACzB,IAAKwG,EAAO,CACV,MAAM46W,EAAgBrma,KAAKuka,aAAa1C,kBAAkB58W,GAC1D,IAAKohX,EAAehD,GAAuBp+W,GAC3CwG,EAAQ46W,EAAcC,WAAaD,EAAgBrma,KAAK2+J,MAAM15G,IAGlE,GAAIwG,EAAM66W,WAAY,OAAO76W,EAAMpmC,WACnC,GAAIomC,EAAMh3B,QAAS,OAAOg3B,EAAMh3B,QAIhC,IAAKg3B,EAAMozE,WAAapzE,EAAMozE,SAASynS,WAAY76W,EAAM86W,mBACzD,OAAOvma,KAAK0jT,QAAUj4P,EAAMh3B,QAAUz0B,KAAK0jT,QAAQjzS,MAAK,IAC/C,WAEL,MAAOzQ,KAAKila,SAASrB,YAAc3+W,EAAWh3C,MAAO,OAC7C4xZ,GAA4B7/Z,KAAKola,cAAepla,KAAKwma,6BAA8B,CAACxma,KAAKola,cAAepla,KAAKila,SAASwB,mBAAoBzma,MAElJA,KAAK0ma,oBAEL,GAAIj7W,EAAMpmC,aAAeziB,UAAW,OAAOi9Z,GAA4B7/Z,KAAKola,cAAepla,KAAKwma,6BAA8B,CAACxma,KAAKola,cAAe,CAAC35W,IAASzrD,OAPxJ,KASNyQ,MAAK,KACN,GAAIzQ,KAAK4la,aAAc,MAAM,IAAIl1Z,MAAM,yBAAyBxH,OAAOlJ,KAAK4la,aAAajtT,WAIzF,IAAKltD,EAAM66W,WAAY,MAAM,IAAI51Z,MAAM,2BACvC,OAAO+6C,EAAMpmC,cAGjB1lB,IAAIslD,GAEF,KAAMA,aAAsBo9W,IAAa,OAAOria,KAAK2ma,UAAU1hX,GAC/D,IAAIwG,EACJ,MAAMy6W,EAAclma,KAAKmma,iBACzB,GAAID,EAAa,CACfz6W,EAAQzrD,KAAKoma,QAAQnhX,EAAYihX,EAAatB,QACzC,CACLn5W,EAAQzrD,KAAK8G,QAAQ4K,IAAIuzC,GACzB,IAAKwG,EAAO,CACV,MAAM46W,EAAgBrma,KAAKuka,aAAa1C,kBAAkB58W,GAC1D,IAAKohX,EAAehD,GAAuBp+W,GAC3CwG,EAAQ46W,EAAcC,WAAaD,EAAgBrma,KAAK2+J,MAAM15G,IAGlE,MAAM/tC,EAASu0C,EAAMpmC,WACrB,GAAInO,IAAW2pZ,GAAWwC,GAAuBp+W,GAEjD,GAAI/tC,IAAWtU,WAAa6oD,EAAM66W,WAAY,OAAOpvZ,EACrD,GAAIu0C,EAAMh3B,QAAS,OAAOg3B,EAAMh3B,QAIhC,IAAKg3B,EAAMozE,WAAapzE,EAAMozE,SAASynS,WAAY76W,EAAM86W,mBAEzD,MAAOvma,KAAKila,SAAS2B,iBAAmB3hX,EAAWh3C,MAAO,CAExDjO,KAAK6ma,8BAA8B7ma,KAAKmla,aAAcnla,KAAKila,SAASwB,mBAEtEzma,KAAK0ma,oBACL,GAAIzhX,EAAWqgE,KAAM,CACnBtlH,KAAK6ma,8BAA8B7ma,KAAKmla,aAAc,CAAC15W,IACvD,MAAMlsD,EAAQksD,EAAMpmC,WAEpB,GAAI9lB,IAAUqD,UAAW,MAAM,IAAI8N,MAAM,wCACzC,GAAInR,IAAUsha,GAAWwC,GAAuBp+W,GAChD,OAAO1lD,MACF,CACL,MAAMk1B,EAAUz0B,KAAK0jT,QAAUj4P,EAAMh3B,QAAUz0B,KAAK0jT,QAAQjzS,MAAK,KAE/D,GAAIg7C,EAAMpmC,aAAeziB,UAAW,OAAOi9Z,GAA4B7/Z,KAAKola,cAAepla,KAAKwma,6BAA8B,CAACxma,KAAKola,cAAe,CAAC35W,IAASzrD,SAC5JyQ,MAAK,KACN,GAAIzQ,KAAK4la,aAAc,MAAM,IAAIl1Z,MAAM,yBAAyBxH,OAAOlJ,KAAK4la,aAAajtT,WAGzF,MAAMp5G,EAAQksD,EAAMpmC,WAEpB,GAAI9lB,IAAUqD,UAAW,MAAM,IAAI8N,MAAM,gCACzC,GAAInR,IAAUsha,GAAWwC,GAAuBp+W,GAChD,OAAO1lD,KAMT,OAAOk1B,GAaX90B,KAAKslD,GAEH,KAAMA,aAAsBo9W,IAAa,OAAOria,KAAK2ma,UAAU1hX,GAC/D,IAAIwG,EACJ,MAAMy6W,EAAclma,KAAKmma,iBACzB,GAAID,EAAa,CACfz6W,EAAQzrD,KAAKoma,QAAQnhX,EAAYihX,EAAatB,QACzC,CACLn5W,EAAQzrD,KAAK8G,QAAQ4K,IAAIuzC,GACzB,IAAKwG,EAAO,CACV,MAAM46W,EAAgBrma,KAAKuka,aAAa1C,kBAAkB58W,GAC1D,IAAKohX,EAAehD,GAAuBp+W,GAC3CwG,EAAQ46W,EAAcC,WAAaD,EAAgBrma,KAAK2+J,MAAM15G,IAGlE,MAAM/tC,EAASu0C,EAAMpmC,WACrB,GAAInO,IAAW2pZ,GAAWwC,GAAuBp+W,GACjD,GAAI/tC,IAAWtU,UAAW,OAAOsU,EAIjC,IAAKu0C,EAAMozE,WAAapzE,EAAMozE,SAASynS,WAAY76W,EAAM86W,mBAEzD,MAAOvma,KAAKila,SAAS2B,iBAAmB3hX,EAAWh3C,MAAO,CACxDjO,KAAK6ma,8BAA8B7ma,KAAKmla,aAAcnla,KAAKila,SAASwB,mBAGtEzma,KAAK0ma,oBACL1ma,KAAK6ma,8BAA8B7ma,KAAKmla,aAAc,CAAC15W,IACvD,MAAMlsD,EAAQksD,EAAMpmC,WAEpB,GAAI9lB,IAAUqD,UAAW,MAAM,IAAI8N,MAAM,wCACzC,GAAInR,IAAUsha,GAAWwC,GAAuBp+W,GAChD,OAAO1lD,EAGTI,gCAAgCslD,GAC9B,MAAM6hX,EAAa9ma,KAAK8G,QAAQ4K,IAAIuzC,GACpC,GAAI6hX,EAAY,CACd,MAAMvna,EAAQuna,EAAWzhZ,WACzB,GAAI9lB,IAAUqD,UAAW,OAAOrD,EAChC,GAAIuna,EAAWxJ,gBAAkB16Z,UAAW,OAAOkka,EAAWxJ,cAEhE,OAAOt9Z,KAAK+ma,aAAa9hX,GAE3BtlD,qCAAqCslD,GACnC,MAAM6hX,EAAa9ma,KAAK8G,QAAQ4K,IAAIuzC,GACpC,GAAI6hX,EAAY,CACd,MAAMvna,EAAQuna,EAAWzhZ,WACzB,GAAI9lB,IAAUqD,UAAW,OAAOrD,EAChC,GAAIuna,EAAWxJ,gBAAkB16Z,UAAW,OAAOkka,EAAWxJ,cAEhE,OAAOt9Z,KAAKgna,kBAAkB/hX,GAEhCtlD,aAAaslD,GACX,MAAMohX,EAAgBrma,KAAKuka,aAAa1C,kBAAkB58W,GAC1D,IAAKohX,EAAe,OAAOzja,UAC3B,MAAMrD,EAAQ8ma,EAAchhZ,WAC5B,OAAO9lB,IAAUsha,GAAYtha,IAAUqD,WAAaqiD,EAAWltC,KAAO/X,KAAK0tG,KAAKzoD,GAAc1lD,EAAQqD,UAExGjD,kBAAkBslD,GAChB,MAAMohX,EAAgBrma,KAAKuka,aAAa1C,kBAAkB58W,GAC1D,IAAKohX,EAAe,OAAOzja,UAC3B,MAAMrD,EAAQ8ma,EAAchhZ,WAC5B,OAAO9lB,IAAUsha,GAAYtha,IAAUqD,UAAYrD,EAAQS,KAAK0ia,UAAUz9W,GAAcriD,UAE1FjD,uBAAuBslD,GACrB,MAAM6hX,EAAa9ma,KAAK8G,QAAQ4K,IAAIuzC,GACpC,GAAI6hX,GAAcA,EAAWxJ,gBAAkB16Z,UAAW,CACxD,OAAOkka,EAAWxJ,kBACb,CACL,OAAOt9Z,KAAK+ma,aAAa9hX,IAG7BtlD,4BAA4BslD,GAC1B,MAAM6hX,EAAa9ma,KAAK8G,QAAQ4K,IAAIuzC,GACpC,GAAI6hX,GAAcA,EAAWxJ,gBAAkB16Z,UAAW,CACxD,OAAOkka,EAAWxJ,kBACb,CACL,OAAOt9Z,KAAKgna,kBAAkB/hX,IAGlCtlD,MAAMslD,EAAYq4W,KAAkB/hZ,GAClC,GAAI+hZ,IAAkB16Z,UAAW06Z,EAAgB,KAOjDr4W,EAAWw9W,MAAM57Z,KAAKo+C,EAAWwoB,SAAWxoB,EAAYA,EAAYjlD,KAAM,KAA0Cs9Z,KAAkB/hZ,GACtI,MAAMkwC,EAAQzrD,KAAK8G,QAAQ4K,IAAIuzC,GAC/BjlD,KAAK+la,iBAAmB/la,KAAK+la,mBAAqBt6W,EAAMi2W,YAAcz8W,EAAWh3C,QAAUg0Z,GAAOc,UAClG/ia,KAAK8la,0BAA4B9la,KAAK8la,2BAA6Br6W,EAAM4uW,mBAK3E16Z,eAAeslD,GACb,OAAOjlD,KAAK2+J,MAAM15G,GAAYq8W,cAGhC3ha,qBAAqBslD,GACnB,MAAMwG,EAAQzrD,KAAK8G,QAAQ4K,IAAIuzC,GAC/B,OAAOwG,GAASA,EAAMg5M,SAAWh5M,EAAQA,EAAMg5M,OAAS7hQ,UAE1DjD,MAAMslD,GACJ,MAAMgiX,EAAgBjna,KAAK8G,QAAQ4K,IAAIuzC,GACvC,IAAKgiX,GAAiBA,EAAcvQ,WAAa12Z,KAAK04Z,YAAYtC,aAAcp2Z,KAAK04Z,YAAYrC,aAAa,CAACpxW,IAC/G,MAAMwG,EAAQw7W,GAAiBjna,KAAK8G,QAAQ4K,IAAIuzC,GAChDwG,EAAM86W,mBACN,OAAO96W,EAiBT9rD,cAAcslD,GACZ,MAAMihX,EAAclma,KAAK8G,QAAQ4K,IAAIuzC,GACrC,GAAIihX,GAAeA,EAAY7gZ,aAAew7Y,GAAW,OAAO,MAChE,OAAO3ga,QAAQgma,GAAelma,KAAKuka,aAAa1C,kBAAkB58W,IAIpEtlD,cAAcslD,EAAYq4W,KAAkB/hZ,GAG1C,IAAIkwC,EAAQzrD,KAAK8G,QAAQ4K,IAAIuzC,GAC7B,MAAMiiX,EAAajiX,EAAWh3C,QAAUg0Z,GAAOc,UAC/C,IAAKt3W,EAAO,CACVA,EAAQxG,EAAWq9W,SAAStia,KAAKuka,cACjC94W,EAAMozE,SAAW7+H,KAAKuka,aAAa1C,kBAAkB58W,GACrDwG,EAAM86W,mBACNvma,KAAK8G,QAAQwK,IAAI2zC,EAAYwG,GAC7B,IAAKxG,EAAWltC,OAASmvZ,EAAYlna,KAAKila,SAASzma,KAAKitD,GACxDzrD,KAAK+la,iBAAmB/la,KAAK+la,mBAAqBt6W,EAAMi2W,YAAcwF,EACtElna,KAAK8la,0BAA4B9la,KAAK8la,2BAA6Br6W,EAAM4uW,mBAE3E,GAAIiD,IAAkB16Z,WAAaska,EAAY,CAE7Cz7W,EAAM61W,cACNr8W,EAAWw9W,MAAM57Z,KAAKo+C,EAAWwoB,SAAWxoB,EAAYA,EAAYjlD,KAAMyrD,EAAO6xW,IAAkB16Z,WAAaska,EAAa,KAAO5J,KAAkB/hZ,GAGxJ,GAAIkwC,EAAMpmC,aAAew7Y,GAAWp1W,EAAMlsD,MAAQqD,UAClD,GAAI6oD,EAAM6xW,gBAAkBuD,GAAWp1W,EAAM6xW,cAAgB16Z,UAC7DqiD,EAAWkiX,WAAWnna,KAAKy2S,OAC3B,OAAOhrP,EAET9rD,iBAAiBslD,GACfA,EAAWmiX,WAAWpna,KAAKy2S,OAC3B,MAAMhrP,EAAQzrD,KAAK2+J,MAAM15G,GAAYq8W,cACrC71W,EAAMwc,SAAS44V,IAEjBlha,sCAAsC+oF,EAAWtlB,GAC/C,GAAIslB,EAAUtlB,MAAM7xD,OAAS,EAAG,CAE9Bm3E,EAAUtlB,MAAQA,MACb,CAML,IAAK,MAAOne,EAAYg8W,KAAU79V,EAAO,CACvC,GAAI69V,EAAMS,WAAY,CACpB,MAAMI,EAAcp5U,EAAUm5U,kBAAkB58W,GAGhDg8W,EAAMD,cAAchia,SAAQ,CAACuia,EAAS8F,IAAiBvF,EAAYd,cAAc1vZ,IAAI+1Z,EAAc9F,SAC9F,CACL74U,EAAUtlB,MAAM9xD,IAAI2zC,EAAYg8W,MAKxCtha,UAAU4b,GACR,GAAIvb,KAAKw3K,SAAU,MAAM,IAAI9mK,MAAM,qCACnC1Q,KAAK0ma,oBACL1ma,KAAKw3K,SAAW,KAChBx3K,KAAKqla,qBAAuB72Z,KAAKC,MACjCzO,KAAK0la,mCAAqC1la,KAAKila,SAASnma,OAE1Da,aACEK,KAAKsna,sCAAsCtna,KAAK0oF,UAAW1oF,KAAK8G,SAEhE,MAAMA,EAAU9G,KAAK8G,QAErB9G,KAAK04Z,YAAc91Z,UACnB,MAAO,CACL2xT,SAAUv0T,KAAK0oF,UACf5hF,QAAAA,EACA4rG,YAAa1yG,MAGjBL,OAAO4b,GACLvb,KAAKuna,UAAUhsZ,GACfvb,KAAKwna,yBAAyBxna,KAAKmla,cAEnC,OAAOnla,KAAKyna,aAEd9na,OAAO+na,EAAY5K,GAAajsS,OAC9B7wH,KAAK4la,aAAe8B,EACpB1na,KAAK04Z,YAAc91Z,UAGrBjD,OACEK,KAAK6la,QAAU,KAEjBlma,gBACE,IAAK,MAAMsha,KAASjha,KAAK8G,QAAQ+E,SAAU,CACzCo1Z,EAAMtpV,UAIR33E,KAAK8G,QAAQ23C,QAWf9+C,kBAAkB4b,GAChBvb,KAAKuna,UAAUhsZ,GACf,OAAOvb,KAAK0jT,QAAU1jT,KAAK0jT,QAAQjzS,MAAK,IAC/BovZ,GAA4B7/Z,KAAKola,cAAepla,KAAK2na,qBAAsB,CAAC3na,KAAKola,eAAgBpla,QACvGyQ,MAAK,IACCzQ,KAAKyna,eAOhB9na,kBAAkBslD,GAChB,IAAIwG,EAAQzrD,KAAK8G,QAAQ4K,IAAIuzC,IAAejlD,KAAKuka,aAAa1C,kBAAkB58W,GAChF,GAAIwG,GAASA,EAAMpmC,aAAew7Y,GAAW,OAAOj+Z,UACpD,OAAO6oD,EAKT9rD,wBAAwBslD,GACtB,IAAIwG,EAAQzrD,KAAK8G,QAAQ4K,IAAIuzC,GAC7B,GAAIwG,EAAO,CACT,MAAMlsD,EAAQksD,EAAMpmC,WACpB,GAAI9lB,IAAUsha,GAAW,OAAOj+Z,UAChC,OAAOrD,IAAUqD,UAAY5C,KAAKuka,aAAa1C,kBAAkB58W,GAAcwG,MAC1E,CACL,OAAOzrD,KAAKuka,aAAa1C,kBAAkB58W,IAG/CtlD,QAAQioa,EAAgB1B,EAAar5Z,GACnC,MAAMo4C,EAAaihX,EAAYjhX,WAC/B,GAAIA,EAAWh3C,MAAQ25Z,EAAe35Z,MAAO,MAAM,IAAIyC,MAAM,wDAC7D,IAAI+6C,EAAQzrD,KAAK8G,QAAQ4K,IAAIk2Z,GAE7B,IAAKn8W,EAAO,CACV,MAAM46W,EAAgBrma,KAAKuka,aAAa1C,kBAAkB+F,GAC1D,IAAKvB,EAAehD,GAAuBuE,GAC3Cn8W,EAAQm8W,EAAetF,SAAStia,KAAKuka,cACrC8B,EAAc5hK,QAAUh5M,EAAMo8W,UAAUxB,EAAc5hK,QACtDh5M,EAAMozE,SAAWwnS,EACjBrma,KAAK8G,QAAQwK,IAAIs2Z,EAAgBn8W,GAEnCA,EAAMq8W,cAAc5B,EAAar5Z,GACjC,OAAO4+C,EAET9rD,4BAA4B8rD,EAAOlsD,GAEjCksD,EAAMksB,UACN,MAAM1yB,EAAawG,EAAMxG,WACzB,MAAMohX,EAAgB56W,EAAMozE,SAE5B,MAAMkpS,EAAiB7na,QAAQmma,GAAiBA,EAAcC,YAAcrhX,EAAW+iX,SAASzoa,EAAO8ma,EAAchhZ,aACrH,GAAI0iZ,EAAgB,CAClB1B,EAAc5B,wCAAwCzka,MAAMioa,IAC1D,MAAM7D,EAAgBpka,KAAK8G,QAAQ4K,IAAIu2Z,EAAsBhjX,YAC7D,GAAIm/W,EAAeA,EAAc7D,eAUnC90W,EAAM80W,UAAYtL,GAClBxpW,EAAMo8W,UAAUxB,EAAc5hK,QAI9Bh5M,EAAMlsD,MAAQA,MACT,CACLksD,EAAM61W,cACN71W,EAAMwc,SAAS1oE,GAGjB,IAAI2oa,EAAuB,MAC3B,GAAIz8W,EAAM20W,uBAAwB,CAChC,GAAI30W,EAAM6xW,gBAAkB16Z,UAAW,CACrC,GAAIqiD,EAAW+iX,SAASzoa,EAAOksD,EAAM6xW,eAAgB4K,EAAuB,SACvE,CAGL,GAAIH,IAAmB1B,GAAiB9ma,IAAU,KAAM2oa,EAAuB,KAEjF,IAAKA,EAAsBloa,KAAK0oF,UAAUg7U,cAAc3kZ,IAAIkmC,IAGhEtlD,iBAAiBioa,EAAgB1B,EAAajxY,GAC5C,MAAMkzY,EAAiBnoa,KAAKoma,QAAQwB,EAAgB1B,EAAatB,IAIjE,GAAIuD,EAAe7B,YAAc6B,EAAe5oa,QAAUqD,UAAW,CACnE,MAAMrD,EAAQ4oa,EAAe9iZ,WAC7B,GAAI9lB,IAAUsha,GAAWwC,GAAuBuE,GAChD,OAAO1B,EAAY7G,oBAAoB9/Z,QAClC,GAAI4oa,EAAezG,WAAY,CAGpCyG,EAAe7G,cACf6G,EAAe5B,mBACftxY,EAAMz2B,KAAK2pa,GACX,OAAOvla,cACF,CACL,IAAKula,EAAeC,uBAAwB,CAC1CnzY,EAAMz2B,KAAK2pa,GACX,IAAKA,EAAetpS,WAAaspS,EAAetpS,SAASynS,WAAY6B,EAAe5B,mBACpF,OAAO3ja,cACF,CAGL,IAAIssS,EACJ,MAAMwpH,EAAcuL,GAAqCpzS,IAAI,CAC3Dne,YAAa1yG,KACbL,QAAQ2nD,EAAMryB,GACZi6Q,EAAQ40H,GAAiBjzS,IAAI,CAC3Bq+K,MAAOmoH,GAAUpiY,GACjBkzY,eAAAA,EACAjC,YAAAA,IAEF,OAAOpQ,GAAcjuS,UAGzB6wS,EAAYC,UAAU,CAACwP,EAAeljX,aACtC,OAAOiqP,IAIbvvS,sBAAsB8tE,GACpB,MAAM17C,EAAQ/xB,KAAKila,SACnB,MAAOlzY,EAAMjzB,OAAQ,OAGZkB,KAAKwma,6BAA6B/4V,EAAS17C,EAAM00Y,oBAG5D9ma,yBAAyB8tE,GACvB,MAAM17C,EAAQ/xB,KAAKila,SACnB,MAAOlzY,EAAMjzB,OAAQ,CACnBkB,KAAK6ma,8BAA8Bp5V,EAAS17C,EAAM00Y,oBAKtD9ma,8BAA8B8tE,EAASx4C,GACrC,GAAIj1B,KAAK4la,cAAgB5la,KAAK6la,QAAS,OACvC7la,KAAK04Z,YAAY2P,gBACjB,MAAMvha,EAAU9G,KAAK8G,QACrB,MAAMu+Z,EAAuBrla,KAAKqla,qBAClC,MAAMiD,EAA8Btoa,KAAKy2S,MAAQz2S,KAAKy2S,MAAM6xH,4BAA8B,MAC1F,IAAIt4K,EAAU,EACd,MAAMu4K,EAAkBvoa,KAAKkla,YAC7Blla,KAAKkla,YAAcjwY,EACnB,MAAOA,EAAMn2B,SAAWkB,KAAK4la,eAAiB5la,KAAK6la,QAAS,CAC1D,GAAIyC,KAAiCt4K,IAAYhwP,KAAKyla,4CAA6C,CACjG,MAAMh3Z,EAAMD,KAAKC,MACjB,MAAMgZ,EAAUhZ,EAAM42Z,EACtB,GAAI59Y,EAAUznB,KAAKula,kCAAmC,CACpD,MAAMD,EAA+Btla,KAAKsla,6BAC1C,IAAKA,GAAgC72Z,EAAM62Z,EAA+Btla,KAAKwla,iCAAkC,CAC/Gxla,KAAKsla,6BAA+B72Z,EACpCzO,KAAKy2S,MAAM+xH,kCAAkC,CAC3CtG,MAAOlia,KAAK0la,mCACZvtR,UAAWn4I,KAAKila,SAASnma,OAASm2B,EAAMn2B,OACxC2pa,MAAO,sBAEH3rZ,GAAM,KAIlB,GAAI9c,KAAK4la,cAAgB5la,KAAK6la,QAAS,MACvC,MAAMp6W,EAAQx2B,EAAMA,EAAMn2B,OAAS,GACnC,MAAMmmD,EAAawG,EAAMxG,WAEzB,MAAMyjX,EAAW5ha,EAAQ4K,IAAIuzC,GAC7B,GAAIyjX,IAAaj9W,EAAO,CACtBA,EAAMksB,UACN1iD,EAAMrjB,MACN,SAEF,GAAI65C,EAAM80W,WAAa,EAAG,CAGxB90W,EAAM80W,YACN,MAAM8F,EAAgB56W,EAAMozE,SAC5BwnS,GAAiBA,EAAc5B,wCAAwCzka,MAAM8jZ,IAC3E,MAAMsgB,EAAgBt9Z,EAAQ4K,IAAIoyY,EAAS7+V,YAC3C,GAAIm/W,EAAeA,EAAc7D,eAOrC,GAAI90W,EAAM80W,UAAY,GAAK90W,EAAMozE,UAAYpzE,EAAMozE,SAAS4lI,OAAQ,CAKlEh5M,EAAMo8W,UAAUp8W,EAAMozE,SAAS4lI,QAE/B,GAAIh5M,EAAMl6C,OAAS,EAAG,CACpBzK,EAAQwS,OAAO2rC,GAGjBwG,EAAMksB,UACN1iD,EAAMrjB,MACN,SAEF,GAA4B65C,EAAM66W,YAAc76W,EAAM6xW,gBAAkBuD,GAAW,CACjFp1W,EAAMksB,UACN1iD,EAAMrjB,MACN,SAEF,MAAM+2Z,EAAiBl9W,EAAMirW,WAC7B,IAAIsI,EAAkBvzW,EAAM28W,uBAAyB38W,EAAMuzW,gBAAkBvzW,EAAM0zW,iBAAiBn/Z,KAAKmla,cACzG,MAAOnG,IAAoBh/Z,KAAK4la,eAAiB5la,KAAK6la,QAAS,CAC7D,MAAMtma,EAAQy/Z,EAAgBz/Z,QAAUqD,UAAY,KAAOo8Z,EAAgBz/Z,MAC3E,GAAIksD,EAAM2zW,yBAA0B,CAClC,GAAI3zW,EAAMirW,YAAciS,EAAgB,CACtC3oa,KAAK4oa,4BAA4Bn9W,EAAOlsD,GAE1C01B,EAAMrjB,MACN,WACK,GAAIrS,aAAiB8ia,GAAY,CACtC,MAAMwG,EAAyB7oa,KAAK8oa,iBAAiBvpa,EAAOksD,EAAOx2B,GAEnE,GAAI4zY,aAAkC/E,GAAkB,CACtD9ja,KAAK04Z,YAAY2P,sBACVroa,KAAKy2S,MAAMsyH,0BAA0BF,GAC5Cp9W,EAAMg1W,qBACNzB,EAAkBp8Z,cACb,CACLo8Z,EAAkB6J,QAEf,GAAItpa,IAAU+/Z,GAA+B,CAKlDrqY,EAAMrjB,MACN,UACK,CAEL,MAAMo3Z,QAAqBzpa,EAG3B,GAAIypa,IAAiBvM,GAA4B,MAIjD,GAAIhxW,EAAMirW,aAAeiS,EAAgB,CACvC3J,EAAkBvzW,EAAM4zW,oBAAoB2J,OACvC,CACL/zY,EAAMrjB,MACN,SAQR5R,KAAKkla,YAAcqD,EAGrB5oa,8BAA8B8tE,EAASx4C,GACrC,GAAIj1B,KAAK4la,cAAgB5la,KAAK6la,QAAS,OACvC7la,KAAK04Z,YAAY2P,gBACjB,MAAMvha,EAAU9G,KAAK8G,QACrB,MAAMyha,EAAkBvoa,KAAKkla,YAC7Blla,KAAKkla,YAAcjwY,EACnB,MAAOA,EAAMn2B,SAAWkB,KAAK4la,eAAiB5la,KAAK6la,QAAS,CAC1D,MAAMp6W,EAAQx2B,EAAMA,EAAMn2B,OAAS,GACnC,MAAMmmD,EAAawG,EAAMxG,WAEzB,MAAMyjX,EAAW5ha,EAAQ4K,IAAIuzC,GAC7B,GAAIyjX,IAAaj9W,EAAO,CACtBA,EAAMksB,UACN1iD,EAAMrjB,MACN,SAEF,GAAI65C,EAAM80W,WAAa,EAAG,CAGxB90W,EAAM80W,YACN,MAAM8F,EAAgB56W,EAAMozE,SAC5BwnS,GAAiBA,EAAc5B,wCAAwCzka,MAAM8jZ,IAC3E,MAAMsgB,EAAgBt9Z,EAAQ4K,IAAIoyY,EAAS7+V,YAC3C,GAAIm/W,EAAeA,EAAc7D,eAOrC,GAAI90W,EAAM80W,UAAY,GAAK90W,EAAMozE,UAAYpzE,EAAMozE,SAAS4lI,OAAQ,CAKlEh5M,EAAMo8W,UAAUp8W,EAAMozE,SAAS4lI,QAE/B,GAAIh5M,EAAMl6C,OAAS,EAAG,CACpBzK,EAAQwS,OAAO2rC,GAGjBwG,EAAMksB,UACN1iD,EAAMrjB,MACN,SAEF,GAA4B65C,EAAM66W,YAAc76W,EAAM6xW,gBAAkBuD,GAAW,CACjFp1W,EAAMksB,UACN1iD,EAAMrjB,MACN,SAEF,MAAM+2Z,EAAiBl9W,EAAMirW,WAC7B,IAAIsI,EAAkBvzW,EAAM28W,uBAAyB38W,EAAMuzW,gBAAkBvzW,EAAM0zW,iBAAiBn/Z,KAAKmla,cACzG,MAAOnG,IAAoBh/Z,KAAK4la,eAAiB5la,KAAK6la,QAAS,CAC7D,MAAMtma,EAAQy/Z,EAAgBz/Z,QAAUqD,UAAY,KAAOo8Z,EAAgBz/Z,MAC3E,GAAIksD,EAAM2zW,yBAA0B,CAClC,GAAI3zW,EAAMirW,YAAciS,EAAgB,CACtC3oa,KAAK4oa,4BAA4Bn9W,EAAOlsD,GAE1C01B,EAAMrjB,MACN,WACK,GAAIrS,aAAiB8ia,GAAY,CACtC,MAAMwG,EAAyB7oa,KAAK8oa,iBAAiBvpa,EAAOksD,EAAOx2B,GAEnE,GAAI4zY,aAAkC/E,GAAkB,CACtD9ja,KAAK04Z,YAAY2P,gBACjBroa,KAAKy2S,MAAMwyH,8BAA8BJ,GACzCp9W,EAAMg1W,qBACNzB,EAAkBp8Z,cACb,CACLo8Z,EAAkB6J,QAEf,GAAItpa,IAAU+/Z,GAA+B,CAKlDrqY,EAAMrjB,MACN,UACK,CAEL,MAAMo3Z,EAAev7V,EAAQluE,GAC7B,GAAIypa,aAAwBz4Z,QAAS,MAAM,IAAIG,MAAM,0HAGrD,GAAIs4Z,IAAiBvM,GAA4B,MAIjD,GAAIhxW,EAAMirW,aAAeiS,EAAgB,CACvC3J,EAAkBvzW,EAAM4zW,oBAAoB2J,OACvC,CACL/zY,EAAMrjB,MACN,SAQR5R,KAAKkla,YAAcqD,GAOvB,MAAMW,GAAa,CACjBtD,aAAc,MAGhB,MAAMuD,WAAiBt8H,GACrBltS,cACEua,SAASrb,WACTmB,KAAKo+G,SAAW,GAElBz+G,QAAQJ,GACN,IAAK,IAAIX,EAAI,EAAGA,EAAIoB,KAAKo+G,SAASt/G,OAAQF,IAAKoB,KAAKo+G,SAASx/G,GAAGW,IAgCpE,MAAM6pa,WAAoBv8H,GACxBltS,cACEua,SAASrb,WACTmB,KAAKqpa,mBAAqBzma,UAC1B5C,KAAKspa,sBAAwB1ma,UAC7B5C,KAAKuka,aAAehB,GAAS1yS,MAE7B7wH,KAAKupa,YAAc3ma,UAOnB5C,KAAKwpa,aAAe,EACpBxpa,KAAKqtB,UAAY,IAAI7b,IACrBxR,KAAKypa,mBAAqB7ma,UAC1B5C,KAAKqkF,aAAe,MACpBrkF,KAAKsoa,4BAA8B,MACnCtoa,KAAK0jT,QAAUnzS,QAAQC,UACvBxQ,KAAK0pa,iBAAmB,KAGxB1pa,KAAK2pa,oBAAsB,KAK3B3pa,KAAKoxF,WAAa,MAIlBpxF,KAAK4pa,eAAiB,OACtB5pa,KAAK6pa,kBAAoB,KACzB7pa,KAAK8pa,oBAAsB,QAC3B9pa,KAAK+pa,mBAAqB,QAC1B/pa,KAAKgqa,iBAAmBjF,GACxB/ka,KAAKiqa,mBAAqBrna,UAE5BjD,cAAc4b,GACZrB,MAAMq2J,cAAch1J,GACpB,IAAKvb,KAAKupa,YAAavpa,KAAKupa,YAAcvpa,KAAKuka,aAC/C,GAAIvka,KAAKoxF,WAAY,CACnBpxF,KAAK6pa,kBAAoB7pa,KAAK4pa,iBAAmB,OAAS93L,GAAO9xO,KAAK6zF,OAAOi+I,GAAO5pN,MAAAA,GAAaloB,KAAKo8P,YAAYtqB,GAEpH9xO,KAAKkqa,eAKPvqa,uBACE,OAAOK,KAAK2pa,sBAAwB,KAEtCr7E,YACE,OAAOtuV,KAAKmqa,kBAAkB77E,MAEhC3uV,QACEK,KAAK00B,SACL10B,KAAKulT,uBAELvlT,KAAKuka,aAAanhW,OAASpjE,KAAKuka,aAAanhW,MAAM3kB,QACnDz+C,KAAKuka,aAAa1lS,SAAW,KAC7B7+H,KAAKqtB,UAAUoxB,QACfz+C,KAAKupa,YAAcvpa,KAAKuka,aACxBvka,KAAKiqa,mBAAqBrna,UAC1B5C,KAAKypa,mBAAqB7ma,UAC1B5C,KAAKkqa,eAEPvqa,yBACE,IAAIyqa,EAAqB,KACzB,IAAIp6K,EAAU,EACd,IAAK,MAAMukE,KAAYv0T,KAAKupa,YAAYc,eAAgB,MAChD,CAAC91G,EAAU61G,GAAsBp6K,EAAUhwP,KAAKwpa,cACtD,GAAIj1G,IAAav0T,KAAKuka,aAAc,CAClC6F,EAAqB,UAChB,CACL,IAAKA,EAAoBp6K,MAI/BmyD,sBACE,OAAOniT,KAAK0pa,iBAEdvnH,oBAAoB5iT,GAClBS,KAAK0pa,iBAAmBnqa,EAE1BI,eACE,IAAI2qa,EACJ,MAAMC,EAAuB,GAC7B,IAAK,MAAOh2G,EAAUi2G,KAAgBxqa,KAAKyqa,wBAAyB,CAClE,GAAID,EAAa,CACfj2G,EAASivG,iBACT8G,EAAyB/1G,OACpBg2G,EAAqB/ra,KAAK+1T,GACjCA,EAASkvG,iBAEX8G,EAAqBp8U,QAAQm8U,GAC7B,IAAK,IAAI1ra,EAAI2ra,EAAqBzra,OAAS,EAAGF,GAAK,GAAK2ra,EAAqB3ra,GAAG4ka,iBAAmB,EAAG5ka,IAAK,CACzGoB,KAAK0qa,iBAAiBH,EAAqB3ra,EAAI,GAAI2ra,EAAqB3ra,KAG5Ee,iBAAiBgra,EAAQC,GACvB,GAAIA,EAAQpH,eAAiB,GAAKmH,EAAO9rS,WAAa+rS,EAAS,MAAM,IAAIl6Z,MAAM,6BAE/E,GAAIk6Z,EAAQnH,gBAAkB,EAAG,CAC/B,IAAK,MAAOx+W,EAAYwG,KAAUk/W,EAAOvnW,MAAO,CAC9C,GAAI3X,EAAMpmC,aAAew7Y,GAAW,CAClC+J,EAAQxnW,MAAM9pD,OAAO2rC,OAChB,CACL,MAAM4lX,EAAYD,EAAQxnW,MAAM1xD,IAAIuzC,GACpC,GAAIwG,EAAMg5M,SAAWh5M,EAAO,CAC1B,GAAIo/W,EAAW,CACbA,EAAUpsX,QACVosX,EAAUxJ,wBAEP,GAAIwJ,GAAap/W,EAAMg5M,SAAWomK,EAAW,CAClDp/W,EAAMq/W,oBAAoBH,EAAOvnW,YAC5B,GAAIne,EAAWltC,OAAS0zC,EAAMg5M,QAAUomK,GAAaA,EAAUpmK,OAAQ,CAG5Eh5M,EAAM61W,cAAchE,cAAgBuN,EAAUpmK,OAAOllQ,QAAUqD,UAAYioa,EAAUpmK,OAAOllQ,MAAQsra,EAAUpmK,OAAO64J,cAEvH7xW,EAAMozE,SAAWj8H,UACjBgoa,EAAQxnW,MAAM9xD,IAAI2zC,EAAYwG,IAGlC6pW,GAAYqV,EAAOjH,cAAekH,EAAQlH,eAI1CiH,EAAOvnW,MAAQwnW,EAAQxnW,MAEvBwnW,EAAQxnW,MAAQ,SAGb,CACHunW,EAAOvnW,MAAQ,IAAI5xD,IAAImV,GAAOikZ,EAAQxnW,MAAOunW,EAAOvnW,QACpDunW,EAAOjH,cAAgB,IAAI7kZ,IAAI8H,GAAOikZ,EAAQlH,cAAeiH,EAAOjH,gBACpEkH,EAAQnH,iBAGVkH,EAAO9rS,SAAW,KAEpBksS,wBACE,GAAI/qa,KAAKiqa,qBAAuBrna,UAAW,OAAO5C,KAAKiqa,mBACvD,MAAMe,EAAYzja,MAAMyd,KAAKhlB,KAAKupa,YAAYc,gBAC9C,MAAMvja,EAAU,GAChB,IAAK,IAAIlI,EAAIosa,EAAUlsa,OAAS,EAAGF,EAAI,EAAGA,IAAKkI,EAAQtI,KAAK,CAACwsa,EAAUpsa,GAAIosa,EAAUpsa,EAAI,KACzF,OAAOoB,KAAKiqa,mBAAqB,IAAIz4Z,IAAI1K,GAE3Cqja,wBACE,GAAInqa,KAAKypa,mBAAoB,OAAOzpa,KAAKypa,mBACzC,OAAOzpa,KAAKypa,mBAAqBzpa,KAAKgqa,iBAAiBn5S,IAAI,CACzD0zS,aAAcvka,KAAKspa,uBAAyBtpa,KAAKuka,aACjD9tH,MAAOz2S,OAuCXL,OAAOwY,GACL,MAAM8yZ,EAAcjra,KAAKqQ,YACzB,OAAO46Z,EAAYp6S,IAAI5yH,OAAOmZ,OAAO,GAAIe,EAAQ,CAC/CosZ,aAAcvka,KAAKuka,gBAGvB5ka,UAAU4b,GACR,OAAOvb,KAAK6zF,OAAOt4E,GASrB5b,OAAOg5G,GACL34G,KAAKmqa,kBAAkBz1Y,OAAOooY,GAAajsS,IAAI,CAC7ClY,OAAAA,KAGF34G,KAAK0jT,QAAUnzS,QAAQC,UACvBxQ,KAAKypa,mBAAqB7ma,UAC1B5C,KAAKspa,sBAAwB1ma,UAC7B,GAAI5C,KAAKqpa,mBAAoB,CAC3Brpa,KAAKuka,aAAevka,KAAKqpa,mBACzBrpa,KAAKqpa,mBAAqBzma,WAe9BjD,OAAO4b,GAELvb,KAAKulT,uBACLvlT,KAAKqpa,mBAAqBrpa,KAAKuka,aAC/B,MAAM4F,EAAoBnqa,KAAKmqa,kBAC/B,MAAMe,EAA0Bf,EAAkBt2U,OAAOt4E,GACzDvb,KAAKypa,mBAAqB7ma,UAC1B,MAAMuJ,EAASnM,KAAKmra,eAAeD,GACnClra,KAAKqpa,mBAAqBzma,UAC1B5C,KAAKmiT,gBAAkB,MACvB,OAAOh2S,EAETxM,qBAAqB4b,GACnB,OAAOvb,KAAKo8P,YAAY7gP,GAa1B5b,kBAAkB4b,GAChB,GAAIvb,KAAKqkF,aAAc,OAAOrkF,KAAK0jT,QACnC1jT,KAAKqkF,aAAe,KACpBrkF,KAAKqpa,mBAAqBrpa,KAAKuka,aAC/B,OAAOvka,KAAK0jT,QAAU1jT,KAAK0jT,QAAQjzS,MAAK,IAC/BzQ,KAAKslT,cAAc/pS,KACzB9K,MAAKuD,GACCA,IACNo7P,SAAQ,KACTpvQ,KAAKqpa,mBAAqBzma,UAC1B5C,KAAKspa,sBAAwB1ma,UAC7B5C,KAAKmiT,gBAAkB,MACvBniT,KAAKqkF,aAAe,SAGxB1kF,oBAAoB4b,GAClBvb,KAAKulT,uBACL,MAAM4kH,EAAoBnqa,KAAKmqa,kBAC/B,MAAMiB,QAA0BjB,EAAkB/tK,YAAY7gP,GAC9Dvb,KAAKspa,sBAAwBa,EAAkBzhV,UAC/C1oF,KAAKypa,mBAAqB7ma,UAC1B,MAAMuJ,EAASnM,KAAKmra,eAAeC,SAC7Bpra,KAAKqra,oBAAoBD,GAC/B,GAAIjB,EAAkBvE,aAAcuE,EAAkBmB,gBACtD,GAAItra,KAAKsuV,MAAO,OACRtuV,KAAKslT,cAAc/pS,GAE3B,OAAOpP,EAETxM,eAAeyra,GACb,MAAM72G,SACJA,EAAQztT,QACRA,EAAO4rG,YACPA,GACE04T,EACJ,IAAK14T,EAAYkzT,aAAc,CAC7B,GAAIrxG,EAAS11L,WAAa7+H,KAAKuka,aAAc,MAAM,IAAI7zZ,MAAM,2BAE7D,IAAK,MAAO6jT,EAAUi2G,KAAgBxqa,KAAKyqa,wBAAyB,CAClE,GAAID,EAAaj2G,EAASivG,iBAC1BjvG,EAASkvG,iBAEXzja,KAAKuka,aAAevka,KAAKupa,YAAch1G,EAGvC,IAAK,MAAOtvQ,EAAYsmX,KAAezka,EAAS,CAC9Cyka,EAAW5zV,UAEX,GAAI4zV,EAAW7J,aAAe6J,EAAWjF,WAAY,SACrD,MAAMl4Y,EAAWpuB,KAAKqtB,UAAU3b,IAAIuzC,GACpC,GAAI72B,EAAUA,EAASb,QAAQg+Y,EAAWlmZ,YAE5CrlB,KAAKiqa,mBAAqBrna,UAC1B5C,KAAKkqa,mBACA,CAEL,GAAIlqa,KAAKqpa,mBAAoBrpa,KAAKuka,aAAevka,KAAKqpa,mBACtDrpa,KAAKqpa,mBAAqBzma,UAC1B5C,KAAKspa,sBAAwB1ma,UAE/B,MAAO,CACLgja,aAAclzT,EAAYkzT,cAG9Bjma,0BAA0Byra,IAC1Bzra,2BAA2BuvS,GACzB,MAAMpsM,EAAY,IAAIpyF,MAAM,uBAAyBw+R,GAErDpsM,EAAUosM,MAAQA,EAClB,OAAQlvS,KAAK+pa,oBACX,IAAK,SACHn1Z,QAAQ4/E,IAAIsO,EAAUruF,SACtB,MAAM0zZ,eACJA,EAAcjC,YACdA,GACEh3H,EAEJ,OAAOg3H,EAAY7G,oBAAoB8I,EAAe7K,gBAAkB16Z,UAAYula,EAAe7K,cAAgB6K,EAAe5oa,OACpI,IAAK,QACH,MAAMujG,EACR,IAAK,SACH9iG,KAAK00B,OAAOouE,GACZ,OAGNnjG,8BAA8BuvS,GAC5B,MAAMpsM,EAAY,IAAIpyF,MAAM,uBAAyBw+R,GAErDpsM,EAAUosM,MAAQA,EAClB,OAAQlvS,KAAK+pa,oBACX,IAAK,SACHn1Z,QAAQ4/E,IAAIsO,EAAUruF,SACtB,MAAM0zZ,eACJA,EAAcjC,YACdA,GACEh3H,EAEJ,OAAOg3H,EAAY7G,oBAAoB8I,EAAe7K,gBAAkB16Z,UAAYula,EAAe7K,cAAgB6K,EAAe5oa,OACpI,IAAK,QACH,MAAMujG,EACR,IAAK,SACH9iG,KAAK00B,OAAOouE,GACZ,OAGNnjG,qBAIE,GAAIK,KAAK2pa,sBAAwB,OAAS3pa,KAAKqkF,aAAc,CAC3DrkF,KAAK2pa,oBAAsB5sZ,WAAW/c,KAAK6pa,kBAAmB,KAGlElqa,uBACE,GAAIK,KAAK2pa,sBAAwB,KAAM,CACrCjiZ,aAAa1nB,KAAK2pa,qBAClB3pa,KAAK2pa,oBAAsB,MAQ/Bhqa,SAASJ,GACP,MAAMw6Z,EAAWiJ,KAEjB,OAAOhja,KAAKwra,cAAczR,EAAUx6Z,IAAUqD,UAAY,KAAOrD,GAQnEI,cAAc8E,EAAMlF,GAClB,MAAMw6Z,EAAWiJ,GAAU,CACzBv+Z,KAAAA,IAGF,OAAOzE,KAAKwra,cAAczR,EAAUx6Z,IAAUqD,UAAY,KAAOrD,GAWnEI,WAAWu/Z,EAAazxV,GACtB,MAAMxoB,EAAaywW,GAAoBwJ,GAAekE,GAAoB,CACxElE,YAAAA,EACAzxV,QAAAA,IACGy1V,GAAqB,CACxBhE,YAAAA,EACAzxV,QAAAA,IAEF,OAAOztE,KAAKwra,cAAcvmX,GAY5BtlD,gBAAgB8E,EAAMy6Z,EAAazxV,GACjC,MAAMxoB,EAAai6W,EAAY7uZ,YAAY5L,OAAS,oBAAsB2+Z,GAAoB,CAC5F3+Z,KAAAA,EACAy6Z,YAAAA,EACAzxV,QAAAA,IACGy1V,GAAqB,CACxBz+Z,KAAAA,EACAy6Z,YAAAA,EACAzxV,QAAAA,IAEF,OAAOztE,KAAKwra,cAAcvmX,GAS5BtlD,cAAcslD,EAAYq4W,KAAkB/hZ,GAC1C,GAAIvb,KAAKqkF,aAAc,CACrB,GAAIrkF,KAAK8pa,sBAAwB,QAAS,MAAM,IAAIp5Z,MAAM,mCAE5D1Q,KAAKmqa,kBAAkBqB,cAAcvmX,EAAYq4W,KAAkB/hZ,GACnE,GAAIvb,KAAKoxF,WAAYpxF,KAAKyra,qBAC1B,OAAOxmX,EAOTtlD,iBAAiBslD,GACf,GAAIjlD,KAAKqkF,aAAc,CACrB,GAAIrkF,KAAK8pa,sBAAwB,QAAS,MAAM,IAAIp5Z,MAAM,qCAE5D1Q,KAAKmqa,kBAAkBuB,iBAAiBzmX,GACxCjlD,KAAKqtB,UAAU/T,OAAO2rC,GACtB,GAAIjlD,KAAKoxF,WAAYpxF,KAAKyra,qBAO5B9ra,cAAcslD,GACZ,OAAOjlD,KAAKmqa,kBAAkBwB,cAAc1mX,GAS9CtlD,MAAMslD,EAAYq4W,KAAkB/hZ,GAClC,GAAIvb,KAAKqkF,aAAc,CACrB,GAAIrkF,KAAK8pa,sBAAwB,QAAS,MAAM,IAAIp5Z,MAAM,uBAE5D1Q,KAAKmqa,kBAAkB1H,MAAMx9W,EAAYq4W,KAAkB/hZ,GAC3D,GAAIvb,KAAKoxF,WAAYpxF,KAAKyra,qBAS5B9ra,aAAaslD,GACX,OAAOjlD,KAAKmqa,kBAAkBpD,aAAa9hX,GAK7CtlD,kBAAkBslD,GAChB,OAAOjlD,KAAKmqa,kBAAkBnD,kBAAkB/hX,GASlDtlD,KAAKslD,GACH,OAAOjlD,KAAKmqa,kBAAkBz8T,KAAKzoD,GASrCtlD,UAAUslD,GACR,OAAOjlD,KAAKmqa,kBAAkBzH,UAAUz9W,GAO1CtlD,IAAIslD,GACF,OAAOjlD,KAAKmqa,kBAAkBz4Z,IAAIuzC,GAYpCtlD,QAAQisa,EAAcC,GACpB,MAAM5mX,EAAajlD,KAAKwra,cAAcrI,GAAmBtyS,IAAI,CAE3D94G,KAAM,MACNmnZ,YAAa0M,KAEf5ra,KAAK+tB,YAAYk3B,EAAY4mX,GAC7B,OAAO5mX,EAETtlD,eAAeisa,EAAcn+V,EAASo+V,GACpC,MAAM5mX,EAAajlD,KAAKwra,cAAcrI,GAAmBtyS,IAAI,CAE3D94G,KAAM,MACNmnZ,YAAa0M,EACbn+V,QAASA,KAEXztE,KAAK+tB,YAAYk3B,EAAY4mX,GAC7B,OAAO5mX,EAETtlD,YAAYslD,EAAY4mX,GACtB,IAAIz9Y,EAAWpuB,KAAKqtB,UAAU3b,IAAIuzC,GAClC,IAAK72B,EAAU,CACbA,EAAW+6Y,GAASt4S,MACpB7wH,KAAKqtB,UAAU/b,IAAI2zC,EAAY72B,GAEjCA,EAASgwF,SAAS5/G,KAAKqta,GASzBlsa,OACE,MAAM4ka,EAAevka,KAAKuka,aAC1B,MAAM1lS,EAAW0lS,EAAa1lS,SAC9B,IAAKA,EAAU,OAAO,MACtB7+H,KAAKuka,aAAe1lS,EAEpB7+H,KAAKypa,mBAAqB7ma,UAC1B,OAAO,KAUTjD,OACE,MAAM4ka,EAAevka,KAAKuka,aAC1B,GAAIA,IAAiBvka,KAAKupa,YAAa,OAAO,MAC9C,MAAMuC,EAAe9ra,KAAK+qa,kBAAkBr5Z,IAAI6yZ,GAChDvka,KAAKuka,aAAeuH,EAEpB9ra,KAAKypa,mBAAqB7ma,UAC1B,OAAO,KAETjD,kCAAkCosa,IAClCpsa,CAACg9Z,IAA0B+C,EAAQhtT,GACjC,MAAMwzT,EAAcxzT,EAAYyzT,iBAChCD,EAAY9F,uBAAyB,KACrC,MAAM9C,EAAgB4I,EAAY8F,iBAAiBt5T,GACnD,GAAI4qT,IAAkB16Z,UAAW,OAAO06Z,EAExC,IAAK4I,EAAYrnS,SAAU,OAAOj8H,UAClC,MAAMqiD,EAAaihX,EAAYjhX,WAC/B,GAAIA,EAAWltC,KAAM,CACnB,GAAImuZ,EAAYrnS,SAASynS,WAAY,OAAOJ,EAAYrnS,SAASx5G,WACjE,GAAI6gZ,EAAYrnS,SAASw7R,mBAAoB,OAAO6L,EAAYrnS,SAASmtS,iBAAiBt5T,GAC1F,OAAO,KAET,OAAOA,EAAYq0T,aAAab,EAAYjhX,YAE9CtlD,CAACk9Z,IAAc6C,EAAQhtT,GACrB1yG,KAAK00B,OAAOgrY,EAAO/mT,QACnB,OAAO8jT,GAET98Z,CAACq9Z,IAAmB0C,EAAQhtT,GAC1B,OAAOA,EAET/yG,CAACs9Z,IAAgByC,EAAQhtT,GACvB,OAAOA,EAAYyzT,iBAErBxma,CAACu9Z,IAAqBwC,EAAQhtT,GAC5B,MAAMwzT,EAAcxzT,EAAYyzT,iBAChC,OAAOD,EAAYjhX,WAErBtlD,CAACw9Z,IAAauC,EAAQhtT,GACpB,MAAMwzT,EAAcxzT,EAAYyzT,iBAChC,GAAID,EAAYjhX,WAAWltC,KAAM,MAAM,IAAIrH,MAAM,+CACjD,MAAMu7Z,EAAqBvM,EAAOz6W,WAAWh3C,MAAQi4Z,EAAYjhX,WAAWh3C,MAC5E,IAAKg+Z,EAAoBv5T,EAAYgmT,YAAY2P,gBACjD31T,EAAY+vT,MAAM/C,EAAOz6W,cAAey6W,EAAOnC,cAQ/C,OAAO0O,EAAqBrpa,UAAY65Z,GAE1C98Z,CAAC69Z,IAAoBkC,EAAQhtT,GAC3B,MAAMwzT,EAAcxzT,EAAYyzT,iBAChC,GAAID,EAAYjhX,WAAWltC,KAAM,MAAM,IAAIrH,MAAM,+CACjD,IAAIu7Z,EAAqB,KAEzBvM,EAAO/B,OAAO3+Z,SAAQkta,IACpB,GAAIA,EAAUjnX,WAAWh3C,OAASi4Z,EAAYjhX,WAAWh3C,OAASg+Z,EAAoB,CACpFv5T,EAAYgmT,YAAY2P,gBACxB4D,EAAqB,MAEvBv5T,EAAY+vT,MAAMyJ,EAAUjnX,cAAeinX,EAAU3O,iBAOvD,OAAO0O,EAAqBrpa,UAAY65Z,GAE1C98Z,CAACi+Z,IAAuB8B,EAAQhtT,GAC9B,MAAMwzT,EAAcxzT,EAAYyzT,iBAChC,MAAMpna,EAAS2ga,EAAOz6W,WACtBytD,EAAY0zT,QAAQrna,EAAQmna,EAAarB,IACzC,OAAOnyT,EAAYq0T,aAAahoa,GAElCY,CAACo+Z,IAAuB2B,EAAQhtT,GAC9B,MAAMwzT,EAAcxzT,EAAYyzT,iBAChC,MAAMpna,EAAS2ga,EAAOz6W,WACtBytD,EAAY0zT,QAAQrna,EAAQmna,EAAarB,IACzC,MAAM5D,EAAQvuT,EAAY5rG,QAAQ4K,IAAI3S,GACtC,MAAMu+Z,EAAgB2D,IAAUA,EAAMS,WAAaT,EAAM+K,iBAAiBt5T,GAAe9vG,UACzF,OAAO06Z,EAET39Z,CAACu+Z,IAAwBwB,EAAQhtT,GAC/B,MAAMwzT,EAAcxzT,EAAYyzT,iBAChC,MAAMpna,EAAS2ga,EAAOz6W,WACtBytD,EAAY0zT,QAAQrna,EAAQmna,EAAarB,IACzC,MAAM5D,EAAQvuT,EAAY5rG,QAAQ4K,IAAI3S,GACtC,OAAOkia,EAAQA,EAAM5G,mBAAqB,MAE5C16Z,CAACy+Z,IAAiCsB,EAAQhtT,GACxC,MAAMwzT,EAAcxzT,EAAYyzT,iBAChC,MAAMpna,EAAS2ga,EAAOz6W,WACtBytD,EAAY0zT,QAAQrna,EAAQmna,EAAarB,IACzC,OAAOnyT,EAAYy5T,uBAAuBpta,GAE5CY,CAAC++Z,IAAuCgB,EAAQhtT,GAC9C,OAAOA,EAAYy5T,uBAAuBzM,EAAOz6W,YAEnDtlD,CAACg/Z,IAA6Be,EAAQhtT,GACpC,OAAOA,EAAYq0T,aAAarH,EAAOz6W,YAEzCtlD,CAAC4+Z,IAA2BmB,EAAQhtT,GAClC,MAAMwzT,EAAcxzT,EAAYyzT,iBAChC,MAAMpna,EAAS2ga,EAAOz6W,WACtBytD,EAAY0zT,QAAQrna,EAAQmna,EAAarB,IACzC,MAAM5D,EAAQvuT,EAAY5rG,QAAQ4K,IAAI3S,GACtC,OAAOkia,IAAUA,EAAMS,WAAaT,EAAMd,kBAAoBv9Z,WASlE,MAAMwpa,WAAmBv/H,GACvBltS,cACEua,SAASrb,WAITmB,KAAKyE,KAAO7B,UACZ5C,KAAKqsa,UAAY,IAAI76Z,IACrBxR,KAAKssa,OAAS1pa,UACd5C,KAAKusa,UAAY,GACjBvsa,KAAKwsa,WAAa5pa,UAOpBjD,SAAS8E,GACP,OAAOzE,KAAKuwN,SAAS9rN,KAAU7B,UAOjCjD,SAAS8E,GACP,OAAOzE,KAAKo/E,UAAU1tE,IAAIjN,GAO5B9E,SAAS4W,GACP,MAAM9R,EAAO8R,EAAM9R,KACnB,IAAKA,EAAM,MAAM,IAAIiM,MAAM,0BAC3B,GAAI1Q,KAAKqsa,UAAUpuZ,IAAIxZ,GAAO,MAAM,IAAIiM,MAAM,oBAAoBjM,qBAClE8R,EAAMk2Z,OAASzsa,KACfA,KAAKqsa,UAAU/6Z,IAAI7M,EAAM8R,GACzB,OAAOA,EAET5W,cAAc6mB,GACZ,IAAIimZ,EAASzsa,KACb,MAAOysa,EAAQ,CACbjmZ,EAAKimZ,GACLA,EAASA,EAAOC,cAGpBttV,gBACE,GAAIp/E,KAAKwsa,aAAe5pa,UAAW,OAAO5C,KAAKwsa,WAC/C,MAAMptV,EAAY,IAAI5tE,IACtB,MAAMgN,EAAU,IAAIK,IACpB7e,KAAK2sa,eAAcF,IACjBA,EAAOJ,UAAUrta,SAAQ,CAACuX,EAAO9R,KAC/B,IAAK+Z,EAAQP,IAAIxZ,GAAO,CACtB+Z,EAAQO,IAAIta,GACZ26E,EAAU9tE,IAAI7M,EAAM8R,UAI1B,OAAOvW,KAAKwsa,WAAaptV,EAO3Bz/E,aAAa6mB,GACXxmB,KAAKo/E,UAAUpgF,QAAQwnB,IAI3B,IAAIomZ,IACJ,SAAWA,GACTA,EAASA,EAAS,WAAa,GAAK,UACpCA,EAASA,EAAS,YAAc,GAAK,WACrCA,EAASA,EAAS,sBAAwB,GAAK,qBAC/CA,EAASA,EAAS,+BAAiC,GAAK,+BAJ1D,CAKGA,KAAaA,GAAW,KA2B3B,MAAMC,WAAgB3gI,GAAM,CAACk9H,KAAc9yZ,GAAQ,MAAMu2Z,UAAgBv2Z,EACvE3W,cACEua,SAASrb,WAITmB,KAAKoxF,WAAa,KAClBpxF,KAAK8sa,SAAWF,GAASG,QAO3Bpta,UAAU8sa,GACRA,EAAOtF,WAAWnna,MAOpBL,YAAYqta,GACVA,EAAShua,SAAQyta,GAAUzsa,KAAKita,UAAUR,KAO5C9sa,aAAa8sa,GACXA,EAAOrF,WAAWpna,MAOpBL,eAAeqta,GACbA,EAAShua,SAAQyta,GAAUzsa,KAAKkta,aAAaT,WASjD,MAAMU,WAAwBjhI,GAAM,CAACm2H,KAAa/rZ,GAAQ,MAAM62Z,UAAwB72Z,EACtF3W,cACEua,SAASrb,WAITmB,KAAKuW,MAAQ3T,UAIb5C,KAAKgoE,KAAOplE,UAGZ5C,KAAKota,KAAOxqa,UAWdjD,aAAa82S,GACX,GAAIA,EAAO,CACT,GAAIA,EAAMq2H,WAAaF,GAASG,QAAS,OAAOt2H,EAAM/kS,IAAI1R,MAC1D,GAAIy2S,EAAMq2H,WAAaF,GAASS,SAAU,OAAO52H,EAAM0zH,kBAAkBpD,aAAa/ma,MACtF,GAAIy2S,EAAMq2H,WAAaF,GAAShQ,mBAAoBnmH,EAAM0zH,kBAAkBgC,uBAAuBnsa,MACnG,OAAOy2S,EAAM0zH,kBAAkBmD,gCAAgCtta,WAC1D,OAAOA,KAAKota,KAErBzta,cAAc82S,GACZ,GAAIA,EAAO,OAAOA,EAAM/oM,KAAK1tG,WAAW,OAAOA,KAAKota,KAEtDzta,aAAa82S,EAAO6mH,KAAkB/hZ,GACpC,GAAIk7R,EAAOA,EAAMgsH,MAAMzia,KAAMs9Z,KAAkB/hZ,QAAWvb,KAAKota,KAAO9P,EAExE39Z,WAAW82S,GACT,MAAMhrP,EAAQgrP,EAAM0zH,kBAAkBpI,wBAAwB/ha,MAC9D,GAAIyrD,EAAOzrD,KAAKota,KAAO3hX,EAAMpmC,WAC7BnL,MAAMktZ,WAAW3wH,GAEnB92S,WACE,OAAOK,KAAKyE,WAGhB,MAAM8oa,WAAmCJ,GAAgBlhI,IAAIg3H,MAC7D,MAAMuK,WAAkCL,GAAgBlhI,IAAIk3H,MAC5D,MAAMsK,WAA6BN,GAAgBlhI,IAAI42H,MAMvD,MAAM6K,WAAyBxhI,GAAM,CAACm2H,KAAa/rZ,GAAQ,MAAMo3Z,UAAyBp3Z,EACxF3W,cACEua,SAASrb,WAITmB,KAAKysa,OAAS7pa,UAId5C,KAAKgoE,KAAOplE,UAKdjD,WACE,OAAO,MAETA,WACE,MAAO,sBAAsBK,KAAKgoE,cAGtC,MAAM2lW,WAAgCD,GAAiBzhI,IAAIk3H,MAM3D,MAAM76S,WAAc/nE,GAClB5gD,cACEua,SAASrb,WAITmB,KAAK4ta,WAAa,KAEpBjua,mBAAmBkua,GACjB,GAAI7ta,KAAK8ta,cAAe,OAAO9ta,KAAK8ta,cACpC,IAAKD,EAAqB,OAAOJ,GACjC,OAAO/X,GAAoBmY,GAAuBL,GAA4BD,IAIlF,MAAMQ,GAAiBv4Z,OAAO,YA6B9B,MAAMw4Z,WAAe9hI,GAAM,IAAI51R,IAC7B,MAAM03Z,UAAe13Z,EAKnB3W,CAACoua,OAKDtkB,cAEE,OAAOwkB,GAAwBjua,KAAKqQ,YAAYxC,WAuBlDknG,QACE,MAAMA,EAAI,GACV/0G,KAAKypZ,QAAQykB,cAAa,CAAC33Z,EAAO9R,KAChCswG,EAAEtwG,GAAQzE,KAAKmua,sBAAsB53Z,MAEvC,CACE,OAAOlX,GAAeW,KAAM,IAAK+0G,IAMrCq5T,SACE,OAAO/ua,GAAeW,KAAM,KAAM2ta,GAAwB98S,IAAI,CAC5DpsH,KAAMzE,KAAKqua,YACX5B,OAAQzsa,KAAKypZ,QACbyV,YAAal/Z,KAAKsua,cAClB7gW,QAASztE,KACTgoE,KAAMhoE,QAGVqua,kBACE,OAAOrua,KAAKqQ,YAAY5L,MAAQzE,KAAKypZ,QAAQhlZ,KAE/C9E,iBACE,OAAOK,KAETL,sBAAsB4W,GACpB,MAAM9R,EAAO8R,EAAM9R,KACnB,MAAMgoa,EAASzsa,KAAKypZ,QACpB,MAAMp5Y,EAAcrQ,KAAKqQ,YACzB,MAAMk+Z,EAAW9B,EAAOF,UACxB,IAAKgC,EAAS9pa,GAAO8pa,EAAS9pa,GAAQ4L,EAAYm+Z,2BAA2Bxua,KAAMuW,GACnF,MAAM0uC,EAAa,IAAIspX,EAAS9pa,GAChCwgD,EAAWwoB,QAAUztE,KACrBilD,EAAW+iB,KAAOhoE,KAClBilD,EAAWxgD,KAAO,GAAGzE,KAAKoua,GAAG3pa,UAAU8R,EAAM9R,OAC7C,OAAOwgD,EAETtlD,uBAAuB6mB,GACrBxmB,KAAKypZ,QAAQykB,cAAa,CAAC33Z,EAAO9R,IAAS+hB,EAAKxmB,KAAK+0G,EAAEtwG,GAAOA,KAOhE9E,WAAW8ua,GACT,GAAIzua,KAAKy2S,MAAO,MAAM,IAAI/lS,MAAM,2BAChC1Q,KAAKy2S,MAAQg4H,EACbA,EAAQjD,cAAcxra,KAAKoua,IAC3Bpua,KAAKypZ,QAAQykB,cAAa,CAAC33Z,EAAO9R,KAChC,MAAMwgD,EAAajlD,KAAK+0G,EAAEtwG,GAC1Bgqa,EAAQjD,cAAcvmX,EAAYA,EAAWmoX,MAC7CnoX,EAAWmoX,KAAOxqa,aAMtBjD,WAAW82S,GACT,MAAMi4H,EAAW1ua,KAAKy2S,MACtB,MAAMk4H,EAAal4H,GAASi4H,EAC5B,IAAKC,EAAY,OACjB3ua,KAAKypZ,QAAQykB,cAAa,CAAC33Z,EAAO9R,IAASkqa,EAAWjD,iBAAiB1ra,KAAK+0G,EAAEtwG,MAC9Ekqa,EAAWjD,iBAAiB1ra,KAAKoua,IACjC,GAAIO,IAAeD,EAAU1ua,KAAKy2S,MAAQ7zS,UAK5CjD,UAAUmyO,GACR,OAAO9xO,KAAK6zF,OAAOi+I,GAOrBnyO,OAAOmyO,GACL,MAAM2kE,EAAQz2S,KAAKy2S,MACnB,IAAKA,EAAO,OAAOyyH,GACnB,OAAOzyH,EAAM5iN,OAAOi+I,GAEtBnyO,uBACE,OAAOK,KAAKo8P,cAOdz8P,kBAAkBmyO,GAChB,MAAM2kE,EAAQz2S,KAAKy2S,MACnB,IAAKA,EAAO,OAAOlmS,QAAQC,QAAQ04Z,IACnC,OAAOzyH,EAAMr6C,YAAYtqB,GAM3B23K,qBACE,OAAOmlB,GAAwB5ua,KAAK6N,WAEtClO,kCAAkCI,EAAIwW,GACpC,MAAM9R,EAAO8R,EAAM9R,KACnB,MAAM0T,EAAS,CACb1T,KAAM,GAAG1E,EAAGqua,GAAG3pa,UAAUA,IACzB8R,MAAOA,GAGT,GAAIA,EAAMzI,eAAe,QAASqK,EAAOmtG,KAAO/uG,EAAM+uG,KACtD,GAAI/uG,EAAMzI,eAAe,QAASqK,EAAOJ,KAAOxB,EAAMwB,KACtD,GAAIxB,EAAMzI,eAAe,YAAaqK,EAAO6vZ,SAAWzxZ,EAAMyxZ,SAE9D,MAAM6F,EAAsB9ta,EAAG8ua,eAAiB9ua,EAAGA,EAAG8ua,cAAcpqa,IACpE,GAAIopa,EAAqB11Z,EAAO+mZ,YAAc2O,EAE9C,MAAMiB,EAAgB/ua,EAAGgva,SAAWhva,EAAGA,EAAGgva,QAAQtqa,IAClD,GAAIqqa,EAAe32Z,EAAOsqZ,MAAQqM,EAElC,MAAME,EAAwBjva,EAAGkva,gBAAkBlva,EAAGA,EAAGkva,eAAexqa,IACxE,GAAIuqa,EAAuB,CACzB72Z,EAAOypZ,mBAAqBoN,EAC5B72Z,EAAOyoZ,qBAAuB,KAGhC,MAAM9tW,EAAWv8C,EAAM24Z,mBAAmBrB,GAAqBh9S,IAAI14G,GACnE,MAAMg3Z,EAAgB,aACtBA,EAActha,UAAYilD,EAC1B,OAAOq8W,EAOTxva,IAAIsoX,KAAe1sW,GACjB,MAAM0jZ,EAAWS,IACf,GAAIA,aAAkB2C,GAAY,OAAOria,KAAKy2S,MAAM/oM,KAAKgyT,GACzD,MAAM,IAAIhvZ,MAAM,4DAElB,MAAMgiG,EAAc1yG,KAAKy2S,MAAM0zH,kBAC/B,MAAM5B,EAAkB71T,EAAYwyT,YACpCxyT,EAAYwyT,YAAc,GAC1B,MAAMlxZ,EAAMyrZ,GAA2BR,EAAUj/Z,KAAKioX,GAAa1sW,EAAMvb,MACzE0yG,EAAYwyT,YAAcqD,EAC1B,OAAOv0Z,EAETrU,kCAAkCwzC,GAGhC,MAAMkiX,EAAcliX,EACpB,MAAMx0C,EAASqB,KAAK6N,UACpB5P,OAAOoB,eAAeV,EAAQ02Z,EAAa,CACzC3jZ,IAAK,WACH,OAAO1R,KAAK+0G,EAAEsgT,GAAa+Z,aAAapva,KAAKy2S,QAE/CnlS,IAAK,SAAU/R,GACbS,KAAK+0G,EAAEsgT,GAAaga,aAAarva,KAAKy2S,MAAOl3S,MAInDI,gCAAgCwzC,GAG9B,MAAMkiX,EAAcliX,EACpB,MAAMx0C,EAASqB,KAAK6N,UACpB,MAAMyha,EAAe,MAAMpa,GAAeG,KAC1C,MAAMka,EAAe,MAAMra,GAAeG,KAC1C,MAAMma,EAAe,MAAMta,GAAeG,KAC1C,KAAMia,KAAgB3wa,GAAS,CAC7BA,EAAO2wa,GAAgB,WACrB,OAAOtva,KAAK+0G,EAAEsgT,GAAa+Z,aAAapva,KAAKy2S,QAGjD,KAAM84H,KAAgB5wa,GAAS,CAC7BA,EAAO4wa,GAAgB,SAAUhwa,KAAUgc,GACzCvb,KAAK+0G,EAAEsgT,GAAaga,aAAarva,KAAKy2S,MAAOl3S,KAAUgc,GACvD,OAAOvb,KAAKy2S,MAAQz2S,KAAKy2S,MAAMmzH,iBAAmB,OAAS5pa,KAAKy2S,MAAM5iN,SAAW7zF,KAAKy2S,MAAMr6C,cAAgB7rP,QAAQC,QAAQ04Z,KAGhI,KAAMsG,KAAgB7wa,GAAS,CAC7BA,EAAO6wa,GAAgB,SAAUjwa,KAAUgc,GACzCvb,KAAK+0G,EAAEsgT,GAAaga,aAAarva,KAAKy2S,MAAOl3S,KAAUgc,MAK/D,OAAOyyZ,OAGT,MAAMC,GAA0BptZ,IAC9B,IAAIvO,EAASrU,OAAO4S,eAAegQ,GAGnC,OAAOxhB,GAAewhB,EAAO,UAAWurZ,GAAWv7S,IAAI,CACrD67S,aAAcp6Z,EAAOxE,eAAeiga,IAAkB,KAAOz7Z,EAAOm3Y,QACpEhlZ,KAAMoc,EAAMxQ,YAAY5L,SAI5B,MAAMmqa,GAA0B/tZ,IAC9B,IAAKA,EAAM/S,eAAe,WAAYmga,GAAwBptZ,GAC9D,OAAOA,EAAM4oY,SAMf,MAAMgmB,GAAgB,CAACxsD,EAAaysD,EAAWpnT,KACtC,SAAU3pH,EAAQw0C,GACvB,MAAMs5X,EAASmC,GAAwBjwa,GACvC8ta,EAAO5vV,SAAS6yV,EAAS7+S,IAAI5yH,OAAOmZ,OAAO6rW,GAAe,GAAI,CAC5Dx+W,KAAM0uC,MAER,MAAMw8X,EAAOhxa,EAAO0R,YACpBs/Z,EAAKC,2BAA2Bz8X,GAChCw8X,EAAKE,yBAAyB18X,IAwDlC,MAAM58B,GAAQk5Z,GAyBd,MAAMjxH,GAAY,SAAUrrQ,GAE1B,OAAO,SAAUx0C,EAAQ02Z,EAAax+Y,GACpC+3Z,GAAwBjwa,GACxB,IAAImxa,EACJ,IAAKnxa,EAAOkwa,cAAe,CACzBiB,EAAenxa,EAAOkwa,cAAgB,OACjC,CACL,IAAKlwa,EAAOmP,eAAe,iBAAkB,CAC3Cgia,EAAenxa,EAAOkwa,cAAgB5wa,OAAOoZ,OAAO1Y,EAAOkwa,oBACtDiB,EAAenxa,EAAOkwa,cAE/BiB,EAAa38X,GAAakiX,IAI9B,MAAMoN,GAAQ,SAAUtvX,GAEtB,OAAO,SAAUx0C,EAAQ02Z,EAAax+Y,GACpC+3Z,GAAwBjwa,GACxB,IAAIg/Z,EACJ,IAAKh/Z,EAAOowa,QAAS,CACnBpR,EAASh/Z,EAAOowa,QAAU,OACrB,CACL,IAAKpwa,EAAOmP,eAAe,WAAY,CACrC6vZ,EAASh/Z,EAAOowa,QAAU9wa,OAAOoZ,OAAO1Y,EAAOowa,cAC1CpR,EAASh/Z,EAAOowa,QAEzBpR,EAAOxqX,GAAakiX,IAIxB,MAAM0a,GAAiB,SAAU58X,GAE/B,OAAO,SAAUx0C,EAAQ02Z,EAAax+Y,GACpC+3Z,GAAwBjwa,GACxB,IAAIqxa,EACJ,IAAKrxa,EAAOswa,eAAgB,CAC1Be,EAAgBrxa,EAAOswa,eAAiB,OACnC,CACL,IAAKtwa,EAAOmP,eAAe,kBAAmB,CAC5Ckia,EAAgBrxa,EAAOswa,eAAiBhxa,OAAOoZ,OAAO1Y,EAAOswa,qBACxDe,EAAgBrxa,EAAOswa,eAEhCe,EAAc78X,GAAakiX,IAI/B,IAAI4a,GAAoD,SAAUxY,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAO9D,MAAMggZ,WAAuBhkI,GAAM,CAAC5jL,KAAQhyG,GAAQ,MAAM45Z,UAAuB55Z,EAC/E3W,cACEua,SAASrb,WACTmB,KAAK8ta,cAAgBqC,SAuBzB,MAAMpnX,GAAY,CAACk6T,EAAaysD,EAAWQ,KAAmBT,GAAcxsD,EAAaysD,GAEzF,MAAMU,WAA4BlkI,GAAM,CAACihI,KAAkB72Z,IACzD,MAAM85Z,UAA4B95Z,EAChC3W,cACEua,SAASrb,WACTmB,KAAKuW,MAAQ3T,UACb5C,KAAK4ga,qBAAuB,KAE9Bjha,YACE,OAAOO,QAAQF,KAAKuW,MAAMkM,QAE5B9iB,UAAU8sa,GACR,OAAOA,EAAO13T,EAAE/0G,KAAKuW,MAAMkM,QAE7B9iB,mBAAmBI,EAAIkha,EAAOvuT,GAC5B,MAAM4qT,EAAgB2D,EAAM3D,cAC5B,GAAIA,IAAkB,KAAM,OAAO,KACnC,MAAM/9Z,EAAQotS,GAAa2wH,EAAe0Q,IAAU1Q,EAAgBv9Z,EAAGyQ,QAAQ8sZ,GAC/E,GAAI/9Z,GAASQ,EAAGswa,YAAa,CAC3Btwa,EAAGuwa,UAAU/wa,GAAOgxa,YAAY79T,EAAa3yG,EAAGioE,MAElD,OAAOzoE,EAETI,QAAQ6wa,GACN,MAAMC,EAAWzwa,KAAKuW,MAAMk6Z,SAC5B,OAAOA,EAAWA,EAAS5pa,KAAK7G,KAAKgoE,KAAMwoW,GAAW,KAExD7wa,WAAW82S,GACT,GAAIz2S,KAAKqwa,YAAa,CACpB,MAAM9wa,EAAQk3S,EAAM0zH,kBAAkBgC,uBAAuBnsa,MAC7D,GAAIT,aAAiByua,GAAQ,CAE3Bhua,KAAKswa,UAAU/wa,GAAOgxa,YAAY95H,EAAM0zH,kBAAmBnqa,KAAKgoE,OAGpE9tD,MAAMitZ,WAAW1wH,GAEnB92S,WAAW82S,GACT,GAAIz2S,KAAKqwa,YAAa,CAGpB,MAAM9wa,EAAQk3S,EAAM0zH,kBAAkBgC,uBAAuBnsa,MAC7D,GAAIT,aAAiByua,GAAQ,CAC3Bhua,KAAKswa,UAAU/wa,GAAOmxa,iBAAiBj6H,EAAM0zH,kBAAmBnqa,KAAKgoE,OAGzE9tD,MAAMktZ,WAAW3wH,GAEnB92S,MAAMI,EAAI2yG,EAAapuE,EAAGg5X,KAAkB/hZ,GAC1C,MAAM0lZ,EAAQ38X,GAAKouE,EAAYi+T,qBAAqB5wa,GACpD,GAAIA,EAAGswa,YAAa,CAClB,GAAIpP,EAAO,CACT,MAAM7qK,EAAY6qK,EAAM57Y,WACxB,GAAI+wO,aAAqB43K,GAAQ,CAC/Bjua,EAAGuwa,UAAUl6K,GAAWs6K,iBAAiBh+T,EAAa3yG,EAAGioE,YAEtD,GAAI0qC,EAAY6xT,aAAaoH,cAAc5ra,GAAK,CACrD,MAAMR,EAAQmzG,EAAYq0T,aAAahna,GACvC,GAAIR,aAAiByua,GAAQ,CAC3Bjua,EAAGuwa,UAAU/wa,GAAOmxa,iBAAiBh+T,EAAa3yG,EAAGioE,QAM3D9tD,MAAMuoZ,MAAM1ia,EAAI2yG,EAAapuE,EAAGg5X,IAGpC2S,GAAa,CAAC7a,GAAe6M,GAAO2O,yBAA0BR,EAAoBvia,UAAW,aAAc,GAC3Goia,GAAa,CAAC7a,GAAeuN,KAAayN,EAAoBvia,UAAW,kBAAmB,GAC5F,OAAOuia,OAET,MAAMD,WAAmCC,GAAoBnkI,IAAIkhI,GAAgBlhI,IAAIg3H,OAErF,IAAI4N,GAAoD,SAAUpZ,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAO9D,MAAM4gZ,WAA6B5kI,GAAM,CAAC5jL,KAAQhyG,GAAQ,MAAMw6Z,UAA6Bx6Z,EAC3F3W,cACEua,SAASrb,WACTmB,KAAK4ta,WAAa,MAClB5ta,KAAK8ta,cAAgBiD,SAyBzB,MAAMtuZ,GAAS,CAACwgW,EAAaysD,EAAWoB,KAAyBrB,GAAcxsD,EAAaysD,GAC5F,IAAIsB,IACJ,SAAWA,GACTA,EAAmB,OAAS,MAC5BA,EAAmB,UAAY,UAFjC,CAGGA,KAAuBA,GAAqB,KAE/C,MAAMC,WAA6B/kI,GAAM,CAAC+zH,KAAQ3pZ,GAAQ,MAAM26Z,UAA6B36Z,EAC3F3W,cACEua,SAASrb,WACTmB,KAAK4kH,UAAY,GACjB5kH,KAAKkxa,cAAgBtua,UAEvBjD,wBACE,OAAOK,KAAK4kH,UAAU9lH,OAAS,QAGnC,MAAMqya,GAA8BF,GAAqBhlI,IAAI02H,IAE7D,MAAMyO,WAAkCllI,GAAM,CAACihI,KAAkB72Z,IAI/D,MAAM86Z,UAAkC96Z,EACtC3W,cACEua,SAASrb,WACTmB,KAAK4ga,qBAAuB,KAE9Bjha,YAAY+yG,EAAa+5T,GACvB,MAAMxL,EAAQvuT,EAAY8vT,eAAexia,MACzCiha,EAAMr8S,UAAUpmH,KAAK,CACnBqO,KAAMmka,GAAmBK,IACzB5E,OAAAA,IAEF,MAAMlI,EAAe7xT,EAAY6xT,aACjC,IAAKtD,EAAMiQ,eAAiB3M,EAAaoH,cAAc3ra,MAAOiha,EAAMiQ,cAAgBx+T,EAAYq0T,aAAa/ma,MAE/GL,iBAAiB+yG,EAAa+5T,GAC5B,MAAM6E,EAAW5+T,EAAY5rG,QAAQ4K,IAAI1R,MAEzC,GAAIsxa,GAAYA,EAASjsZ,aAAew7Y,GAAW,OACnD,MAAMI,EAAQvuT,EAAY8vT,eAAexia,MACzCiha,EAAMr8S,UAAUpmH,KAAK,CACnBqO,KAAMmka,GAAmBO,OACzB9E,OAAAA,IAEF,MAAMlI,EAAe7xT,EAAY6xT,aACjC,IAAKtD,EAAMiQ,eAAiB3M,EAAaoH,cAAc3ra,MAAOiha,EAAMiQ,cAAgBx+T,EAAYq0T,aAAa/ma,MAE/GL,mBAAmBI,EAAIyxa,EAAU9+T,GAC/B,MAAMuuT,EAAQuQ,EACd,MAAMh5Z,EAAW,IAAIqG,IAAIoiZ,EAAMiQ,eAC/B,IAAK,IAAItya,EAAI,EAAGA,EAAIqia,EAAMr8S,UAAU9lH,OAAQF,IAAK,CAC/C,MAAMiO,KACJA,EAAI4/Z,OACJA,GACExL,EAAMr8S,UAAUhmH,GACpB,GAAIiO,IAASmka,GAAmBO,OAAQ,CACtC/4Z,EAASc,OAAOmzZ,QACX,GAAI5/Z,IAASmka,GAAmBK,IAAK,CAC1C74Z,EAASuG,IAAI0tZ,IAGjB,OAAOj0Z,EAET7Y,WAAW82S,GACTv8R,MAAMktZ,WAAW3wH,GACjBz2S,KAAKota,KAAOxqa,WAGhBiua,GAAa,CAACzb,GAAe6M,GAAOwP,sCAAuCL,EAA0Bvja,UAAW,aAAc,GAC9Hgja,GAAa,CAACzb,GAAe+b,KAA+BC,EAA0Bvja,UAAW,kBAAmB,GACpH,OAAOuja,OAGT,MAAML,WAAyCK,GAA0BnlI,IAAIkhI,GAAgBlhI,IAAIg3H,OASjG,MAAMyO,WAAe7kI,GACnBltS,cACEua,SAASrb,WACTmB,KAAKgta,SAAW,IAAIx7Z,IAOtB7R,UAAU8E,GACR,OAAOzE,KAAKgta,SAAS/uZ,IAAIxZ,GAO3B9E,UAAU8E,GACR,OAAOzE,KAAKgta,SAASt7Z,IAAIjN,GAM3B9E,UAAU8sa,GACR,MAAMhoa,EAAOgoa,EAAOhoa,KACpB,IAAKA,EAAM,MAAM,IAAIiM,MAAM,2BAC3B,GAAI1Q,KAAK2xa,UAAUlta,GAAO,MAAM,IAAIiM,MAAM,qBAAqBxH,OAAOzE,sBACtEgoa,EAAOH,OAAStsa,KAChBA,KAAKgta,SAAS17Z,IAAI7M,EAAMgoa,GACxB,OAAOA,EAKT9sa,qBAEE,OAAOhB,IACL,MAAM8ta,EAASmF,GAAoBjza,GACnCqB,KAAKita,UAAUR,GACf,OAAO9ta,IAIb,MAAMiza,GAAsBjza,IAC1B,MAAM8F,EAAO9F,EAAO8F,KACpB,IAAKA,EAAM,MAAM,IAAIiM,MAAM,mDAC3B,OAAOk+Z,GAAwBjwa,EAAOkP,YA+BxC,MAAMgka,WAAyB3lI,GAAM,CAAC8hI,GAAQryV,KAAQrlE,IACpD,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMgka,UAAyBv7Z,EAE7B8hV,eACE,OAAO,KAETz4V,UAAUwY,KAAWoD,GAInBvb,KAAKqQ,YAAYssE,mBAEjB38E,KAAKo0E,aAAej8D,EAASA,GAAU,GAIvCs9R,EAAWj6R,UAAU3U,KAAK7G,KAAMmY,KAAWoD,GAE3C,IAAK,MAAM43B,KAAanzC,KAAKo0E,aAAc,CACzC,GAAIp0E,KAAK+0G,EAAE5hE,KAAenzC,KAAKisE,mBAAmB94B,GAAY,CAC5DnzC,KAAKmzC,GAAah7B,EAAOg7B,KAQ/BxzC,qBACE,aAAai9Z,GAEfj9Z,KAAKomF,EAAQ,KAAMjzC,EAAO,MACxB,MAAMmzC,EAAOwvN,EAAWxvN,KAAKp/E,KAAK7G,KAAM+lF,EAAOjzC,GAG/C,GAAI9B,GAAaphC,SAASkjC,KAAUA,EAAKouQ,uBAAyBlwQ,GAAaphC,SAASkjC,GAAO,CAC7F9yC,KAAK8xa,wBAAuB,CAAC7sX,EAAY9R,KACvC8yC,EAAK9yC,GAAanzC,KAAKmzC,MAG3B,OAAO8yC,EAETtmF,WAAW+iF,EAASzjF,EAAKM,EAAOsiF,EAAetrE,GAE7C,MAAMw7Z,EAAc/xa,KAAKypZ,QAAQl5L,UAAUh6M,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM9R,OAASxF,GACxG,GAAI8ya,EAAarvV,EAAU,KAC3B,GAAIb,EAAe,CACjBa,EAAU,MAEZ+yN,EAAW3yN,WAAWj8E,KAAK7G,KAAM0iF,EAASA,EAAUnsE,EAAM9R,KAAOxF,EAAKM,EAAOsiF,EAAetrE,GAE9FokS,4BACE,IAAIq3H,EAEJ,MAAM7H,GAAqB6H,EAAchya,KAAKy2S,SAAW,MAAQu7H,SAAqB,OAAS,EAAIA,EAAY7H,kBAC/G,OAAOjqa,QAAQiqa,IAAsB,MAAQA,SAA2B,OAAS,EAAIA,EAAkBtI,kBAAkB7ha,KAAKoua,KAEhIl0Y,WACE,OAAOl6B,KAAKqnE,MAEdntC,SAASA,GACPl6B,KAAKqnE,MAAQntC,EAEb,MAAMm/C,OACJA,GACEr5E,KACJ,IAAK,IAAIpB,EAAI,EAAGA,EAAIy6E,EAAOv6E,OAAQF,IAAK,CACtC,MAAM6F,KACJA,EAAI8zE,WACJA,EAAUW,eACVA,GACEG,EAAOz6E,GACX,MAAMmza,EAAc/xa,KAAKypZ,QAAQl5L,SAAS9rN,GAC1C,GAAIsta,EAAa,CACf,MAAMxya,EAAQ25E,EAAiBloC,GAAat0B,QAAQwd,EAAMq+C,GAAcr+C,EAAKq+C,GAE7E,IAAKW,GAAkBX,KAAcr+C,KAAUl6B,KAAKq9E,YAAc,MAAQ99E,IAAUqD,WAAY,CAE9F5C,KAAKyE,GAAQlF,KAKrB8ua,kBACE,MAAM3vX,EAAY1+C,KAAKqQ,YAAY5L,MAAQzE,KAAKypZ,QAAQhlZ,KACxD,MAAMkG,EAAK3K,KAAK2K,GAChB,MAAO,GAAG+zC,IAAY/zC,GAAM,KAAO,IAAMzB,OAAOyB,GAAM,MAG1D,OAAOkna,OAIT,MAAMI,GAAW,CACf77Y,WAAY,KACZY,WAAY,UACZk7Y,sCAAuC,CACrCC,eAAgB,qBAElBC,0CAA2C,CACzCD,eAAgB,yBAElBE,uBAAwB,CACtBF,eAAgB,0CAElBG,+BAAgC,CAC9BH,eAAgB,+DAElBI,sCAAuC,CACrCJ,eAAgB,iEAElBK,qCAAsC,CACpCL,eAAgB,2FAElBM,0BAA2B,CACzBN,eAAgB,qEAElBO,8BAA+B,CAC7BnlT,WAAY,OAEdolT,qCAAsC,CACpCC,wBAAyB,yBACzBC,sBAAuB,wBAEzB3lI,eAAgB,CACd0mG,KAAM,CAAC,iBAAkB,kBAAmB,kBAAmB,qBAEjEk/B,qDAAsD,CACpDC,oBAAqB,4EACrBC,kBAAmB,4EAErBC,2CAA4C,CAC1Cd,eAAgB,uCAElBe,wCAAyC,CACvCf,eAAgB,wCAElBgB,2BAA4B,CAC1BhB,eAAgB,yCAElBiB,+BAAgC,CAC9BjB,eAAgB,6CAElBkB,kCAAmC,CACjCT,wBAAyB,gCACzBC,sBAAuB,gCACvBS,kBAAmB,CACjBC,mBAAoB,wBACpBC,oBAAqB,yBACrBC,YAAa,gBACbC,aAAc,iBACdC,iBAAkB,sBAClBC,kBAAmB,yBAGvBC,uCAAwC,CACtC1B,eAAgB,0CAIpB95Y,GAAuBvB,eAAe,KAAM,CAC1CC,KAAM,UACNf,OAAQi8Y,KAMV,MAAM6B,WAAqBjnI,GACzBltS,cAAc4b,GACZrB,MAAMq2J,cAAch1J,GACpB,IAAKvb,KAAKmtC,UAAWntC,KAAKmtC,UAAYogQ,GACtC,IAAKvtS,KAAKotC,QAASptC,KAAKotC,QAAUogQ,GAEpC7tS,QAAQo0a,GACN,OAAO/za,KAAKmtC,UAAUn9B,YAAc+ja,EAAQ5mY,UAAUn9B,WAAahQ,KAAKotC,QAAQp9B,YAAc+ja,EAAQ3mY,QAAQp9B,UAEhHrQ,aACE,OAAOK,KAAKmtC,UAAUn9B,YAAcu9R,GAASv9R,WAAahQ,KAAKotC,QAAQp9B,YAAcw9R,GAASx9R,UAEhGrQ,oBACE,OAAQK,KAAKg0a,mBAAqBh0a,KAAKmtC,UAAUn9B,YAAcu9R,GAASv9R,UAE1ErQ,kBACE,OAAQK,KAAKg0a,mBAAqBh0a,KAAKotC,QAAQp9B,YAAcw9R,GAASx9R,UASxErQ,aAAa68B,EAAM21Q,EAAgBzE,GAAcxtP,MAC/C,OAAOiyP,IAAkBzE,GAAcxtP,MAAQ1jB,GAAQx8B,KAAKmtC,WAAa3Q,EAAOx8B,KAAKotC,SAAW+kQ,IAAkBzE,GAActtP,OAAS5jB,EAAOx8B,KAAKmtC,WAAa3Q,GAAQx8B,KAAKotC,QAEjLztC,kBACE,OAAOK,KAAKmtC,UAAYntC,KAAKotC,QAM/BztC,UAAUo0a,GACR,MAAME,EAAeF,EAAQ5mY,UAC7B,MAAM+mY,EAAaH,EAAQ3mY,QAC3B,MAAM5kB,EAAQxoB,KAAKmtC,UACnB,MAAMzpB,EAAM1jB,KAAKotC,QAEjB,GAAI1pB,EAAMuwZ,GAAgBzrZ,EAAQ0rZ,EAAY,CAE5C,OAAOC,GAET,MAAMz7C,EAAW,IAAIlqX,KAAK4F,KAAKC,IAAImU,EAAMxY,UAAWika,EAAajka,YACjE,MAAM4oX,EAAS,IAAIpqX,KAAK4F,KAAKuU,IAAIjF,EAAI1T,UAAWkka,EAAWlka,YAC3D,OAAOhQ,KAAKqQ,YAAYwgH,IAAI,CAC1B1jF,UAAWurV,EACXtrV,QAASwrV,IAObj5X,aAAao0a,EAASK,EAA0B,OAC9C,MAAMH,EAAeF,EAAQ5mY,UAC7B,MAAM+mY,EAAaH,EAAQ3mY,QAC3B,MAAM5kB,EAAQxoB,KAAKmtC,UACnB,MAAMzpB,EAAM1jB,KAAKotC,QAGjB,GAAIgnY,EAAyB,CAC3B,IAAIC,EACJ,IAAKr0a,KAAKs0a,eAAgBt0a,KAAKs0a,eAAiB,IAAIz1Z,IACpD,KAAMw1Z,EAAwBN,EAAQO,kBAAoB,MAAQD,SAA+B,OAAS,EAAIA,EAAsB9ia,MAAQ,EAAG,CAE7Iwia,EAAQO,eAAet1a,QAAQgB,KAAKs0a,eAAev1Z,IAAK/e,KAAKs0a,gBAC7Dt0a,KAAKu0a,mBAAqBR,EAAQQ,uBAG/B,CACHv0a,KAAKs0a,eAAev1Z,IAAIg1Z,IAI5B,IAAK/za,KAAKg0a,kBAAmB,CAE3B,GAAItwZ,EAAMuwZ,GAAgBzrZ,EAAQ0rZ,EAAY,CAE5Cl0a,KAAKmtC,UAAYqgQ,GACjBxtS,KAAKotC,QAAUmgQ,GAEf,GAAI6mI,EAAyB,CAC3Bp0a,KAAKu0a,mBAAqBR,EAE5B,OAAO/za,KAETA,KAAKmtC,UAAY,IAAI3+B,KAAK4F,KAAKC,IAAImU,EAAMxY,UAAWika,EAAajka,YACjEhQ,KAAKotC,QAAU,IAAI5+B,KAAK4F,KAAKuU,IAAIjF,EAAI1T,UAAWkka,EAAWlka,YAE7D,OAAOhQ,KAETL,kBAAkBu6B,GAChB,OAAOA,EAETv6B,SAASu6B,GACP,MAAMs6Y,EAAWx0a,KAAKy0a,kBAAkBv6Y,GAExC,OAAOl6B,KAAKqQ,YAAYwgH,IAAI2jT,IAGhC,MAAML,GAAiBL,GAAajjT,IAAI,CACtC1jF,UAAWqgQ,GACXpgQ,QAASmgQ,KAOX,MAAMmnI,GAAqB,CAACC,EAAeP,EAA0B,QAC5DO,EAAclpa,QAAO,CAACq8R,EAAK8sI,IAAoB9sI,EAAI+sI,aAAaD,EAAiBR,IAA0BN,GAAajjT,OAGjI,IAAIikT,GAAoD,SAAUrd,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAK9D,IAAI6kZ,IACJ,SAAWA,GAITA,EAAuB,UAAY,SAInCA,EAAuB,UAAY,UARrC,CASGA,KAA2BA,GAAyB,KAIvD,MAAMC,WAAwC35Z,GAI5C1b,iBACE,MAAM,IAAI+Q,MAAM,mBAKlB/Q,WAAW4b,GACT,MAAM,IAAI7K,MAAM,oBASpB,MAAMuka,WAA8BvY,GAIlC/8Z,iBACE,OAAOK,KAAKk1a,aAEdv1a,6BACE,OAAOK,KAAKm1a,yBAEdx1a,2BAA2BmW,GACzB9V,KAAKm1a,yBAA2Br/Z,EAKlCnW,iBACE,OAAOK,KAAKo1a,6BAA6BC,eAAer1a,OAG5D80a,GAAa,CAAC1f,GAAe,0BAA2B6f,GAAsBpna,UAAW,YAAa,GACtGina,GAAa,CAAC1f,GAAe,QAAS6f,GAAsBpna,UAAW,YAAa,GAEpF,IAAIyna,GAAoD,SAAU7d,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAG9D,MAAMqlZ,GAAiB//Z,OAAO,kBAI9B,MAAMi9Z,WAAkC35Y,GAAYzd,KAClDtN,mBACE,MAAO,4BAMTpO,sBAAsB61a,GACpB,OAAO14Y,GAAO98B,KAAKm7B,EAAE,qBAAsBq6Y,EAAS3yW,UAAU,GAAGwyW,iBAAkBG,EAAS3yW,UAAU,GAAGwyW,mBAM7G,MAAMI,WAAuBR,GAC3Bt1a,cACEua,SAASrb,WACTmB,KAAK6P,QAAU0la,GAEjB51a,WAAWyyC,GACTl4B,MAAMq2J,WAAWn+H,GAEjBpyC,KAAK6iE,UAAY7iE,KAAK01a,2BAA2B11a,KAAK6iE,WAKxDljE,iBACE,IAAKK,KAAKk1a,aAAc,CAEtBl1a,KAAKk1a,aAAe,GAAGvuZ,UAAU3mB,KAAK6iE,UAAUh5D,KAAI0xI,GAAYA,EAASo6R,oBAE3E,OAAO31a,KAAKk1a,aAEdv1a,2BAA2BkjE,GACzB,MAAM12D,EAAS,GAEf,MAAMypa,EAAiB,IAAI/yW,GAAWzkE,QAAOm9I,IAAaA,EAASs6R,eACnE,MAAMC,EAAmBjzW,EAAU9xC,MAAKwqH,GAAYA,EAASw6R,4BAE7D,GAAID,EAAkB,CAEpB,MAAM3tU,EAASytU,EAAe39Z,MAAK,CAACpS,EAAGye,IAAMze,IAAMiwa,GAAoB,EAAI,IAE3E,MAAME,EAAetB,GAAmBvsU,EAAQ,MAChD,MAAM8tU,EAAsBD,EAAazB,mBACzCpoa,EAAO3N,KAAKy3a,EAAqBH,OAC5B,CACL3pa,EAAO3N,KAAKk2a,GAAmBkB,EAAgB,MAAMrB,mBAAoBG,GAAmBkB,EAAezxU,UAAW,MAAMowU,oBAE9H,OAAOpoa,GAGXmpa,GAAa,CAAClgB,GAAe,uBAAwBqgB,GAAe5na,UAAW,YAAa,GAC5Fyna,GAAa,CAAClgB,GAAeqd,KAA6BgD,GAAe5na,UAAW,gCAAiC,GAIrH,MAAMqoa,WAA2BlB,GAI/Br1a,UACE,MAAM,IAAI+Q,MAAM,oBAOpB,MAAMgia,WAAsC55Y,GAAYzd,KACtDtN,mBACE,MAAO,gCAMTpO,sBAAsB47I,GACpB,OAAOz+G,GAAO98B,KAAKm7B,EAAE,wBAAyBn7B,KAAKm2a,yBAAyB56R,IAM9E57I,gCAAgC47I,GAC9B,MAAO,CAAC17G,GAAW/C,OAAOy+G,EAASpuG,UAAWntC,KAAKm7B,EAAE,kBAAmB0E,GAAW/C,OAAOy+G,EAASnuG,QAASptC,KAAKm7B,EAAE,oBAMvH,MAAMi7Y,WAA2BtC,GAC/Bn0a,cACEua,SAASrb,WACTmB,KAAK2Y,MAAQ/V,UACb5C,KAAKq2a,aAAezza,UACpB5C,KAAK+lW,KAAOnjW,UACZ5C,KAAKs2a,YAAc1za,UAErB2za,2BACE,OAAO,KAKT52a,iBACE,OAAOK,KAAKw2a,wBAAwBnB,eAAer1a,MAKrDL,iBACE,MAAO,GAETA,wBAAwB+yG,GACtB,OAAO,MAET/yG,kBAAkBu6B,GAChB,MAAMvhB,MACJA,EAAK09Z,aACLA,EAAYtwE,KACZA,GACE/lW,KACJ,OAAO/B,OAAOmZ,OAAO,CACnBuB,MAAAA,EACA09Z,aAAAA,EACAtwE,KAAAA,GACC7rU,IAGPo7Y,GAAa,CAAClgB,GAAesd,KAAiC0D,GAAmBvoa,UAAW,+BAAgC,GAE5H,IAAI4oa,GAAoD,SAAUhf,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAE9D,MAAMwmZ,GAAsB,SAAU78Z,EAAUrB,GAC9C,OAAOqB,IAAarB,IAAaA,IAAa,MAAQA,SAAkB,GAAKA,EAASxG,OAAShS,KAAK4jF,UAAUprE,GAAYA,MAAeqB,IAAa,MAAQA,SAAkB,GAAKA,EAAS7H,OAAShS,KAAK4jF,UAAU/pE,GAAYA,IAGpO,MAAM88Z,WAAmBruT,GACvB3oH,cACEua,SAASrb,WACTmB,KAAK42a,iBAAmB,GAE1Bj3a,mBAAmBkua,GACjB,GAAI7ta,KAAK8ta,cAAe,OAAO9ta,KAAK8ta,cACpC,IAAKD,EAAqB,OAAOgJ,GACjC,OAAOnhB,GAAoBmY,GAAuBiJ,GAAuCC,IAI7F,MAAMC,WAA4B9G,GAAejkI,IAAI0qI,KACnDh3a,cACEua,SAASrb,WACTmB,KAAK8ta,cAAgBmJ,IAKzB,MAAMC,WAAyBpG,GAAqB7kI,IAAI3jL,KACtD3oH,cACEua,SAASrb,WACTmB,KAAK8ta,cAAgBqJ,IAWzB,MAAMC,GAAsB5ha,OAAO,uBAEnC,MAAM6ha,WAAmCnrI,GAAM,CAACihI,KAAkB72Z,IAChE,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMwpa,UAAmC/ga,EACvC3W,CAACy3a,OACDz3a,aAAa82S,GACX,GAAIA,EAAO,CACT,GAAIA,EAAMq2H,WAAaF,GAAS0K,4BAA6B,CAC3D,IAAIC,EAAuBC,EAG3B,MAAMC,EAAchhI,EAAMpyN,cAAgBrkF,KAAKiO,QAAUspa,GAAyBC,EAAyB/gI,EAAM0zH,kBAAkBhE,oBAAsB,MAAQqR,SAAgC,OAAS,EAAIA,EAAuBvpa,SAAW,MAAQspa,SAA+B,EAAIA,EAAwBtja,OAAO89H,kBAC1T,GAAI/xI,KAAKslH,OAAStlH,KAAKytE,QAAQ89B,QAAQsiN,wBAA0B4pH,EAAa,OAAOhhI,EAAM/kS,IAAI1R,WAAW,OAAOy2S,EAAM0zH,kBAAkBmD,gCAAgCtta,MAE3K,OAAOy1S,EAAW25H,aAAavoa,KAAK7G,KAAMy2S,QACrC,OAAOz2S,KAAKota,KAErBzta,aAAa82S,EAAO6mH,KAAkB/hZ,GACpC,GAAIk7R,EAAO,CACThB,EAAW45H,aAAaxoa,KAAK7G,KAAMy2S,EAAO6mH,KAAkB/hZ,OACvD,CACLvb,KAAKota,KAAO9P,EAEZ,IAAKt9Z,KAAKgoE,KAAK+D,UAAW,CAExB/rE,KAAKgoE,KAAK12D,IAAItR,KAAKuW,MAAM9R,KAAM64Z,EAAe,MAAO,MAAO,QAIlE39Z,MAAMI,EAAI2yG,EAAauuT,EAAO3D,KAAkB/hZ,GAE9C+hZ,EAAgBv9Z,EAAGo+E,QAAQm/U,GAC3B7nH,EAAWgtH,MAAM57Z,KAAK7G,KAAMD,EAAI2yG,EAAauuT,EAAO3D,KAAkB/hZ,GAExE5b,QAAQJ,GACN,MAAMgX,EAAQvW,KAAKuW,MACnB,MAAMirN,EAAkBxhO,KAAKgoE,KAAKiE,mBAAmB11D,EAAM9R,MAE3D,GAAI+8N,IAAoB,MAAQA,SAAyB,GAAKA,EAAgBrjJ,QAAS,CACrF5+E,EAAQiiO,EAAgBrjJ,QAAQ5+E,EAAOS,KAAKytE,cAEvC,GAAIl3D,EAAMquP,UAAW,CAC1BrlQ,EAAQgX,EAAMquP,UAAUrlQ,EAAOgX,GAEjC,OAAOhX,EAETI,SAASksB,EAAIG,GACX,GAAIH,aAAcrd,MAAQwd,aAAcxd,KAAM,OAAOqd,EAAG7b,YAAcgc,EAAGhc,UACzE,OAAO6b,IAAOG,GAGlByqZ,GAAa,CAACrhB,GAAe,QAASiiB,EAA2Bxpa,UAAW,YAAa,GACzF,OAAOwpa,OAGT,MAAMK,WAAuCxrI,GAAM,CAACy2H,KAAYrsZ,IAC9D,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM6pa,UAAuCpha,EAC3C3W,SAASJ,GACPk2S,EAAWxtO,SAASphE,KAAK7G,KAAMT,GAI/B,GAAIA,IAAUsha,GAAW7ga,KAAKilD,WAAWmoX,KAAO7ta,GAGpD,OAAOm4a,OAET,MAAMT,WAA4C7G,GAAoBnkI,IAAIorI,GAA2BprI,IAAIshI,MACvG5ta,mBAAmBI,EAAIukC,EAAGouE,GACxB,MAAMuuT,EAAQ38X,EACd,MAAMg5X,EAAgB2D,EAAM3D,cAC5B,GAAIA,IAAkB,MAAQA,IAAkB16Z,UAAW,CACzD8vG,EAAYhqB,UAAUivV,2BAA2Br+Z,OAAO2nZ,EAAMh8W,YAC9D,OAAO,KAIT,GAAI0nP,GAAa2wH,EAAe0Q,KAAW1Q,EAAc7mH,MAAO,CAC9D,GAAI12S,EAAGswa,YAAatwa,EAAGuwa,UAAUhT,GAAeiT,YAAY79T,EAAa3yG,EAAGioE,MAC5E0qC,EAAYhqB,UAAUivV,2BAA2Br+Z,OAAO2nZ,EAAMh8W,YAC9D,OAAOq4W,EAET,MAAMh+G,EAAWv/S,EAAGyQ,QAAQ8sZ,GAG5B,GAAI3wH,GAAa2S,EAAU0uH,KAAW1uH,EAAS7I,MAAO,CACpD,GAAI12S,EAAGswa,YAAatwa,EAAGuwa,UAAUhxH,GAAUixH,YAAY79T,EAAa3yG,EAAGioE,MACvE0qC,EAAYhqB,UAAUivV,2BAA2Br+Z,OAAO2nZ,EAAMh8W,YAC9D,OAAOq6P,MACF,CACL5sM,EAAYhqB,UAAUivV,2BAA2Brma,IAAI2vZ,EAAMh8W,WAAYq4W,GACvE,OAAO,OAIbmZ,GAAa,CAACrhB,GAAe,OAAQ6hB,GAAoCppa,UAAW,YAAa,GACjG4oa,GAAa,CAACrhB,GAAesiB,KAAkCT,GAAoCppa,UAAW,kBAAmB,GAEjI,MAAMspa,WAAkD/F,GAA0BnlI,IAAIorI,GAA2BprI,IAAIshI,OACrHkJ,GAAa,CAACrhB,GAAe,OAAQ+hB,GAA0Ctpa,UAAW,YAAa,GACvG,MAAMkpa,WAA8CM,GAA2BprI,IAAIshI,MACnF,MAAMuJ,WAA6CO,GAA2BprI,IAAIuhI,MAClF,MAAMqJ,WAAwCQ,GAA2BprI,IAAIwhI,MAE7E,MAAMmK,GAAc,SAAUhB,EAAmB,GAAIiB,EAAoB,GAAIC,EAAmBnB,IAC9F,OAAO,SAAUh4a,EAAQ02Z,GACvB,MAAM0iB,EAActI,GAAc/wa,EAAe,CAC/Ck4a,iBAAAA,GACCiB,GAAoBC,GACvBC,EAAYp5a,EAAQ02Z,GACpB2iB,GAA2Br5a,EAAO0R,eAGtC,MAAM2na,GAA6Bnqa,IACjC,IAAKA,EAAUC,eAAe,UAAW,CACvC7P,OAAOoB,eAAewO,EAAW,SAAU,CACzC6D,IAAK,WACH,OAAOuma,GAAwBj4a,WAKvC,MAAMi4a,GAA0BC,IAC9B,MAAMr3Z,EAAQq3Z,EAAOrqa,UACrB,MAAM1B,EAAS,GACf,GAAI0U,EAAM/S,eAAe,WAAY,CACnC+S,EAAM4oY,QAAQ4iB,UAAUrta,SAAQuX,IAC9B,GAAIA,aAAiBoga,GAAY,CAC/B,MAAMx+Z,EAAS5B,EAAMqga,kBAAoB,GACzC,IAAKz+Z,EAAOgmE,SAAW5nE,EAAMquP,WAAaruP,EAAMquP,YAAcuzK,GAAe,CAC3Ehga,EAAOgmE,QAAU5nE,EAAMquP,UAEzBz4P,EAAO3N,KAAKP,OAAOmZ,OAAOe,EAAQ,CAChCiga,QAAS7ha,EACT9R,KAAM8R,EAAM9R,YAKpB,OAAO0H,GAET,MAAMgsa,GAAgB,CAAC37Y,EAAMjmB,KAC3B,GAAIimB,IAAS,KAAM,CACjB,OAAO,KAET,KAAMA,aAAgBhuB,MAAO,CAC3B,IAAI6pa,EAAuBC,EAC3B97Y,EAAOqD,GAAW7zB,MAAMwwB,IAAQ67Y,EAAwB9ha,EAAMqga,oBAAsB,MAAQyB,SAA+B,OAAS,EAAIA,EAAsBv7Y,WAAaw7Y,EAAyB/ha,EAAMqga,oBAAsB,MAAQ0B,SAAgC,OAAS,EAAIA,EAAuB/qT,aAAe1tF,GAAW6F,oBAIxU,OAAOlJ,GAAQ55B,WASjB,MAAM21a,WAAwCrsI,GAAM,CAAC4I,KAAoCx+R,IAEvF,MAAMiia,UAAwCjia,EAI5C3W,WACE,MAAM4rG,EAAUvrG,KAAKk1S,aACrB,OAAO3pM,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQitU,WAMnE74a,aAAagL,GACX,IAAI8ta,EACJ,OAAQA,EAAsBz4a,KAAK46S,mBAAqB,MAAQ69H,SAA6B,OAAS,EAAIA,EAAoB5rW,QAAQliE,GAKxIhL,kBAAkBgL,GAChB,IAAI+ta,EACJ,OAAQA,EAAwB14a,KAAKs8S,wBAA0B,MAAQo8H,SAA+B,OAAS,EAAIA,EAAsB7rW,QAAQliE,GAKnJhL,gBAAgBgL,GACd,IAAIgua,EACJ,OAAQA,EAAwB34a,KAAK44a,sBAAwB,MAAQD,SAA+B,OAAS,EAAIA,EAAsB9rW,QAAQliE,GAKjJhL,kBAAkBgL,GAChB,IAAIkua,EACJ,OAAQA,EAAwB74a,KAAKq8S,wBAA0B,MAAQw8H,SAA+B,OAAS,EAAIA,EAAsBhsW,QAAQliE,GAKnJhL,gBAAgBgL,GACd,IAAImua,EACJ,OAAQA,EAAwB94a,KAAK+4a,6BAA+B,MAAQD,SAA+B,OAAS,EAAIA,EAAsBjsW,QAAQliE,IAG1J,OAAO4ta,OAGT,MAAMS,WAAyB9sI,GAAM,CAACtlM,KAAQtwF,GAAQ,MAAM0ia,UAAyB1ia,QAKrF,MAAM2ia,WAAsC/sI,GAAM,CAACsJ,GAAiC+iI,GAAiCS,KAAmB1ia,IACtI,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMora,UAAsC3ia,EAC1C3W,cACEua,SAASrb,WACTmB,KAAKk5a,aAAe,EAEtBv5a,aAAau6B,GACX,IAAI+7Q,GAGHA,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAckjI,gBAAgBn5a,MAC7Gy1S,EAAW1rM,aAAaljG,KAAK7G,KAAMk6B,GAErCv6B,SAAS6yE,GACP,IAAIkkO,EAAgBgB,EACpBjC,EAAWt+N,SAAStwE,KAAK7G,KAAMwyE,IAI9BA,EAAOrD,WAAaunO,EAAiB12S,KAAKurG,WAAa,MAAQmrM,SAAwB,GAAKA,EAAeD,UAAYiB,EAAiB13S,KAAKurG,WAAa,MAAQmsM,SAAwB,OAAS,EAAIA,EAAe0hI,8BAEzNz5a,cAAc6yE,EAAQc,EAAOxG,EAAQ52C,EAAQk2C,EAAoByV,GAa/D,IAAKA,KAAmB7hF,KAAKukG,gBAAkBvkG,KAAK01S,gBAAkBz3S,OAAOD,KAAK8uE,GAAQnlE,MAAK1I,GAAOuzE,EAAOi3U,QAAQl5L,SAAStxN,KAAO,CACnIi3B,EAAS,KAGXhc,MAAMopE,cAAc9Q,EAAQc,EAAOxG,EAAQ52C,EAAQk2C,EAAoByV,IAG3E,OAAOo3V,OAYT,MAAMI,WAAsCntI,GAAM,CAACiK,GAAiCoiI,GAAiC1G,KAAmBv7Z,IACtI,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMwra,UAAsC/ia,EAK1C3W,cACE,IAAIs2S,EACJ,MAAOA,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,GAAKA,EAAcugC,sBAAuB,CAChH,GAAIx2U,KAAKy2S,OAASz2S,KAAKy2S,OAASz2S,KAAKw4a,WAAY,CAC/Cx4a,KAAKy2S,MAAQ,KAEfz2S,KAAKw4a,WAAWvL,UAAUjta,OAM9BL,aAAagnF,EAAc,OACzB8uN,EAAWe,aAAa3vS,KAAK7G,KAAM2mF,GACnC,MAAM8nV,EAAUzua,KAAKw4a,WAErB/J,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQvB,aAAalta,MAEvEA,KAAKy2S,MAAQ,KAKf92S,aACE,OAAO81S,EAAWP,WAAWruS,KAAK7G,MAEpCL,mBACE,MAAMisE,EAAQ5rE,KAAKsuE,OAAOv9C,MAAKrhB,GAAKi9R,GAAaj9R,EAAGupa,OAAoCvpa,EAAEwlS,eAC1F,OAAOtpO,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMspO,aAG7DuB,YACE,IAAIC,EACJ,OAAQA,EAAiB12S,KAAKurG,WAAa,MAAQmrM,SAAwB,GAAKA,EAAe8/B,qBAAuB,KAAOx2U,KAAKs5a,OAEpI7iI,UAAUA,GACRz2S,KAAKs5a,OAAS7iI,GAGlB,OAAO4iI,OAGT,IAAIE,GAAoD,SAAU9hB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAE9D,MAAMspZ,GAAWhka,OAAO,iBACxB,MAAMika,GAAsBjka,OAAO,uBAMnC,MAAMkka,WAA0BxtI,GAAM,CAACgM,GAAuBmhI,KAAgC/ia,IAE5F,MAAMoja,UAA0Bpja,EAC9B3W,cACEua,SAASrb,WACTmB,KAAK4S,QAAU,EASjBjT,CAAC65a,QAEHD,GAAa,CAAChja,GAAM,CAClBq3Z,WAAY,SACT8L,EAAkB7ra,UAAW,eAAgB,GAClD0ra,GAAa,CAAC3B,GAAY,CACxB/qa,KAAM,YACH6sa,EAAkB7ra,UAAW,YAAa,GAC/C0ra,GAAa,CAAC3B,GAAY,CACxB/qa,KAAM,YACH6sa,EAAkB7ra,UAAW,WAAY,GAC9C0ra,GAAa,CAAC3B,GAAY,CACxB/qa,KAAM,YACH6sa,EAAkB7ra,UAAW,eAAgB,GAClD0ra,GAAa,CAAC3B,GAAY,CACxB/qa,KAAM,UACNjI,aAAc,QACX80a,EAAkB7ra,UAAW,gCAAiC,GACnE0ra,GAAa,CAAC3B,MAAgB8B,EAAkB7ra,UAAW,iBAAkB,GAC7E,OAAO6ra,OAKT,MAAMpH,WAAuCx5Y,GAAYzd,KACvDtN,mBACE,MAAO,iCAETpO,sBAAsB+/Z,GACpB,MAAMzvH,EAAWyvH,EAAO3oH,cACxB,OAAOj6Q,GAAO98B,KAAKm7B,EAAE,qBAAsB80Q,EAASxrS,MAAQwrS,EAAStlS,KAQzE,MAAMgva,WAA4B1E,GAChCt1a,cACEua,SAASrb,WACTmB,KAAK6P,QAAU4pa,GAEjB95a,iBACE,MAAMswS,EAAWjwS,KAAK+2S,cACtB,OAAO/2S,KAAKk1a,eAAiBl1a,KAAKk1a,aAAe,CAAC3C,GAAsC1hT,IAAI,CAC1Fo/K,SAAAA,IACEuiI,GAAqC3hT,IAAI,CAC3Co/K,SAAAA,MAOJtwS,cACE,MAAMkxS,UACJA,GACE7wS,KACJ,IAAK6wS,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU/xS,QAAU,EAAG,CAChF,IAAK,MAAMmxS,KAAYY,EAAW,CAChC,MAAM+oI,EAAc3pI,EAAS+J,mBAAmBh6S,KAAKw8B,KAAMx8B,KAAKquO,WAChE,KAAMurM,aAAuBpra,MAAO,CAClC,OAAOyhS,IAIb,OAAOY,EAAU,IAGrB0oI,GAAa,CAACnkB,GAAe,kBAAmBukB,GAAoB9ra,UAAW,YAAa,GAC5F0ra,GAAa,CAACnkB,GAAekd,KAAkCqH,GAAoB9ra,UAAW,gCAAiC,GAO/H,MAAMgsa,WAA0C/gZ,GAAYk8Y,KAC1Djna,mBACE,MAAO,oCAETvO,0BACE,MAAO,CAKLs6a,aAAc,CACZj3W,UAAW,CAAC,CACVqtO,UAAW,SAKnBvwS,iBACE,MAAMswS,SACJA,GACEjwS,KACJ,OAAO88B,GAAO98B,KAAKm7B,EAAE,qBAAsB80Q,EAASxrS,MAAQwrS,EAAStlS,IAOvEhL,gBAAgBswS,GACd,IAAI8pI,EACJ9pI,EAASg9E,eAAe,MAExBhvX,OAAOmZ,OAAO64R,EAAUjwS,KAAK85a,cAC7B,IAAKC,EAAsB9pI,EAASptO,aAAe,MAAQk3W,SAA6B,GAAKA,EAAoBj7a,OAAQ,CACvHmxS,EAASiJ,aAAajJ,EAASptO,YAMnCljE,UACE,MAAMswS,SACJA,GACEjwS,KACJA,KAAKg6a,gBAAgB/pI,IAOzB,MAAMsiI,WAA8CsH,GAClD9ra,mBACE,MAAO,wCAETvO,0BACE,MAAO,CACLs6a,aAAc,CACZvgI,yBAA0B,MAC1B12O,UAAW,CAAC,CACVq0O,mBAAoB,iBACpBC,iBAAkB,iBAClBjH,UAAW,UAUrB,MAAMsiI,WAA6CqH,GACjD9ra,mBACE,MAAO,uCAETvO,0BACE,MAAO,CACLs6a,aAAc,CACZvgI,yBAA0B,MAC1B12O,UAAW,CAAC,CACVq0O,mBAAoB,yBACpBC,iBAAkB,yBAClBjH,UAAW,MACV,CACDgH,mBAAoB,yBACpBC,iBAAkB,yBAClBjH,UAAW,UAOrB,IAAI+pI,GAAoD,SAAUxiB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAE9D,MAAMgqZ,GAAc1ka,OAAO,eAE3B,MAAM2ka,WAAuB5W,GAC3B5ja,cACEua,SAASrb,WACTmB,KAAK23a,2BAA6B,IAAInma,KAI1C,MAAM4oa,WAA0BrV,GAC9Bpla,cACEua,SAASrb,WACTmB,KAAKgla,eAAiBmV,GAExBx6a,WAAWyyC,GACT,IAAIioY,EAIJ,IAAKA,EAAuBjoY,EAAMqkQ,MAAMlrM,WAAa,MAAQ8uU,SAA8B,GAAKA,EAAqBC,iBAAkB,CACrIloY,EAAMmzX,kCAAoC,EAC1CnzX,EAAMozX,iCAAmC,IAE3CtrZ,MAAMq2J,WAAWn+H,GACjBpyC,KAAK0oF,UAAUivV,2BAA6B,IAAInma,IAAIxR,KAAKuka,aAAaoT,4BAExEh4a,cAAcslD,EAAYq4W,KAAkB/hZ,GAC1Cvb,KAAKu6a,iCACL,OAAOrga,MAAMsxZ,cAAcvmX,EAAYq4W,KAAkB/hZ,GAE3D5b,iCACEK,KAAK0oF,UAAUivV,2BAA2B34a,SAAQ,CAACw7a,EAAuBv1X,KACxEjlD,KAAKyia,MAAMx9W,EAAYu1X,MAEzBx6a,KAAK0oF,UAAUivV,2BAA2Bl5X,SAO9C,MAAMg8X,WAAsBvuI,GAAM,CAAC2gI,KAAUv2Z,IAC3C,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM4sa,UAAsBnka,EAC1B3W,cACEua,SAASrb,WACTmB,KAAKuka,aAAe4V,GAAetpT,MACnC7wH,KAAKgqa,iBAAmBoQ,GACxBp6a,KAAK4pa,eAAiB,QACtB5pa,KAAK+pa,mBAAqB,SAC1B/pa,KAAK06a,iBAAmBC,GACxB36a,KAAKsiT,qBAAuB,KAC5BtiT,KAAK46a,qCAAuC,MAS9CtsF,YACE,MAAM67E,EAAoBnqa,KAAKmqa,kBAC/B,OAAOA,EAAkBrja,QAAQyK,KAAO,IAAM44Z,EAAkBpE,kBAAoBoE,EAAkBrE,2BAExGnma,kCAAkCosa,GAChC,IAAI8O,EAAuB5kI,EAC3B,GAAIj2S,KAAKsoa,6BAA+Btoa,KAAKurG,SAAUsvU,GAAyB5kI,EAAgBj2S,KAAKurG,SAASh+E,WAAa,MAAQstZ,SAA+B,OAAS,EAAIA,EAAsBh0a,KAAKovS,EAAe,WAAY81H,GAEvOpsa,kBAAkB4b,GAChB,IAAKvb,KAAKurG,SAAWvrG,KAAKurG,QAAQrvF,YAAa,OAC/Clc,KAAKurG,QAAQh+E,QAAQ,gBACrB,GAAIvtB,KAAKmiT,iBAAmBniT,KAAK46a,qCAAsC,CAErE56a,KAAK86a,oBAAsB96a,KAAK86a,qBAAuB96a,KAAK+pa,mBAE5D/pa,KAAK+pa,mBAAqB,SAE5B,MAAMgR,EAAwB/6a,KAAKurG,QAAQyvU,oBAC3C,GAAID,EAAuB,OAAOA,EAClC,OAAOtlI,EAAWr5C,YAAYv1P,KAAK7G,KAAMub,GAE3C4mS,sBAEE,OAAOniT,KAAKurG,QAAQ42M,iBAAmBjoS,MAAMioS,gBAE/CA,oBAAoB5iT,GAClB2a,MAAMioS,gBAAkB5iT,EAE1BI,MAAMslD,EAAYq4W,KAAkB/hZ,GAClC,IAAI0/Z,EACJ,MAAM9nY,GAAa8nY,EAAoBh2X,EAAW1uC,SAAW,MAAQ0ka,SAA2B,OAAS,EAAIA,EAAkBx2a,KAC/H,MAAM+tE,EAASvtB,EAAW+iB,KAC1B,GAAI70B,GAAaq/B,EAAQ,CACvB,IAAI0oW,EAAuBC,EAE3B,MAAMC,GAAoBF,EAAwB1oW,EAAO6oW,wBAA0B,MAAQH,SAA+B,OAAS,EAAIA,EAAsBr0a,KAAK2rE,EAAQr/B,EAAWmqX,GACrL7nH,EAAWgtH,MAAM57Z,KAAK7G,KAAMilD,EAAYq4W,KAAkB/hZ,IAEzD4/Z,EAAwB3oW,EAAO8oW,uBAAyB,MAAQH,SAA+B,OAAS,EAAIA,EAAsBt0a,KAAK2rE,EAAQr/B,EAAWmqX,EAAe8d,OACrK,CACL3lI,EAAWgtH,MAAM57Z,KAAK7G,KAAMilD,EAAYq4W,KAAkB/hZ,IAG9D5b,0BAA0Byra,GAGxB,MAAM7/T,QACJA,GACEvrG,KACJ,IAAKurG,GAAWA,EAAQrvF,YAAa,OACrC,MAAMpV,QACJA,GACEska,EACJ,MAAMmQ,EAAmB,IAAI18Z,IAC7B,GAAIzc,WAAW8nT,MAAOt1S,QAAQgrK,QAAQ,mBACtC,MAAMuiI,gBACJA,EAAeG,qBACfA,GACEtiT,KAEJ,MAAMylT,EAAgBtD,GAAmBG,EACzC,GAAIH,EAAiB,CACnB52M,EAAQ62M,yBAA2B,KAEnC,GAAIpiT,KAAK46a,qCAAsC56a,KAAK+pa,mBAAqB/pa,KAAK86a,oBAEhFvvU,EAAQuqM,cAAgB,KACxBvqM,EAAQ2qM,sBAAwB,MAEhC,GAAIl2S,KAAKsoa,4BAA6B,CACpC/8T,EAAQh+E,QAAQ,WAAY,CAC1B20Y,MAAOkJ,EAAkBtka,QAAQyK,KACjC4mI,UAAW,EACXswR,MAAO,eAGX,MAAM/1T,EAAc04T,EAAkB14T,YAGtC,GAAIA,EAAYkzT,aAAc,CAC5B5la,KAAKurG,QAAQh+E,QAAQ,iBAAkB,CACrC69Y,kBAAmB,CACjB72G,SAAU7hN,EAAYhqB,UACtB5hF,QAAS4rG,EAAY5rG,QACrB4rG,YAAAA,GAEFyvM,gBAAAA,EACAsD,cAAAA,IAKJl6M,EAAQh+E,QAAQ,UAAW,CACzB40R,gBAAAA,EACA0D,aAAc,aAGV,IAAIt1S,SAAQC,IAChBuM,YAAW,KAET,IAAKwuF,EAAQrvF,YAAa,CACxB,IAAKkvZ,EAAkB14T,YAAYkzT,aAAc,CAC/C,IAAI4V,EAAuBC,GAE1BD,EAAwBjwU,EAAQ8pN,0BAA4B,MAAQmmH,SAA+B,OAAS,EAAIA,EAAsB30a,KAAK0kG,GAC5I,GAAInpG,WAAW8nT,MAAOt1S,QAAQuzB,KAAK,wBACnC,MAAM8pC,EAAU,IAAIpzD,IACpB,IAAK,MAAMoiZ,KAASn6Z,EAAQ+E,SAAU,CACpC,MAAMo5C,EAAag8W,EAAMh8W,WACzB,MAAMy2X,EAAaza,EAAM57Y,WACzB,MAAM9O,MACJA,GACE0uC,EACJ,GAAIg8W,EAAMS,aAAez8W,EAAWmyX,KAAwBsE,IAAe7a,IAAatqZ,aAAiB2ga,GAAkB,SAC3H,MAAM1kW,EAASvtB,EAAW+iB,KAC1B,MAAM4D,EAAQ4G,EAAO7F,WAErB,IAAKsF,EAAQh0D,IAAIu0D,GAAS,CACxBA,EAAO6lB,WAAW,MAClBpmB,EAAQlzD,IAAIyzD,GAGd,GAAI5G,IAAU,MAAQA,SAAe,GAAKA,EAAMwlB,aAAemqV,EAAiBt9Z,IAAI2tD,GAAQ,CAC1FA,EAAMg6O,oBACN21H,EAAiBx8Z,IAAI6sD,GAEvB4G,EAAOlhE,IAAIiF,EAAM9R,KAAMi3a,GAEzB,IAAK,MAAMlpW,KAAUP,EAAS,CAE5BO,EAAOoQ,UAAY6iO,EACnBjzO,EAAO8lB,SAASmtN,EAAe,MAE/BjzO,EAAOoQ,UAAY,MAErB,GAAIxgF,WAAW8nT,MAAOt1S,QAAQgrK,QAAQ,wBAEtCr0E,EAAQuqM,cAAgB,MACxBvqM,EAAQh+E,QAAQ,YAAa,CAC3B0kD,QAAAA,EACAkwO,gBAAAA,KAGDs5H,EAAwBlwU,EAAQgqN,yBAA2B,MAAQkmH,SAA+B,OAAS,EAAIA,EAAsB50a,KAAK0kG,EAASk6M,GACpJ81H,EAAiBv8a,SAAQ4sE,GAASA,EAAMm6O,qBAExC,GAAIN,EAAe,CACjBl6M,EAAQ8pM,WAAW5hN,gBACnB8X,EAAQ6pM,gBAAgB3hN,gBACxB8X,EAAQ+pM,cAAc7hN,gBACtB8X,EAAQ4pM,gBAAgB1hN,gBACxB8X,EAAQgqM,qBAAqB9hN,qBAI5B,CACH8X,EAAQuqM,cAAgB,MAE1BvqM,EAAQh+E,QAAQ,kBAAmB,CACjC40R,gBAAAA,EACAipH,kBAAAA,IAGJ56Z,MACC,MAGP7Q,2BAA2BuvS,GACzB,GAAIlvS,KAAK+pa,qBAAuB,SAAU,CACxC,MAAMrK,EAAS1/Z,KAAKurG,QAAQmvU,iBAAiB7pT,IAAI,CAC/Cq+K,MAAAA,IAEF,UAAWwwH,KAAYqV,GAAuBltT,OAAQ,OAC9Ck1S,GAAO2C,QAEV,CACL,aAAcxlZ,MAAM6uZ,0BAA0B75H,IAGlDvvS,MAAOu6a,IAAaxa,EAAQhtT,GAE1B,OAAO1yG,KAAKurG,QAAQowU,uBAAuBjc,EAAQhtT,GAErD/yG,MAAO85a,IAAqB/Z,EAAQhtT,GAClCA,EAAYgmT,YAAY2P,gBAExB,OAAOroa,KAAKurG,QAAQqwU,+BAA+Blc,EAAQhtT,GAE7D/yG,MAAO41a,IAAgB7V,EAAQhtT,GAC7BA,EAAYgmT,YAAY2P,gBAExB,OAAOroa,KAAKurG,QAAQswU,0BAA0Bnc,EAAQhtT,GAExD/yG,CAACk9Z,IAAc6C,EAAQhtT,GACrB,OAAOx4F,MAAM2iZ,IAAc6C,EAAQhtT,IAGvC,OAAO+nU,OAWT,MAAMvI,WAA8Cp5Y,GAAYk8Y,KAC9Djna,mBACE,MAAO,wCAETpO,iBACE,OAAOK,KAAKm7B,EAAE,qBAEhBx7B,QAAQ48S,GACNA,EAAWz6S,UAMf,MAAMuwa,WAA+Bv5Y,GAAYzd,KAC/CtN,mBACE,MAAO,yBAETpO,sBAAsB+/Z,GACpB,OAAO5iY,GAAO98B,KAAKm7B,EAAE,qBAAsBn7B,KAAK87a,oBAAoBpc,IAEtE//Z,2BAA2B+/Z,GACzB,MAAMzxY,EAASyxY,EAAOv3G,YAAYl2S,QAClCgc,EAAOzvB,KAAKyvB,EAAO,IACnB,MAAO,IAAMA,EAAOpkB,KAAIsmB,GAASA,EAAM1rB,MAAQ,IAAM0rB,EAAMxlB,KAAIV,KAAK,UAAY,KAQpF,MAAM0wa,WAAoB1F,GACxBt1a,cACEua,SAASrb,WACTmB,KAAK6P,QAAUqqa,GAKjBv6a,YACE,IAAKK,KAAK2iZ,QAAS,CACjB,MAAMx2Y,EAAS,IAAI0S,IACnB7e,KAAKkvS,MAAMA,MAAMlwS,SAAQ,EACvByuE,QAAAA,KACIthE,EAAO4S,IAAI0uD,KACjBztE,KAAK2iZ,QAAU,IAAIx2Y,GAErB,OAAOnM,KAAK2iZ,QAEdhjZ,sCAAsC48S,EAAYv3R,EAAMutB,GACtD,OAAOgqQ,EAAWiE,YAAcx7R,GAAQu3R,EAAWkE,UAAYluQ,EAEjE5yC,sCAAsCqlB,EAAMutB,GAC1C,MAAMtkB,EAASjuB,KAAKmoT,YACpB,MAAM58M,EAAUt9E,EAAO,GAAGs9E,QAC1B,MAAM6pM,EAAkB7pM,EAAQ+wM,qBAChC,OAAOlH,EAAgBrkR,MAAKwrR,GAAcv8S,KAAK+7a,sCAAsCx/H,EAAYv3R,EAAMutB,KAKzG5yC,kBACE,IAAKK,KAAKg8a,cAAe,CACvB,MAAM7va,EAAS,IAAI0S,IACnB,MAAMoP,EAASjuB,KAAKmoT,YACpB,MAAM8zH,EAAiBhuZ,EAAOnvB,OAC9B,IAAIo9a,EAAYjuZ,EAAO,GACrBsuR,EACF,GAAI0/H,IAAmB,EAAG,CACxB,GAAI1/H,EAAav8S,KAAK01U,sCAAsCwmG,EAAWA,GAAY,CACjF/va,EAAO4S,IAAIw9R,QAER,CACL,IAAK,MAAMp7P,KAAUlzB,EAAQ,CAC3B,IAAK,MAAMmzB,KAAUnzB,EAAQ,CAC3B,GAAIsuR,EAAav8S,KAAK01U,sCAAsCv0R,EAAQC,GAAS,CAC3Ej1C,EAAO4S,IAAIw9R,GAEb,GAAIA,EAAav8S,KAAK01U,sCAAsCt0R,EAAQD,GAAS,CAC3Eh1C,EAAO4S,IAAIw9R,MAKnBv8S,KAAKg8a,cAAgB,IAAI7va,GAE3B,OAAOnM,KAAKg8a,cAQdr8a,iBACE,IAAKK,KAAKk1a,aAAc,CACtBl1a,KAAKk1a,aAAe,CAACl1a,KAAKm8a,2CAA2CtrT,OAEvE,OAAO7wH,KAAKk1a,cAGhB+E,GAAa,CAAC7kB,GAAe,UAAWulB,GAAY9sa,UAAW,YAAa,GAC5Eosa,GAAa,CAAC7kB,GAAeid,KAA0BsI,GAAY9sa,UAAW,gCAAiC,GAC/Gosa,GAAa,CAAC7kB,GAAe8c,KAAyCyI,GAAY9sa,UAAW,kDAAmD,GAEhJ,IAAIuua,GAAoD,SAAU3kB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAK9D,MAAMmsZ,WAA4BnwI,GAAM,CAACmtI,KAAgC/ia,IAEvE,MAAM+la,UAA4B/la,GAClC8la,GAAa,CAAC3M,GAAc,CAC1BhtZ,OAAQ,WACRguZ,SAAU,SAAU9la,GAClB,OAAO3K,KAAKs8a,aAAa3xa,IAE3Bisa,iBAAkB,CAChBhzV,UAAWzzD,GAASA,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMxlB,GACxE6gC,QAASkrY,GACT99V,QAAS,QAEVo+V,KAAuBqF,EAAoBxua,UAAW,aAAc,GACvEuua,GAAa,CAAC3M,GAAc,CAC1BhtZ,OAAQ,WACRguZ,SAAU,SAAU9la,GAClB,OAAO3K,KAAKu8a,gBAAgB5xa,IAE9Bisa,iBAAkB,CAChBhzV,UAAWu2N,GAAYA,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASxvS,GACpF6gC,QAASkrY,GACT99V,QAAS,QAEVo+V,KAAuBqF,EAAoBxua,UAAW,gBAAiB,GAE1Emqa,GAA2BqE,GAC3B,OAAOA,OAMT,MAAMG,WAAmCtwI,GAAM,CAACyP,GAA8Bs9H,KAAgC3ia,IAE5G,MAAMkma,UAAmClma,EACvC3W,cACEua,SAASrb,WACTmB,KAAKk5a,aAAe,IAEtBr3Z,2BACE,MAAO,CACL04D,WAAY8hW,IAGhBniZ,SAAS36B,GACPS,KAAK47S,yBAA2B,KAChC1hS,MAAMggB,KAAO36B,EACbS,KAAK47S,yBAA2B,OAGpC,OAAO4gI,OAMT,MAAMC,WAAwCvwI,GAAM,CAAC2P,GAAmCo9H,KAAgC3ia,IAEtH,MAAMmma,UAAwCnma,EAC5C3W,cACEua,SAASrb,WACTmB,KAAKk5a,aAAe,IAEtBr3Z,2BACE,MAAO,CACL6kE,KAAM,KACNnM,WAAYm/V,KAIlB,OAAO+C,OAMT,MAAMC,WAAmCxwI,GAAM,CAAC6P,GAA8Bk9H,KAAgC3ia,IAE5G,MAAMoma,UAAmCpma,EACvC3W,cACEua,SAASrb,WACTmB,KAAKk5a,aAAe,IAEtBh/Y,SAAS36B,GACPS,KAAKi8S,0BAA4B,KACjC/hS,MAAMggB,KAAO36B,EACbS,KAAKi8S,0BAA4B,OAGrC,OAAOygI,OAIT,IAAIC,IACJ,SAAWA,GACTA,EAAY,gBAAkB,eAC9BA,EAAY,iBAAmB,gBAC/BA,EAAY,eAAiB,eAH/B,CAIGA,KAAgBA,GAAc,KAEjC,MAAMC,GAAepna,OAAO,aAC5B,MAAMqna,GAAarna,OAAO,WAC1B,MAAMsna,GAActna,OAAO,YAE3B,MAAMuna,GAAmBllB,GAAQhnS,IAAI,CACnC/wG,OAAQ88Z,GACR7kB,OAAQ,IAAIl5Y,IAAI,CAACi+Z,GAAaD,OAEhC,MAAMG,GAAiBnlB,GAAQhnS,IAAI,CACjC/wG,OAAQ+8Z,GACR9kB,OAAQ,IAAIl5Y,IAAI,CAACi+Z,GAAaF,OAEhC,MAAMK,GAAkBplB,GAAQhnS,IAAI,CAClC/wG,OAAQg9Z,GACR/kB,OAAQ,IAAIl5Y,IAAI,CAAC+9Z,GAAcC,OAGjC,MAAMK,GAAsBrkB,GAAiBhoS,IAAI,CAC/CwnS,UAAW,IAAIx5Y,IAAI,CAAC+9Z,GAAcC,GAAYC,KAC9C7kB,SAAU,IAAIp5Y,IAAI,CAACk+Z,GAAkBC,GAAgBC,OAEvD,MAAME,GAAmCrkB,GAAgBjoS,IAAI,CAC3DmoR,YAAakkC,GACbnkB,0BAA2B,IAAIl6Y,IAAI,CAACm+Z,OAEtC,MAAMI,GAAoCtkB,GAAgBjoS,IAAI,CAC5DmoR,YAAakkC,GACbnkB,0BAA2B,IAAIl6Y,IAAI,CAACk+Z,OAGtC,MAAMM,WAAsBze,GAC1Bj/Z,eAAe29a,GACb,GAAIA,IAAgBX,GAAYY,cAAev9a,KAAKw9a,sBAAsBZ,IAC1E,GAAIU,IAAgBX,GAAYc,YAAaz9a,KAAKw9a,sBAAsBX,IACxE,GAAIS,IAAgBX,GAAYe,aAAc19a,KAAKw9a,sBAAsBV,KAI7E,MAAMa,WAAgCxQ,GAAgBlhI,IAAIk3H,KACxDxja,SAASksB,EAAIG,GACX,MAAM4xZ,EAAc/xZ,EAAGoyT,WACvB,MAAM4/F,EAAc7xZ,EAAGiyT,WACvB,OAAO2/F,EAAYlsa,IAAIkra,MAAkBiB,EAAYnsa,IAAIkra,KAAiBgB,EAAYlsa,IAAImra,MAAgBgB,EAAYnsa,IAAImra,KAAee,EAAYlsa,IAAIora,MAAiBe,EAAYnsa,IAAIora,KAI9L,IAAIgB,GAAoD,SAAUrmB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAO9D,MAAM6tZ,WAAyB7xI,GAAM,CAACmtI,KAAgC/ia,IACpE,MAAMyna,UAAyBzna,EAC7B3W,cAAcI,EAAI2yG,EAAauuT,EAAOhxH,GACpC,MAAMsF,EAAuBv1S,KAAK+4a,0BAClC,MAAMiF,EAAM/tI,EAEZ,GAAIA,GAAYsF,GAAwBtF,aAAoBypI,KAAsBnkI,EAAqB3pS,SAASoya,GAAM,CACpHzoI,EAAqBx2R,IAAIkxR,GAE3BlwS,EAAGsQ,YAAYxC,UAAU40Z,MAAM57Z,KAAK7G,KAAMD,EAAI2yG,EAAauuT,EAAOhxH,GAEpEtwS,gBAAgB6wa,GACd,IAAIsI,EACJ,OAAQA,EAAwB94a,KAAK+4a,6BAA+B,MAAQD,SAA+B,OAAS,EAAIA,EAAsBjsW,QAAQ2jW,GAKxJ7wa,8BACE,IAAIswS,QAAiBjwS,KAAK+0G,EAAEk7L,SAC5B,IAAKA,EAAU,CACb,MAAM1kM,EAAUvrG,KAAKk1S,aACrBjF,QAAiB1kM,EAAQwJ,EAAEqwM,wBAGvBnV,EAASl7L,EAAEniG,QACjB,OAAOq9R,EAGTtwS,wBAAwBwzC,EAAWt5B,EAAUrB,GAC3C,IAAK0B,MAAMgzD,wBAAwB/5B,EAAWt5B,EAAUrB,GAAW,CACjE,OAAO,MAET,MAAM+yF,QACJA,GACEvrG,KAGJ,GAAImzC,IAAc,YAAco4D,EAAS,CACvC,MAAMgqM,qBACJA,GACEhqM,EACJ,OAAOgqM,EAAqB3oO,SAAS/yD,KAAc07R,EAAqB1oO,QAAQr0D,GAElF,OAAO,MAGXsla,GAAa,CAACvna,GAAM,CAClByxZ,SAAU,IAAM,SACb+V,EAAiBlwa,UAAW,yBAA0B,GAC3Diwa,GAAa,CAACrO,GAAc,CAC1BmH,iBAAkB,CAChBh+V,QAAS,KAGTgL,UAAWqsN,GAAYA,IAAartS,UAAYA,WAAaqtS,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAAStlS,KAAO,KACjI6gC,QAASkrY,IAEXjG,SAAU,SAAUD,GAClB,OAAOxwa,KAAKi+a,gBAAgBzN,IAE9BlrT,KAAM,MACL0xT,KAAuB+G,EAAiBlwa,UAAW,gBAAiB,GACvEiwa,GAAa,CAACrb,GAAM,aAAcsb,EAAiBlwa,UAAW,gBAAiB,MAC/Eiwa,GAAa,CAACt/H,GAAU,sBAAuBu/H,EAAiBlwa,UAAW,6BAA8B,MAEzGmqa,GAA2B+F,GAC3B,OAAOA,OAMT,MAAMG,WAAiChyI,GAAM,IAAI51R,IAC/C,MAAM6na,UAA4B7na,EAChC3W,cACEua,SAASrb,WACTmB,KAAKo+a,uBAAyB,IAAI5sa,IAOpC7R,iBAAiBkxS,GACf,MAAM9I,EAAagI,GAAgBc,GACnC,GAAI9I,EAAWjpS,SAAW,EAAG,MAAM,IAAI4R,MAAM,2BAC7Cq3R,EAAW9vR,MAAK,CAAComa,EAAWC,KAC1B,GAAID,EAAUh5V,WAAai5V,EAAUj5V,WAAY,OAAQ,OAAO,OAAO,KAEzE,MAAMi9M,EAAOyF,EAAWl+R,KAAIomS,GAAYA,EAAS5qN,WAAa,MAAKp7E,KAAK,IACxE,MAAMs0a,EAAex2I,EAAWl+R,KAAIomS,GAAYA,EAASr9R,QAAU,MAAK3I,KAAK,IAC7E,MAAMM,EAASvK,KAAKo+a,uBAAuB1sa,IAAI4wR,GAC/C,IAAItuR,EACJ,GAAIzJ,GAAUA,EAAOg0a,eAAiBA,EAAcvqa,EAAMzJ,EAAOyL,UAAW,CAC1EhC,EAAM,IAAIg/R,GAAsB,CAC9BC,eAAgBlL,EAAWl+R,KAAIomS,GAAYA,EAASkD,kBAEtDnzS,KAAKo+a,uBAAuB9sa,IAAIgxR,EAAM,CACpCi8I,aAAcA,EACdvoa,MAAOhC,IAGX,OAAOA,GAGX,OAAOmqa,OAGT,IAAIK,GAAoD,SAAU/mB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAa9D,MAAMuuZ,WAAuBvyI,GAAM,CAAC6xI,KAAmBzna,IAErD,MAAMmoa,UAAuBnoa,EAC3B3W,qBAAqBmja,SAIblG,GACN,MAAM8hB,QAAyB1+a,KAAK2+a,kBAAkB7b,GAEtD,MAAM8b,QAA8BngB,GAAoBz+Z,KAAK+0G,EAAE5nE,WAC/D,MAAM0xY,EAAmBD,EAAwBA,EAAsB,GAAKjC,GAAYe,aAAef,GAAYc,YAAc76a,UACjI,GAAIi8a,EAAkBH,EAAgBI,eAAeD,GAErD,MAAME,QAA4BtgB,GAAoBz+Z,KAAK+0G,EAAE3nE,SAC7D,MAAM4xY,EAAiBD,EAAsBA,EAAoB,GAAKpC,GAAYe,aAAef,GAAYY,cAAgB36a,UAC7H,GAAIo8a,EAAgBN,EAAgBI,eAAeE,GAEnD,MAAMC,QAAuBj/a,KAAK+0G,EAAE5oD,UACpC,MAAM+yX,QAA6BzgB,GAAoBz+Z,KAAK+0G,EAAEzsF,UAC9D,IAAI62Z,EACJ,GAAID,EAAsB,CACxB,OAAQA,EAAqB,IAC3B,KAAK,KACHC,EAAsBxC,GAAYY,cAClC,MACF,KAAK,MACH4B,EAAsBxC,GAAYc,YAClC,OAGN,IAAK0B,GAAuBT,EAAgBrkB,iBAAiByiB,IAAc,CACzEqC,EAAsBF,IAAmB5xI,GAAU+xI,SAAWH,IAAmB5xI,GAAU2qG,KAAO2kC,GAAYY,cAAgBZ,GAAYc,YAE5I,GAAI0B,EAAqBT,EAAgBI,eAAeK,GACxD,OAAOT,EAET/+a,mBAAmB0gC,GACjB,MAAMg/Y,EAAkBr/a,KAAKq/a,gBAAgBh/Y,GAC7C,MAAMq+Y,EAAkBW,EAAgBxuT,IAAI,CAC1CpjD,QAASztE,KAAKs/a,uBAAuBj/Y,KAEvCq+Y,EAAgBa,YAAYl/Y,EAAGrgC,KAAK+0G,EAAE5nE,UAAWyvY,IACjD8B,EAAgBa,YAAYl/Y,EAAGrgC,KAAK+0G,EAAE3nE,QAASyvY,IAC/C6B,EAAgBa,YAAYl/Y,EAAGrgC,KAAK+0G,EAAEzsF,SAAUw0Z,IAChD,OAAO4B,EAET/+a,uBAAuB0gC,GACrB,MAAM8rB,EAAY9rB,EAAErgC,KAAK+0G,EAAE5oD,WAC3B,OAAOA,IAAckhP,GAAU+xI,SAAWjzX,IAAckhP,GAAU2qG,KAAOmlC,GAAmCC,GAE9Gz9a,gBAAgB0gC,GACd,OAAOg9Y,GAET19a,wBAAwBI,EAAIkha,EAAOvuT,GACjC,MAAMhiF,EAAa1wB,KAAKq/a,gBAAgB3sU,EAAYyyT,cAAct0S,IAAI,CACpEpjD,QAASztE,KAAKs/a,uBAAuB5sU,EAAYyyT,gBAEnDz0Y,EAAWmuY,qBAAqB+d,IAChClsZ,EAAWmuY,qBAAqBge,IAChCnsZ,EAAWmuY,qBAAqBie,IAChC,OAAOpsZ,EAST/wB,oBAAoB68B,EAAM6xM,GACxB,MAAM4hE,QAAiBjwS,KAAK+0G,EAAEqwM,kBAC9B,IAAK5oR,EAAM,OAAO,KAClB,MAAMo9Y,EAAc3pI,EAAS+J,mBAAmBx9Q,EAAM6xM,GACtD,GAAIurM,aAAuBpra,KAAM,CAC/B,OAAOora,MACF,CACL,MAAMla,EAASia,GAAoB9oT,IAAI,CACrCggL,UAAW,CAACZ,GACZ9/Q,MAAOnwB,KACPw8B,KAAAA,EACA6xM,UAAAA,IAEF,UAAWqxL,KAAYqV,GAAuBltT,OAAQ,OAC9Ck1S,GAAO2C,OACR,CACL,OAAO,OAab//Z,iBAAiB68B,EAAM6xM,EAAW/lN,EAAU2f,GAC1C,MAAM61Q,QAAqB99S,KAAK+0G,EAAE+oM,aAElC,GAAI71Q,GAAQA,IAAS61Q,EAAc,CACjCx1R,QAAkBtoB,KAAKk1S,aAAasqI,iBAAiBl3Z,EAAU2f,EAAM61Q,GAEvE,aAAc99S,KAAKy/a,oCAAoCjjZ,EAAM6xM,EAAW/lN,GAS1E3oB,aAAa68B,EAAMmhR,EAAe,MAChC,MAAMlH,MACJA,EAAKlrM,QACLA,GACEvrG,KACJ,GAAIy2S,EAAO,CACTA,EAAMgsH,MAAMzia,KAAK+0G,EAAE5nE,UAAW3Q,EAAMmhR,GACpC,OAAOlH,EAAMr6C,kBACR,CACLp8P,KAAK+0G,EAAE5nE,UAAUigY,KAAO5wY,EAExB,OAAO+uE,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQm0U,2BAGrE//a,eAAeI,EAAI2yG,EAAauuT,EAAOzkY,EAAMmhR,EAAe,MAO1D,IAAKjrM,EAAY6xT,aAAaoH,cAAc5ra,IAAOy8B,GAAQ,KAAM,OAEjEz8B,EAAGsQ,YAAYxC,UAAU40Z,MAAM57Z,KAAK7G,KAAMD,EAAI2yG,EAAauuT,EAAOzkY,EAAMmhR,GAM1Eh+S,sBACE,MAAMggb,QAAiB3/a,KAAK+0G,EAAErkF,WAC9B,MAAMonY,EAAY6nB,EAAS1hG,WAAWvsU,IAAIkra,IAC1C,GAAI9kB,IAAcF,GAAmB,CACnC,aAAc53Z,KAAK4/a,kCACd,GAAI9nB,IAAcilB,GAAiBjlB,UAAW,CACnD,aAAc93Z,KAAK6/a,6BACd,CACL,MAAM,IAAInva,MAAM,oCAWpB/Q,0BACE,aAAcK,KAAKy/a,0CAA0Cz/a,KAAK+0G,EAAE3nE,QAAS,YAAaptC,KAAK+0G,EAAEzsF,UASnG3oB,8BACE,MAAM4rG,EAAUvrG,KAAKk1S,aACrB,MAAM/nQ,QAAkByvX,GACxB,MAAMprF,QAA0BxxU,KAAK+0G,EAAEy8N,kBACvC,OAAQA,GAAqBjmO,EAAQu0U,+CAAkD9/a,KAAKg6S,mBAAmB7sQ,EAAW,MAAQA,EASpIxtC,qCAAqC+tM,EAAU2gC,EAAW/lN,GACxD,MAAMw1R,QAAqB99S,KAAK+0G,EAAE+oM,aAClC,MAAM7N,QAAiBjwS,KAAK+0G,EAAEqwM,kBAC9B,MAAM75M,EAAUvrG,KAAKk1S,aACrB,IAAKxnG,GAAY8tG,GAAYlzR,GAAW,OAAO,KAE/C+lN,EAAYA,IAAczrO,UAAY,KAAOyrO,EAC7C,GAAIA,EAAW,CACb,OAAO4hE,EAAS8vI,iBAAiBryO,QAAiBniG,EAAQi0U,iBAAiBl3Z,EAAUw1R,EAAchR,GAASkzI,kBACvG,CACL,OAAO/vI,EAASgwI,mBAAmBvyO,QAAiBniG,EAAQi0U,iBAAiBl3Z,EAAUw1R,EAAchR,GAASkzI,eAWlHrgb,WAAW68B,EAAMmhR,EAAe,OAC9B,MAAMlH,MACJA,EAAKlrM,QACLA,GACEvrG,KACJ,GAAIy2S,EAAO,CACTA,EAAMgsH,MAAMzia,KAAK+0G,EAAE3nE,QAAS5Q,EAAMmhR,GAClC,OAAOlH,EAAMr6C,kBACR,CACLp8P,KAAK+0G,EAAE3nE,QAAQggY,KAAO5wY,EAEtB,OAAO+uE,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQm0U,2BAGrE//a,aAAaI,EAAI2yG,EAAauuT,EAAOzkY,EAAMmhR,EAAe,OACxD,IAAKjrM,EAAY6xT,aAAaoH,cAAc5ra,IAAOy8B,GAAQ,KAAM,OACjEz8B,EAAGsQ,YAAYxC,UAAU40Z,MAAM57Z,KAAK7G,KAAMD,EAAI2yG,EAAauuT,EAAOzkY,EAAMmhR,GAS1Eh+S,oBACE,MAAMggb,QAAiB3/a,KAAK+0G,EAAErkF,WAC9B,MAAMonY,EAAY6nB,EAAS1hG,WAAWvsU,IAAImra,IAC1C,GAAI/kB,IAAcF,GAAmB,CACnC,aAAc53Z,KAAKkgb,gCACd,GAAIpoB,IAAcklB,GAAellB,UAAW,CACjD,aAAc93Z,KAAKmgb,2BAGd,CACL,MAAM,IAAIzva,MAAM,kCAWpB/Q,wBACE,aAAcK,KAAKy/a,0CAA0Cz/a,KAAK+0G,EAAE5nE,UAAW,WAAYntC,KAAK+0G,EAAEzsF,UASpG3oB,4BACE,MAAM4rG,EAAUvrG,KAAKk1S,aACrB,MAAM9nQ,QAAgBwvX,GACtB,MAAMprF,QAA0BxxU,KAAK+0G,EAAEy8N,kBACvC,OAAQA,GAAqBjmO,EAAQu0U,+CAAkD9/a,KAAKg6S,mBAAmB5sQ,EAAS,OAASA,EASnIztC,YAAYsoC,GACV,MAAM3f,EAAWtoB,KAAKsoB,SACtB,OAAO2f,IAASrlC,UAAY5C,KAAKk1S,aAAakrI,gBAAgB93Z,EAAUtoB,KAAK89S,aAAc71Q,GAAQ3f,EASrG3oB,YAAY2oB,EAAU2f,EAAM41Q,GAC1B,MAAMpH,MACJA,EAAKlrM,QACLA,GACEvrG,KACJ,GAAIy2S,EAAO,CAGT,GAAInuR,IAAa1lB,UAAW,CAC1B6zS,EAAMgsH,MAAMzia,KAAK+0G,EAAEzsF,SAAUA,EAAU2f,EAAM41Q,GAC7C,OAAOpH,EAAMr6C,mBAEV,CACL,MAAM9oL,EAAQ,CACZhrD,SAAAA,GAEFtoB,KAAK+0G,EAAEzsF,SAAS8kZ,KAAO9kZ,EACvB,GAAI2f,GAAQ,KAAMqrC,EAAMwqO,aAAe99S,KAAK+0G,EAAE+oM,aAAasvH,KAAOnlY,EAElEjoC,KAAKsR,IAAIgiE,GAET,OAAOi4B,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQm0U,2BAGrE//a,gBAAgBgwD,GACd,MAAM,IAAIj/C,MAAM,6BAElB/Q,cAAcI,EAAI2yG,EAAauuT,EAAO34Y,EAAU2f,EAAM41Q,EAAYj7S,WAChE,GAAI0lB,EAAW,EAAGA,EAAW,EAC7B,IAAKoqF,EAAY6xT,aAAaoH,cAAc5ra,IAAOuoB,GAAY,KAAM,OACrEvoB,EAAGsQ,YAAYxC,UAAU40Z,MAAM57Z,KAAK7G,KAAMD,EAAI2yG,EAAauuT,EAAO34Y,EAAUu1R,GAC5E,GAAI51Q,GAAQ,KAAMyqE,EAAY+vT,MAAMzia,KAAK+0G,EAAE+oM,aAAc71Q,GAM3DtoC,qBACE,MAAMggb,QAAiB3/a,KAAK+0G,EAAErkF,WAC9B,MAAMonY,EAAY6nB,EAAS1hG,WAAWvsU,IAAIora,IAC1C,GAAIhlB,IAAcF,GAAmB,CACnC,aAAc53Z,KAAKqgb,iCACd,GAAIvoB,IAAcmlB,GAAgBnlB,UAAW,CAClD,aAAc93Z,KAAKsgb,4BAGd,CACL,MAAM,IAAI5va,MAAM,mCAYpB/Q,yBACE,MAAMwtC,QAAkBntC,KAAK+0G,EAAE5nE,UAC/B,MAAMC,QAAgBptC,KAAK+0G,EAAE3nE,QAC7B,IAAKD,IAAcC,EAAS,aAAawvX,GACzC,GAAIzvX,EAAYC,EAAS,OACjBiwX,GAAMr9Z,KAAK+0G,EAAEzsF,SAAU,EAAG,UAC3B,CACL,aAActoB,KAAKugb,2BAA2BpzY,EAAWC,IAU7DztC,6BACE,aAAai9Z,GASfj9Z,4BAA4BwtC,EAAWC,EAAS0wQ,GAC9C,IAAK3wQ,IAAcC,EAAS,OAAO,KACnC,IAAK0wQ,EAAcA,QAAqB99S,KAAK+0G,EAAE+oM,aAC/C,MAAM7N,QAAiBjwS,KAAK+0G,EAAEqwM,kBAC9B,MAAM75M,EAAUvrG,KAAKk1S,aACrB,aAAc3pM,EAAQi0U,iBAAiBvvI,EAASuwI,oBAAoBrzY,EAAWC,GAAU0/P,GAASkzI,YAAaliI,GAKjHn+S,8BACE,MAAMggb,QAAiB3/a,KAAK+0G,EAAErkF,WAC9B,IAAI+vZ,EACJ,MAAMC,EAAqBf,EAAS1hG,WAAWvsU,IAAIora,IACnD,GAAI4D,IAAuB9oB,GAAmB,CAC5C6oB,QAA+Bzgb,KAAK+0G,EAAEzsF,cACjC,GAAIo4Z,IAAuBzD,GAAgBnlB,UAAW,CAC3D2oB,QAAgCzgb,KAAKugb,iCAAiCjiB,GAA0Bt+Z,KAAK+0G,EAAE5nE,iBAAkBmxX,GAA0Bt+Z,KAAK+0G,EAAE3nE,UAE5J,OAAOqzY,GAGXjC,GAAa,CAAC5G,GAAY,CACxB/qa,KAAM,QACL,CACD+3P,UAAWuzK,MACRsG,EAAe5wa,UAAW,iBAAkB,GACjD2wa,GAAa,CAAC5G,GAAY,CACxB/qa,KAAM,QACL,CACD+3P,UAAWuzK,MACRsG,EAAe5wa,UAAW,eAAgB,GAC/C2wa,GAAa,CAAC5G,GAAY,CACxB/qa,KAAM,SACNg5T,UAAW,QACR44G,EAAe5wa,UAAW,gBAAiB,GAChD2wa,GAAa,CAAC5G,GAAY,CACxB/qa,KAAM,SACNjI,aAAckoS,GAASmB,KACtB,CACDrpC,UAAW/kO,GAAW0J,iBACnBk1Y,EAAe5wa,UAAW,oBAAqB,GACpD2wa,GAAa,CAAC5G,GAAY,CACxB/qa,KAAM,SACNjI,aAAcyoS,GAAU+xI,SACvB,CACD95T,KAAM,QACHm5T,EAAe5wa,UAAW,iBAAkB,GACjD2wa,GAAa,CAACjoa,GAAM,CAClBu3Z,cAAe6P,MACZc,EAAe5wa,UAAW,kBAAmB,GAClD2wa,GAAa,CAAC5G,GAAY,CACxB/qa,KAAM,UACNjI,aAAc,SACX65a,EAAe5wa,UAAW,yBAA0B,GACzD2wa,GAAa,CAAChgI,GAAU,eAAgBigI,EAAe5wa,UAAW,sBAAuB,MACzF2wa,GAAa,CAACzO,GAAe,eAAgB0O,EAAe5wa,UAAW,0BAA2B,MAClG2wa,GAAa,CAAC/b,GAAM,cAAegc,EAAe5wa,UAAW,iBAAkB,MAC/E2wa,GAAa,CAAChgI,GAAU,cAAeigI,EAAe5wa,UAAW,qBAAsB,MACvF2wa,GAAa,CAAC/b,GAAM,YAAagc,EAAe5wa,UAAW,eAAgB,MAC3E2wa,GAAa,CAAChgI,GAAU,YAAaigI,EAAe5wa,UAAW,mBAAoB,MACnF2wa,GAAa,CAAC/b,GAAM,aAAcgc,EAAe5wa,UAAW,gBAAiB,MAC7E2wa,GAAa,CAAChgI,GAAU,aAAcigI,EAAe5wa,UAAW,oBAAqB,MACrF,OAAO4wa,OAGT,IAAIkC,GAAoD,SAAUlpB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAQ9D,MAAM0wZ,WAAgC10I,GAAM,CAACuyI,GAAgBxkI,KAA8B3jS,IAEzF,MAAMsqa,UAAgCtqa,EACpCkmT,kBACE,OAAOx8T,KAAKs6S,SAAW,IAAIt6S,KAAKs6S,UAAY,IAGhDqmI,GAAa,CAAClR,GAAc,GAAIyH,KAAoB0J,EAAwB/ya,UAAW,gBAAiB,GACxG,OAAO+ya,OAGT,IAAIC,GAAoD,SAAUppB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAO9D,MAAM4wZ,WAA6B50I,GAAM,CAACuyI,KAAiBnoa,IACzD,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMiza,UAA6Bxqa,EACjC3W,eACEK,KAAK46S,gBAEL,GAAI56S,KAAK26S,sBAAuB,CAC9B,IAAI03B,EAAoBF,EACxBnyU,KAAKurG,QAAQ6pM,gBAAgBtzS,OAAO,KAG/BuwU,EAAqBryU,KAAKohT,gBAAkB,MAAQixB,SAA4B,EAAIA,EAAqB,OAAUF,EAAqBnyU,KAAKshT,gBAAkB,MAAQ6wB,SAA4B,EAAIA,EAAqB,KAEnO18B,EAAWe,aAAa3vS,KAAK7G,OAGjC6gb,GAAa,CAACpR,GAAc,GAAIyH,KAAoB4J,EAAqBjza,UAAW,oBAAqB,GACzGgza,GAAa,CAACpR,GAAc,GAAIyH,KAAoB4J,EAAqBjza,UAAW,oBAAqB,GACzG,OAAOiza,OAOT,MAAMC,WAA4B70I,GAAM,CAACuyI,GAAgBmC,GAAyBE,KAAuBxqa,IAEvG,MAAMyqa,UAA4Bzqa,GAClC,OAAOyqa,OAMT,MAAMC,WAA8B90I,GAAM,CAACiQ,GAAyB88H,KAAgC3ia,IAClG,MAAM0qa,UAA8B1qa,EAClC3W,cACEua,SAASrb,WACTmB,KAAKk5a,aAAe,IAEtBr3Z,2BACE,MAAO,CACL04D,WAAYwmW,IAGhB7mZ,SAAS36B,GACP2a,MAAMggB,KAAO36B,EACbS,KAAK86S,qBAGT,OAAOkmI,OAKT,MAAMC,WAAkC/0I,GAAM,CAAC80I,KAAwB1qa,IACrE,MAAM2qa,UAAkC3qa,EACtC3W,gBACE,OAAOK,KAAKk1S,cAAgB,GAE9BrzR,2BACE,MAAO,CACL6kE,KAAM,OAIZ,OAAOu6V,OAGT,IAAIC,GAAoD,SAAUzpB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAK9D,MAAMixZ,WAA0Bj1I,GAAM,CAAC6xI,GAAkB1E,KAAgC/ia,IACvF,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMsza,UAA0B7qa,EAC9BkmT,kBACE,MAAO,IAAIx8T,KAAKs6S,UAElB36S,aAAagnF,EAAc,OAIzB,IAAK3mF,KAAK22S,gBAAkB32S,KAAKs6S,WAAa3zN,EAAa,CACzD,MAAM2uN,EAAgBt1S,KAAK44a,mBAG3B54a,KAAKs6S,SAASt7S,SAAQo7S,GAAc9E,EAAcuF,sBAAsB97R,IAAIq7R,KAE9E3E,EAAWe,aAAa3vS,KAAK7G,MAG/Bq5E,oBACE,MAAO,CAAC,CACN50E,KAAM,YACL,CACDA,KAAM,WACNm0E,QAAS,SAIfsoW,GAAa,CAACzR,GAAc,GAAIyH,KAAoBiK,EAAkBtza,UAAW,gBAAiB,GAClG,OAAOsza,OAMT,MAAMC,WAAiCl1I,GAAM,CAACwQ,GAA4Bu8H,KAAgC3ia,IAExG,MAAM8qa,UAAiC9qa,EACrC3W,cACEua,SAASrb,WACTmB,KAAKk5a,aAAe,IAEtBr3Z,2BACE,MAAO,CACL04D,WAAY4mW,KAIlB,OAAOC,OAGT,IAAIC,GAAoD,SAAU5pB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAK9D,MAAMoxZ,WAA+Bp1I,GAAM,CAAC2lI,KAAmBv7Z,IAE7D,MAAMgra,UAA+Bhra,EACnC3W,sBACE,MAAM4hb,QAAoBvhb,KAAK+0G,EAAEwsU,YACjC,MAAMC,QAAoBxhb,KAAK+0G,EAAEysU,YACjC,MAAMC,QAAqBzhb,KAAK+0G,EAAE0sU,aAClC,MAAO,CACLlkZ,YAAa,EACbwE,OAAQ,IACRzE,OAAQ,GAAK,IACbyD,KAAM,GAAK,GAAK,IAChBvD,IAAK+jZ,EAAc,GAAK,GAAK,IAC7B39Y,KAAM49Y,EAAcD,EAAc,GAAK,GAAK,IAC5C/iZ,MAAOijZ,EAAeF,EAAc,GAAK,GAAK,IAC9C59Y,QAAS,EAAI89Y,EAAeF,EAAc,GAAK,GAAK,IACpDv/Y,KAAM,EAAI,EAAIy/Y,EAAeF,EAAc,GAAK,GAAK,KASzD5hb,gBAAgB2oB,EAAUuhB,EAAUD,GAClC,IAAIz9B,EAASmc,EACb,GAAIuhB,IAAaD,EAAQ,CACvBz9B,EAASmc,EAAWtoB,KAAK0hb,UAAU73Y,GAAY7pC,KAAK0hb,UAAU93Y,GAEhE,OAAOz9B,EAKTxM,kBAAkB2oB,EAAUuhB,EAAUD,GACpC,IAAKC,IAAaD,EAAQ,MAAM,IAAIl5B,MAAM,gCAC1C,MAAMgxa,QAAkB1hb,KAAK+0G,EAAE2sU,UAC/B,IAAIv1a,EAASmc,EACb,GAAIuhB,IAAaD,EAAQ,CACvBz9B,EAASmc,EAAWo5Z,EAAU73Y,GAAY63Y,EAAU93Y,GAEtD,OAAOz9B,GAGXk1a,GAAa,CAAC9qa,MAAU+qa,EAAuBzza,UAAW,iBAAkB,GAC5Ewza,GAAa,CAACzJ,GAAY,CACxB/qa,KAAM,SACNjI,aAAc,MACX08a,EAAuBzza,UAAW,mBAAoB,GAC3Dwza,GAAa,CAACzJ,GAAY,CACxB/qa,KAAM,SACNjI,aAAc,KACX08a,EAAuBzza,UAAW,mBAAoB,GAC3Dwza,GAAa,CAACzJ,GAAY,CACxB/qa,KAAM,SACNjI,aAAc,MACX08a,EAAuBzza,UAAW,oBAAqB,GAC5Dwza,GAAa,CAAC7iI,GAAU,cAAe8iI,EAAuBzza,UAAW,qBAAsB,MAC/F,OAAOyza,OAGT,IAAIK,GAAoD,SAAUlqB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAK9D,MAAM0xZ,WAA4B11I,GAAM,CAACmtI,KAAgC/ia,IAEvE,MAAMsra,UAA4Btra,EAChCmwE,cACE,MAAMsuB,EACJA,EAAC0hM,MACDA,GACEz2S,KAIJ,GAAIy2S,KAAWA,EAAMk1H,cAAc52T,EAAEyrM,aAAe/J,EAAMk1H,cAAc52T,EAAE0rM,UAAW,CACnF,OAAO,MAET,OAAOvmS,MAAMusE,SAGjBk7V,GAAa,CAAClS,GAAc,CAC1BhtZ,OAAQ,eACRguZ,SAAU,SAAU9la,GAClB,OAAO3K,KAAKs8a,aAAa3xa,IAE3Bisa,iBAAkB,CAChBh+V,QAAS,KACTgL,UAAWzzD,GAASA,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMxlB,GACxE6gC,QAASkrY,KAEVM,KAAuB4K,EAAoB/za,UAAW,iBAAkB,GAC3E8za,GAAa,CAAClS,GAAc,CAC1BhtZ,OAAQ,eACRguZ,SAAU,SAAU9la,GAClB,OAAO3K,KAAKs8a,aAAa3xa,IAE3Bisa,iBAAkB,CAChBh+V,QAAS,KACTgL,UAAWzzD,GAASA,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMxlB,GACxE6gC,QAASkrY,KAEVM,KAAuB4K,EAAoB/za,UAAW,eAAgB,GACzE8za,GAAa,CAAC/J,GAAY,CACxB/qa,KAAM,MACNjI,aAAcsoS,GAAemmC,cAC1BuuG,EAAoB/za,UAAW,YAAa,GACjD8za,GAAa,CAAC/J,GAAY,CACxB/qa,KAAM,YACH+0a,EAAoB/za,UAAW,gBAAiB,GACrD8za,GAAa,CAAC/J,GAAY,CACxB/qa,KAAM,YACH+0a,EAAoB/za,UAAW,cAAe,GACnD,OAAO+za,OAQT,MAAMC,WAAmC31I,GAAM,CAAC2lI,GAAkB3vH,KAAuB5rS,IAEvF,MAAMura,UAAmCvra,EAEvCu3S,4BACE,OAAO3tT,QAAQF,KAAKw2U,sBAAwBx2U,KAAK0/a,2BAEnD//a,WACE,OAAOK,KAAKyua,QAEd9ua,oBACE,OAAO,KAETA,aAAamib,IAGbnib,oBACE,IAAIoib,EACJ,OAAO/hb,KAAK0/a,6BAA+BqC,EAAgB/hb,KAAKyua,WAAa,MAAQsT,SAAuB,OAAS,EAAIA,EAAc3lL,eAEzIz8P,iCAAiCqib,EAAiBtvU,EAAaliG,EAASkkB,GACtE,MAAMvoB,EAAS,CAAC61a,EAAgBn1a,KAAM,CACpCo1a,6BAA8Bzxa,EAC9Bwxa,gBAAAA,IAGF,GAAIA,aAA2BvM,GAAgBtpa,EAAO,GAAGqpa,SAAWwM,EACpE,OAAO71a,EAETxM,4BAA4Bqib,EAAiBtvU,GAE3C,GAAIsvU,EAAgBn1a,MAAQ7M,KAAKkib,YAAYF,EAAgBn1a,MAAO,CAClE,OAAO,IAAI0D,SAAQ,CAACC,EAASkkB,KAC3B10B,KAAKutB,WAAWvtB,KAAKmib,iCAAiCH,EAAiBtvU,EAAaliG,EAASkkB,OAIjG,OAAOqgZ,GAAuBltT,OAEhCloH,6BAA6Bqib,EAAiBtvU,GAC5C,OAAO1yG,KAAKoib,sBAAsBJ,EAAiBtvU,GAErD/yG,qCAAqCqib,EAAiBtvU,GACpD,OAAO1yG,KAAKoib,sBAAsBJ,EAAiBtvU,GAErD/yG,gCAAgCqib,EAAiBtvU,GAC/C,OAAO1yG,KAAKoib,sBAAsBJ,EAAiBtvU,GAErD/yG,qBAAqB4lF,EAAOuqV,GAC1B,IAAKA,EAAc,OACnB,MAAMuS,EAAY,GAElB,IAAK,MAAM9ra,KAASu5Z,EAAc,CAChCuS,EAAU9ra,GAASgvE,EAAM13E,UAAUgha,cAAct4Z,GAGnDtY,OAAOmZ,OAAOmuE,EAAM13E,UAAUgha,cAAeiB,GAC7C,OAAOuS,EAET1ib,sBAAsB6yE,EAAQs9V,GAC5B,MAAMuS,EAAYrib,KAAKsib,qBAAqB9vW,EAAOniE,YAAay/Z,GAChE,MAAMvB,EAAW/7V,EAAOi3U,QAAQ8iB,UAChCtua,OAAOD,KAAK8xa,GAAc9wa,SAAQuX,IAChCg4Z,EAASh4Z,GAAO1I,UAAUqxZ,YAAc1sV,EAAOs9V,EAAav5Z,OAE9D,OAAO8ra,EAET1ib,qBAAqBisE,EAAOkkW,GAC1B,IAAKA,EAAc,OAEnB,MAAMt9V,EAAS5G,EAAMtgC,MACrB,GAAIknC,EAAQ,CACV,OAAOxyE,KAAKuib,sBAAsB/vW,EAAQs9V,OACrC,CACL,OAAO9va,KAAKsib,qBAAqB12W,EAAM2O,WAAYu1V,IAkCvDnwa,sBAAsBmwa,GAEpB9va,KAAKyua,eAAkBzua,KAAKo8P,cAC5B,MAAMomL,EAAkB,GACxB,MAAMl0W,EAAS,CACbm0W,MAAOzib,KAAKq1S,WACZpnR,OAAQjuB,KAAKq1S,WACbi9B,aAActyU,KAAKo1S,gBACnBunB,UAAW38T,KAAKs1S,cAChBknB,YAAax8T,KAAKm1S,gBAClBtE,UAAW7wS,KAAKu1S,sBAElBt3S,OAAOD,KAAKswE,GAAQtvE,SAAQ2L,IAE1B,GAAImla,EAAanla,GAAK,CACpB63a,EAAgB73a,GAAM3K,KAAK0ib,qBAAqBp0W,EAAO3jE,GAAKmla,EAAanla,QAI7E,IAAIg4a,EAAsB7S,EAAavkU,QACvC,GAAIo3U,EAAqB,CACvBH,EAAgBj3U,QAAUvrG,KAAKuib,sBAAsBvib,KAAM2ib,GAI7D3ib,KAAKyua,SAAWzua,KAAK4ib,kBAAkBn0a,MACvCzO,KAAKyua,eAAkBzua,KAAKo8P,cAE5B,OAAOomL,GAGX,OAAOX,OAkBT,MAAMgB,WAA0B32I,GAAM,CAACuyI,KAAiBnoa,IACtD,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMg1a,UAA0Bvsa,EAC9BvI,mBACE,MAAO,oBAKTpO,gBACE,MAAM,IAAI+Q,MAAM,kDAKlB/Q,qBACE,MAAM,IAAI+Q,MAAM,uDAElB/Q,0BACE,MAAM6xU,QAA0BxxU,KAAK+0G,EAAEy8N,kBACvC,MAAMsxG,QAAsB9ib,KAAK8ib,eACjC,IAAKtxG,GAAqBsxG,EAAc,CACtC,aAAc9ib,KAAK+ib,oCACd,CACL,aAActtI,EAAWoqI,uBAAuBh5a,KAAK7G,OAGzDL,wBACE,MAAM6xU,QAA0BxxU,KAAK+0G,EAAEy8N,kBACvC,MAAMsxG,QAAsB9ib,KAAK8ib,eACjC,IAAKtxG,GAAqBsxG,EAAc,CACtC,aAAc9ib,KAAKgjb,kCACd,CACL,aAAcvtI,EAAW0qI,qBAAqBt5a,KAAK7G,OAGvDL,8BACE,MAAM6xU,QAA0BxxU,KAAK+0G,EAAEy8N,kBACvC,MAAMsxG,QAAsB9ib,KAAK8ib,eACjC,IAAKtxG,GAAqBsxG,EAAc,CACtC,aAAc9ib,KAAK6/a,6BACd,CACL,aAAcpqI,EAAWmqI,2BAA2B/4a,KAAK7G,OAG7DL,4BACE,MAAM6xU,QAA0BxxU,KAAK+0G,EAAEy8N,kBACvC,MAAMsxG,QAAsB9ib,KAAK8ib,eACjC,IAAKtxG,GAAqBsxG,EAAc,CACtC,aAAc9ib,KAAKmgb,2BACd,CACL,aAAc1qI,EAAWyqI,yBAAyBr5a,KAAK7G,OAG3DL,6BACE,MAAM6xU,QAA0BxxU,KAAK+0G,EAAEy8N,kBACvC,MAAMsxG,QAAsB9ib,KAAK8ib,eACjC,IAAKtxG,GAAqBsxG,EAAc,CACtC,aAAc9ib,KAAKsgb,4BACd,CACL,aAAc7qI,EAAW4qI,0BAA0Bx5a,KAAK7G,OAgB5DL,4BAA4BouD,GAC1B,OAAO,KAMTpuD,iCACE,MAAM0nD,QAAkBrnD,KAAKijb,oBAC7B,IAAIhpO,EAAYuzF,GAASx9R,UACzB,IAAK,MAAM+9C,KAAS1G,EAAU,CAC5B,SAAWrnD,KAAKkjb,2BAA2Bn1X,GAAQ,CACjD,IAAIvxB,QAAauxB,EAAMgnD,EAAE5nE,UAEzB,IAAK3Q,EAAM,CACTA,QAAauxB,EAAMgnD,EAAE3nE,QAEvB,GAAI5Q,GAAQA,EAAKxsB,UAAYiqM,EAAW,CACtCA,EAAYz9K,EAAKxsB,YAIvB,GAAIiqM,IAAcszF,GAASv9R,WAAaiqM,IAAcuzF,GAASx9R,UAAW,OAAO,KACjF,OAAO,IAAIxB,KAAKyrM,GAclBt6M,0BAA0BouD,GACxB,OAAO,KAMTpuD,+BACE,MAAM0nD,QAAkBrnD,KAAKijb,oBAC7B,IAAIhpO,EAAYszF,GAASv9R,UACzB,IAAK,MAAM+9C,KAAS1G,EAAU,CAC5B,SAAWrnD,KAAKmjb,yBAAyBp1X,GAAQ,CAC/C,IAAIvxB,QAAauxB,EAAMgnD,EAAE3nE,QACzB,IAAK5Q,EAAM,CACTA,QAAauxB,EAAMgnD,EAAE5nE,UAEvB,GAAI3Q,GAAQA,EAAKxsB,UAAYiqM,EAAW,CACtCA,EAAYz9K,EAAKxsB,YAIvB,GAAIiqM,IAAcszF,GAASv9R,WAAaiqM,IAAcuzF,GAASx9R,UAAW,OAAO,KACjF,OAAO,IAAIxB,KAAKyrM,IAGpB,OAAO4oO,OAGT,IAAIO,GAAoD,SAAU3rB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAQ9D,MAAMmzZ,WAAyBn3I,GAAM,CAAC22I,KAAoBvsa,IAExD,MAAM+sa,UAAyB/sa,EAI7B3W,gBACE,MAAM2jb,QAAoBtjb,KAAK+0G,EAAEuuU,YACjC,OAAOA,EAAY/xa,KAAO,EAY5B5R,qBACE,aAAaK,KAAK+0G,EAAEuuU,YAEtBhxa,aACE,OAAOtS,KAAKujb,QAEdjxa,WAAW/S,GACTS,KAAKujb,QAAUhkb,EACfS,KAAKwjb,YAAcjkb,GAGvB6jb,GAAa,CAACr6X,GAAU,CACtBtmC,OAAQ,iBACL4ga,EAAiBx1a,UAAW,mBAAoB,GACrDu1a,GAAa,CAAC3ga,MAAW4ga,EAAiBx1a,UAAW,mBAAoB,GACzE,OAAOw1a,OAGT,IAAII,GAAoD,SAAUhsB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAM9D,MAAMwzZ,WAAmC92I,GAAS,CAACi1I,GAA4BpD,GAAgBoE,GAAmB9E,GAAkBuD,GAAwBpD,KAA2B5na,IACrL,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM61a,UAAmCpta,EACvC3W,UAAUwY,EAAS,IACjBnY,KAAKs6a,iBAAmBnia,EAAOmia,mBAAqB,MACpDt6a,KAAKsoa,4BAA8BnwZ,EAAOmwZ,6BAA+BnwZ,EAAOmia,mBAAqB,MAErG,KAAM,aAAcnia,GAAS,CAE3BA,EAAOs3D,SAAW,KAEpB,GAAIzvE,KAAKs6a,iBAAkB,CACzBt6a,KAAKw2U,qBAAuB,KAE9B,KAAM,6CAA8Cr+T,GAAS,CAC3DA,EAAO2na,yCAA2C,MAEpDrqI,EAAWj6R,UAAU3U,KAAK7G,KAAMmY,GAChCnY,KAAK2jb,iBAAmB,IAAI9ka,IAC5B7e,KAAK46a,qCAAuC,yCAA0Czia,EAASA,EAAOyia,qCAAuC,MAC7I,GAAI56a,KAAK46a,qCAAsC,CAC7Chma,QAAQC,KAAK,qHAEf,IAAK7U,KAAK0iT,gBAAiB1iT,KAAK0iT,gBAAkB1iT,KAAK4jb,4BACvD,IAAK5jb,KAAK+iT,gBAAiB/iT,KAAK+iT,gBAAkB/iT,KAAK6jb,4BACvD,IAAK7jb,KAAK6iT,qBAAsB7iT,KAAK6iT,qBAAuB7iT,KAAK8jb,iCACjE,IAAK9jb,KAAKkjT,qBAAsBljT,KAAKkjT,qBAAuBljT,KAAK+jb,iCACjE,IAAK/jb,KAAK4iT,mBAAoB5iT,KAAK4iT,mBAAqB5iT,KAAKgkb,+BAC7D,IAAKhkb,KAAKijT,mBAAoBjjT,KAAKijT,mBAAqBjjT,KAAKikb,+BAC7D,IAAKjkb,KAAK2iT,qBAAsB3iT,KAAK2iT,qBAAuB3iT,KAAKkkb,iCACjE,IAAKlkb,KAAKgjT,qBAAsBhjT,KAAKgjT,qBAAuBhjT,KAAKmkb,iCACjE,IAAKnkb,KAAK8iT,mBAAoB9iT,KAAK8iT,mBAAqB9iT,KAAKokb,+BAC7D,IAAKpkb,KAAKmjT,0BAA2BnjT,KAAKmjT,0BAA4BnjT,KAAKqkb,sCAC3E,IAAKrkb,KAAK06a,iBAAkB16a,KAAK06a,iBAAmB16a,KAAKskb,6BACzDtkb,KAAKukb,gBAELvkb,KAAKu4S,gBAAkB,IAAIv4S,KAAK8iT,mBAAmB,CACjDvJ,yBAA0Bv5S,KAAKu5S,2BAEjCv5S,KAAKu4S,gBAAgBhtM,QAAUvrG,KAC/B,IAAKA,KAAKw2U,qBAAsBx2U,KAAKwkb,aAAa,OAClDxkb,KAAKykb,wBAAwBzkb,KAAKu1S,sBAClCv1S,KAAK0kb,cAAc1kb,KAAKq1S,YACxBr1S,KAAK2kb,mBAAmB3kb,KAAKo1S,iBAC7Bp1S,KAAK4kb,iBAAiB5kb,KAAKs1S,eAC3Bt1S,KAAK6kb,mBAAmB7kb,KAAKm1S,iBAC7B,MAAMwO,EAAgBzjT,QAAQF,KAAKqjT,eAAiBrjT,KAAKujT,YAAcvjT,KAAKsjT,kBAAoBtjT,KAAKwjT,eAAiBxjT,KAAKojT,iBAC3H,GAAIO,EAAe,CACjB3jT,KAAK4jT,eAAe,CAClBP,cAAerjT,KAAKqjT,cACpBE,WAAYvjT,KAAKujT,WACjBD,iBAAkBtjT,KAAKsjT,iBACvBE,cAAexjT,KAAKwjT,cACpBJ,gBAAiBpjT,KAAKojT,yBAEjBpjT,KAAKqjT,qBACLrjT,KAAKujT,kBACLvjT,KAAKsjT,wBACLtjT,KAAKwjT,qBACLxjT,KAAKojT,iBAGhBzjT,aAAamib,GACX,MAAM/hb,EAAKC,KACX,IAAKD,EAAG0ua,QAAS,CACf1ua,EAAG0ua,QAAU1ua,EAAG+kb,gBAChB/kb,EAAG0ua,QAAQxB,UAAUlta,GACrBA,EAAG0ua,QAAQxB,UAAUlta,EAAGw4S,iBACxBx4S,EAAGwtB,QAAQ,cAIb,GAAIu0Z,IAAiB/hb,EAAGs2S,qBAAsB,CAE5Ct2S,EAAGw1S,qBAAqBv2S,SAAQkxB,KAC7BA,EAAEumR,OAASvmR,EAAEomR,gBACb1zS,UAAW,CACZouE,0BAA2B,OAE7BjxE,EAAGs1S,WAAWr2S,SAAQkxB,KACnBA,EAAEumR,OAASvmR,EAAEomR,gBACb1zS,UAAW,CACZouE,0BAA2B,OAE7BjxE,EAAGu1S,cAAct2S,SAAQkxB,KACtBA,EAAEumR,OAASvmR,EAAEomR,gBACb1zS,UAAW,CACZouE,0BAA2B,OAE7BjxE,EAAGq1S,gBAAgBp2S,SAAQkxB,KACxBA,EAAEumR,OAASvmR,EAAEomR,gBACb1zS,UAAW,CACZouE,0BAA2B,OAE7BjxE,EAAGo1S,gBAAgBn2S,SAAQkxB,KACxBA,EAAEumR,OAASvmR,EAAEomR,gBACb1zS,UAAW,CACZouE,0BAA2B,QAIjCrxE,gBACE,MAAMolb,EAAc/kb,KAAK2rE,IAAI/L,SAC7B5/D,KAAK2rE,IAAIhK,UACT3hE,KAAK2rE,IAAI8lC,aACT,IAAKszU,EAAa,CAChB/kb,KAAK2rE,IAAI0pB,UAGb11F,YACE,IAAIkkT,EAAgBC,EAAqB9F,EAAqB+F,EAAmBC,EAAuBghI,EAAqBC,EAAar/U,EAC1I,MAAM7lG,EAAKC,MACV6jT,EAAiB9jT,EAAGs1S,cAAgB,MAAQwO,SAAwB,OAAS,EAAIA,EAAe9nS,WAChG+nS,EAAsB/jT,EAAGq1S,mBAAqB,MAAQ0O,SAA6B,OAAS,EAAIA,EAAoB/nS,WACpHiiS,EAAsBj+S,EAAGo1S,mBAAqB,MAAQ6I,SAA6B,OAAS,EAAIA,EAAoBjiS,WACpHgoS,EAAoBhkT,EAAGu1S,iBAAmB,MAAQyO,SAA2B,OAAS,EAAIA,EAAkBhoS,WAC5GioS,EAAwBjkT,EAAGw1S,wBAA0B,MAAQyO,SAA+B,OAAS,EAAIA,EAAsBjoS,WAC/Hipa,EAAsBjlb,EAAGw4S,mBAAqB,MAAQysI,SAA6B,OAAS,EAAIA,EAAoBjpa,WACpHkpa,EAAcllb,EAAG0ua,WAAa,MAAQwW,SAAqB,OAAS,EAAIA,EAAYxmY,SACpFmnD,EAAU7lG,EAAG4rE,OAAS,MAAQi6B,SAAiB,OAAS,EAAIA,EAAQ7pF,UACrE05R,EAAWz5R,UAAUnV,KAAK7G,MAE5BL,mBACE,MAAO,CACL4rG,QAASvrG,KACTssa,OAAQoF,GAAO7gT,MACfy3S,4BAA6Btoa,KAAKsoa,4BAClChmH,qBAAsBtiT,KAAKsiT,qBAC3Bs4H,qCAAsC56a,KAAK46a,qCAC3CF,iBAAkB16a,KAAK06a,iBACvB5Q,oBAAqB,SACrBgD,SAAUF,GAAS0K,6BAIvB33a,gBACE,OAAO86a,GAAcxuI,IAAI4gI,IAASh8S,IAAI7wH,KAAKklb,oBAE7Cvlb,gBACE,OAAOK,KAAK46S,gBAAgB52R,MAAQ,EAEtCrkB,qBACE,OAAOK,KAAK46S,gBAAgB96M,WAE9BngG,UACE,OAAOytS,GAAY+3I,eAErB7c,kCACE,OAAOtoa,KAAKolb,6BAKd9c,gCAAgC/oa,GAC9BS,KAAKolb,6BAA+B7lb,EACpC,GAAIS,KAAKyua,QAASzua,KAAKyua,QAAQnG,4BAA8B/oa,EAE/DI,6BACE,OAAOg7a,GAKTh7a,4BACE,OAAOohb,GAKTphb,4BACE,OAAOqhb,GAKTrhb,iCACE,OAAOiib,GAKTjib,iCACE,OAAO+8a,GAKT/8a,+BACE,OAAOwhb,GAKTxhb,+BACE,OAAOyhb,GAKTzhb,iCACE,OAAO08a,GAKT18a,iCACE,OAAO68a,GAKT78a,+BACE,OAAO+5a,GAKT/5a,sCACE,OAAO88a,GAET98a,sBACE,MAAO,CAACK,KAAKq1S,WAAYr1S,KAAKs1S,cAAet1S,KAAKo1S,gBAAiBp1S,KAAKm1S,iBAAiBxtS,MAAK+H,GAAKA,EAAE60F,iBAQvG5kG,qBAAqBu6B,GACnB,MAAMq7Q,qBACJA,EAAoBF,WACpBA,EAAUD,gBACVA,EAAeD,gBACfA,EAAeG,cACfA,EAAam5H,QACbA,GACEzua,KACJ,IAAKA,KAAKoiT,yBAA0B,CAElCqsH,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQlpH,2BACrD,CAIL,MAAOvlT,KAAKyua,QAAQpqV,aAAc,OAC1BrkF,KAAKo8P,eAGf,GAAIqyK,IAAY,MAAQA,SAAiB,GAAKA,EAAQnG,8BAAgCtoa,KAAKs6a,iBAAkB,OAGrGx9Z,GAAM,SAIN9c,KAAKo8P,cACXqyK,EAAQjG,kCAAkC,CACxCtG,MAAO,EACP/pR,UAAW,EACXswR,MAAO,0BAIH3rZ,GAAM,IAEd9c,KAAKoiT,yBAA2B,MAChCpiT,KAAKqiT,oBAAsB,KAC3B,GAAIjgT,WAAW8nT,MAAO,CACpBt1S,QAAQ4/E,IAAI,yBAA0B,6EACtC5/E,QAAQuzB,KAAK,mBACbvzB,QAAQuzB,KAAK,sBAGf,GAAInoC,KAAKs6a,mBAAqBt6a,KAAK0/a,4BAA8B1/a,KAAKqlb,sBAAuB,CAC3Frlb,KAAKo5a,6BAEP,GAAIl/Y,EAAKmpR,cAAe,CACtBrjT,KAAKm5a,gBAAgB5jI,GACrBA,EAAqBr7Q,KAAOA,EAAKmpR,cAEnC,GAAInpR,EAAKqpR,YAAcrpR,EAAK+pR,UAAW,CACrCjkT,KAAKm5a,gBAAgB9jI,GACrBA,EAAWn7Q,KAAOA,EAAKqpR,YAAcrpR,EAAK+pR,UAE5C,GAAI/pR,EAAKopR,iBAAkB,CACzBtjT,KAAKm5a,gBAAgB/jI,GACrBA,EAAgBl7Q,KAAOA,EAAKopR,iBAE9B,GAAIppR,EAAKspR,cAAe,CACtBxjT,KAAKm5a,gBAAgB7jI,GACrBA,EAAcp7Q,KAAOA,EAAKspR,cAE5B,GAAItpR,EAAKkpR,gBAAiB,CACxBpjT,KAAKm5a,gBAAgBhkI,GACrBA,EAAgBj7Q,KAAOA,EAAKkpR,gBAE9B,GAAIhhT,WAAW8nT,MAAOt1S,QAAQgrK,QAAQ,sBACtC,MAAMzzK,QAAenM,KAAKkkT,aAC1BlkT,KAAKqiT,oBAAsB,MAC3B,OAAOl2S,EAITxM,wBACE,MAAMuE,QACJA,GACElE,KAAKm1S,iBAAmB,GAE5B,GAAIjxS,EAAS,CAEXA,EAAQ8qF,SAAS,CACf78E,SAAU,QACVo5E,OAAQ,QAEVrnF,EAAQ8qF,SAAS,CACf78E,SAAU,WACVo5E,OAAQ,SAId5rF,yBACE,MAAMuE,QACJA,GACElE,KAAKm1S,gBAETjxS,EAAQ4pF,YAAY,SACpB5pF,EAAQ4pF,YAAY,YAEtBnuF,+BAA+B6Q,GAC7B,MAAMzQ,EAAKC,KACXD,EAAGy2U,qBAAuB,KAC1Bz2U,EAAGulb,8BAGGxoa,GAAM,GACZ,GAAI/c,EAAGmc,YAAa,CAClB1L,IACA,OAEFzQ,EAAGwtB,QAAQ,yBAEXxtB,EAAGwtB,QAAQ,UAAW,CACpBs4R,aAAc,cAEV/oS,GAAM,GACZ,GAAI/c,EAAGmc,YAAa,CAClB1L,IACA,OAEFzQ,EAAGy2U,qBAAuB,MAG1B,GAAIz2U,EAAGs2S,qBAAsB,CAE3Bt2S,EAAG6ib,kBAAkBn0a,UAChB,CACL1O,EAAGykb,aAAa,MAElB,MAAMr4a,QAAepM,EAAG0ua,QAAQryK,cAChC,GAAIr8P,EAAGmc,YAAa,CAClB1L,IACA,OAEFA,EAAQrE,GACRpM,EAAG2/a,0BAA4B,KAC/B3/a,EAAGwtB,QAAQ,uBACXxtB,EAAGwlb,yBAEL5lb,6BACE,GAAIK,KAAK0/a,0BAA2B,CAClC,OAAO1/a,KAAK0/a,0BAEd,GAAI1/a,KAAKs6a,mBAAqB,MAAO,CACnC,OAAOt6a,KAAK0/a,0BAA4B,IAAInva,SAAQC,GAEpDxQ,KAAKwlb,yBAAyBh1a,GAASC,UAG3C9Q,mBAEE,MAAMwM,QAAenM,KAAKo8P,cAE1B,IAAKp8P,KAAKkc,YAAalc,KAAKutB,QAAQ,QACpC,OAAOphB,EAETxM,gBACE,MAAM8lb,EAAWzlb,KAAKylb,UAAYpuU,GAElCr3G,KAAK0lb,OAAOD,EAAS50T,IAAI,CACvBjxD,SAAU,MACT5/D,KAAK2rE,MACR,GAAI3rE,KAAK2lb,6BAA8B,CACrC3lb,KAAKmvB,GAAG,CACN0+E,KAAM7tG,KAAK4lb,cACXtpa,QAAStc,OAGbA,KAAKmvB,GAAG,CACN02Z,aAAc7lb,KAAK8lb,uBACnBhwE,gBAAiB91W,KAAK+lb,qBACtBC,eAAgBhmb,KAAKimb,kBACrB3pa,QAAStc,OAGbL,0BAAyByra,kBACvBA,EAAiB3lH,cACjBA,IAEA,IAAIygI,EAAuBC,EAC3B,MAAMC,EAAgB,IAAI50a,IAC1B,IAAK,MAAMyvZ,KAASmK,EAAkBtka,QAAQ+E,SAAU,CACtD,IAAIw6a,EACJ,MAAMphY,EAAag8W,EAAMh8W,WACzB,MAAM1uC,MACJA,GACE0uC,EACJ,GAAIg8W,EAAMS,aAAez8W,EAAWmyX,KAAwB7ga,aAAiB2ga,GAAkB,SAC/F,MAAM1kW,EAASvtB,EAAW+iB,KAC1B,MAAM4D,EAAQ4G,EAAO7F,WAErB,GAAIf,IAAUq1V,EAAMpiS,aAAewnT,EAAwBjb,EAAkB14T,YAAYqvT,wBAAwBvvV,EAAO47V,OAAS,MAAQiY,SAA+B,GAAKA,EAAsBxnT,UAAW,CAC5M,IAAKunT,EAAcnoa,IAAI2tD,GAAQ,CAC7Bw6W,EAAc90a,IAAIs6D,EAAO,IAAI/sD,IAAI,CAAC2zD,UAC7B,IAAK4zW,EAAc10a,IAAIk6D,GAAO3tD,IAAIu0D,GAAS,CAChD4zW,EAAc10a,IAAIk6D,GAAO7sD,IAAIyzD,MAKlC0zW,EAAwBlmb,KAAKq1T,0BAA4B,MAAQ6wH,SAA+B,OAAS,EAAIA,EAAsBr/a,KAAK7G,MACzI,MAAMsuE,EAAS/mE,MAAMyd,KAAKoha,EAAcpob,QAAQia,MAAK,CAACpS,EAAGye,IAAMze,EAAEqza,aAAe50Z,EAAE40Z,eAElF5qW,EAAOtvE,SAAQ4sE,GAASA,EAAM9pE,OAAOskb,EAAc10a,IAAIk6D,OAEtDu6W,EAAwBnmb,KAAKu1T,yBAA2B,MAAQ4wH,SAA+B,OAAS,EAAIA,EAAsBt/a,KAAK7G,KAAMylT,GAC9I,GAAIA,EAAe,CACjBzlT,KAAKq1S,WAAW5hN,gBAChBzzF,KAAKo1S,gBAAgB3hN,gBACrBzzF,KAAKs1S,cAAc7hN,gBACnBzzF,KAAKm1S,gBAAgB1hN,gBACrBzzF,KAAKu1S,qBAAqB9hN,iBAG9B9zF,kBAAkBwwB,GAEhB,GAAInwB,KAAKsmb,aAAc,CAErBtmb,KAAK42S,gBAAkB,KACvB52S,KAAKumb,yBAAyBp2Z,GAC9BnwB,KAAK42S,gBAAkB,UAGpB,CACH52S,KAAKwmb,wBAIT7mb,yBACE,MAAMgsE,IACJA,GACE3rE,KACJA,KAAKsmb,aAAe36W,EAAI/L,SACxB,GAAI+L,EAAI+rC,aAAe/rC,EAAIomC,WAAY,CACrC/xG,KAAKymb,eAAiB,KAItB96W,EAAIomC,WAAa,OAGrBpyG,uBACE,GAAIK,KAAKymb,eAAgB,CAEvBzmb,KAAK2rE,IAAIomC,WAAa,KACtB/xG,KAAKymb,eAAiB,OAI1B9mb,0BAAyBZ,OACvBA,IAEA,MAAM4sE,EAAM5sE,EAEZ4sE,EAAIhK,gBACE3hE,KAAKo8P,cACX,IAAKp8P,KAAKkc,YAAa,CACrByvD,EAAI0pB,SACJr1F,KAAKutB,QAAQ,uBAOjB5tB,+BAA+B4iT,EAAS/7R,EAAMjL,GAC5C,GAAIvb,KAAKq2S,qBAAsB,CAC7Br2S,KAAKupE,gBAAgBg5O,GACrBviT,KAAKmvB,GAAG,CACN1qB,KAAM89S,EACNqgI,kBAAmB,CACjB5qa,GAAI,IAAMwO,KAAQjL,GAClBqR,KAAM,YAGL,CACLpG,KAAQjL,IAGZ86R,2BACE,IAAIqwI,EACJ,OAAOxmb,SAASwmb,EAAwB1mb,KAAK2jb,oBAAsB,MAAQ+C,SAA+B,OAAS,EAAIA,EAAsBn1a,MAG/I5R,gBAAgBisE,GACd,MAAM7rE,EAAKC,KACX,GAAID,EAAG4mb,qBAAuB/6W,EAAMw5B,WAAax5B,EAAM24B,eAAgB,CACrE,IAAIqiV,GACHA,EAAe7mb,EAAG0ua,WAAa,MAAQmY,SAAsB,OAAS,EAAIA,EAAazc,kBAAkBl3T,OAC1G,IAAKlzG,EAAG4jb,iBAAkB5jb,EAAG4jb,iBAAmB,IAAI9ka,IACpD9e,EAAG4jb,iBAAiB5ka,IAAI6sD,GAExB7rE,EAAG6ib,qBAIPjjb,oBACE,MAAMI,EAAKC,KAEX,GAAID,EAAGy2U,qBAAsB,CAC3B,OAEF,MAAMjhC,qBACJA,EAAoBF,WACpBA,EAAUD,gBACVA,EAAeD,gBACfA,EAAeG,cACfA,EACAm5H,QAASoY,GACP9mb,EACJ,GAAI8mb,EAAY,CAEd9mb,EAAG+mb,mBAAmBvxI,EAAsBF,EAAYD,EAAiBE,EAAeH,GACxFp1S,EAAGgnb,aAAahnb,GAChBA,EAAGgnb,aAAahnb,EAAGw4S,iBACnBx4S,EAAGwtB,QAAQ,mBACXs5Z,EAAWpoY,YACN,CACL1+C,EAAGwtB,QAAQ,mBAEb,MAAMkhZ,EAAU1ua,EAAG0ua,QAAU1ua,EAAG+kb,gBAEhCrW,EAAQxB,UAAUlta,GAClB0ua,EAAQxB,UAAUlta,EAAGw4S,iBACrBx4S,EAAGukT,iBAAiB/O,EAAsB,MAC1Cx1S,EAAGukT,iBAAiBjP,EAAY,MAChCt1S,EAAGukT,iBAAiBlP,EAAiB,MACrCr1S,EAAGukT,iBAAiBhP,EAAe,MACnCv1S,EAAGukT,iBAAiBnP,EAAiB,MACrCp1S,EAAG4jb,iBAAiBllY,QACpB1+C,EAAGwtB,QAAQ,qBAGb5tB,oBAEE,GAAIK,KAAK4ib,kBAAkBh7Z,YAAc5nB,KAAK6tT,sBAAuB,CAEnE7tT,KAAK4ib,kBAAkBn0a,MACvB,OAAOzO,KAAKyua,QAAQryK,cAEtB,OAAO,KAITz8P,aAAa6yE,GAEX,GAAIA,IAAW,MAAQA,SAAgB,GAAKA,EAAOikO,MAAO,CACxD,MAAM0zH,kBACJA,GACEnqa,KAAKyua,QACT,MAAM15T,EACJA,GACEviC,EACJ,MAAMx0E,EAAOC,OAAOD,KAAK+2G,GAEzB,IAAK,IAAIn2G,EAAI,EAAGA,EAAIZ,EAAKc,OAAQF,IAAK,CACpC,MAAMK,EAAMjB,EAAKY,GACjB,MAAMqmD,EAAa8vD,EAAE91G,GACrB,MAAMwsD,EAAQ0+W,EAAkBtI,kBAAkB58W,GAClD,GAAIwG,EAAO,CACT,IAAIlsD,EAAQksD,EAAMpmC,WAClB,GAAI9lB,IAAUqD,UAAWrD,EAAQksD,EAAM6xW,cACvC,GAAI/9Z,IAAUqD,UAAW,CACvB,IAAIokb,EAAWr3X,EACf1K,EAAWmoX,KAAOnoX,EAAW1uC,iBAAiByga,IAAuBgQ,GAAar3X,EAASpwD,KAAW,MAAQowD,SAAgB,OAAS,EAAIA,EAAOhlD,MAAQ,MAAQq8a,SAAmB,EAAIA,EAAYznb,EAAQA,IAKnNizE,EAAOikO,MAAQ,MAInB92S,sBAAsB2uE,GACpBA,EAAOtvE,SAAQ4sE,IAGb,IAAK5rE,KAAK2jb,iBAAiB1la,IAAI2tD,IAAUA,EAAM24B,eAAgB,CAC7D34B,EAAMsF,UAASsB,IACbxyE,KAAK+mb,aAAav0W,KACjB,MAAO,MAAO,CAGfxB,0BAA2B,KAC3B46B,6BAA8B,WAMtCjsG,WACE,OAAOK,KAAKyua,QAGd9ua,gBAAgBsuB,GACdjuB,KAAKq1S,WAAWt2R,IAAIkP,GACpB,OAAOjuB,KAAKo8P,cAGdz8P,eAAewwB,GACbnwB,KAAKq1S,WAAWt2R,IAAIoR,GACpB,OAAOnwB,KAAKo8P,cAGdz8P,aAAawwB,GACXnwB,KAAKq1S,WAAWt2R,IAAIoR,GAGtBxwB,mBAAmBsuB,GACjBjuB,KAAKq1S,WAAWvzS,OAAOmsB,GACvB,OAAOjuB,KAAKo8P,cAGdz8P,aAAawwB,GACXnwB,KAAKq1S,WAAWvzS,OAAOquB,GAGzBxwB,kBAAkBwwB,GAChBnwB,KAAKq1S,WAAWvzS,OAAOquB,GACvB,OAAOnwB,KAAKo8P,cAEdz8P,SACE,OAAOK,KAAK2rE,IAEdhsE,OAAOgsE,GACL3rE,KAAK2rE,IAAMA,EACX3rE,KAAK2rE,IAAIx8C,GAAG,gBAAiBnvB,KAAKinb,mBAAoBjnb,MAExDL,mBACE,OAAOK,KAETL,8BACE,IAAIswS,QAAiBjwS,KAAK+0G,EAAEk7L,SAC5B,GAAIA,EAAU,OAENA,EAASl7L,EAAEniG,YACZ,CACLq9R,EAAWjwS,KAAKu4S,gBAElB,OAAOtI,EAETtwS,iBAAiBisE,EAAOs7W,EAAW,OACjC,MAAMlva,EAAKw6D,IACTA,EAAOwiO,WAAWh1S,MAClBwyE,EAAO8jO,eAIT,GAAI1qO,EAAM8E,SAAU,CAClB9E,EAAM8E,SAASQ,SAASl5D,EAAIkva,EAAU,UACjC,CACLt7W,EAAM5sE,QAAQgZ,EAAI,KAAM,CACtBg5D,0BAA2B,KAC3B46B,6BAA8B,QAIpCjsG,mBAAmBisE,GACjB,MAAM5zD,EAAKw6D,IACTA,EAAOgkO,eACPhkO,EAAOwiO,WAAWh1S,OAIpB,GAAI4rE,EAAM8E,SAAU,CAClB9E,EAAM8E,SAASQ,UAAS5pB,IAEtB,GAAIA,IAASskB,EAAM8E,SAAU14D,EAAGsvC,KAC/B,MAAO,UACL,CACLskB,EAAM5sE,QAAQgZ,EAAI,KAAM,CACtBg5D,0BAA2B,KAC3B46B,6BAA8B,QAQpCjsG,cAAcisE,GACZ,MAAMu7W,EAAgBnnb,KAAKq1S,WAC3B,GAAI8xI,GAAiBnnb,KAAK2rE,IAAIk6B,SAASshV,GAAgB,CACrDnnb,KAAK2rE,IAAIm6B,YAAYqhV,GACrBnnb,KAAKonb,mBAAmBD,GACxBnnb,KAAKokT,YAAY+iI,GACjB,MAAMtsI,EAAwBssI,EAActsI,sBAE5CA,EAAsB77S,SAAQo7S,IAC5B,MAAMoK,EAAWpK,EAAWjqR,MAC5B,GAAIq0R,EAAU,CACZ,MAAMC,EAAW74O,EAAMiB,QAAQ23O,EAAS75S,IACxC,GAAI85S,EAAU,CACZrK,EAAWjqR,MAAQs0R,EAEnB5J,EAAsBvhS,OAAO8gS,QAInC+sI,EAAcrsI,oBAEhB,IAAKlvO,KAAWA,aAAiBg7B,IAAQ,CACvC,MAAMpsB,GAAc5O,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM4O,aAAex6E,KAAK+iT,gBAC5F/iT,KAAKq1S,WAAa,IAAI76N,EAAWxpC,GAAa55B,OAAO,CACnDmjE,WAAYv6E,KAAK0iT,gBACjBn3M,QAASvrG,KACT2rE,IAAK3rE,KAAK2rE,KACTC,GAAS,SACP,CACL5rE,KAAKq1S,WAAazpO,EAClBA,EAAMopO,WAAWh1S,MACjBA,KAAK2rE,IAAIo6B,SAASn6B,GAGlB,GAAIA,EAAM8a,MAAQ9a,EAAM8E,WAAa1wE,KAAM,CACzCA,KAAKyB,YAAYmqE,EAAM8E,SAASrpB,UAAY,IAE5CukB,EAAM8E,SAAW1wE,SAGd,CACHA,KAAKskT,iBAAiB14O,GACtB5rE,KAAKo5a,8BAGTp5a,KAAK0kT,YAAY1kT,KAAKq1S,YACtBr1S,KAAKutB,QAAQ,mBAAoB,CAC/Bq+C,MAAO5rE,KAAKq1S,aAOhB11S,mBAAmBisE,GACjB,MAAMy7W,EAAqBrnb,KAAKo1S,gBAChC,GAAIiyI,GAAsBrnb,KAAK2rE,IAAIk6B,SAASwhV,GAAqB,CAC/Drnb,KAAK2rE,IAAIm6B,YAAYuhV,GACrBrnb,KAAKokT,YAAYijI,GAEnB,IAAKz7W,KAAWA,aAAiBg7B,IAAQ,CACvC,MAAMpsB,GAAc5O,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM4O,aAAex6E,KAAKkjT,qBAC5FljT,KAAKo1S,gBAAkB,IAAI56N,EAAWxpC,GAAa55B,OAAO,CACxDmjE,WAAYv6E,KAAK6iT,qBACjBt3M,QAASvrG,KACT2rE,IAAK3rE,KAAK2rE,KACTC,GAAS,SACP,CACL5rE,KAAKo1S,gBAAkBxpO,EACvBA,EAAMopO,WAAWh1S,MACjBA,KAAK2rE,IAAIo6B,SAASn6B,GAClB5rE,KAAKskT,iBAAiB14O,GACtB5rE,KAAKo5a,6BAEPp5a,KAAK0kT,YAAY1kT,KAAKo1S,iBACtBp1S,KAAKutB,QAAQ,wBAAyB,CACpCq+C,MAAO5rE,KAAKo1S,kBAOhBz1S,iBAAiBisE,GACf,MAAM07W,EAAmBtnb,KAAKs1S,cAC9B,GAAIgyI,GAAoBtnb,KAAK2rE,IAAIk6B,SAASyhV,GAAmB,CAC3Dtnb,KAAK2rE,IAAIm6B,YAAYwhV,GACrBtnb,KAAKonb,mBAAmBE,GACxBtnb,KAAKokT,YAAYkjI,GACjB,MAAMzsI,EAAwBysI,EAAiBzsI,sBAE/CA,EAAsB77S,SAAQo7S,IAC5B,MAAMyK,EAAczK,EAAWD,SAC/B,GAAI0K,EAAa,CACf,MAAMC,EAAcl5O,EAAMiB,QAAQg4O,EAAYl6S,IAC9C,GAAIm6S,EAAa,CACf1K,EAAWD,SAAW2K,EAEtBjK,EAAsBvhS,OAAO8gS,QAInCktI,EAAiB3qI,uBAEnB,IAAK/wO,KAAWA,aAAiBg7B,IAAQ,CACvC,MAAMpsB,GAAc5O,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM4O,aAAex6E,KAAKijT,mBAC5FjjT,KAAKs1S,cAAgB,IAAI96N,EAAWxpC,GAAa55B,OAAO,CACtDmjE,WAAYv6E,KAAK4iT,mBACjBr3M,QAASvrG,KACT2rE,IAAK3rE,KAAK2rE,KACTC,GAAS,SACP,CACL5rE,KAAKs1S,cAAgB1pO,EACrBA,EAAMopO,WAAWh1S,MACjBA,KAAK2rE,IAAIo6B,SAASn6B,GAClB5rE,KAAKskT,iBAAiB14O,GACtB5rE,KAAKo5a,6BAEPp5a,KAAK0kT,YAAY1kT,KAAKs1S,eACtBt1S,KAAKutB,QAAQ,sBAAuB,CAClCq+C,MAAO5rE,KAAKs1S,gBAOhB31S,mBAAmBisE,GACjB,MAAM27W,EAAqBvnb,KAAKm1S,gBAChC,GAAIoyI,GAAsBvnb,KAAK2rE,IAAIk6B,SAAS0hV,GAAqB,CAC/Dvnb,KAAK2rE,IAAIm6B,YAAYyhV,GACrBvnb,KAAKonb,mBAAmBG,GACxBvnb,KAAKokT,YAAYmjI,GAEnB,IAAK37W,KAAWA,aAAiBg7B,IAAQ,CACvC,MAAMpsB,GAAc5O,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM4O,aAAex6E,KAAKgjT,qBAC5FhjT,KAAKm1S,gBAAkB,IAAI36N,EAAWxpC,GAAa55B,OAAO,CACxDmjE,WAAYv6E,KAAK2iT,qBACjBp3M,QAASvrG,KACT2rE,IAAK3rE,KAAK2rE,KACTC,GAAS,SACP,CACL5rE,KAAKm1S,gBAAkBvpO,EACvBA,EAAMopO,WAAWh1S,MACjBA,KAAK2rE,IAAIo6B,SAASn6B,GAClB5rE,KAAKskT,iBAAiB14O,GACtB5rE,KAAKo5a,6BAEPp5a,KAAK6tT,uBAAyB7tT,KAAKslb,wBACnCtlb,KAAK0kT,YAAY1kT,KAAKm1S,iBACtBn1S,KAAKutB,QAAQ,wBAAyB,CACpCq+C,MAAO5rE,KAAKm1S,kBAOhBx1S,wBAAwBisE,GACtB,MAAM47W,EAA0Bxnb,KAAKu1S,qBACrC,GAAIiyI,GAA2Bxnb,KAAK2rE,IAAIk6B,SAAS2hV,GAA0B,CACzExnb,KAAK2rE,IAAIm6B,YAAY0hV,GACrBxnb,KAAKokT,YAAYojI,GAEnB,IAAK57W,KAAWA,aAAiBg7B,IAAQ,CACvC,MAAMpsB,GAAc5O,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAM4O,aAAex6E,KAAKmjT,0BAC5FnjT,KAAKu1S,qBAAuB,IAAI/6N,EAAWxpC,GAAa55B,OAAO,CAC7DmjE,WAAYv6E,KAAK8iT,mBACjBv3M,QAASvrG,KACT2rE,IAAK3rE,KAAK2rE,KACTC,GAAS,SACP,CACL5rE,KAAKu1S,qBAAuB3pO,EAC5B,GAAIA,EAAO,CACTA,EAAMopO,WAAWh1S,MACjBA,KAAK2rE,IAAIo6B,SAASn6B,GAClB5rE,KAAKskT,iBAAiB14O,GACtB5rE,KAAKo5a,8BAGTp5a,KAAK0kT,YAAY1kT,KAAKu1S,sBACtBv1S,KAAKutB,QAAQ,6BAA8B,CACzCq+C,MAAO5rE,KAAKu1S,uBAIhB51S,2BAA2B4b,GACzB,OAAO,KAET5b,qBAAqBgsE,GACnBA,EAAMA,GAAO3rE,KAAK2rE,IAClB,GAAIA,EAAI+mC,YAAa,CACnB,GAAI/mC,EAAI+mC,YAAY5zG,OAAQ,CAC1B6sE,EAAI6sC,cAAa9oG,GAAKA,EAAE2oF,eACxB1sB,EAAI87W,oBACJ97W,EAAI6sC,cAAa9oG,GAAKA,EAAE4oF,iBACnB,CACL3sB,EAAI6oC,oBAIV70G,8BAA8BkkX,GAC5B,MAAMl4S,EAAM3rE,KAAK2rE,IAEf+7W,EAAuB/7W,EAAI/L,SAC3B+nX,EAAyBh8W,EAAIomC,WAE/B,GAAI21U,EAAsB,CACxB/7W,EAAI0pB,aAGD,CAEH,GAAIsyV,EAAwB,CAC1Bh8W,EAAIomC,WAAa,MAGnB,GAAIpmC,EAAI+rC,YAAa,CACnB/rC,EAAI6oC,mBAIR7oC,EAAIyoC,mBAIJyvQ,IAGA,IAAI13W,EAAS,KACb,IACE,MAAMy7a,QAAqB5nb,KAAKo8P,cAEhCjwP,GAAUy7a,EAAahiB,aACvB,MAAO5ha,GAEP,IAAK,SAASyD,KAAKzD,GAAI,MAAMA,EAC7BmI,EAAS,MAGX,GAAIA,EAAQ,CACVw/D,EAAI6oC,kBAEJ,GAAIkzU,EAAsB,CACxB/7W,EAAI8lC,kBAIH,CACHzxG,KAAKyua,QAAQ/5Y,SACb10B,KAAKwmb,qBAAqB76W,GAG5BA,EAAI/L,SAAW8nX,EACf/7W,EAAIomC,WAAa41U,EACjB,OAAOx7a,EAETxM,gBACE,MAAM8ua,QACJA,GACEzua,KACJ,OAAOA,KAAKw2U,uBAAyBx2U,KAAKq2S,wBAA0Bo4H,EAAQngF,QAAUmgF,EAAQppH,wBAA0BopH,EAAQpqV,eAGlIxiE,2BACE,MAAO,CACLuhS,gBAAiB,KACjBC,cAAe,KACfC,iBAAkB,KAClBC,WAAY,KACZC,cAAe,KAIfnO,WAAY,KACZC,cAAe,KACfH,gBAAiB,KACjBC,gBAAiB,KACjBG,qBAAsB,KACtBmN,gBAAiB,KACjBE,mBAAoB,KACpBD,qBAAsB,KACtBE,qBAAsB,KACtBC,mBAAoB,KACpB6jI,oBAAqB,MAGzB/9Z,uBACE,MAAO,CACLg6Z,kBAAmB,KAIzBc,EAA2BjnW,aAAe,KAC1CgnW,GAAa,CAAC7L,GAAY,CACxB/qa,KAAM,UACNjI,aAAc,QACX8+a,EAA2B71a,UAAW,gCAAiC,GAC5E41a,GAAa,CAAC7L,GAAY,CACxB/qa,KAAM,UACNjI,aAAc,SACX8+a,EAA2B71a,UAAW,gDAAiD,GAC5F,OAAO61a,OAGT,IAAImE,GAAoD,SAAUpwB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAG9D,MAAM43Z,GAAgD,UAAW33Z,EAAO43Z,EAA+BC,EAA6B1/Z,EAAU8rZ,GAC5I,GAAI4T,EAA4BhU,kBAAmB,OAAOgU,EAE1D,GAAI5T,GAA2B4T,EAA4B1T,eAAgB,CACzE,MAAM2T,EAAqB,IAAIppa,IAI/B,IAAK,MAAM08H,KAAYysS,EAA4B1T,eAAgB,CACjE,GAAI/4R,EAASs6R,aAAc,CACzBoS,EAAmBlpa,IAAIw8H,OAClB,CACL,MAAMpuG,EAAYouG,EAAS2sS,0BAA6B/3Z,EAAMsvZ,oCAAoClkS,EAASpuG,UAAW,MAAO7kB,GAAYizH,EAASpuG,UAClJ,MAAMC,EAAUmuG,EAAS4sS,wBAA2Bh4Z,EAAMsvZ,oCAAoClkS,EAASnuG,QAAS,MAAO9kB,GAAYizH,EAASnuG,QAC5I,MAAMg7Y,EAAiB7sS,EACvB0sS,EAAmBlpa,IAAIqpa,EAAeC,SAAS,CAC7ChS,aAAc+R,EACdriF,KAAMqiF,EAAeriF,OAASz4D,GAAuBgnG,MAAQhnG,GAAuBhwB,IAAMgwB,GAAuBgnG,MACjHnnW,UAAAA,EACAC,QAAAA,MAKN46Y,EAA4B1T,eAAiB2T,EAE/C,MAAM96Y,EAAY66Y,EAA4BE,0BAA6B/3Z,EAAMsvZ,oCAAoCuI,EAA4B76Y,UAAW,MAAO7kB,GAAY,KAC/K,MAAM8kB,EAAU46Y,EAA4BG,wBAA2Bh4Z,EAAMsvZ,oCAAoCuI,EAA4B56Y,QAAS,MAAO9kB,GAAY,KACzK,OAAOosZ,GAAmB,CAACqT,EAA+B3R,GAAmBvlT,IAAI,CAC/EyjT,eAAgB0T,EAA4B1T,eAC5CnnY,UAAAA,EACAC,QAAAA,KACGgnY,IAEP,MAAMkU,GAA8C,UAAWn4Z,EAAO43Z,EAA+BC,EAA6B1/Z,EAAU8rZ,GAC1I,GAAI2T,EAA8B/T,kBAAmB,OAAO+T,EAE5D,GAAI3T,EAAyB,CAC3B,MAAM6T,EAAqB,IAAIppa,IAI/B,IAAK,MAAM08H,KAAYwsS,EAA8BzT,eAAgB,CAEnE,GAAI/4R,EAASs6R,aAAc,CACzBoS,EAAmBlpa,IAAIw8H,OAGpB,CACH,MAAMpuG,EAAYouG,EAAS2sS,0BAA6B/3Z,EAAMsvZ,oCAAoClkS,EAASpuG,UAAW,KAAM7kB,GAAYizH,EAASpuG,UACjJ,MAAMC,EAAUmuG,EAAS4sS,wBAA2Bh4Z,EAAMsvZ,oCAAoClkS,EAASnuG,QAAS,KAAM9kB,GAAYizH,EAASnuG,QAC3I,MAAMg7Y,EAAiB7sS,EAEvB0sS,EAAmBlpa,IAAIqpa,EAAeC,SAAS,CAC7ChS,aAAc+R,EACdriF,KAAMqiF,EAAeriF,OAASz4D,GAAuBgnG,MAAQhnG,GAAuBhwB,IAAMgwB,GAAuBgnG,MACjHnnW,UAAAA,EACAC,QAAAA,MAKN26Y,EAA8BzT,eAAiB2T,EAEjD,MAAM96Y,EAAY46Y,EAA8BG,0BAA6B/3Z,EAAMsvZ,oCAAoCsI,EAA8B56Y,UAAW,KAAM7kB,GAAY,KAClL,MAAM8kB,EAAU26Y,EAA8BI,wBAA2Bh4Z,EAAMsvZ,oCAAoCsI,EAA8B36Y,QAAS,KAAM9kB,GAAY,KAC5K,OAAOosZ,GAAmB,CAACsT,EAA6B5R,GAAmBvlT,IAAI,CAC7EwlT,aAAclpY,GAAaC,EAAU26Y,EAAgCnlb,UACrE0xa,eAAgBnnY,GAAaC,EAAU26Y,EAA8BzT,eAAiB1xa,UACtFuqC,UAAAA,EACAC,QAAAA,KACGgnY,IAEP,MAAMmU,GAAoB,KAoC1B,MAAMC,WAAmCt8I,GAAM,CAAC22I,KAAoBvsa,IAClE,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM26a,UAAmClya,EAEvC3W,yBAAyB68B,EAAM6xM,EAAY,MAGzC,SAAWruO,KAAK8ib,eAAgB,OAAOtmZ,EACvC,IAAIlU,QAAkBtoB,KAAKyob,6BAC3B,OAAOjsZ,GAAQlU,EAAW,QAAWtoB,KAAKg6S,mBAAmBx9Q,EAAM6xM,GAAa7xM,EAElF78B,sCAAsC+ob,EAAaC,EAA8BC,EAA4BxU,EAA0B,OACrI,MAAMqM,QAAgCzgb,KAAKyob,6BAC3C,GAAIhI,GAA0B,KAAM,CAClC,OAAO,KAET,MAAMoI,EAAsBH,EAAcZ,GAAgDQ,GAC1F,MAAMQ,QAA2BD,EAAoB7ob,KAAM00a,GAAmBiU,EAA8BvU,GAA0BM,GAAmBkU,EAA4BxU,GAA0BqM,EAAwBrM,GACvO,OAAO0U,EAMTnpb,yCACE,MAAO,GAMTA,uCACE,MAAO,GAMTA,8CACE,MAAO,GAMTA,4CACE,MAAO,GAETA,4CAA4Cy0a,EAA0B,OACpE,MAAMuU,QAAqC3ob,KAAK+0G,EAAEg0U,kCAClD,MAAMH,QAAmC5ob,KAAK+0G,EAAEi0U,gCAChD,aAAchpb,KAAKipb,qCAAqC,KAGxDN,EAA6Bhia,aAAa3mB,KAAK+0G,EAAE4zU,8BAA+BC,EAA2Bjia,aAAa3mB,KAAK+0G,EAAE6zU,4BAA6BxU,GAE9Jz0a,4CACE,aAAcK,KAAKkpb,6CAErBvpb,0CAA0Cy0a,EAA0B,OAClE,MAAMuU,QAAqC3ob,KAAK+0G,EAAEg0U,kCAClD,MAAMH,QAAmC5ob,KAAK+0G,EAAEi0U,gCAChD,aAAchpb,KAAKipb,qCAAqC,MAGxDN,EAA6Bhia,aAAa3mB,KAAK+0G,EAAE4zU,8BAA+BC,EAA2Bjia,aAAa3mB,KAAK+0G,EAAE6zU,4BAA6BxU,GAE9Jz0a,0CACE,aAAcK,KAAKmpb,2CAcrBxpb,iCAAiCouD,GAC/B,OAAO,KAETpuD,sCACE,IAAIwM,EAASqhS,GACb,MAAM47I,QAA2Bppb,KAAKijb,oBACtC,IAAK,IAAIoG,KAAcD,EAAmB,CACxC,IAAIE,EACJ,WAAatpb,KAAKupb,gCAAgCF,IAAc,SAChE,UAAWA,EAAWt0U,EAAEy8N,2BAA8B63G,EAAWvG,gBAAiB,CAChFwG,QAAkBD,EAAWt0U,EAAEy0U,0BAEjCF,EAAYA,UAAoBD,EAAWt0U,EAAE00U,gBAC7C,GAAIH,GAAaA,EAAYn9a,EAAQA,EAASm9a,EAEhD,OAAOn9a,EAAO6D,UAAYw9R,GAASx9R,UAAY7D,EAAS,KAc1DxM,+BAA+BouD,GAC7B,OAAO,KAETpuD,oCACE,IAAIwM,EAASohS,GACb,MAAM67I,QAA2Bppb,KAAKijb,oBACtC,IAAK,IAAIoG,KAAcD,EAAmB,CACxC,IAAIE,EACJ,WAAatpb,KAAK0pb,8BAA8BL,IAAc,SAC9D,UAAWA,EAAWt0U,EAAEy8N,2BAA8B63G,EAAWvG,gBAAiB,CAChFwG,QAAkBD,EAAWt0U,EAAE40U,wBAEjCL,EAAYA,UAAoBD,EAAWt0U,EAAE60U,cAC7C,GAAIN,GAAaA,EAAYn9a,EAAQA,EAASm9a,EAEhD,OAAOn9a,EAAO6D,UAAYu9R,GAASv9R,UAAY7D,EAAS,KAE1DxM,8BAIE,UAAWK,KAAK+0G,EAAEy8N,2BAA6BxxU,KAAK+0G,EAAE5oD,aAAekhP,GAAU+xI,QAAS,CACtF,aAAap/a,KAAK+0G,EAAE5nE,UAGtB,SAAWntC,KAAK8ib,eAAgB,CAC9B,aAAa9ib,KAAK+0G,EAAEy0U,0BAEtB,WAAaxpb,KAAK6pb,sBAAuB,CACvC,aAAa7pb,KAAK+0G,EAAE5nE,UAEtB,IAAI27Y,QAA0B9ob,KAAK+0G,EAAE+0U,gCACrC,GAAIhB,IAAsB,KAAM,CAC9B,OAAO,UACF,GAAIA,EAAkB9U,kBAAmB,CAE9C8U,QAA2B9ob,KAAKkpb,2CAA2C,MAC3E,MAAM1T,EAAWC,GAAe5kT,IAAI,CAClChuD,UAAW,IAAIimX,EAAkBxU,kBAEnC,UAAWkB,KAAcT,GAAuBltT,OAAQ,OAChDk1S,GAAOyY,OACR,CACL,OAAO,MAGX,OAAO/nI,GAAaq7I,EAAkB37Y,WAAa27Y,EAAkB37Y,UAAY,KAEnFxtC,2BACE,MAAM68B,QAAax8B,KAAK+0G,EAAEg1U,kBAC1B,aAAc/pb,KAAKgqb,wBAAwBxtZ,EAAM,MAEnD78B,4BAIE,UAAWK,KAAK+0G,EAAEy8N,2BAA6BxxU,KAAK+0G,EAAE5oD,aAAekhP,GAAU+xI,QAAS,CACtF,aAAap/a,KAAK+0G,EAAE3nE,QAGtB,SAAWptC,KAAK8ib,eAAgB,CAC9B,aAAa9ib,KAAK+0G,EAAE40U,wBAEtB,WAAa3pb,KAAK6pb,sBAAuB,CACvC,aAAa7pb,KAAK+0G,EAAE3nE,QAEtB,IAAI07Y,QAA0B9ob,KAAK+0G,EAAEk1U,8BACrC,GAAInB,IAAsB,KAAM,CAC9B,OAAO,UACF,GAAIA,EAAkB9U,kBAAmB,CAE9C8U,QAA2B9ob,KAAKmpb,yCAAyC,MACzE,MAAM3T,EAAWC,GAAe5kT,IAAI,CAClChuD,UAAW,IAAIimX,EAAkBxU,kBAEnC,UAAWkB,KAAcT,GAAuBltT,OAAQ,OAChDk1S,GAAOyY,OACR,CACL,OAAO,MAGX,OAAO/nI,GAAaq7I,EAAkB37Y,WAAa27Y,EAAkB37Y,UAAY,KAEnFxtC,yBACE,aAAaK,KAAK+0G,EAAEm1U,gBAEtBvqb,sBACE,MAAMwqb,QAA2Bnqb,KAAK+0G,EAAE4zU,6BACxC,MAAMyB,QAAyBpqb,KAAK+0G,EAAE6zU,2BACtC,MAAMG,QAA0C/ob,KAAK+0G,EAAEg0U,kCACvD,MAAMC,QAAwChpb,KAAK+0G,EAAEi0U,gCACrD,OAAO9ob,SAASiqb,IAAuB,MAAQA,SAA4B,OAAS,EAAIA,EAAmBrrb,UAAYsrb,IAAqB,MAAQA,SAA0B,OAAS,EAAIA,EAAiBtrb,UAAYiqb,IAAsC,MAAQA,SAA2C,OAAS,EAAIA,EAAkCjqb,UAAYkqb,IAAoC,MAAQA,SAAyC,OAAS,EAAIA,EAAgClqb,SAEhfa,0BACE,MAAMwsD,QAAkBnsD,KAAK+0G,EAAE5oD,UAC/B,GAAIA,IAAckhP,GAAU+xI,QAAS,CAInC,WAAap/a,KAAK6pb,8BAAgC7pb,KAAK+0G,EAAEy8N,mBAAoB,CAC3E,aAAc/7B,EAAWoqI,uBAAuBh5a,KAAK7G,MAEvD,aAAcA,KAAK+0G,EAAE00U,wBAA2Bh0I,EAAWoqI,uBAAuBh5a,KAAK7G,WAClF,CACL,aAAcy1S,EAAWoqI,uBAAuBh5a,KAAK7G,OAGzDL,8BACE,MAAMwsD,QAAkBnsD,KAAK+0G,EAAE5oD,UAC/B,OAAQA,GACN,KAAKkhP,GAAU+xI,QAIb,WAAap/a,KAAK6pb,8BAAgC7pb,KAAK+0G,EAAEy8N,mBAAoB,CAC3E,aAAc/7B,EAAWmqI,2BAA2B/4a,KAAK7G,MAE3D,MAAMqqb,QAAsBrqb,KAAK+0G,EAAE00U,eACnC,GAAIY,EAAe,CACjB,GAAI58I,GAAa48I,GAAgB,OAAOA,EACxC,MAAMC,QAAiC70I,EAAWmqI,2BAA2B/4a,KAAK7G,MAClF,MAAM8pb,QAAwC9pb,KAAK+0G,EAAE+0U,gCACrD,GAAIA,EAAgCS,aAAaD,GAA0B,OAAOA,EAClF,OAAO78I,GAAaq8I,EAAgC18Y,SAAW08Y,EAAgC18Y,QAAUk9Y,MACpG,CACL,aAAc70I,EAAWmqI,2BAA2B/4a,KAAK7G,MAE7D,QACE,aAAcy1S,EAAWmqI,2BAA2B/4a,KAAK7G,OAG/DL,wBACE,MAAMwsD,QAAkBnsD,KAAK+0G,EAAE5oD,UAC/B,GAAIA,IAAckhP,GAAU+xI,QAAS,CAInC,WAAap/a,KAAK6pb,8BAAgC7pb,KAAK+0G,EAAEy8N,mBAAoB,CAC3E,aAAc/7B,EAAW0qI,qBAAqBt5a,KAAK7G,MAErD,aAAcA,KAAK+0G,EAAE60U,sBAAyBn0I,EAAW0qI,qBAAqBt5a,KAAK7G,WAC9E,CACL,aAAcy1S,EAAW0qI,qBAAqBt5a,KAAK7G,OAGvDL,4BACE,MAAMwsD,QAAkBnsD,KAAK+0G,EAAE5oD,UAC/B,OAAQA,GACN,KAAKkhP,GAAU+xI,QAIb,WAAap/a,KAAK6pb,8BAAgC7pb,KAAK+0G,EAAEy8N,mBAAoB,CAC3E,aAAc/7B,EAAWyqI,yBAAyBr5a,KAAK7G,MAEzD,MAAMwqb,QAAoBxqb,KAAK+0G,EAAE60U,aACjC,GAAIY,EAAa,CACf,GAAI/8I,GAAa+8I,GAAc,OAAOA,EACtC,MAAMC,QAA+Bh1I,EAAWyqI,yBAAyBr5a,KAAK7G,MAC9E,MAAMiqb,QAAsCjqb,KAAK+0G,EAAEk1U,8BACnD,GAAIA,EAA8BM,aAAaE,GAAwB,OAAOA,EAC9E,OAAOh9I,GAAaw8I,EAA8B78Y,SAAW68Y,EAA8B78Y,QAAUq9Y,MAChG,CACL,aAAch1I,EAAWyqI,yBAAyBr5a,KAAK7G,MAE3D,QACE,aAAcy1S,EAAWyqI,yBAAyBr5a,KAAK7G,OAG7DL,sBACE,MAAM4rG,EAAUvrG,KAAKk1S,aACrB,aAAa3pM,EAAQwJ,EAAE5oD,WAG3B07X,GAAa,CAACtxa,GAAM,CAClBwB,KAAMwwa,MACHC,EAA2B36a,UAAW,iCAAkC,GAC7Eg6a,GAAa,CAACtxa,GAAM,CAClBwB,KAAMwwa,MACHC,EAA2B36a,UAAW,yBAA0B,GACrEg6a,GAAa,CAACjQ,GAAY,CACxB/qa,KAAM,OACN+rE,QAAS,OACR,CACD7gE,KAAMwwa,GACN3jL,UAAWuzK,GACXvK,WAAY,SACT4a,EAA2B36a,UAAW,sBAAuB,GAClEg6a,GAAa,CAACtxa,GAAM,CAClBwB,KAAMwwa,MACHC,EAA2B36a,UAAW,+BAAgC,GAC3Eg6a,GAAa,CAACtxa,GAAM,CAClBwB,KAAMwwa,MACHC,EAA2B36a,UAAW,uBAAwB,GACnEg6a,GAAa,CAACjQ,GAAY,CACxB/qa,KAAM,OACN+rE,QAAS,OACR,CACD7gE,KAAMwwa,GACN3jL,UAAWuzK,GACXvK,WAAY,SACT4a,EAA2B36a,UAAW,oBAAqB,GAChEg6a,GAAa,CAACtxa,MAAUiya,EAA2B36a,UAAW,oCAAqC,GACnGg6a,GAAa,CAACtxa,MAAUiya,EAA2B36a,UAAW,kCAAmC,GACjGg6a,GAAa,CAACtxa,GAAM,CAClBwB,KAAMwwa,MACHC,EAA2B36a,UAAW,yCAA0C,GACrFg6a,GAAa,CAACtxa,GAAM,CAClBwB,KAAMwwa,MACHC,EAA2B36a,UAAW,uCAAwC,GACnFg6a,GAAa,CAACtxa,MAAUiya,EAA2B36a,UAAW,uCAAwC,GACtGg6a,GAAa,CAACtxa,MAAUiya,EAA2B36a,UAAW,qCAAsC,GACpGg6a,GAAa,CAACrpI,GAAU,iCAAkCgqI,EAA2B36a,UAAW,wCAAyC,MACzIg6a,GAAa,CAACrpI,GAAU,+BAAgCgqI,EAA2B36a,UAAW,sCAAuC,MACrIg6a,GAAa,CAACrpI,GAAU,sCAAuCgqI,EAA2B36a,UAAW,6CAA8C,MACnJg6a,GAAa,CAACrpI,GAAU,oCAAqCgqI,EAA2B36a,UAAW,2CAA4C,MAC/Ig6a,GAAa,CAACrpI,GAAU,oCAAqCgqI,EAA2B36a,UAAW,2CAA4C,MAC/Ig6a,GAAa,CAACrpI,GAAU,kCAAmCgqI,EAA2B36a,UAAW,yCAA0C,MAC3Ig6a,GAAa,CAACrpI,GAAU,8BAA+BgqI,EAA2B36a,UAAW,qCAAsC,MACnIg6a,GAAa,CAACrpI,GAAU,4BAA6BgqI,EAA2B36a,UAAW,mCAAoC,MAC/Hg6a,GAAa,CAACrpI,GAAU,sBAAuBgqI,EAA2B36a,UAAW,6BAA8B,MACnHg6a,GAAa,CAACrpI,GAAU,mBAAoBgqI,EAA2B36a,UAAW,0BAA2B,MAC7Gg6a,GAAa,CAACrpI,GAAU,oBAAqBgqI,EAA2B36a,UAAW,2BAA4B,MAC/Gg6a,GAAa,CAACrpI,GAAU,iBAAkBgqI,EAA2B36a,UAAW,wBAAyB,MACzGg6a,GAAa,CAACrpI,GAAU,cAAegqI,EAA2B36a,UAAW,qBAAsB,MACnG,OAAO26a,OAGT,IAAIkC,GAAoD,SAAUjzB,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAkB9D,MAAMy6Z,WAA+Bz+I,GAAM,CAACs8I,GAA4BnF,KAAmB/sa,IACzF,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM+8a,UAA0Bt0a,EAC9B3W,cACEua,SAASrb,WAETmB,KAAK6qb,wBAA0B,MAEjClrb,eAAeI,EAAI2yG,EAAauuT,EAAOzkY,EAAMmhR,EAAe,MAI1D,MAAMpyM,EAAUvrG,KAAKk1S,aAIrB,GAAIxiM,EAAY+jM,MAAMk1H,cAAc3ra,KAAK+0G,EAAE5oD,cAAgBo/C,GAAWA,EAAQu/U,SAAS7yU,aAAc,CACnG,MAAM8yU,EAAgB/qb,KAAKgrb,gCAC3B,GAAID,EAAe,CACjB/qb,KAAKyhX,eAAiBspE,EACtB/qb,KAAK87W,eAAiBt/U,GAG1B,OAAOi5Q,EAAWw1I,eAAepkb,KAAK7G,KAAMD,EAAI2yG,EAAauuT,EAAOzkY,EAAMmhR,GAE5Eh+S,aAAaI,EAAI2yG,EAAauuT,EAAOzkY,EAAMmhR,EAAe,OAIxD,MAAMpyM,EAAUvrG,KAAKk1S,aACrB,GAAIxiM,EAAY+jM,MAAMk1H,cAAc3ra,KAAK+0G,EAAE5oD,YAAcwxP,KAAkBpyM,GAAWA,EAAQu/U,SAAS7yU,aAAc,CACnH,MAAM8yU,EAAgB/qb,KAAKkrb,8BAC3B,GAAIH,EAAe,CACjB/qb,KAAKyhX,eAAiBspE,EACtB/qb,KAAK87W,eAAiBt/U,GAG1B,OAAOi5Q,EAAW01I,aAAatkb,KAAK7G,KAAMD,EAAI2yG,EAAauuT,EAAOzkY,EAAMmhR,GAE1Eh+S,2BACE,IAAI8hX,QAAuBm7C,GAE3B,WAAa58Z,KAAKorb,2BAA2B3pE,IAAkB,CAC7DA,EAAiB,KAEnB,OAAOA,EAET9hX,yBAAyB0gC,GACvB,IAAIy7U,QAAuB8gD,GAC3B,MAAMn7C,QAAuBzhX,KAAK+0G,EAAE0sQ,eACpC,IAAKA,EAAgB,CACnB3F,EAAiB,UAGd,IAAKA,EAAgB,CAExBA,EAAiB97W,KAAKqrb,6BAA6BhrZ,EAAGohV,GAExD,OAAO3F,EAETn8W,gCACE,MAAMwsD,UACJA,GACEnsD,KACJ,IAAKA,KAAKsrb,+BAAgC,OAAO,KACjD,OAAQn/X,GACN,KAAKkhP,GAAU+xI,QACb,OAAOryI,GAAew+I,mBACxB,KAAKl+I,GAAUm+I,SACb,OAAOz+I,GAAe0+I,kBAG5B9rb,8BACE,MAAMwsD,UACJA,GACEnsD,KACJ,IAAKA,KAAKsrb,+BAAgC,OAAO,KACjD,OAAQn/X,GACN,KAAKkhP,GAAU+xI,QACb,OAAOryI,GAAe2+I,oBACxB,KAAKr+I,GAAUm+I,SACb,OAAOz+I,GAAe4+I,mBAQ5Bhsb,+BACE,MAAM6xU,kBACJA,EAAiBq5G,wBACjBA,EAAuBppE,eACvBA,GACEzhX,KACJ,IAAImM,EAAS,MAEb,IAAKqlU,IAAsBq5G,EAAyB,CAClD,GAAIppE,EAAgB,CAClB,OAAQA,GACN,KAAK10E,GAAew+I,mBACpB,KAAKx+I,GAAe0+I,iBACpB,KAAK1+I,GAAe2+I,oBACpB,KAAK3+I,GAAe4+I,kBAClBx/a,EAAS,UAIV,CACHA,EAAS,MAGb,OAAOA,EAETxM,eAAeilF,EAAYC,EAAgBC,GAOzC9kF,KAAK6qb,wBAA0B/lW,EAE/B,MAAM34E,EAAS+N,MAAM46E,eAAelQ,EAAYC,EAAgBC,GAChE9kF,KAAK6qb,wBAA0B,MAC/B,OAAO1+a,EAMTxM,6BAA6B0gC,EAAGohV,GAC9B,OAAQA,GACN,KAAK10E,GAAew+I,mBACpB,KAAKx+I,GAAe0+I,iBACpB,KAAK1+I,GAAe6+I,YAClB,OAAOvrZ,EAAEi+X,GAA0Bt+Z,KAAK+0G,EAAE5nE,YAC5C,KAAK4/P,GAAe2+I,oBACpB,KAAK3+I,GAAe4+I,kBACpB,KAAK5+I,GAAe8+I,aAClB,OAAOxrZ,EAAEi+X,GAA0Bt+Z,KAAK+0G,EAAE3nE,UAE9C,OAAO,KAQTztC,4BAA4B8hX,GAE1B,MAAMqhE,QAAsB9ib,KAAK8ib,eACjC,OAAQrhE,GAEN,KAAK10E,GAAe2+I,oBACpB,KAAK3+I,GAAe0+I,iBACpB,KAAK1+I,GAAe8+I,aACpB,KAAK9+I,GAAe6+I,YAClB,OAAQ9I,EAEZ,OAAO,KAQTnjb,oBAAoB8hX,EAAgB3F,GAClC97W,KAAKyhX,eAAiBA,EACtB,GAAI3F,IAAmBl5W,UAAW,CAChC5C,KAAK87W,eAAiBA,EAExB,OAAO97W,KAAKo8P,cAEdz8P,uCACE,MAAMkjE,QAAmB4yO,EAAWq2I,oCAAoCjlb,KAAK7G,MAC7E,MAAMwxU,QAA0BxxU,KAAK+0G,EAAEy8N,kBACvC,MAAMiwC,QAAuBzhX,KAAK+0G,EAAE0sQ,eACpC,MAAM3F,QAAuB97W,KAAK+0G,EAAE+mQ,eACpC,MAAMiwE,EAA8B/rb,KAAKurG,QAAQwgV,4BAEjD,IAAKv6G,GAAqBiwC,GAAkB3F,EAAgB,CAE1D,OAAQ2F,GACN,KAAK10E,GAAe8+I,aAClBhpX,EAAUsrB,QAAQ49V,EAA4Bl7T,IAAI,CAChDl4G,MAAO3Y,KACP+lW,KAAMz4D,GAAuBhwB,IAC7BnwO,UAAW2uU,EACX1uU,QAAS0uU,KAEX,MACF,KAAK/uE,GAAe2+I,oBAClB7oX,EAAUsrB,QAAQ49V,EAA4Bl7T,IAAI,CAChDl4G,MAAO3Y,KACP+lW,KAAMz4D,GAAuBhwB,IAC7BnwO,UAAW2uU,KAEb,MACF,KAAK/uE,GAAe4+I,kBAClB9oX,EAAUsrB,QAAQ49V,EAA4Bl7T,IAAI,CAChDl4G,MAAO3Y,KACP+lW,KAAMz4D,GAAuBhwB,IAC7BlwO,QAAS0uU,KAEX,OAGN,OAAOj5S,EAETljE,yCACE,MAAMkjE,QAAmB4yO,EAAWu2I,sCAAsCnlb,KAAK7G,MAC/E,MAAMwxU,QAA0BxxU,KAAK+0G,EAAEy8N,kBACvC,MAAMiwC,QAAuBzhX,KAAK+0G,EAAE0sQ,eACpC,MAAM3F,QAAuB97W,KAAK+0G,EAAE+mQ,eACpC,MAAMiwE,EAA8B/rb,KAAKurG,QAAQwgV,4BAEjD,IAAKv6G,GAAqBiwC,GAAkB3F,EAAgB,CAE1D,OAAQ2F,GACN,KAAK10E,GAAe6+I,YAClB/oX,EAAUsrB,QAAQ49V,EAA4Bl7T,IAAI,CAChDl4G,MAAO3Y,KACP+lW,KAAMz4D,GAAuBgnG,MAC7BnnW,UAAW2uU,EACX1uU,QAAS0uU,KAEX,MACF,KAAK/uE,GAAew+I,mBAClB1oX,EAAUsrB,QAAQ49V,EAA4Bl7T,IAAI,CAChDl4G,MAAO3Y,KACP+lW,KAAMz4D,GAAuBgnG,MAC7BnnW,UAAW2uU,KAEb,MACF,KAAK/uE,GAAe0+I,iBAClB5oX,EAAUsrB,QAAQ49V,EAA4Bl7T,IAAI,CAChDl4G,MAAO3Y,KACP+lW,KAAMz4D,GAAuBgnG,MAC7BlnW,QAAS0uU,KAEX,OAGN,OAAOj5S,GAGX6nX,GAAa,CAAC9S,GAAY,CACxB/qa,KAAM,UACL,CACDy4G,KAAM,QACHslU,EAAkB/8a,UAAW,sBAAuB,GACzD68a,GAAa,CAAC9S,GAAY,CACxB/qa,KAAM,QACL,CACD+3P,UAAWuzK,GACX7yT,KAAM,QACHslU,EAAkB/8a,UAAW,sBAAuB,GACzD68a,GAAa,CAAClsI,GAAU,mBAAoBosI,EAAkB/8a,UAAW,0BAA2B,MACpG68a,GAAa,CAAClsI,GAAU,mBAAoBosI,EAAkB/8a,UAAW,0BAA2B,MACpG,OAAO+8a,OAMT,MAAM/W,WAA+C/6Y,GAAYo9Y,KAC/Dnoa,mBACE,MAAO,yCAETpO,YACEua,MAAMsB,aAAa3c,WACnBmB,KAAKmwB,MAAQnwB,KAAKu7I,SAAS5iI,MAE7BhZ,iBACE,MAAMwwB,MACJA,GACEnwB,KACJ,OAAO88B,GAAO98B,KAAKm7B,EAAE,qBAAsBhL,EAAM1rB,MAAQ0rB,EAAMxlB,GAAI3K,KAAKu7I,SAAS0wS,kBAAkB97Z,EAAMsxV,iBAK3G9hX,UACEK,KAAKmwB,MAAMsxV,eAAiB,MAMhC,MAAM4xD,WAA0CX,GAC9C3ka,mBACE,MAAO,oCAMTpO,sBAAsB47I,GACpB,IAAI+vB,EACJ,OAAQ/vB,EAAS5iI,MAAM8oW,gBACrB,KAAK10E,GAAew+I,mBACpB,KAAKx+I,GAAe2+I,oBACpB,KAAK3+I,GAAe6+I,YACpB,KAAK7+I,GAAe8+I,aAClBvgR,EAAMtrK,KAAKm7B,EAAE,8BACb,MACF,KAAK4xQ,GAAe0+I,iBACpB,KAAK1+I,GAAe4+I,kBAClBrgR,EAAMtrK,KAAKm7B,EAAE,4BACb,MAEJ,OAAO2B,GAAOwuI,KAAQtrK,KAAKm2a,yBAAyB56R,IAMtD57I,yBAAyB8hX,GACvB,OAAOzhX,KAAKm7B,EAAE,wBAAwBsmV,GAExC9hX,gCAAgC47I,GAC9B,MAAMprH,EAAQorH,EAAS5iI,MACvB,MAAO,CAACknB,GAAW/C,OAAOy+G,EAASpuG,UAAWntC,KAAKm7B,EAAE,kBAAmB0E,GAAW/C,OAAOy+G,EAASnuG,QAASptC,KAAKm7B,EAAE,kBAAmBhL,EAAM1rB,MAAQ0rB,EAAMxlB,GAAI3K,KAAKisb,kBAAkB97Z,EAAMsxV,kBAO/L,MAAMyqE,WAA+B9V,GACnCz2a,kBAAkB8hX,GAChB,OAAOzhX,KAAKw2a,wBAAwByV,kBAAkBxqE,GAAkBzhX,KAAK2Y,MAAM8oW,gBAErF9hX,iBACE,OAAOK,KAAKw2a,wBAAwBnB,eAAer1a,MAErDL,wBAAwB+yG,GACtB,MAAMviF,EAAQnwB,KAAK2Y,MACnB+5F,EAAcA,GAAeviF,EAAMsmR,MAAM0zH,kBACzC,MAAMgiB,EAAsBz5U,EAAY5rG,QAAQ4K,IAAIye,EAAM4kF,EAAE+mQ,gBAC1DswE,EAAsB15U,EAAY5rG,QAAQ4K,IAAIye,EAAM4kF,EAAE0sQ,gBAExD,OAAQ/uQ,EAAY6xT,aAAaoH,cAAcx7Y,EAAMi+Y,KAAO+d,IAAwBA,EAAoBzqB,YAAc0qB,IAAwBA,EAAoB1qB,WAQpK/ha,iBACE,OAAOK,KAAKs2a,cAAgBt2a,KAAKs2a,YAAc,CAACt2a,KAAKqsb,4CAA4Cx7T,IAAI,CACnG0qB,SAAUv7I,UAIhB0qb,GAAa,CAACt1B,GAAeye,KAA0CqY,GAAuBr+a,UAAW,mDAAoD,GAC7J68a,GAAa,CAACt1B,GAAeie,KAAqC6Y,GAAuBr+a,UAAW,+BAAgC,GAEpI,IAAIy+a,GAAoD,SAAU70B,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAU9D,MAAMq8Z,WAA+CrgJ,GAAM,CAACs8I,GAA4B1H,KAAuBxqa,IAC7G,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM0+a,UAA+Cj2a,EAWnD3W,mCAAmC48S,GACjC,MAAMiE,QAAkBjE,EAAWxnM,EAAEyrM,UAErC,OAAOA,IAAc20G,GAAc30G,WAAqBjE,EAAWxnM,EAAE0kD,kBAEzD+mJ,EAAUzrM,EAAEmpS,kBAAoBl+Y,KAAK+0G,EAAEmpS,WAErDv+Y,8CACE,MAAMkjE,QAAmB4yO,EAAW+2I,2CAA2C3lb,KAAK7G,MACpF,MAAMurG,EAAUvrG,KAAKk1S,aACrB,MAAMu3I,EAAoClhV,EAAQkhV,kCAClD,IAAK,MAAMlwI,WAAoBv8S,KAAK+0G,EAAEusM,aAAc,CAElD,WAAathT,KAAK0sb,kCAAkCnwI,IAAc,SAClE,MAAMiE,QAAkBjE,EAAWxnM,EAAEyrM,UACrC,IAAIjlK,EACJ,aAAcghK,EAAWxnM,EAAEloG,MACzB,KAAKqgS,GAAemmC,WAClB,MAAMs5G,QAAyBnsI,EAAUzrM,EAAEm1U,gBAC3C,GAAIyC,EAAkB,CACpB,MAAM94G,QAAYt3B,EAAWxnM,EAAE8+N,IAC/B,MAAME,QAAgBx3B,EAAWxnM,EAAEg/N,QACnC,MAAM9jC,QAAiBsM,EAAWxnM,EAAEk7L,SACpC10J,EAAWkxS,EAAkC57T,IAAI,CAC/Cl4G,MAAO4jS,EACPpvQ,UAAW8iQ,EAAS8vI,iBAAiB4M,QAAyBphV,EAAQi0U,iBAAiB3rG,EAAKE,EAASjnC,GAASkzI,cAC9G5yY,QAAS,OAGb,MACF,KAAK8/P,GAAeimC,aAClB,MAAMy5G,QAA2BpsI,EAAUzrM,EAAEg1U,kBAC7C,GAAI6C,EAAoB,CACtB,MAAM/4G,QAAYt3B,EAAWxnM,EAAE8+N,IAC/B,MAAME,QAAgBx3B,EAAWxnM,EAAEg/N,QACnC,MAAM9jC,QAAiBsM,EAAWxnM,EAAEk7L,SACpC10J,EAAWkxS,EAAkC57T,IAAI,CAC/Cl4G,MAAO4jS,EACPpvQ,UAAW8iQ,EAAS8vI,iBAAiB6M,QAA2BrhV,EAAQi0U,iBAAiB3rG,EAAKE,EAASjnC,GAASkzI,cAChH5yY,QAAS,OAGb,MAEJmuG,GAAY14E,EAAUsrB,QAAQotD,GAEhC,OAAO14E,EAETljE,4CACE,MAAMkjE,QAAmB4yO,EAAWo3I,yCAAyChmb,KAAK7G,MAClF,MAAMurG,EAAUvrG,KAAKk1S,aACrB,MAAMu3I,EAAoClhV,EAAQkhV,kCAClD,IAAK,MAAMlwI,WAAoBv8S,KAAK+0G,EAAEusM,aAAc,CAElD,WAAathT,KAAK0sb,kCAAkCnwI,IAAc,SAClE,MAAMiE,QAAkBjE,EAAWxnM,EAAEyrM,UACrC,IAAIjlK,EACJ,aAAcghK,EAAWxnM,EAAEloG,MACzB,KAAKqgS,GAAeomC,SAClB,MAAMq5G,QAAyBnsI,EAAUzrM,EAAEm1U,gBAC3C,GAAIyC,EAAkB,CACpB,MAAM94G,QAAYt3B,EAAWxnM,EAAE8+N,IAC/B,MAAME,QAAgBx3B,EAAWxnM,EAAEg/N,QACnC,MAAM9jC,QAAiBsM,EAAWxnM,EAAEk7L,SACpC10J,EAAWkxS,EAAkC57T,IAAI,CAC/Cl4G,MAAO4jS,EACPpvQ,UAAW8iQ,EAAS8vI,iBAAiB4M,QAAyBphV,EAAQi0U,iBAAiB3rG,EAAKE,EAASjnC,GAASkzI,cAC9G5yY,QAAS,OAGb,MACF,KAAK8/P,GAAekmC,WAClB,MAAMw5G,QAA2BpsI,EAAUzrM,EAAEg1U,kBAC7C,GAAI6C,EAAoB,CACtB,MAAM/4G,QAAYt3B,EAAWxnM,EAAE8+N,IAC/B,MAAME,QAAgBx3B,EAAWxnM,EAAEg/N,QACnC,MAAM9jC,QAAiBsM,EAAWxnM,EAAEk7L,SACpC10J,EAAWkxS,EAAkC57T,IAAI,CAC/Cl4G,MAAO4jS,EACPpvQ,UAAW8iQ,EAAS8vI,iBAAiB6M,QAA2BrhV,EAAQi0U,iBAAiB3rG,EAAKE,EAASjnC,GAASkzI,cAChH5yY,QAAS,OAGb,MAEJmuG,GAAY14E,EAAUsrB,QAAQotD,GAEhC,OAAO14E,GAGXypX,GAAa,CAAC1U,GAAY,CACxB/qa,KAAM,aACH0/a,EAAuC1+a,UAAW,gBAAiB,GACxE,OAAO0+a,OAKT,MAAMO,WAAiCh0Z,GAAYo9Y,KACjDnoa,mBACE,MAAO,2BAETpO,iBACE,MAAM48S,WACFA,GACEv8S,MACJ6M,KACEA,EAAI2zS,UACJA,EAASC,QACTA,GACElE,EACN,OAAOz/Q,GAAO98B,KAAKm7B,EAAE,qBAAsBn7B,KAAKm7B,EAAE,0BAA0BtuB,GAAO2zS,EAAU/7S,MAAQ+7S,EAAU71S,GAAI81S,EAAQh8S,MAAQg8S,EAAQ91S,KAM/I,MAAMwoa,WAAmC2Z,GACvC/+a,mBACE,MAAO,6BAKTpO,UACEK,KAAKu8S,WAAWz6S,UAMpB,MAAMsxa,WAAuC0Z,GAC3C/+a,mBACE,MAAO,iCAKTpO,UACEK,KAAKu8S,WAAW9iJ,OAAS,OAM7B,MAAMy5Q,WAAgDR,GACpD3ka,mBACE,MAAO,0CAETpO,gCAAgC47I,GAC9B,MAAMghK,EAAahhK,EAAS5iI,MAC5B,MAAO,CAACknB,GAAW/C,OAAOy+G,EAASpuG,UAAWntC,KAAKm7B,EAAE,kBAAmB0E,GAAW/C,OAAOy+G,EAASnuG,QAASptC,KAAKm7B,EAAE,kBAAmBn7B,KAAKm7B,EAAE,0BAA0BohR,EAAW1vS,MAAO0vS,EAAWiE,UAAU/7S,KAAM83S,EAAWkE,QAAQh8S,OAS3O,MAAMsob,WAAqC3W,GACzCz2a,wBAAwB+yG,GACtB,MAAM6pM,EAAav8S,KAAK2Y,MACxB+5F,EAAcA,GAAe6pM,EAAW9F,MAAM0zH,kBAC9C,MAAMrja,QACFA,GACE4rG,GAEJ8tM,UACEA,EAASC,QACTA,EAAOozB,IACPA,EAAGE,QACHA,EAAOlnU,KACPA,GACE0vS,EAAWxnM,EACfi4U,EAAiBlmb,EAAQ4K,IAAI8uS,GAC7BysI,EAAenmb,EAAQ4K,IAAI+uS,GAC3BysI,EAAWpmb,EAAQ4K,IAAImiU,GACvBs5G,EAAermb,EAAQ4K,IAAIqiU,GAC3Bq5G,EAAYtmb,EAAQ4K,IAAI7E,GAE1B,OAAQ6lG,EAAY6xT,aAAaoH,cAAcpvH,EAAW6xH,KAAO4e,IAAmBA,EAAetrB,YAAcurB,IAAiBA,EAAavrB,YAAcwrB,IAAaA,EAASxrB,YAAcyrB,IAAiBA,EAAazrB,YAAc0rB,IAAcA,EAAU1rB,WAQvQ/ha,iBACE,OAAOK,KAAKs2a,cAAgBt2a,KAAKs2a,YAAc,CAACt2a,KAAKqtb,4CAA4Cx8T,IAAI,CACnG0rL,WAAYv8S,KAAK2Y,QACf3Y,KAAKstb,wCAAwCz8T,IAAI,CACnD0rL,WAAYv8S,KAAK2Y,WAIvB2za,GAAa,CAACl3B,GAAe+d,KAA8B4Z,GAA6Bl/a,UAAW,+CAAgD,GACnJy+a,GAAa,CAACl3B,GAAege,KAAkC2Z,GAA6Bl/a,UAAW,mDAAoD,GAC3Jy+a,GAAa,CAACl3B,GAAe8d,KAA2C6Z,GAA6Bl/a,UAAW,+BAAgC,GAEhJ,IAAI0/a,GAAoD,SAAU91B,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAE9D,MAAMs9Z,WAAoCthJ,GAAM,CAACmwI,KAAsB/la,IAErE,MAAMk3a,UAAoCl3a,GAC1Ci3a,GAAa,CAAC3V,GAAY,CACxB/qa,KAAM,SACNjI,aAAc,OACX4ob,EAA4B3/a,UAAW,aAAc,GAC1D,OAAO2/a,OAGT,IAAIC,GAAoD,SAAUh2B,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAS9D,MAAMw9Z,WAAoCxhJ,GAAM,CAAC01I,KAAsBtra,IAErE,MAAMo3a,UAAoCp3a,EACxC3W,qBACE,MAAM4rG,EAAUvrG,KAAKk1S,aACrB,MAAMy4I,QAA6BpiV,EAAQwJ,EAAE44U,qBAC7C,IAAI19I,EACJ,OAAQ09I,GACN,KAAKxgJ,GAAqBygJ,QACxB39I,QAAiB1kM,EAAQwJ,EAAEqwM,kBAC3B,MACF,KAAKjY,GAAqB0gJ,UACxB,MAAMrtI,QAAkBxgT,KAAK+0G,EAAEyrM,UAC/BvQ,EAAWuQ,IAAc20G,GAAc30G,SAAmBA,EAAUzrM,EAAEqwM,kBAAoB,KAC1F,MACF,KAAKjY,GAAqB2gJ,QACxB,MAAMrtI,QAAgBzgT,KAAK+0G,EAAE0rM,QAC7BxQ,EAAWwQ,IAAY00G,GAAc10G,SAAiBA,EAAQ1rM,EAAEqwM,kBAAoB,KACpF,MAIJ,IAAKnV,EAAUA,QAAiB1kM,EAAQwJ,EAAEqwM,kBAC1C,OAAOnV,EAQTtwS,aAAak0U,EAAK5rS,GAChB,GAAIjoC,KAAKy2S,MAAO,CACdz2S,KAAKy2S,MAAMgsH,MAAMzia,KAAK+0G,EAAE8+N,IAAKA,EAAK5rS,GAClC,OAAOjoC,KAAKy2S,MAAMr6C,kBACb,CACLp8P,KAAK+0G,EAAE8+N,IAAIu5F,KAAOv5F,EAClB,GAAI5rS,GAAQ,KAAMjoC,KAAK+0G,EAAEg/N,QAAQq5F,KAAOnlY,GAG5CtoC,SAASI,EAAI2yG,EAAauuT,EAAOptF,EAAK5rS,EAAOrlC,WAC3C7C,EAAGsQ,YAAYxC,UAAU40Z,MAAM57Z,KAAK7G,KAAMD,EAAI2yG,EAAauuT,EAAOptF,GAClE,GAAI5rS,GAAQ,KAAMyqE,EAAY+vT,MAAMzia,KAAK+0G,EAAEg/N,QAAS9rS,IAGxDwlZ,GAAa,CAAC7V,GAAY,CACxB/qa,KAAM,SACNjI,aAAc,KACX8ob,EAA4B7/a,UAAW,WAAY,GACxD4/a,GAAa,CAAC7V,GAAY,CACxB/qa,KAAM,SACNjI,aAAckoS,GAASmB,KACtB,CACDrpC,UAAW/kO,GAAW0J,iBACnBmkZ,EAA4B7/a,UAAW,eAAgB,GAC5D4/a,GAAa,CAACl3a,MAAUm3a,EAA4B7/a,UAAW,gBAAiB,GAChF4/a,GAAa,CAAC7V,GAAY,CACxB/qa,KAAM,UACNjI,aAAc,KACdg0E,QAAS,QACN80W,EAA4B7/a,UAAW,cAAe,GAC3D4/a,GAAa,CAACjvI,GAAU,aAAckvI,EAA4B7/a,UAAW,oBAAqB,MAClG4/a,GAAa,CAAChrB,GAAM,QAASirB,EAA4B7/a,UAAW,WAAY,MAChF,OAAO6/a,OAaT,IAAIK,GAAoD,SAAUt2B,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAgB9D,MAAM89Z,WAA4B9hJ,GAAM,CAACm3I,KAAmB/sa,IAE1D,MAAM03a,UAA4B13a,EAOhC3W,wBACE,MAAM2jb,QAAoBtjb,KAAK+0G,EAAEuuU,YACjC,MAAM/3U,EAAUvrG,KAAKk1S,aACrB,MAAM+4I,QAA+C1iV,EAAQwJ,EAAEk5U,uCAC/D,GAAI3K,EAAY/xa,MAAQ08a,EAAwC,CAC9D,MAAMC,QAAoBlub,KAAK+0G,EAAEo5U,uBACjC,GAAID,EAAYE,cAAgB,EAAG,CACjC,OAAOF,EAAYG,kBAAoBH,EAAYE,mBAC9C,GAAIF,EAAYI,cAAgB,EAAG,CACxC,OAAOJ,EAAYK,2BAA6BL,EAAYI,kBACvD,CACL,OAAO,UAEJ,CACL,aAAa1xB,IAajBj9Z,yCAAyC0pb,GACvC,OAAO,KAET1pb,mCACE,MAAM2jb,QAAoBtjb,KAAK+0G,EAAEuuU,YACjC,GAAIA,EAAY/xa,KAAM,CACpB,IAAIi9a,EAAU,CACZJ,cAAe,EACfC,kBAAmB,EACnBC,cAAe,EACfC,2BAA4B,GAE9B,IAAK,MAAMlF,KAAc/F,EAAa,CACpC,WAAatjb,KAAKyub,wCAAwCpF,IAAc,SACxE,MAAMqF,QAAyBrF,EAAWt0U,EAAEo5U,uBAC5C,GAAIO,EAAkB,CACpBF,EAAQJ,eAAiBM,EAAiBN,cAC1CI,EAAQH,mBAAqBK,EAAiBL,kBAC9CG,EAAQF,eAAiBI,EAAiBJ,cAC1CE,EAAQD,4BAA8BG,EAAiBH,4BAG3D,OAAOC,MACF,CACL,MAAMlma,QAAiBtoB,KAAK+0G,EAAEzsF,SAC9B,UAAWA,GAAY,SAAU,CAC/B,MAAMqma,QAAsB3ub,KAAKk1S,aAAasqI,iBAAiBl3Z,QAAgBtoB,KAAK+0G,EAAE+oM,aAAchR,GAASkzI,aAC7G,MAAM4O,QAAoB5ub,KAAK+0G,EAAE65U,YACjC,MAAO,CACLR,cAAeO,EACfN,kBAAmBM,EAAeC,EAClCN,cAAeK,IAAiB,EAAI,EAAI,EACxCJ,2BAA4BI,IAAiB,EAAIC,EAAc,OAG5D,CACL,OAAO,QAKfb,GAAa,CAACnW,GAAY,CACxB/qa,KAAM,SACNjI,aAAc,KACXopb,EAAoBngb,UAAW,mBAAoB,GACxDkgb,GAAa,CAACx3a,MAAUy3a,EAAoBngb,UAAW,8BAA+B,GACtFkgb,GAAa,CAACvvI,GAAU,gBAAiBwvI,EAAoBngb,UAAW,uBAAwB,MAChGkgb,GAAa,CAACvvI,GAAU,2BAA4BwvI,EAAoBngb,UAAW,kCAAmC,MACtH,OAAOmgb,OAGT,IAAIa,GAAoD,SAAUp3B,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAW9D,MAAM4+Z,WAAwC5iJ,GAAM,CAAC00I,KAA0Btqa,IAC7E,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMihb,UAAwCx4a,EAI5C3W,aAAaw6S,EAAUxwQ,EAAQ,KAC7B,MAAM6wQ,EAAgBx6S,KAAKk1S,aAAaC,gBAAgB56N,WACxDv6E,KAAKy6S,cAAc,IAAID,EAAc,CACnCrqR,MAAOnwB,KACPm6S,SAAUA,EACVxwQ,MAAOA,KAET,OAAO3pC,KAAKo8P,cAEdz8P,6BAA6BiN,EAAS4Z,GACpC,MAAMypR,QAAiBjwS,KAAK+0G,EAAEqwM,kBAC9B,MAAM2pI,QAA8B/ub,KAAK+0G,EAAEg6U,sBAC3C,MAAMphE,QAAsC3tX,KAAK+0G,EAAE44Q,8BACnD,MAAMqhE,SAAgChvb,KAAK+0G,EAAEi6U,yBAA2Bpib,EAAQoib,yBAA2BD,EAAsBx9a,KACjI,MAAM48R,EAAWnuS,KAAKk1S,aAAasD,iBACnC,GAAIrK,EAAU,CACZvhS,EAAU3O,OAAOmZ,OAAO,CACtB+2R,SAAAA,GACCvhS,GAEL,OAAO+gX,EAA8Bl1E,4BAA4B7rS,GAAS,CAACugC,EAAWC,EAAS6hZ,KAC7F,MAAMC,EAAkBD,EAA8Bn+I,yBACtD,MAAMq+I,EAAgBF,EAA8BG,sBACpD,GAAIF,EAAgBx9a,IAAIu+R,KAAc++I,GAA0BG,EAAcxnb,MAAKsoS,GAAY8+I,EAAsB9wa,IAAIgyR,MAAa,CACpI,OAAOzpR,EAAK2mB,EAAWC,EAAS6hZ,OAKtCtvb,0CACE,MAAMovb,QAA8B/ub,KAAK+0G,EAAEg6U,sBAC3C,MAAMl+I,EAAY,IAAIk+I,EAAsB/wb,aAAcgC,KAAK+0G,EAAEqwM,mBACjE,OAAOplT,KAAKk1S,aAAam6I,iBAAiBx+I,GAE5ClxS,kCACE,MAAM68T,QAAoBx8T,KAAK+0G,EAAEulM,SACjC,MAAMnuS,EAAS,IAAIqF,IACnB,IAAK,MAAM4oS,KAAcoiB,EAAa,CACpC,MAAMriB,QAAiBC,EAAWrlM,EAAEolM,SACpC,GAAIA,EAAU,CACZ,MAAMm1I,QAAyBn1I,EAASplM,EAAEqwM,kBAC1C,IAAIoX,EAAcrwT,EAAOuF,IAAI49a,GAC7B,IAAK9yH,EAAa,CAChBA,EAAc,GACdrwT,EAAOmF,IAAIg+a,EAAkB9yH,GAE/BA,EAAYh+T,KAAK47S,IAGrB,OAAOjuS,EAETxM,yCACE,MAAO,CACLqvb,uBAAwB,OAG5Brvb,gCACE,MAAMovb,QAA8B/ub,KAAK+0G,EAAEg6U,sBAC3C,OAAOA,EAAsBx9a,KAAO,EAEtC5R,oBAAoB68B,EAAM6xM,EAAY,KAAMkhN,GAC1C,IAAK/yZ,EAAM,OAAO,KAClB,MAAMuyZ,QAA8B/ub,KAAK+0G,EAAEg6U,sBAC3C,MAAMC,QAA+Bhvb,KAAK+0G,EAAEi6U,uBAC5C,SAAWhvb,KAAKwvb,+BAAgC,CAC9C,MAAM5ib,EAAU3O,OAAOmZ,aAAcpX,KAAKyvb,wCAAyCphN,EAAY,CAC7FlhM,UAAW3Q,EACX6xM,UAAAA,GACE,CACFjhM,QAAS5Q,EACT6xM,UAAAA,GACCkhN,GACH,IAAIt2I,EACJ,MAAMy2I,QAAiB1vb,KAAKy4S,4BAA4B7rS,GAAS,CAACugC,EAAWC,EAAS6hZ,KACpFh2I,EAAc5qE,EAAYlhM,EAAYC,EACtC,OAAO,SAET,GAAIsiZ,IAAY/hJ,GAAuB4B,iBAAmBmgJ,IAAY/hJ,GAAuB2B,kBAAmB,CAC9G,MAAMuB,EAAY,OAAO7wS,KAAK+0G,EAAEqwM,mBAGhC,IAAKx4S,EAAQoib,yBAA2BA,EAAwB,CAC9Dn+I,EAAUryS,QAAQuwb,EAAsB/wb,QAE1C,MAAM0ha,EAASia,GAAoB9oT,IAAI,CACrC1gG,MAAOnwB,KACP6wS,UAAAA,EACAr0Q,KAAAA,EACA6xM,UAAAA,IAEF,UAAWqxL,KAAYqV,GAAuBltT,OAAQ,OAC9Ck1S,GAAO2C,OACR,CACL,OAAO,MAGX,OAAO,IAAIlxZ,KAAKyqS,OACX,CACL,aAAcxD,EAAWuE,mBAAmBnzS,KAAK7G,KAAMw8B,EAAM6xM,IAGjE1uO,4BAA4BwtC,EAAWC,EAAS0wQ,EAAcyxI,GAC5D,IAAKpiZ,IAAcC,EAAS,CAC1B,OAAO,KAET,SAAWptC,KAAKwvb,+BAAgC,CAC9C,MAAM5ib,EAAU3O,OAAOmZ,aAAcpX,KAAKyvb,wCAAyC,CACjFtiZ,UAAAA,EACAC,QAAAA,EACAihM,UAAW,MACVkhN,GACH,IAAIpjb,EAAS,QACNnM,KAAKy4S,4BAA4B7rS,GAAS,CAACugC,EAAWC,KAC3DjhC,GAAUihC,EAAQp9B,UAAYm9B,EAAUn9B,aAE1C,IAAK8tS,EAAcA,QAAqB99S,KAAK+0G,EAAE+oM,aAC/C,aAAc99S,KAAKk1S,aAAasqI,iBAAiBrza,EAAQ2gS,GAASkzI,YAAaliI,OAC1E,CACL,aAAcrI,EAAW8qI,2BAA2B15a,KAAK7G,KAAMmtC,EAAWC,EAAS0wQ,IAGvFn+S,qCAAqC+tM,EAAU2gC,EAAY,KAAM/lN,EAAUw1R,EAAcyxI,GACvF,GAAIjna,GAAY,MAAQpU,MAAMoU,IAAaolL,GAAY,KAAM,OAAO,KACpE,GAAIplL,GAAY,EAAG,OAAOolL,EAC1BowG,EAAeA,UAAuB99S,KAAK+0G,EAAE+oM,cAC7C,MAAM4oB,QAAoB1mU,KAAKk1S,aAAasqI,iBAAiBl3Z,EAAUw1R,EAAchR,GAASkzI,aAC9F,IAAI2P,EAAUjiP,EAAS19L,UACvB,IAAI4/a,EAAelpH,EACnB,MAAMz2B,QAAiBjwS,KAAK+0G,EAAEqwM,kBAC9B,SAAWplT,KAAKwvb,+BAAgC,CAC9C,MAAM5ib,EAAU3O,OAAOmZ,aAAcpX,KAAKyvb,wCAAyCphN,EAAY,CAC7FlhM,UAAWugK,EACX2gC,UAAAA,GACE,CACFjhM,QAASsgK,EACT2gC,UAAAA,GACCkhN,SACIvvb,KAAKy4S,4BAA4B7rS,GAAS,CAACijb,EAAe3sG,EAAa+rG,KAC5E,MAAMa,EAAiBD,EAAc7/a,UACnC+/a,EAAe7sG,EAAYlzU,UAC3Bo7T,EAAmB2kH,EAAeD,EACpC,GAAI1kH,GAAoBwkH,EAAc,CACpCD,EAAUthN,EAAYyhN,EAAiBF,EAAeG,EAAeH,EACrE,OAAO,UACF,CACLA,GAAgBxkH,EAChB,GAAIprU,KAAKk1S,aAAa6D,oBAAqB,CACzC,MAAMpuQ,EAAUklZ,EAAczyZ,oBAAsB8lT,EAAY9lT,oBAChEwyZ,GAAgBjlZ,EAAU,GAAK,SAIrC,OAAO,IAAIn8B,KAAKmhb,OACX,CACL,OAAO1/I,EAAS+I,sBAAsBtrG,EAAUg5H,EAAYr4F,GAAWsqE,YAI7Ek2I,GAAa,CAACt4a,MAAUu4a,EAAgCjhb,UAAW,qCAAsC,GACzGghb,GAAa,CAACt4a,MAAUu4a,EAAgCjhb,UAAW,6BAA8B,GACjGghb,GAAa,CAACjX,GAAY,CACxB/qa,KAAM,aACHiib,EAAgCjhb,UAAW,8BAA+B,GAC/Eghb,GAAa,CAACrwI,GAAU,kCAAmCswI,EAAgCjhb,UAAW,yCAA0C,MAChJghb,GAAa,CAACrwI,GAAU,0BAA2BswI,EAAgCjhb,UAAW,iCAAkC,MAChI,OAAOihb,OAGT,IAAIkB,GAAoD,SAAUv4B,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAE9D,MAAM+/Z,GAAqBz6a,OAAO,sBAClC,MAAM06a,GAAmB16a,OAAO,oBAChC,MAAM26a,GAAoB36a,OAAO,qBACjC,MAAM46a,GAAyB56a,OAAO,0BACtC,MAAM66a,GAAiB76a,OAAO,kBAC9B,MAAM86a,GAAe96a,OAAO,gBAC5B,MAAM+6a,GAA2B14B,GAAQhnS,IAAI,CAC3C/wG,OAAQg9Z,GACR/kB,OAAQ,IAAIl5Y,IAAI,CAACwxa,GAAgBC,OAEnC,MAAME,GAA8C34B,GAAQhnS,IAAI,CAC9D/wG,OAAQ88Z,GACR7kB,OAAQ,IAAIl5Y,IAAI,CAACwxa,GAAgBJ,OAEnC,MAAMQ,GAA0C54B,GAAQhnS,IAAI,CAC1D/wG,OAAQ+8Z,GACR9kB,OAAQ,IAAIl5Y,IAAI,CAACyxa,GAAcL,OAEjC,MAAMS,GAA8C74B,GAAQhnS,IAAI,CAC9D/wG,OAAQuwa,GACRt4B,OAAQ,IAAIl5Y,IAAI,CAAC+9Z,GAAcqT,OAEjC,MAAMU,GAA0C94B,GAAQhnS,IAAI,CAC1D/wG,OAAQwwa,GACRv4B,OAAQ,IAAIl5Y,IAAI,CAACg+Z,GAAYoT,OAE/B,MAAMW,GAA2C/4B,GAAQhnS,IAAI,CAC3D/wG,OAAQuwa,GACRt4B,OAAQ,IAAIl5Y,IAAI,CAACyxa,GAAcxT,OAEjC,MAAM+T,GAA2Ch5B,GAAQhnS,IAAI,CAC3D/wG,OAAQwwa,GACRv4B,OAAQ,IAAIl5Y,IAAI,CAACwxa,GAAgBvT,OAEnC,MAAMgU,GAAsDj5B,GAAQhnS,IAAI,CACtE/wG,OAAQwwa,GACRv4B,OAAQ,IAAIl5Y,IAAI,CAACwxa,GAAgBD,OAEnC,MAAMW,GAAiDl5B,GAAQhnS,IAAI,CACjE/wG,OAAQwwa,GACRv4B,OAAQ,IAAIl5Y,IAAI,CAACwxa,GAAgBF,OAMnC,MAAMa,GAAiCn5B,GAAQhnS,IAAI,CACjD/wG,OAAQg9Z,GACR/kB,OAAQ,IAAIl5Y,IAAI,CAACwxa,GAAgBH,OAEnC,MAAMe,GAA0Bp4B,GAAiBhoS,IAAI,CACnDwnS,UAAW,IAAIx5Y,IAAI,CAAC+9Z,GAAcC,GAAYC,GAAamT,GAAoBC,GAAkBC,GAAmBC,GAAwBC,GAAgBC,KAC5Jr4B,SAAU,IAAIp5Y,IAAI,CAElB0xa,GAA0BC,GAA6CC,GAAyCG,GAA0CF,GAA6CG,GAA0CC,GAAqDC,GAEtSJ,GAAyCK,OAE3C,MAAME,GAAyBp4B,GAAgBjoS,IAAI,CACjDmoR,YAAai4C,GACbl4B,0BAA2B,IAAIl6Y,IAAI,CAAC4xa,GAAyCE,GAAyCE,OAExH,MAAMM,WAAuChkB,GAAgBlhI,IAAIk3H,KAC/Dxja,SAASksB,EAAIG,GACX,MAAM4xZ,EAAc/xZ,EAAGoyT,WACvB,MAAM4/F,EAAc7xZ,EAAGiyT,WACvB,OAAO2/F,EAAYlsa,IAAIkra,MAAkBiB,EAAYnsa,IAAIkra,KAAiBgB,EAAYlsa,IAAImra,MAAgBgB,EAAYnsa,IAAImra,KAAee,EAAYlsa,IAAIora,MAAiBe,EAAYnsa,IAAIora,KAAgBc,EAAYlsa,IAAIu+a,MAAwBpS,EAAYnsa,IAAIu+a,KAAuBrS,EAAYlsa,IAAIw+a,MAAsBrS,EAAYnsa,IAAIw+a,KAAqBtS,EAAYlsa,IAAIy+a,MAAuBtS,EAAYnsa,IAAIy+a,KAAsBvS,EAAYlsa,IAAI0+a,MAA4BvS,EAAYnsa,IAAI0+a,KAA2BxS,EAAYlsa,IAAI2+a,MAAoBxS,EAAYnsa,IAAI2+a,KAAmBzS,EAAYlsa,IAAI4+a,MAAkBzS,EAAYnsa,IAAI4+a,KAMroB,MAAMc,WAAiCllJ,GAAM,CAACuyI,KAAiBnoa,IAC7D,MAAM86a,UAAiC96a,EACrCqwV,qBACE,OAAO,KAETh7R,UACE,IAAIwvP,EAEJ,OAAQA,EAAcn7T,KAAKmwB,SAAW,MAAQgrS,SAAqB,OAAS,EAAIA,EAAYxvP,IAE9FA,QAAQpsE,IACRI,eAAeI,EAAI2yG,EAAauuT,EAAOzkY,EAAMmhR,EAAe,MAC1D,MAAMxtR,EAAQnwB,KAAKmwB,MACnB,MAAMo7E,EAAUvrG,KAAKk1S,aAErB,GAAI/kR,IAAUnwB,KAAKqxb,iBAAmB3+U,EAAY6xT,aAAaoH,cAAc5ra,MAASwrG,GAAWA,EAAQu/U,SAAS7yU,aAAc,CAC9H9nF,EAAM4kF,EAAE5nE,UAAU98B,YAAYxC,UAAU40Z,MAAM57Z,KAAK7G,KAAMmwB,EAAM4kF,EAAE5nE,UAAWulE,EAAa,KAAMl2E,EAAMmhR,OAChG,CACL59S,EAAGsQ,YAAYxC,UAAU40Z,MAAM57Z,KAAK7G,KAAMD,EAAI2yG,EAAauuT,EAAOzkY,EAAMmhR,GAG1E,GAAIA,GAAgB39S,KAAKsxb,YAAa,CACpC,MAAM54X,EAAQ14D,KAAK+iI,UAAY/iI,KAAKsxb,YAAYxuT,YAChD,GAAIpqE,EAAQ,EAAG,CACb,IAAI64X,EAAUvxb,KAEd,MAAOuxb,EAAUA,EAAQD,YAAa,CACpCC,EAAQzuT,aAAepqE,EACvB64X,EAAQxuT,WAAarqE,KAK7B/4D,wBAAwBwzC,EAAWt5B,EAAUrB,GAC3C,OAAO26B,IAAc,eAAiBA,IAAc,aAAej5B,MAAMgzD,wBAAwB/5B,EAAWt5B,EAAUrB,GAExH7Y,wBACE,MAAM+wB,QAAmB1wB,KAAK+0G,EAAErkF,WAChC,MAAMutT,EAAavtT,EAAWutT,WAAWvsU,IAAI2+a,IAE7C,IAAKrwb,KAAKmwB,MAAO,CACf,aAAaysY,GAEf,IAAIzwZ,EACJ,GAAI8xU,IAAe25E,GAAmB,CACpCzrZ,QAAeywZ,QACV,GAAI3+E,IAAe2yG,GAAyC94B,UAAW,CAC5E3rZ,QAAgBnM,KAAKwxb,kDAChB,GAAIvzG,IAAeyyG,GAA4C54B,UAAW,CAC/E,MAAM25B,QAAwBnzB,GAA0Bt+Z,KAAKmwB,MAAM4kF,EAAE5nE,WACrE,MAAMA,QAAkBmxX,GAA0Bt+Z,KAAK+0G,EAAE5nE,WACzDhhC,QAAgBnM,KAAKmwB,MAAMowZ,2BAA2BkR,EAAiBtkZ,EAAW2/P,GAASkzI,YAAa,CACtG0R,eAAgB,OAGpB,OAAOvlb,EAETxM,sBACE,MAAM+wB,QAAmB1wB,KAAK+0G,EAAErkF,WAChC,MAAMutT,EAAavtT,EAAWutT,WAAWvsU,IAAI4+a,IAE7C,IAAKtwb,KAAKmwB,MAAO,CACf,aAAaysY,GAEf,IAAIzwZ,EACJ,GAAI8xU,IAAe25E,GAAmB,CACpCzrZ,QAAeywZ,QACV,GAAI3+E,IAAe4yG,GAAyC/4B,UAAW,CAC5E3rZ,QAAgBnM,KAAK2xb,kDAChB,GAAI1zG,IAAe0yG,GAAwC74B,UAAW,CAC3E,MAAM25B,QAAwBnzB,GAA0Bt+Z,KAAKmwB,MAAM4kF,EAAE5nE,WACrE,MAAMC,QAAgBkxX,GAA0Bt+Z,KAAK+0G,EAAE3nE,SACvDjhC,QAAgBnM,KAAKmwB,MAAMowZ,2BAA2BkR,EAAiBrkZ,EAAS0/P,GAASkzI,YAAa,CACpG0R,eAAgB,YAEb,GAAIzzG,IAAe8yG,GAA+Cj5B,UAAW,CAClF3rZ,QAAgBnM,KAAK4xb,wDAChB,GAAI3zG,IAAe6yG,GAAoDh5B,UAAW,CACvF3rZ,QAAgBnM,KAAK6xb,wDAEvB,OAAO1lb,EAETxM,sBACE,MAAM+wB,QAAmB1wB,KAAK+0G,EAAErkF,WAChC,MAAMynY,EAAUznY,EAAWutT,WAAWvsU,IAAIkra,IAE1C,IAAK58a,KAAKmwB,MAAO,CACf,aAAaysY,GAEf,IAAIzwZ,EACJ,GAAIgsZ,IAAYq4B,GAA4C14B,UAAW,CACrE3rZ,QAAgBnM,KAAK8xb,oDAChB,CACL3lb,QAAgB+N,MAAM+la,qBAExB,OAAO9za,EAETxM,oBACE,MAAM+wB,QAAmB1wB,KAAK+0G,EAAErkF,WAChC,MAAMynY,EAAUznY,EAAWutT,WAAWvsU,IAAImra,IAE1C,IAAK78a,KAAKmwB,MAAO,CACf,aAAaysY,GAEf,IAAIzwZ,EACJ,GAAIgsZ,IAAYs4B,GAAwC34B,UAAW,CACjE3rZ,QAAgBnM,KAAK+xb,gDAChB,CACL5lb,QAAgB+N,MAAM6la,mBAExB,OAAO5za,EAETxM,qBACE,MAAM+wB,QAAmB1wB,KAAK+0G,EAAErkF,WAChC,MAAMynY,EAAUznY,EAAWutT,WAAWvsU,IAAIora,IAE1C,IAAK98a,KAAKmwB,MAAO,CACf,aAAaysY,GAEf,IAAIzwZ,EACJ,GAAIgsZ,IAAYo4B,GAAyBz4B,UAAW,CAClD3rZ,QAAgBnM,KAAKgyb,kCAChB,GAAI75B,IAAY64B,GAA+Bl5B,UAAW,CAC/D3rZ,QAAgBnM,KAAKgyb,iCAChB,CACL7lb,QAAgB+N,MAAM+3a,oBAExB,OAAO9lb,EAETxM,wBAAwBI,EAAIkha,EAAOvuT,GACjC,MAAMhiF,EAAaxW,MAAMg4a,wBAAwBnyb,EAAIkha,EAAOvuT,GAC5DhiF,EAAWmuY,qBAAqBoxB,IAChCv/Z,EAAWmuY,qBAAqBwxB,IAChC3/Z,EAAWmuY,qBAAqByxB,IAChC,OAAO5/Z,EAET/wB,mBAAmBmja,GACjB,MAAMpyY,QAAoBxW,MAAMyka,kBAAkB7b,GAElD,IAAK9ia,KAAKmwB,MAAO,CACf,OAAOO,EAGT,GAAIoyY,EAAMhF,GAAgB99Z,KAAKmwB,MAAM4kF,EAAE5nE,aAAe,KAAMzc,EAAWmuY,qBAAqBoxB,IAC5F,GAAIntB,EAAM1I,GAAiBp6Z,KAAKmwB,MAAM4kF,EAAE5nE,YAAazc,EAAWouY,qBAAqBmxB,IACrF,IAAKntB,EAAM1I,GAAiBp6Z,KAAKmwB,MAAM4kF,EAAEo9U,WAAY,CACnDzha,EAAW6uZ,YAAYzc,EAAO9ia,KAAKmwB,MAAM4kF,EAAEzsF,SAAU6na,IACrD,GAAIrtB,EAAM1I,GAAiBp6Z,KAAKmwB,MAAM4kF,EAAE3nE,UAAW,CACjD,MAAMglZ,EAAoBtvB,EAAMrE,GAAoBz+Z,KAAKmwB,MAAM4kF,EAAE3nE,UACjE,KAAMglZ,IAAsB,MAAQA,SAA2B,GAAKA,EAAkB,IAAK,CACzF1ha,EAAWouY,qBAAqBoxB,KAGpC,MAAMmC,EAAmBvvB,EAAM9ia,KAAKmwB,MAAM4kF,EAAErkF,YAC5C,GAAI2ha,EAAiBp0G,WAAWvsU,IAAIkra,MAAkBhlB,IAAqBy6B,EAAiBp0G,WAAWvsU,IAAImra,MAAgBjlB,GAAmB,CAC5IlnY,EAAWouY,qBAAqBsxB,KAGpC1/Z,EAAW6uZ,YAAYzc,EAAO9ia,KAAK+0G,EAAE+tB,YAAautT,IAClD3/Z,EAAW6uZ,YAAYzc,EAAO9ia,KAAK+0G,EAAEguB,UAAWutT,IAChD,OAAO5/Z,EAET/wB,uBAAuB0gC,GACrB,OAAO6wZ,GAGTvxb,oDACE,MAAM2yb,QAAuBh0B,GAA0Bt+Z,KAAKmwB,MAAM4kF,EAAEzsF,UACpE,MAAMiqa,QAA2Bvyb,KAAKmwB,MAAM4kF,EAAE+oM,aAC9C,MAAMh7K,QAAoB9iI,KAAK+0G,EAAE+tB,YACjC,MAAMwuT,EAActxb,KAAKsxb,YACzB,IAAInlb,EACJ,IAAIqmb,QAA0Bxyb,KAAKk1S,aAAasqI,iBAAiB8S,EAAgBC,EAAoBzlJ,GAASkzI,aAC9G,MAAMmS,EAAW,GACjB,IAAIZ,EAAUvxb,KACd,MAAOuxb,EAAUA,EAAQF,gBAAiB,CACxCc,EAAS3zb,KAAK+yb,GAEhB,IAAK,IAAI3yb,EAAIuzb,EAASrzb,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAC7C,MAAM2yb,EAAUY,EAASvzb,GACzB,MAAM6zb,QAA2Bn0B,GAA0BizB,EAAQx8U,EAAE+tB,aACrE,MAAM4vT,QAAyBp0B,GAA0BizB,EAAQx8U,EAAEguB,WACnE,MAAM4vT,EAAoBD,EAAmBD,EAC7CD,GAAoBG,EAEtB,GAAIH,EAAmB,EAAG,CACxB,IAAKlB,EAAa,CAChBnlb,EAAS22H,EAAc0vT,MAClB,CACLrmb,EAAS22H,EAAc1uH,KAAKuU,IAAI6pa,SAAyBl0B,GAA0Bt+Z,KAAK+0G,EAAEguB,YAAcD,QAKvG,CACH32H,EAAS22H,EAEX,OAAO32H,EAGTxM,yDACE,MAAM8xb,QAAwBnzB,GAA0Bt+Z,KAAKmwB,MAAM4kF,EAAE5nE,WACrE,MAAMylZ,QAAsBt0B,GAA0Bt+Z,KAAKmwB,MAAM4kF,EAAE3nE,SACnE,MAAMylZ,QAA+B7yb,KAAKmwB,MAAMowZ,2BAA2BkR,EAAiBmB,EAAe9lJ,GAASkzI,YAAa,CAC/H0R,eAAgB,OAElB,MAAM5uT,QAAoBw7R,GAA0Bt+Z,KAAK+0G,EAAE+tB,aAC3D,IAAIC,QAAkBu7R,GAA0Bt+Z,KAAK+0G,EAAEguB,WACvD,IAAIuuT,EAActxb,KAAKsxb,YACvB,GAAIxuT,GAAe+vT,EAAuB,CAExC,GAAI9vT,GAAa8vT,EAAuB,CAGtC,IAAKvB,UAAsBhzB,GAA0BgzB,EAAYv8U,EAAE+tB,eAAiB+vT,EAAuB,CACzG,OAAOA,EAGT,OAAO9vT,MAGJ,CACH,OAAO8vT,GAIX,aAAa7yb,KAAK+0G,EAAE+tB,YAGtBnjI,8CACE,MAAM2oB,QAAiBtoB,KAAK+0G,EAAEzsF,SAC9B,MAAMw1R,QAAqB99S,KAAK+0G,EAAE+oM,aAClC,MAAM/6K,QAAkB/iI,KAAK+0G,EAAEguB,UAC/B,OAAOA,SAAoB/iI,KAAKmwB,MAAM+kR,aAAasqI,iBAAiBl3Z,EAAUw1R,EAAchR,GAASkzI,cAGvGrgb,8CACE,MAAM2oB,QAAiBtoB,KAAK+0G,EAAEzsF,SAC9B,MAAMw1R,QAAqB99S,KAAK+0G,EAAE+oM,aAClC,MAAMh7K,QAAoB9iI,KAAK+0G,EAAE+tB,YACjC,OAAOA,SAAsB9iI,KAAKmwB,MAAM+kR,aAAasqI,iBAAiBl3Z,EAAUw1R,EAAchR,GAASkzI,cAGzGrgb,6CACE,MAAM8xb,QAAwBzxb,KAAKmwB,MAAM4kF,EAAE5nE,UAC3C,MAAM41F,QAAkB/iI,KAAK+0G,EAAEguB,UAC/B,MAAM+vT,QAAiB9yb,KAAKmwB,MAAMsvZ,oCAAoCgS,EAAiB,KAAM1uT,EAAW+pK,GAASkzI,YAAa,CAC5H0R,eAAgB,OAElB,aAAc1xb,KAAKmwB,MAAM6pR,mBAAmB84I,EAAS,OAGvDnzb,iDACE,MAAM8xb,QAAwBzxb,KAAKmwB,MAAM4kF,EAAE5nE,UAC3C,MAAM21F,QAAoB9iI,KAAK+0G,EAAE+tB,YACjC,MAAMgwT,QAAiB9yb,KAAKmwB,MAAMsvZ,oCAAoCgS,EAAiB,KAAM3uT,EAAagqK,GAASkzI,YAAa,CAC9H0R,eAAgB,OAElB,aAAc1xb,KAAKmwB,MAAM6pR,mBAAmB84I,GAG9Cnzb,8BACE,MAAMmjI,QAAoB9iI,KAAK+0G,EAAE+tB,YACjC,MAAMC,QAAkB/iI,KAAK+0G,EAAEguB,UAC/B,MAAM+6K,QAAqB99S,KAAK+0G,EAAE+oM,aAClC,aAAc99S,KAAKk1S,aAAasqI,iBAAiBz8S,EAAYD,EAAagqK,GAASkzI,YAAaliI,GAElGn+S,wBACE,IAAIwM,EAAS,EAEb,IAAKnM,KAAKmwB,MAAO,CACf,aAAaysY,GAGf,MAAMu1B,QAAiBnyb,KAAKmwB,MAAM4kF,EAAEo9U,SACpC,GAAIA,EAAU,CACZ,MAAMY,QAA0B/yb,KAAKmwB,MAAM4kF,EAAE65U,YAC7C,MAAM0D,QAAuBtyb,KAAKmwB,MAAM4kF,EAAEzsF,SAC1C,MAAMiqa,QAA2Bvyb,KAAKmwB,MAAM4kF,EAAE+oM,aAC9C,IAAI00I,QAA0Bxyb,KAAKk1S,aAAasqI,iBAAiB8S,EAAgBC,EAAoBzlJ,GAASkzI,aAC9G,IAAIgT,EAA2BD,EAAoB,IAAOP,EAC1D,IAAK,MAAMjB,KAAWY,EAAU,CAC9B,MAAMM,EAAqBlB,EAAQzuT,YACnC,MAAM4vT,EAAmBnB,EAAQxuT,UACjC,MAAM4vT,EAAoBD,EAAmBD,EAC7C,GAAIlB,IAAYvxb,KAAM,CACpB,GAAIgzb,GAA4BL,EAAmB,OAAO,SAAS,GAAIK,EAA2B,EAAG,OAAO,IAAMA,EAA2BL,OAAuB,OAAO,EAE7KK,GAA4BL,GAGhC,OAAOxmb,EAETxM,uBACE,MAAM0xb,EAAkBrxb,KAAKqxb,gBAC7B,IAAKrxb,KAAKmwB,MAAO,CACf,aAAaysY,GAEf,GAAIy0B,EAAiB,CACnB,aAAaA,EAAgBt8U,EAAEk+U,eAEjC,OAAO,EAETtzb,uBACE,IAAKK,KAAKmwB,MAAO,CACf,aAAaysY,GAEf,MAAM01B,QAAuBtyb,KAAKmwB,MAAM4kF,EAAEzsF,SAC1C,MAAMiqa,QAA2Bvyb,KAAKmwB,MAAM4kF,EAAE+oM,aAC9C,IAAI00I,QAA0Bxyb,KAAKk1S,aAAasqI,iBAAiB8S,EAAgBC,EAAoBzlJ,GAASkzI,aAC9G,MAAMl9S,QAAoB9iI,KAAK+0G,EAAE+tB,YACjC,MAAMC,QAAkB/iI,KAAK+0G,EAAEguB,UAC/B,MAAMmwT,QAAmBlzb,KAAK+0G,EAAEo+U,iBAChC,OAAOD,EAAa,KAAOnwT,EAAYD,GAAe0vT,EAGxD7yb,qCAAqC+tM,EAAU2gC,EAAW/lN,EAAUw1R,GAClE,IAAKA,EAAcA,QAAqB99S,KAAK+0G,EAAE+oM,aAC/C,aAAc99S,KAAKmwB,MAAMsvZ,oCAAoC/xO,EAAU2gC,EAAW/lN,EAAUw1R,EAAc,CACxG4zI,eAAgB,OAIpB/xb,4BAA4BwtC,EAAWC,EAAS0wQ,GAC9C,IAAKA,EAAcA,QAAqB99S,KAAK+0G,EAAE+oM,aAC/C,aAAc99S,KAAKmwB,MAAMowZ,2BAA2BpzY,EAAWC,EAAS0wQ,EAAc,CACpF4zI,eAAgB,QAItB1B,GAAa,CAACz5a,GAAM,CAClBu3Z,cAAeqjB,MACZC,EAAyBvjb,UAAW,kBAAmB,GAC5Dmib,GAAa,CAACz5a,MAAU66a,EAAyBvjb,UAAW,mBAAoB,GAChFmib,GAAa,CAACz5a,MAAU66a,EAAyBvjb,UAAW,iBAAkB,GAC9Emib,GAAa,CAACz5a,MAAU66a,EAAyBvjb,UAAW,mBAAoB,GAChFmib,GAAa,CAACz5a,MAAU66a,EAAyBvjb,UAAW,wBAAyB,GACrFmib,GAAa,CAACz5a,MAAU66a,EAAyBvjb,UAAW,sBAAuB,GACnFmib,GAAa,CAACvtB,GAAM,cAAe2uB,EAAyBvjb,UAAW,iBAAkB,MACzFmib,GAAa,CAACxxI,GAAU,gBAAiB4yI,EAAyBvjb,UAAW,uBAAwB,MACrGmib,GAAa,CAACxxI,GAAU,cAAe4yI,EAAyBvjb,UAAW,qBAAsB,MACjGmib,GAAa,CAACxxI,GAAU,gBAAiB4yI,EAAyBvjb,UAAW,uBAAwB,MACrGmib,GAAa,CAACxxI,GAAU,qBAAsB4yI,EAAyBvjb,UAAW,sBAAuB,MACzGmib,GAAa,CAACxxI,GAAU,mBAAoB4yI,EAAyBvjb,UAAW,sBAAuB,MACvG,OAAOujb,OAGT,IAAIgC,GAAoD,SAAU37B,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAE9D,MAAMmja,GAAc79a,OAAO,eAC3B,MAAM89a,GAAoB,CAAC/zb,EAAOizE,IAAWA,EAAO+gX,qBAAqBh0b,GACzE,MAAMi0b,GAAuC37B,GAAQhnS,IAAI,CACvD/wG,OAAQ88Z,GACR7kB,OAAQ,IAAIl5Y,IAAI,CAACg+Z,GAAYwW,OAE/B,MAAMI,GAAuC57B,GAAQhnS,IAAI,CACvD/wG,OAAQ+8Z,GACR9kB,OAAQ,IAAIl5Y,IAAI,CAAC+9Z,GAAcyW,OAEjCx7B,GAAQhnS,IAAI,CACV/wG,OAAQg9Z,GACR/kB,OAAQ,IAAIl5Y,IAAI,CAAC+9Z,GAAcC,GAAYwW,OAE7C,MAAMK,GAAwB76B,GAAiBhoS,IAAI,CACjDwnS,UAAW,IAAIx5Y,IAAI,CAAC+9Z,GAAcC,GAAYC,GAAauW,KAC3Dp7B,SAAU,IAAIp5Y,IAAI,CAAC40a,GAAsCD,GAEzDzW,GAAkBC,GAAgBC,OAEpC,MAAM0W,GAA8B76B,GAAgBjoS,IAAI,CACtDmoR,YAAa06C,GACb36B,0BAA2B,IAAIl6Y,IAAI,CAACm+Z,GAAgByW,OAEtD,MAAMG,GAA+B96B,GAAgBjoS,IAAI,CACvDmoR,YAAa06C,GACb36B,0BAA2B,IAAIl6Y,IAAI,CAACk+Z,GAAkByW,OAExD,MAAMK,WAAkC1mB,GAAgBlhI,IAAIk3H,KAC1Dxja,SAASksB,EAAIG,GACX,MAAM4xZ,EAAc/xZ,EAAGoyT,WACvB,MAAM4/F,EAAc7xZ,EAAGiyT,WACvB,OAAO2/F,EAAYlsa,IAAIkra,MAAkBiB,EAAYnsa,IAAIkra,KAAiBgB,EAAYlsa,IAAImra,MAAgBgB,EAAYnsa,IAAImra,KAAee,EAAYlsa,IAAIora,MAAiBe,EAAYnsa,IAAIora,KAAgBc,EAAYlsa,IAAI2hb,MAAiBxV,EAAYnsa,IAAI2hb,KAG/P,MAAMS,WAAwB5nJ,GAAM,CAAC4iJ,GAAiCd,KAAsB13a,IAC1F,MAAMw9a,UAAwBx9a,EAC5B3W,cACEua,SAASrb,WACTmB,KAAK+zb,mBAAqB,GAE5Bhmb,mBACE,MAAO,kBAETpO,YACEK,KAAKg0b,kBAAoBh0b,KAAKi0b,8BAC9B/5a,MAAMsB,aAAa3c,WAErBc,8BACE,OAAOyxb,GAETzxb,mBAAmBmja,GACjB,MAAMpyY,QAAoBxW,MAAMyka,kBAAkB7b,GAClD,SAAW9ia,KAAKk0b,4BAA6B,CAC3Cxja,EAAWouY,qBAAqBu0B,IAElC,OAAO3ia,EAET/wB,uBAAuB0gC,GACrB,MAAM8rB,EAAY9rB,EAAErgC,KAAK+0G,EAAE5oD,WAC3B,OAAOA,IAAckhP,GAAU+xI,SAAWjzX,IAAckhP,GAAU2qG,KAAO27C,GAA8BC,GAEzGj0b,6BACE,MAAMw0b,QAAyBl2B,GAAgBj+Z,KAAK+0G,EAAEo9U,UACtD,IAAIhmb,EAAS,MACb,SAAUiuZ,GAAiBp6Z,KAAK+0G,EAAEo9U,UAAW,CAC3Chmb,EAASjM,QAAQi0b,GAEnB,MAAMhC,QAAiB7zB,GAA0Bt+Z,KAAK+0G,EAAEo9U,UACxD,IAAKA,EAAU,OAAO,MACtB,IAAK,MAAMZ,KAAWY,EAAU,CAE9B,MAAMiC,QAA0Bh6B,GAAiBm3B,EAAQx8U,EAAE5nE,WAC3D,MAAMknZ,QAAwBj6B,GAAiBm3B,EAAQx8U,EAAE3nE,SACzD,MAAMknZ,QAAyBl6B,GAAiBm3B,EAAQx8U,EAAEzsF,UAC1D,GAAI8ra,GAAqBC,GAAmBC,EAAkBnob,EAAS,KAEzE,OAAOA,EAETxM,cAAcI,EAAI2yG,EAAauuT,EAAO1ha,GAEpCQ,EAAGsQ,YAAYxC,UAAU40Z,MAAM57Z,KAAK7G,KAAMD,EAAI2yG,EAAauuT,EAAO1ha,GAGlE,GAAIS,KAAKu0b,eAAiBv0b,KAAKu0b,gBAAkB1zB,GAAW,CAC1D,MAAMt1T,EAAUvrG,KAAKurG,QACrB,MAAMkrM,EAAQlrM,EAAQkjU,QACtB,IAAK,MAAM8iB,KAAWvxb,KAAKu0b,cAAe,CACxC,GAAIhD,EAAQ96I,QAAUA,EAAO,CAC3B86I,EAAQv8I,WAAWzpM,GACnBkrM,EAAMw2H,UAAUskB,MAKxB5xb,iBAAiBwyb,EAAUx0B,GACzBA,EAASA,GAAU,GAEnB,GAAIw0B,EAASrzb,QAAU,EAAG,CAExB,MAAMwpB,EAAW6pa,EAASrzb,aAAgBkB,KAAKk1S,aAAasqI,iBAAiB2S,EAAS,GAAGpvT,UAAYovT,EAAS,GAAGrvT,YAAagqK,GAASkzI,kBAAmBhgb,KAAK+0G,EAAE+oM,cAAgB,EAIjL6/G,EAAOn/Z,KAAK,CACVymD,WAAYjlD,KAAK+0G,EAAEzsF,SACnBi1Y,aAAc,CAACj1Y,EAAU,QAE3B6pa,EAAW,KAEbx0B,EAAOn/Z,KAAK,CACVymD,WAAYjlD,KAAK+0G,EAAEo9U,SACnB50B,aAAc,CAAC40B,WAEXz0B,GAAaC,GAErBh+Z,qBACE,IAAI60b,QACEx0b,KAAK+0G,EAAErkF,WACb,MAAM+lR,MACJA,EAAKlrM,QACLA,GACEvrG,KACJ,MAAMkxa,QAAsBpT,GAAgB99Z,KAAK+0G,EAAEo9U,UACnD,IAAIA,QAAiBv1B,GACrB,MAAMn4Y,EAAW,GACjB,IAAIgwa,EAAa,MACjB,GAAItC,EAAU,CACZ,MAAMhmb,EAAS,IAAI0S,IACnB,IAAIwya,EAAkB,KACtB,IAAI1zI,EAAe,MACnB,MAAM4mH,aACJA,GACE9tH,EAAMgzH,mBACV,IAAK,MAAM8nB,KAAWY,EAAU,CAC9B,MAAMrvT,QAAoByuT,EAAQx8U,EAAE+tB,YACpC,MAAMC,QAAkBwuT,EAAQx8U,EAAEguB,UAElC,MAAM67S,EAAwBra,EAAaoH,cAAc4lB,EAAQx8U,EAAE5nE,mBAAqBsxX,GAAoB8yB,EAAQx8U,EAAE5nE,YACtH,MAAM4xY,EAAsBxa,EAAaoH,cAAc4lB,EAAQx8U,EAAE3nE,iBAAmBqxX,GAAoB8yB,EAAQx8U,EAAE3nE,UAClHuwQ,EAAeA,IAAiBihI,IAA0B,MAAQA,SAA+B,OAAS,EAAIA,EAAsB,MAAQG,IAAwB,MAAQA,SAA6B,OAAS,EAAIA,EAAoB,IAE1O,GAAIj8S,IAAgBC,EAAW,CAC7Bt+G,EAASjmB,KAAK+yb,QAGX,GAAIF,GAAmBvuT,GAAeuuT,EAAgBtuT,UAAW,CAEpEt+G,EAASjmB,KAAK+yb,GAEd,GAAIF,EAAgB56I,MAAO,CAEzBhyR,EAASjmB,KAAK6yb,GACd,MAAMqD,EAA6BrD,EAAgBvuT,YACnD,MAAM6xT,EAA2Bh3I,EAEjC56K,EAAYsuT,EAAgBtuT,UAAYD,EAExC1uH,KAAKC,IAAI0uH,EAAWsuT,EAAgBtuT,WAGpC,MAAMjtH,EAAMu7a,EAAgBv7a,IAE5Bu7a,EAAkBrxb,KAAKg0b,kBAAkBnjU,IAAI,CAC3C1gG,MAAOnwB,KACP8V,IAAKA,EACLgtH,YAAa4xT,EACb3xT,UAAW4xT,QAER,CACLtD,EAAgBtuT,UAAY46K,EAE5B56K,EAAYsuT,EAAgBtuT,UAAYD,EAExC1uH,KAAKC,IAAI0uH,EAAWsuT,EAAgBtuT,gBAInC,CACH,GAAIsuT,EAAiB,CACnBllb,EAAO4S,IAAIsya,GAEbA,EAAkBE,GAGtB,GAAIF,EAAiB,CACnBllb,EAAO4S,IAAIsya,GAEb,GAAIllb,EAAOoF,OAAS,EAAG,CACrBkT,EAASjmB,QAAQ2N,GAEnBsob,EAAahwa,EAAS3lB,OAAS,EAC/B,GAAI21b,EAAY,CACdtC,EAAW5qb,MAAMyd,KAAK7Y,GAGxBgmb,EAAS1mb,QAAO,CAAC4lb,EAAiBE,EAASrhb,KACzC,GAAImhb,EAAiB,CACnBA,EAAgBC,YAAcC,EAEhCA,EAAQF,gBAAkBA,EAC1BE,EAAQqD,aAAe1kb,EACvB,OAAOqhb,IACN,MACH,GAAIY,EAASrzb,OAAQ,CACnBqzb,EAASA,EAASrzb,OAAS,GAAGwyb,YAAc,WAI3C,GAAIpgB,EAAe,CACtBzsZ,EAASjmB,QAAQ0ya,GAGnB,GAAIzsZ,EAAS3lB,OAAQ,CAEnB2lB,EAASzlB,SAAQuyb,GAAWA,EAAQpha,MAAQ,OAC5Co7E,EAAQp8E,GAAG,CACT2mV,gBAAiB,IAAMr/D,EAAMo+I,eAAepwa,GAC5CmI,KAAM,OAIV,GAAI6na,EAAY,OACPz0b,KAAK80b,gBAAgB3C,GAE9BA,IAAaqC,EAAYrC,KAAc,MAAQqC,SAAmB,OAAS,EAAIA,EAAU11b,QAAU,EAAIqzb,EAAW,KAClH,OAAOA,EAETxyb,mCACQK,KAAK+0G,EAAErkF,WACb,IAAIyha,QAAiBnyb,KAAK+0G,EAAEo9U,eACtBnyb,KAAK+0G,EAAE5nE,UACb,MAAMC,QAAgBptC,KAAK+0G,EAAE3nE,cACvBptC,KAAK+0G,EAAEzsF,SACb,IAAI/oB,QAAcq9Z,GAClB,GAAIu1B,EAAU,CACZ,MAAM5mV,EAAUvrG,KAAKurG,QACrB,MAAMkrM,EAAQz2S,KAAKy2S,MACnB,MAAMhyR,EAAW,GACjB,MAAMswa,EAAU,GAChB,IAAIC,GAAe,EAEnB,IAAK,IAAIp2b,EAAIuzb,EAASrzb,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAC7C,MAAM2yb,EAAUY,EAASvzb,GACzB,MAAMq2b,QAAyB1D,EAAQx8U,EAAE5nE,UACzC,MAAM+nZ,QAAuB3D,EAAQx8U,EAAE3nE,QAEvC,GAAI6nZ,EAAmB7nZ,EAAS,CAC9B3oB,EAASjmB,KAAK+yb,GACdyD,EAAcp2b,MACT,CAEL,GAAIs2b,EAAellb,YAAco9B,EAAQp9B,UAAW,CAClD,MAAM0oS,EAAa64I,EAAQxuT,WAAa31F,EAAQp9B,UAAYklb,EAAellb,WAAauhb,EAAQzuT,YAChG,MAAMx6G,QAAkBijF,EAAQi0U,iBAAiB9mI,EAAY5L,GAASkzI,kBAAmBuR,EAAQx8U,EAAE+oM,cAEnGi3I,EAAQv2b,KAAK,CACXymD,WAAYssY,EAAQx8U,EAAEzsF,SACtBi1Y,aAAc,CAACj1Y,EAAU,OACxB,CACD28B,WAAYssY,EAAQx8U,EAAE3nE,QACtBmwX,aAAc,CAACnwX,EAAS,QACvB,CACD6X,WAAYssY,EAAQx8U,EAAEguB,UACtBw6R,aAAc,CAACg0B,EAAQxuT,WAAa31F,EAAQp9B,UAAYklb,EAAellb,cAI3E,OAGJ,IAAIykb,EAAa,MAEjB,GAAIO,GAAe,EAAG,CACpBP,EAAa,KACbtC,EAASj6a,OAAO88a,GAChB,GAAI7C,EAASrzb,OAAQ,CACnBqzb,EAASA,EAASrzb,OAAS,GAAGwyb,YAAc,KAG9C/lV,EAAQp8E,GAAG,CACT2mV,gBAAiB,IAAMr/D,EAAMo+I,eAAepwa,GAC5CmI,KAAM,OAGV,IAAIuoa,EAAmB,GACvB,GAAIhD,EAAU,CACZgD,EAAmBn1b,KAAKo1b,sBAE1B,GAAID,IAAqBn1b,KAAKq1b,sBAAuB,CACnDZ,EAAa,KACbtC,EAAWA,EAAWA,EAASlgb,QAAUkgb,EACzCnyb,KAAKq1b,sBAAwBF,EAG/B,GAAIV,EAAY,OACPz0b,KAAK80b,gBAAgB3C,EAAU4C,IAG1C,OAAOx1b,EAETI,oBAAoBwyb,GAClB,IAAImD,EACJnD,EAAWA,GAAYnyb,KAAKmyb,SAC5B,OAAQmD,EAAanD,KAAc,MAAQmD,SAAoB,OAAS,EAAIA,EAAWzrb,KAAI0nb,IACzF,IAAIgE,EAAoBC,EACxB,MAAO,GAAKjE,EAAQzuT,YAAc,MAAQyyT,EAAqBhE,EAAQpkZ,aAAe,MAAQooZ,SAA4B,OAAS,EAAIA,EAAmBvlb,WAAa,IAAMuhb,EAAQxuT,UAAY,MAAQyyT,EAAmBjE,EAAQnkZ,WAAa,MAAQooZ,SAA0B,OAAS,EAAIA,EAAiBxlb,cAChT/F,KAAK,KAEVtK,qBAAqBJ,GAEnB,IAAI4M,EAAS5M,EAEb,GAAIA,EAAO,CAET,IAAK,IAAIX,EAAI,EAAGA,EAAIW,EAAMT,OAAQF,IAAK,CACrC,MAAM2yb,EAAUhyb,EAAMX,GACtB,MAAM4zE,EAAS++W,EAAQ9iX,QAAU8iX,EAAUvxb,KAAKg0b,kBAAkBnjU,IAAI0gU,GACtE/+W,EAAOriD,MAAQnwB,KACfT,EAAMX,GAAK4zE,GAGf,OAAOrmE,EAETxM,sBACE,MAAM+wB,QAAmB1wB,KAAK+0G,EAAErkF,WAChC,MAAMutT,EAAavtT,EAAWutT,WAAWvsU,IAAIkra,IAC7C,IAAIzwa,EACJ,GAAI8xU,IAAeu1G,GAAqC17B,UAAW,CACjE3rZ,QAAgBnM,KAAKy1b,mCAChB,CACLtpb,QAAgB+N,MAAM+la,qBAExB,OAAO9za,EAETxM,sCACQK,KAAK+0G,EAAErkF,WACb,MAAMyha,QAAiBnyb,KAAK+0G,EAAEo9U,SAC9B,MAAM/kZ,QAAgBptC,KAAK+0G,EAAE3nE,QAC7B,IAAIjhC,EACJ,GAAIgmb,EAAU,CACZ,MAAM/iF,EAAc+iF,EAASA,EAASrzb,OAAS,GAC/C,MAAM42b,QAA6BtmF,EAAYr6P,EAAEguB,UACjD,MAAM+vT,QAAiB9yb,KAAKy/a,oCAAoCryY,EAAS,MAAOsoZ,EAAsB5oJ,GAASkzI,YAAa,CAC1H0R,eAAgB,OAElBvlb,QAAgBnM,KAAKg6S,mBAAmB84I,EAAS,MAEnD,OAAO3mb,EAETxM,oCACQK,KAAK+0G,EAAErkF,WACb,MAAMyha,QAAiBnyb,KAAK+0G,EAAEo9U,SAC9B,MAAMhlZ,QAAkBntC,KAAK+0G,EAAE5nE,UAC/B,IAAIhhC,EACJ,GAAIgmb,EAAU,CACZ,MAAM/iF,EAAc+iF,EAASA,EAASrzb,OAAS,GAC/C,MAAM42b,QAA6BtmF,EAAYr6P,EAAEguB,UACjD,MAAM+vT,QAAiB9yb,KAAKy/a,oCAAoCtyY,EAAW,KAAMuoZ,EAAsB5oJ,GAASkzI,YAAa,CAC3H0R,eAAgB,OAElBvlb,QAAgBnM,KAAKg6S,mBAAmB84I,EAAS,OAEnD,OAAO3mb,EAETxM,oBACE,MAAM+wB,QAAmB1wB,KAAK+0G,EAAErkF,WAChC,MAAMutT,EAAavtT,EAAWutT,WAAWvsU,IAAImra,IAC7C,IAAI1wa,EACJ,GAAI8xU,IAAew1G,GAAqC37B,UAAW,CACjE3rZ,QAAgBnM,KAAK21b,iCAChB,CACLxpb,QAAgB+N,MAAM6la,mBAExB,OAAO5za,EAETxM,6BACE,IAAIwM,EACJ,SAAWnM,KAAKk0b,4BAA6B,CAC3C/nb,QAAgBnM,KAAK41b,kCAChB,CACLzpb,QAAgB+N,MAAMmma,4BAExB,OAAOl0a,EAETxM,oBAAoB68B,EAAM6xM,EAAY,KAAMkhN,GAC1C,IAAK/yZ,EAAM,OAAO,KAClB+yZ,EAAkBtxb,OAAOmZ,OAAO,CAC9Bs6a,eAAgB,MACfnC,GACH,aAAcr1a,MAAM8/R,mBAAmBx9Q,EAAM6xM,EAAWkhN,GAE1D5vb,+BACE,IAAI2oB,QACEtoB,KAAK+0G,EAAErkF,WACb,MAAMotR,QAAqB99S,KAAK+0G,EAAE+oM,aAClC,MAAMq0I,QAAiBnyb,KAAK+0G,EAAEo9U,SAC9B,GAAIA,EAAU,CACZ,IAAIz5I,EAAa,EAEjB,IAAK,MAAM64I,KAAWY,EAAU,CAC9Bz5I,GAAc64I,EAAQxuT,UAAYwuT,EAAQzuT,YAE5Cx6G,QAAkBtoB,KAAKk1S,aAAasqI,iBAAiB9mI,EAAY5L,GAASkzI,YAAaliI,GAEzF,OAAOx1R,EAET3oB,6BAA6BiN,EAAS4Z,GACpC,MAAMypR,QAAiBjwS,KAAK+0G,EAAEqwM,kBAC9B,MAAM2pI,QAA8B/ub,KAAK+0G,EAAEg6U,sBAC3C,MAAMphE,QAAsC3tX,KAAK+0G,EAAE44Q,8BACnD,MAAMt/I,EAAYzhO,EAAQyhO,YAAc,MACxC,MAAM2gN,SAAgChvb,KAAK+0G,EAAEi6U,yBAA2Bpib,EAAQoib,yBAA2BD,EAAsBx9a,KACjI,MAAM48R,EAAWnuS,KAAKk1S,aAAasD,iBACnC,IAAIk5I,EAAiB9kb,EAAQ8kb,eAC7B,IAAIpuZ,EAAO,EACX,IAAIuyZ,EAAgBC,EAAiBC,EAA0B5D,EAAU6D,EACzE,IAAKtE,EAAgB,CACnBS,QAAiBnyb,KAAK+0G,EAAEo9U,SACxBT,EAAiBA,IAAmBS,EACpC,IAAKT,EAAgB,CAEnBS,EAAWA,EAASlgb,QACpB,GAAIo8N,EAAW,CACbwnN,EAAiB1D,EAASz5X,QAC1Bo9X,EAAkB,EAClBxyZ,EAAO,EAEP0yZ,EAA0BH,EAAevE,YAAcuE,EAAe9yT,UAAYyqK,GAASx9R,cACtF,CACL6lb,EAAiB1D,EAASvgb,MAC1Bkkb,EAAkBD,EAAe9yT,UACjCz/F,GAAQ,EACR0yZ,EAA0BH,EAAe9yT,UAE3CgzT,EAA2BC,EAA0BH,EAAe/yT,aAGxE,OAAO6qP,EAA8Bl1E,4BAA4Bx6S,OAAOmZ,OAAO,CAC7E+2R,SAAAA,GACCvhS,IAAU,CAACwiS,EAAmBC,EAAiB4/I,KAChD,MAAMC,EAAkBD,EAA8Bn+I,yBACtD,MAAMq+I,EAAgBF,EAA8BG,sBACpD,GAAIF,EAAgBx9a,IAAIu+R,KAAc++I,GAA0BG,EAAcxnb,MAAKsoS,GAAY8+I,EAAsB9wa,IAAIgyR,MAAa,CACpI,GAAIyhJ,EAAgB,CAClB,OAAOlra,EAAK4oR,EAAmBC,EAAiB4/I,OAG7C,CACH,MAAMxgJ,EAAaW,EAAkBp/R,UACrC,IAAIo7T,EAAmB/7B,EAAgBr/R,UAAYo/R,EAAkBp/R,UAErE,GAAIhQ,KAAKk1S,aAAa6D,oBAAqB,CACzC,MAAMpuQ,EAAUykQ,EAAkBhyQ,oBAAsBiyQ,EAAgBjyQ,oBACxEguS,GAAoBzgS,EAAU,GAAK,IAErC,IAAIsrZ,EAAqBC,EACzB,GAAI7nN,EAAW,CACb4nN,EAAsBH,EACtBI,EAAoBJ,EAAkB1qH,MACjC,CACL6qH,EAAsBH,EAAkB1qH,EACxC8qH,EAAoBJ,EAEtB,MAAOD,GAAkBI,GAAuBD,GAA2BE,EAAoBL,EAAe/yT,YAAa,CAEzH,MAAMqzT,EAAkB/hb,KAAKC,IAAI4hb,EAAqBJ,EAAe/yT,aACrE,MAAMszT,EAAgBhib,KAAKuU,IAAIuta,EAAmBF,GAClD,MAAMK,EAAgB,IAAI7nb,KAAKigS,EAAa0nJ,EAAkBF,GAC9D,MAAMK,EAAc,IAAI9nb,KAAKigS,EAAa2nJ,EAAgBH,GAC1D,MAAMM,EAAa/va,EAAK6va,EAAeC,EAAarH,GACpD,GAAIsH,IAAe,MAAO,OAAO,MAEjCR,GAA4BO,EAAYtmb,UAAYqmb,EAAcrmb,UAElE,IAAK+lb,EAA0B,CAE7BF,EAAiBxnN,EAAY8jN,EAASz5X,QAAUy5X,EAASvgb,MACzD,GAAIikb,EAAgB,CAElBG,GAA2B3nN,GAAawnN,EAAevE,YAAcuE,EAAe9yT,UAAYyqK,GAASx9R,UAEzG+lb,EAA2BC,EAA0BH,EAAe/yT,iBAInE,CACH,OAGJgzT,GAAmBxyZ,EAAO8nS,OAKlCzrU,gCAEE,OAAO,KAOT62b,kBACE,MAAMrE,EAAWnyb,KAAKmyb,SACtB,OAAOjyb,QAAQiyb,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASrzb,QAQ9Ea,iBAAiB68B,EAAM21Z,GACrBA,EAAWA,GAAYnyb,KAAKu0b,cAC5B,GAAIpC,EAAU,CACZ,MAAMjib,EAAQlQ,KAAKy2b,sBAAsBj6Z,EAAM21Z,GAC/C,OAAOA,EAASjib,IAGpBvQ,sBAAsB68B,EAAM21Z,GAC1BA,EAAWA,GAAYnyb,KAAKu0b,cAC5B,OAAOpC,EAAWA,EAASpiW,WAAUwhW,GAAW/0Z,GAAQ+0Z,EAAQpkZ,WAAa3Q,EAAO+0Z,EAAQnkZ,WAAY,EAK1G8hU,mBACE,MAAMijF,EAAWnyb,KAAKu0b,cACtB,OAAOpC,EAAWA,EAAS,GAAK,KAKlC/iF,kBACE,MAAM+iF,EAAWnyb,KAAKu0b,cACtB,OAAOpC,EAAWA,EAASA,EAASrzb,OAAS,GAAK,KAOpDa,WAAWuQ,GACT,MAAMiib,EAAWnyb,KAAKu0b,cACtB,OAAOpC,IAAa,MAAQA,SAAkB,OAAS,EAAIA,EAASjib,GAQtEvQ,sBAAsBqlB,EAAM6uT,EAAM,EAAGE,GACnC,IAAI2iH,EACJ,MAAMnrV,EAAUvrG,KAAKk1S,mBACf3pM,EAAQ6wJ,cACd,MAAMr8P,EAAKC,KAKX,IAAKglB,GAAQjlB,EAAG42b,sBAAwBD,EAAkB32b,EAAGujb,eAAiB,MAAQoT,SAAyB,GAAKA,EAAgBnlb,KAAM,OAC1I,MAAM+W,EAAWvoB,EAAGuoB,SACpB,MAAMw1R,EAAe/9S,EAAG+9S,aACxB,MAAM3wQ,EAAYptC,EAAGotC,UACrB,MAAMC,EAAUrtC,EAAGqtC,QACnB2mS,EAAUA,EAAUl0S,GAAW0J,cAAcwqS,GAAWj2B,EAIxD,IAAK3wQ,IAAcC,GAAWD,GAAanoB,GAAQA,GAAQooB,IAAY9kB,EAAU,OACjF,MAAMkua,EAAcz2b,EAAGy2b,YACvB,IAAIrE,EAAWpyb,EAAGoyb,UAAY,GAC9B,IAAIyE,EAAgBC,EACpB,GAAIL,EAAa,CACfK,EAAsB92b,EAAG02b,sBAAsBzxa,EAAMmta,GACrDyE,EAAiBzE,EAAS0E,GAC1B,IAAKD,EAAgB,OAEvB,MAAME,EAAcF,GAAkB72b,EACtC,MAAMg3b,EAAmBH,EAAiBE,EAAY3pZ,UAAYA,EAClE,MAAM6pZ,EAAsBF,EAAYxua,SACxC,MAAM2ua,EAA0BH,EAAYh5I,aAC5C,MAAMo5I,EAAsBn3b,EAAGw5I,IAAI,6BAA8Bw9S,EAAkB/xa,EAAMiya,EAAyB,CAChHvF,eAAgB,OAElB,MAAMyF,EAAsBH,EAAsBE,EAClD,MAAME,EAAU7rV,EAAQguC,IAAI,mBAAoBs6L,EAAKE,EAASjnC,GAASkzI,aACvE,MAAMqX,EAAyBD,EAAUr3b,EAAGw5I,IAAI,6BAA8BpsG,EAAWnoB,EAAM8nR,GAASkzI,YAAa,CACnH0R,eAAgB,OAGlB,GAAIkF,EAAgB,CAElBA,EAAetua,SAAW4ua,EAC1B,MAAMI,EAAat3b,KAAKg0b,kBAAkBnjU,IAAI,CAC5CvoG,SAAU6ua,EACVr5I,aAAcm5I,EACdn0T,YAAau0T,IAEflF,EAAWA,EAASlgb,MAAM,GAC1Bkgb,EAASj6a,OAAO2+a,EAAsB,EAAG,EAAGS,GAC5Cv3b,EAAGoyb,SAAWA,EACdpyb,EAAGuoB,SAAWA,EAEd,IAAK,IAAI1pB,EAAIi4b,EAAsB,EAAGzna,EAAI+ia,EAASrzb,OAAQF,EAAIwwB,EAAGxwB,IAAK,CACrE,MAAM2yb,EAAUY,EAASvzb,GACzB,GAAI2yb,EAAS,CACXA,EAAQzuT,aAAes0T,EACvB7F,EAAQxuT,WAAaq0T,QAKtB,CACH,MAAM/F,EAAkBrxb,KAAKg0b,kBAAkBnjU,IAAI,CACjDvoG,SAAU4ua,EACVp5I,aAAcm5I,EACdn0T,YAAa,IAEf,MAAMw0T,EAAat3b,KAAKg0b,kBAAkBnjU,IAAI,CAC5CvoG,SAAUA,EAAW4ua,EACrBp5I,aAAcm5I,EACdn0T,YAAau0T,IAEft3b,EAAGuoB,SAAWA,EACdvoB,EAAGoyb,SAAW,CAACd,EAAiBiG,GAElC,OAAO/rV,EAAQ6wJ,cAQjBz8P,oBAAoB43b,EAAUC,GAC5B,IAAKx3b,KAAKw2b,YAAa,OACvBe,EAAWA,GAAYv3b,KAAKkvW,aAC5BsoF,EAAWA,GAAYx3b,KAAKovW,YAC5B,GAAImoF,EAASz0T,YAAc00T,EAAS10T,YAAa,CAC/C,IAAI20T,EAAMD,EACVA,EAAWD,EACXA,EAAWE,EAGbF,EAASnqZ,QAAUoqZ,EAASrqZ,UAC5B,OAAOntC,KAAKk1S,aAAa94C,cAG3Bz8P,iBAAiBV,EAAK4a,GAEpB,GAAI5a,IAAQ,YAAc4a,EAAU,CAClC,MAAM1N,EAAS,GACf,IAAK,MAAMolb,KAAW13a,EAAU,CAE9B,MAAM69a,EAAcnG,EAAQ9rW,SAE5B,IAAKzlF,KAAK+zb,mBAAmBxC,EAAQlsW,aAAeksW,EAAQl0W,WAAar9E,KAAK+zb,mBAAmBxC,EAAQlsW,YAAa,CAEpHpnF,OAAOmZ,OAAOsgb,EAAanG,EAAQpxa,KAAKqzD,UAE1CrnE,EAAO3N,KAAKk5b,GAEZ13b,KAAK+zb,mBAAmBxC,EAAQlsW,YAAcksW,EAAQl0W,WAExDxjE,EAAW1N,EAEb+N,MAAM2oE,iBAAiB5jF,EAAK4a,GAE9Bla,eACE,MAAMwyb,EAAWnyb,KAAKmyb,SACtB,GAAIA,EAAU,CACZ,IAAK,MAAMZ,KAAWY,EAAU,CAC9BZ,EAAQ/6I,gBAGZt8R,MAAMs8R,gBAGV48I,GAAa,CAAC78a,GAAM,CAClBu3Z,cAAe+lB,MACZC,EAAgBjmb,UAAW,kBAAmB,GACnDulb,GAAa,CAACxb,GAAY,CACxB/qa,KAAM,QACNsxE,QAASm1W,MACNQ,EAAgBjmb,UAAW,gBAAiB,GACjDulb,GAAa,CAAC78a,MAAUu9a,EAAgBjmb,UAAW,wBAAyB,GAC5Eulb,GAAa,CAAC3wB,GAAM,aAAcqxB,EAAgBjmb,UAAW,gBAAiB,MAC9Eulb,GAAa,CAAC50I,GAAU,aAAcs1I,EAAgBjmb,UAAW,oBAAqB,MACtFulb,GAAa,CAAC50I,GAAU,qBAAsBs1I,EAAgBjmb,UAAW,4BAA6B,MACtG,OAAOimb,OAQT,MAAM6D,WAA0BzrJ,GAAM,CAAC60I,GAAqB4J,GAAwBqD,GAAqBc,GAAiCtG,GAA4B+D,GAAwCuH,KAE3Mx9a,IAED,MAAMqhb,UAA0Brhb,GAChC,OAAOqhb,OAGT,IAAIC,GAAoD,SAAUngC,EAAY94Z,EAAQM,EAAK83B,GACzF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAE9D,MAAM2na,WAA0DhhJ,GAI9Dx9N,oBACE,MAAO,CAAC,CACN50E,KAAM,YACNoI,KAAM,UACNjI,aAAc,QAIpB,MAAMkzb,WAA0DvgJ,GAC9D11R,2BACE,MAAO,CACL04D,WAAYs9W,KAIlB,MAAME,WAA6Cre,GACjDthI,yBACE,OAAO0/I,IAGXF,GAAa,CAAChgB,GAAY,CACxB/qa,KAAM,UACNjI,aAAc,SACXmzb,GAAqClqb,UAAW,gCAAiC,GACtF,MAAMmqb,WAA+BnrJ,GACnCltS,cACEua,SAASrb,WAITmB,KAAKi4b,OAAS,EAIdj4b,KAAK2pC,MAAQ,GAGjB,MAAMuuZ,WAAqCF,IAI3C,MAAMG,WAAmCH,GACvCr4b,cACEua,SAASrb,WAITmB,KAAKo4b,UAAY,EAKjBp4b,KAAKq4b,gBAAkB,MAKvBr4b,KAAKs4b,iBAAmB,MAIxBt4b,KAAKw8T,YAAc,KACnBx8T,KAAKu4b,oBAAsB,MAG/B,MAAMC,WAA2BxqB,GAAO/hI,IAAIY,KAC1CltS,oCACE,OAAOq4b,GAETr4b,WAAWyyC,GACTA,EAAQn0C,OAAOmZ,OAAO,CACpBqhb,sBAAuB,MACvBC,wBAAyB14b,KAAK24b,qCAC7BvmZ,GACHl4B,MAAMq2J,WAAWn+H,IAGrBwlZ,GAAa,CAACrhb,MAAUiib,GAAmB3qb,UAAW,6BAA8B,GACpF+pb,GAAa,CAACrhb,MAAUiib,GAAmB3qb,UAAW,kBAAmB,GAMzE,MAAM+qb,WAA+BJ,GACnC74b,WAAW82S,GACTv8R,MAAMitZ,WAAW1wH,GAEnB92S,WAAW82S,GACTv8R,MAAMktZ,WAAW3wH,GACjB,GAAIz2S,KAAKm6S,SAAU,CACjBn6S,KAAKm6S,SAAS6yH,SAAS1zZ,OAAOtZ,OAGlCL,oCACE,OAAOw4b,GAETx4b,qCAAqCy6S,GACnC,MAAMjqR,QAAciqR,EAAWrlM,EAAE5kF,MAC/BwZ,QAAcywQ,EAAWrlM,EAAEprE,MAC3B8uZ,QAA8Bz4b,KAAK+0G,EAAE0jV,sBACrCv6C,EAAW/tX,UAAgBA,EAAM4kF,EAAEmpS,UAEnC/wW,EAAYhd,UAAgBA,EAAM4kF,EAAE5nE,WACpCC,EAAUjd,UAAgBA,EAAM4kF,EAAE3nE,SACpC,OAAOltC,QAAQiwB,GAASwZ,GAASwD,GAAaC,IAAYqrZ,IAA0Bv6C,IAEtFv+Y,uBACE,MAAMuia,EAAQ,GACZ22B,QAAsB74b,KAAKogV,MAC3BjmC,QAAiBn6S,KAAK+0G,EAAEolM,eAClBn6S,KAAK+0G,EAAE0jV,sBACb,MAAMj8H,QAAoBriB,EAASplM,EAAEulM,SACrCrK,QAAiBkK,EAASplM,EAAEqwM,kBAC5B2pI,EAAwB,IAAIv9a,IAC5Bsnb,EAAc,GACdC,EAAsB,IAAIvnb,IAC1Bwnb,EAAgB,IAAIxnb,IACtB,IAAIynb,EAAiC,MAErC,IAAK,MAAM7+I,KAAcoiB,EAAa,CAEpC,WAAax8T,KAAKk5b,oCAAoC9+I,IAAc,eAE9DA,EAAWrlM,EAAEprE,MACnB,MAAMxZ,QAAciqR,EAAWrlM,EAAE5kF,MACjC,MAAM6+Z,QAA+B7+Z,EAAM4kF,EAAEi6U,uBAC7C,MAAM7hZ,QAAkBhd,EAAM4kF,EAAE5nE,UAChC,MAAMC,QAAgBjd,EAAM4kF,EAAE3nE,QAC9B,MAAM+kZ,QAAiBhia,EAAM4kF,EAAEo9U,SAC/B,MAAMgH,QAAsBhpa,EAAM4kF,EAAEqwM,kBACpC6zI,EAAiCA,GAAkCjK,EAEnE,GAAImD,EAAU,CACZ,IAAK,MAAMZ,KAAWY,EAAU,CAC9B,MAAMhlZ,QAAkBokZ,EAAQx8U,EAAE5nE,UAClC,MAAMC,QAAgBmkZ,EAAQx8U,EAAE3nE,QAChC0rZ,EAAYt6b,KAAK,CACf2uC,UAAAA,EACAC,QAAAA,EACAgtQ,WAAAA,SAGC,CACL0+I,EAAYt6b,KAAK,CACf2uC,UAAAA,EACAC,QAAAA,EACAgtQ,WAAAA,IAGJ,IAAIoiB,EAAcuyH,EAAsBr9a,IAAIynb,GAC5C,IAAK38H,EAAa,CAChBA,EAAc,GACduyH,EAAsBz9a,IAAI6nb,EAAe38H,GAE3Cu8H,EAAoBznb,IAAI8oS,EAAY,IAAI5oS,KACxCwnb,EAAc1nb,IAAI8oS,EAAY,IAC9BoiB,EAAYh+T,KAAK47S,GAEnB,MAAMg/I,EAAsB,IAAIrB,GAAqC,CACnEl1X,UAAWi2X,IAMb,MAAMjoJ,EAAY,CAACgoJ,EAAeO,KAAwBrK,EAAsB/wb,QAChF,MAAMq7b,EAAY,IAAI7nb,IAEtBqnb,EAAclkJ,cAAc31S,SAAQw0N,IAClC,MAAM8lO,EAAWnB,GAA2BtnU,IAAI,CAC9C2iG,KAAAA,EACA2mF,SAAAA,IAEFk/I,EAAU/nb,IAAIkiN,EAAM8lO,GACpBp3B,EAAM1ja,KAAK86b,GACXP,EAAoB/5b,SAAQ,CAACq6b,EAAWj/I,KACtC,MAAMm/I,EAAqBrB,GAA6BrnU,IAAI,CAC1D2iG,KAAAA,EACA4mF,WAAAA,IAEFi/I,EAAU/nb,IAAIkiN,EAAM+lO,GACpBP,EAActnb,IAAI0oS,GAAY57S,KAAK+6b,SAGvC,IAAIC,EAAkBC,EACtB,MAAMtsZ,EAAY+0X,EAAM,GAAG1uM,KAAKrmL,UAC9BC,EAAU80X,EAAMA,EAAMpja,OAAS,GAAG00N,KAAKpmL,QACvCssZ,EAAmB,CACjBvsZ,UAAAA,EACAC,QAAAA,EACAyjQ,UAAAA,EACA8oJ,2BAA4BV,GAE9BW,EAAqBxsZ,EAAQp9B,UAAYm9B,EAAUn9B,UAErD,GAAI4pb,EAAqBz/I,EAASjF,aAAasD,iBAAkB,CAC/DkhJ,EAAiBvrJ,SAAWyrJ,QAEvBz/I,EAAS1B,4BAA4BihJ,GAAkB,CAACtqJ,EAAmBC,EAAiBwqJ,KACjG,MAAMC,EAAoBD,EAAa/oJ,yBAGvC,GAAIgpJ,EAAkBpob,IAAImnb,GAAgB,CACxC,MAAMrlO,EAAOqmO,EAAa3oJ,oBAAoBx/R,IAAImnb,GAAe,GAC/DztH,EAAmB/7B,EAAgBr/R,UAAYo/R,EAAkBp/R,UACjEspb,EAAWD,EAAU3nb,IAAI8hN,GACzBumO,EAAkBT,EAAS98H,aAAe,IAAI39S,IAC9Cm7a,EAA0BV,EAASf,qBAAuB,IAAI/mb,IAChE,IAAK8nb,EAAS98H,YAAa,CACzBg9H,EAAmB,EACnBC,EAAa,EAEf,IAAI9vZ,EAAQ,EACVswZ,EAAyB,MACzB3xa,EAEFuxa,EAAa3oJ,oBAAoBx/R,IAAI0nb,GAAqBp6b,SAAQu8I,IAChE,MAAM6+J,EAAa7+J,EAAS6+J,WAI5B,MAAMjqR,EAAQiqR,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWjqR,MAEjF,GAAIA,GAAS2pa,EAAkBpob,IAAIye,EAAMi1R,sBAAwB6zI,GAAkC9oa,EAAM6+Z,wBAA0B8K,EAAkBpob,IAAIu+R,IAAY,CAEnK,MAAMiqJ,EAAmB9lb,KAAKC,IAAI+6R,EAAkBp/R,UAAWoqS,EAAWjqR,MAAMgd,UAAUn9B,WAC1F,MAAMmqb,EAAiB/lb,KAAKuU,IAAI0mR,EAAgBr/R,UAAWoqS,EAAWjqR,MAAMid,QAAQp9B,WACpFiqb,EAAyB,KACzB3xa,EAAW6xa,EAAiBD,EAC5B,MAAME,EAAqBrB,EAAoBrnb,IAAI0oS,GAAY1oS,IAAI8hN,GACnE,MAAM6mO,EAAmB/xa,EAAW8xR,EAAWzwQ,MAAQ,IACvDywZ,EAAmBnC,QAAUoC,EAC7BD,EAAmBzwZ,MAAQywQ,EAAWzwQ,MACtC2vZ,EAASrB,QAAUoC,EAEnB1wZ,GAASywQ,EAAWzwQ,MACpBowZ,EAAgBh7a,IAAIq7R,GACpB4/I,EAAwB1ob,IAAI8oS,EAAYggJ,OAI5C,GAAIN,EAAkBpob,IAAIu+R,GAAW,CACnCqpJ,EAASlB,WAAahtH,EAGxB,GAAIzhS,EAAO,CACT,GAAIrhB,EAAU,CAEZkxa,GAAoBlxa,EAAWqhB,EAC/B8vZ,GAAcnxa,EAEdgxa,EAAS3vZ,MAAQ6vZ,EAAmBC,OAC/B,IAAKD,EAAkB,CAC5BF,EAAS3vZ,MAAQA,GAGrB,GAAIswZ,EAAwB,CAC1BX,EAAS98H,YAAcu9H,EACvBT,EAASf,oBAAsByB,EAC/BV,EAASjB,gBAAkBiB,EAASjB,iBAAmBiB,EAASrB,OAASqB,EAASlB,WAAakB,EAAS3vZ,MAAQ,IAChH2vZ,EAAShB,iBAAmBgB,EAASrB,OAASqB,EAASlB,WAAakB,EAAS3vZ,MAAQ,SAI3F,MAAO,CACLu4X,MAAAA,EACA82B,cAAAA,IAINpB,GAAa,CAACrhb,MAAUqib,GAAuB/qb,UAAW,gBAAiB,GAC3E+pb,GAAa,CAACp5I,GAAU,eAAgBo6I,GAAuB/qb,UAAW,sBAAuB,MAIjG,MAAMysb,WAAkCpuJ,GAAM,CAACi1I,KAAoB7qa,IACjE,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAMysb,UAAkChkb,EACtC3W,cACEua,SAASrb,WACTmB,KAAKu6b,UAAY,IAAI17a,IACrB7e,KAAKgta,SAAW,IAAInuZ,IAEtBlf,YAAY66b,GACVx6b,KAAKy2S,MAAM+0H,cAAcgvB,GACzBx6b,KAAKu6b,UAAUx7a,IAAIy7a,GAErB76b,eAAe66b,GACb,GAAIx6b,KAAKy2S,MAAO,CACdz2S,KAAKy2S,MAAMi1H,iBAAiB8uB,GAE9Bx6b,KAAKu6b,UAAUjhb,OAAOkhb,GAExB76b,UAAU8sa,GACRzsa,KAAKy2S,MAAMw2H,UAAUR,GACrBzsa,KAAKgta,SAASjuZ,IAAI0tZ,GAEpB9sa,aAAa8sa,GACX,GAAIzsa,KAAKy2S,MAAO,CACdz2S,KAAKy2S,MAAMy2H,aAAaT,GAE1Bzsa,KAAKgta,SAAS1zZ,OAAOmzZ,GAEvB9sa,WAAW8ua,GACT,IAAK,MAAM+rB,KAAYx6b,KAAKu6b,UAAW,CACrCv6b,KAAKy6b,eAAeD,GAEtB,IAAK,MAAM/tB,KAAUzsa,KAAKgta,SAAU,CAClChta,KAAKkta,aAAaT,GAEpBh3H,EAAW2xH,WAAWvga,KAAK7G,KAAMyua,GAEnC9ua,6BAA6BiN,EAAS4Z,GACpC,MAAM+kF,EAAUvrG,KAAKk1S,aACrB,MAAMjF,QAAiBjwS,KAAK+0G,EAAEqwM,kBAC9B,MAAMuoE,EAAgCpiR,EAAQ8jV,iBAAiB,CAACp/I,GAAUtpR,OAAO/Z,EAAQikS,WAAa,KACtG,MAAM1C,EAAW5iM,EAAQitM,iBACzB,MAAMmhJ,EAA6B/sb,EAAQ+sb,2BAC3C,GAAIxrJ,EAAU,CACZvhS,EAAU3O,OAAOmZ,OAAO,CACtB+2R,SAAAA,GACCvhS,GAEL,OAAO+gX,EAA8Bl1E,4BAA4B7rS,GAAS,CAACugC,EAAWC,EAAS6hZ,KAC7F,MAAMC,EAAkBD,EAA8Bn+I,yBACtD,GAAI6oJ,GAA8BzK,EAAgBx9a,IAAIu+R,GAAW,CAC/D,OAAOzpR,EAAK2mB,EAAWC,EAAS6hZ,QAKxC,OAAOqL,OAGT,IAAII,GAAkD,SAAUjjC,EAAY94Z,EAAQM,EAAK83B,GACvF,IAAIzxB,EAAIzG,UAAUC,OAChBoxB,EAAI5qB,EAAI,EAAI3G,EAASo4B,IAAS,KAAOA,EAAO94B,OAAOK,yBAAyBK,EAAQM,GAAO83B,EAC3FoI,EACF,UAAW/pB,UAAY,iBAAmBA,QAAQsiZ,WAAa,WAAYxnY,EAAI9a,QAAQsiZ,SAASD,EAAY94Z,EAAQM,EAAK83B,QAAW,IAAK,IAAIn4B,EAAI64Z,EAAW34Z,OAAS,EAAGF,GAAK,EAAGA,IAAK,GAAIugC,EAAIs4X,EAAW74Z,GAAIsxB,GAAK5qB,EAAI,EAAI65B,EAAEjP,GAAK5qB,EAAI,EAAI65B,EAAExgC,EAAQM,EAAKixB,GAAKiP,EAAExgC,EAAQM,KAASixB,EAC/Q,OAAO5qB,EAAI,GAAK4qB,GAAKjyB,OAAOoB,eAAeV,EAAQM,EAAKixB,GAAIA,GAS9D,MAAMyqa,WAAiCzuJ,GAAM,CAACw3I,GAA4B8E,GAA4BnF,KAAmB/sa,IACvH,MAAMm/R,EAAan/R,EAAKzI,UACxB,MAAM8sb,UAAiCrkb,EACrC3W,UAAUwY,EAAS,IACjBnY,KAAK46b,uBAAyBzib,EAAOyib,wBAA0B56b,KAAK66b,mCACpEplJ,EAAWj6R,UAAU3U,KAAK7G,KAAMmY,GAChC,IAAKnY,KAAK86b,4BAA6B96b,KAAK86b,4BAA8B96b,KAAK+6b,wCAEjFp7b,4BACE,OAAOqhb,GAETrhb,mCACE,OAAOyxb,GAETzxb,wCACE,OAAOi5b,GAETj5b,sBACE,aAAai9Z,GAEfj9Z,iBACE81S,EAAW55R,eAAepd,MAAMuB,KAAMnB,WACtCmB,KAAK+rb,4BAA8B/rb,KAAK+rb,6BAA+BG,GACvElsb,KAAKysb,kCAAoCzsb,KAAKysb,mCAAqCM,GAErFptb,UACE,OAAOytS,GAAYpiE,aAErBrrO,6BACE,OAAOq7b,GAETr7b,4BACE,OAAOg4b,GAETh4b,iCACE,OAAO+tb,GAET/tb,iCACE,OAAO6tb,GAET7tb,+BACE,OAAO26b,GAuCT36b,yBAAyB6gT,EAAWC,EAAS5zS,EAAMoub,GACjD,IAAIC,EACJ,GAAID,EAAkB,CACpBC,EAAsB3zb,MAAMC,QAAQyzb,GAAoBA,EAAmB,CAACA,GAE9E,MAAME,EAAgBtyJ,GAAG2X,EAAUY,cAAcz5S,MAAK40S,IACpD,IAAI6+I,EACJ,OAAO7+I,EAAWkE,UAAYA,MAAc26I,EAAuBF,KAAyB,MAAQE,SAA8B,GAAKA,EAAqBxvb,SAAS2wS,OAEvK,GAAI4+I,EAAe,OAAOluJ,GAA2BouJ,sBACrD,SAAUr7b,KAAKs7b,mBAAmB96I,EAAWC,EAAS5zS,EAAMqub,GAAsB,CAChF,OAAOjuJ,GAA2BsuJ,iBAEpC,OAAOtuJ,GAA2BuuJ,QA6BpC77b,wBAAwB6gT,EAAWC,EAAS5zS,EAAMoub,GAChD,MAAMQ,QAAyBz7b,KAAK07b,mBAAmBl7I,EAAWC,EAAS5zS,EAAMoub,GACjF,OAAOQ,IAAqBxuJ,GAA2BuuJ,QAEzD77b,uCAAuC6gT,EAAWC,GAChD,MAAO,CAEPA,EAAQ1rM,EAAEg0U,kCAEVtoI,EAAQ1rM,EAAEi0U,iCAEZrpb,yBAAyB6gT,EAAWC,EAAS5zS,EAAMoub,GACjD,MAAMU,EAAkB37b,KAAKs8S,qBAAqB/hO,WAClD,MAAMgiO,EAAa,IAAIo/I,EAAgB,CACrCn7I,UAAAA,EACAC,QAAAA,EACA5zS,KAAAA,IAEF,MAAM+ub,EAAS57b,KAAKyua,QAAQmtB,OAAO,CACjCxqW,WAAY,MACZ24U,mBAAoB,UAEtB,GAAIkxB,EAAkB,CACpB,IAAK1zb,MAAMC,QAAQyzb,GAAmB,CACpCA,EAAmB,CAACA,GAEtBA,EAAiBj8b,SAAQu9S,GAAcq/I,EAAO1uB,aAAa3wH,KAE7Dq/I,EAAO3uB,UAAU1wH,GACjBA,EAAWhxM,QAAUvrG,KAcrB,UACQuQ,QAAQ/G,IAAIxJ,KAAK67b,uCAAuCr7I,EAAWC,GAAS52S,KAAIjL,GAAKg9b,EAAOl5B,UAAU9ja,MAC5G,OAAO,MACP,MAAOoF,GAEP,GAAI,SAASyD,KAAKzD,GAAI,OAAO,KAE7B,IAAK,YAAYyD,KAAKzD,GAAI,CACxB,MAAMA,IAMZrE,6BAA6B48S,EAAYu/I,GACvC,OAAO97b,KAAK61U,kBAAkBt5B,EAAWiE,UAAWjE,EAAWkE,QAASlE,EAAW1vS,KAAMivb,IAG7FpB,GAAW,CAAC9iB,GAAY,CACtB/qa,KAAM,SACNjI,aAAcuoS,GAAqB2gJ,WAChC6M,EAAyB9sb,UAAW,4BAA6B,GACtE6sb,GAAW,CAAC9iB,GAAY,CACtB/qa,KAAM,UACNjI,aAAc,QACX+1b,EAAyB9sb,UAAW,8CAA+C,GACxF,OAAO8sb,OAWT,MAAMvoB,WAAkDt5Y,GAAYk8Y,KAClEjna,mBACE,MAAO,4CAETpO,iBACE,OAAOK,KAAKm7B,EAAE,qBAEhBx7B,QAAQ48S,GACNA,EAAW9iJ,OAAS,OAQxB,MAAMuhS,WAAgCrgB,GAKpCh7a,yBACE,IAAKK,KAAK+7b,qBAAsB,CAC9B,MAAMzpH,EAAetyU,KAAKg8b,kBAC1Bh8b,KAAK+7b,qBAAuBzpH,EAAal0U,QAAOm+S,GAEhDA,EAAWiE,YAAcjE,EAAWkE,SAAWlE,EAAWiE,UAAUzoQ,SAASwkQ,EAAWkE,UAAYlE,EAAWkE,QAAQ1oQ,SAASwkQ,EAAWiE,aAE7I,OAAOxgT,KAAK+7b,qBAEdp8b,kCAAkCwY,GAChC,MAAO,CAACnY,KAAKstb,wCAAwCz8T,IAAI14G,GAASnY,KAAKqtb,4CAA4Cx8T,IAAI14G,IAEzHxY,sCAAsC48S,EAAYv3R,EAAMutB,GACtD,OAAOgqQ,EAAW9iJ,QAAUv/I,MAAM6ha,sCAAsCx/H,EAAYv3R,EAAMutB,GAE5F5yC,iBACE,IAAKK,KAAKk1a,aAAc,CACtB,MAAM+mB,EAAsBj8b,KAAKk8b,yBACjC,MAAM/vb,EAAS,GACf,IAAK,MAAMowS,KAAc0/I,EAAqB,CAC5C9vb,EAAO3N,QAAQwB,KAAKm8b,kCAAkC,CACpD5/I,WAAAA,KAKJ,IAAK0/I,EAAoBn9b,OAAQ,CAC/BqN,EAAO3N,KAAKwB,KAAKo8b,+CAA+CvrU,SAAU32G,MAAMy7Z,kBAElF31a,KAAKk1a,aAAe/oa,EAEtB,OAAOnM,KAAKk1a,cAGhBwlB,GAAW,CAACtlC,GAAegd,KAA6C4oB,GAAwBntb,UAAW,sDAAuD,GAClK6sb,GAAW,CAACtlC,GAAe+d,KAA8B6nB,GAAwBntb,UAAW,+CAAgD,GAC5I6sb,GAAW,CAACtlC,GAAege,KAAkC4nB,GAAwBntb,UAAW,mDAAoD,GAUpJ,MAAMwub,WAAmBr0U,GAEvBj6G,mBACE,MAAO,aAGTlB,kBACE,MAAO,aAITtN,YACE,MAAM+8b,EAAapib,MAAM3a,MACvBgmF,EAAQvlF,KAAK4rE,MAAMiB,QAAQyvX,GAC7B,OAAO/2W,GAAS+2W,EAElB/8b,UAAUiO,GACR0M,MAAM3a,MAAQiO,GAKlB6ub,GAAWzlX,YACXylX,GAAWn0b,OAAS,aAWpB,MAAMq0b,WAAsBF,GAE1Btub,mBACE,MAAO,gBAGTlB,kBACE,MAAO,gBAETgV,2BACE,MAAO,CACL86K,WAAY,KACZ1E,aAAc,OACdpK,SAAU,MAKVjiH,MAAO,KACPixH,YAAaozG,GACJA,EAASxrS,MAAQzE,KAAKm7B,EAAE,uBAEjC2hK,qBAAsB,CAACmzG,EAAU15R,KAC/B,IAAIimb,EAAcC,EAAsB/rJ,EACxCT,EAAWA,KAAcusJ,EAAejmb,EAAMq1D,SAAW,MAAQ4wX,SAAsB,OAAS,GAAKC,EAAuBD,EAAajxV,WAAa,MAAQkxV,SAA8B,OAAS,EAAIA,EAAqBr3I,mBAC9N,QAAS1U,EAAYT,KAAc,MAAQS,SAAmB,OAAS,EAAIA,EAAUjsS,OAASzE,KAAKm7B,EAAE,yBAM3G57B,YACE,OAAO2a,MAAM3a,MAEfA,UAAUiO,GACR,GAAIA,GAAKA,EAAE8pB,WAAa9pB,EAAE8pB,YAAa,CACrC9pB,EAAI,KAEN0M,MAAM3a,MAAQiO,GAKlB+ub,GAAc3lX,YACd2lX,GAAcr0b,OAAS,gBAgBvB,MAAMw0b,WAA+BxjO,GAAO14M,MAAM2kU,KAEhDp3U,mBACE,MAAO,yBAETlB,kBACE,MAAO,mBAETo1C,sBACE,MAAO,CACL1rC,MAAO,WACPtL,KAAM,WACNyvN,OAAQ,CACN7tN,KAAM0vb,GAAc1vb,KACpB0gL,UAAW,KACXyoB,aAAc,QAMpBr2M,gBAAgB4rG,GACd,GAAIA,EAAS,CAEXvrG,KAAKu4S,gBAAkBhtM,EAAQgtM,gBAC/Bv4S,KAAK06N,OAAO9uJ,MAAQ2/B,EAAQgqM,sBAGhC51S,sBAAsB21S,GACpBp7R,MAAMqrU,sBAAsBjwC,GAC5B,GAAIA,EAAe,CACjBA,EAAcnmR,GAAG,CACf1qB,KAAM,gBACNkpG,OAAQ,mBACRrxF,QAAStc,QAOfL,kBAAiB6yE,OACfA,EAAMD,QACNA,IAEA,MAAM6S,EAAS7S,EAAQvyE,KAAKuW,OAC5B,GAAI6uE,EAAQ,CACV,IAAIu3W,EAEJ,UAAWv3W,EAAOvrE,WAAa,YAAc8ib,EAAgBv3W,EAAO7lF,SAAW,MAAQo9b,SAAuB,OAAS,EAAIA,EAAchyb,MAAQy6E,EAAOvrE,SAAU,CAChK,OAEF7Z,KAAKs/N,YAAY9sJ,IAKrB7yE,UAASJ,MACPA,IAEA,GAAIA,IAAUS,KAAKu4S,gBAAiB,CAClC,MAAO,QACF,GAAIh5S,GAASA,EAAMoL,GAAI,CAC5B,MAAM6nE,EAASxyE,KAAK06N,OAAO9uJ,MAAMiB,QAAQttE,EAAMoL,IAC/C,OAAO6nE,GAAUA,EAAOxyE,KAAK06N,OAAOziC,eAAiB,OAChD,CACL,MAAO,KAMb8nC,GAAYkC,mBAAmBy6N,IAC/BA,GAAuBx0b,OAAS,yBAqBhC,MAAM00b,WAAoB1jO,GAExBnrN,mBACE,MAAO,cAETlB,kBACE,MAAO,QAETgwb,2BACE,OAAO,KAETxjX,oBACE,MAAO,CAAC,eAEVp3B,sBACE,MAAO,CACLh3C,KAAM,IACN/D,MAAO,GACPoyC,SAAU,GACV2hL,QAAS,eACTP,OAAQ,MACRoB,SAAU,MACVC,UAAW,MACXoG,WAAY,MACZjP,YAAa,CAAC,CACZ3zN,MAAO,GACN,CACDA,MAAO,EACP0L,KAAM,KAMZtL,YACEK,KAAK88b,YAAY/gb,UAInB7U,UAAUA,GACRgT,MAAMhT,MAAQA,EACdlH,KAAK88b,YAAY51b,MAAQA,EAE3BA,YACE,OAAOgT,MAAMhT,MAEfvH,WAAW+iF,EAASzjF,EAAKM,GAEvB,GAAIN,IAAQ,cAAe,CACzBe,KAAK88b,YAAY79b,GAAOM,EAE1B,OAAO2a,MAAM4oE,cAAcjkF,WAE7Bc,mBACE,MAAMI,EAAKC,KACX,MAAM88b,EAAc,IAAI7pO,GAAM,CAC5Bt6M,MAAO5Y,EAAGk2N,KACVhgG,SAAUl2H,EAAGk2N,KAAKl8F,UAClBjkH,IAAK,mBACLugC,MAAO,QACP68K,YAAanzN,EAAGmzN,YAChB98F,cAAe,QAEjBn4H,OAAOmB,iBAAiB09b,EAAa,CACnC51b,MAAO,CACLvH,MACE,OAAOI,EAAGmH,OAEZvH,IAAIuH,GACFlH,KAAKy2C,QAAQp1C,MAAM6F,MAAQ,GAAGA,MAC9BlH,KAAKi5C,OAASl5C,EAAGmH,QAGrBD,OAAQ,CACNtH,MACE,OAAOK,KAAKk5C,SAEdv5C,IAAIsH,GACFjH,KAAKy2C,QAAQp1C,MAAM4F,OAAS,GAAGA,MAC/BjH,KAAKk5C,QAAUjyC,MAIrB61b,EAAY51b,MAAQnH,EAAGmH,MACvB,OAAO41b,EAETA,kBACE,MAAM/8b,EAAKC,KACX,IAAKD,EAAGg9b,aAAc,CACpBh9b,EAAGg9b,aAAeh9b,EAAGi9b,mBAEvB,OAAOj9b,EAAGg9b,aAIZp9b,UAAS2+N,YACPA,EAAWw+N,YACXA,EAAc98b,KAAK88b,cAEnBA,EAAY71b,OAASjH,KAAKi2N,KAAKzmD,UAC/BstR,EAAYhkQ,UAGZ,MAAMmkQ,EAAoBH,EAAYrmZ,QAAQyc,UAAU,MACxD+pY,EAAkBztY,gBAAgB,MAClCytY,EAAkBr+Y,UAAU98C,OAAO,oBACnCw8N,EAAY5sK,UAAY,GACxB4sK,EAAY78N,YAAYw7b,IAK5Bl9N,GAAYkC,mBAAmB26N,IAC/BA,GAAY10b,OAAS,cAMrB,MAAMg1b,GAAyB,CAACj9P,EAAU0a,KACxC,GAAI1a,IAAa0a,EAAU,CACzB,MAAM,IAAIjqM,MAAM,uDAWpB,IAAI8pT,GAAiBttS,GAAU,MAAMstS,UAAuBttS,GAAU7R,IACpEtN,mBACE,MAAO,gBAoBTwqU,gBACE,OAAOv4U,KAAKq1S,WAGdkjC,cAAc3sQ,GACZ5rE,KAAKq1S,WAAazpO,EAUpBypO,iBACE,IAAIY,EACJ,OAAQA,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAcZ,WAEtG8nJ,4BACE,MAAM5xV,EAAUvrG,KAAKo9b,YACrB,OAAQ7xV,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQqvM,kBAAoB,KAGxFvF,eAAezpO,GACbsxX,GAAuBl9b,KAAKq1S,WAAYzpO,GAU1CwpO,sBACE,IAAIsB,EACJ,OAAQA,EAAiB12S,KAAKurG,WAAa,MAAQmrM,SAAwB,OAAS,EAAIA,EAAetB,gBAGzGA,oBAAoBxpO,GAClBsxX,GAAuBl9b,KAAKo1S,gBAAiBxpO,GAU/CupO,sBACE,IAAIuC,EACJ,OAAQA,EAAiB13S,KAAKurG,WAAa,MAAQmsM,SAAwB,OAAS,EAAIA,EAAevC,gBAGzGA,oBAAoBvpO,GAClBsxX,GAAuBl9b,KAAKm1S,gBAAiBvpO,GAU/C0pO,oBACE,IAAIqC,EACJ,OAAQA,EAAiB33S,KAAKurG,WAAa,MAAQosM,SAAwB,OAAS,EAAIA,EAAerC,cAGzGA,kBAAkB1pO,GAChBsxX,GAAuBl9b,KAAKs1S,cAAe1pO,GAS7C2pO,2BACE,IAAIqC,EACJ,OAAQA,EAAiB53S,KAAKurG,WAAa,MAAQqsM,SAAwB,OAAS,EAAIA,EAAerC,qBAGzGA,yBAAyB3pO,GACvBsxX,GAAuBl9b,KAAKu1S,qBAAsB3pO,KAqEtD,MAAMyxX,WAAwB7iI,GAAcC,GAAqB+yH,GAA4B9kJ,OAAO/sN,OA+BlGxrD,YACE,MAAMo7E,QACFA,GACEvrG,KACJmwB,EAAQjW,MAAMiW,MAEhB,GAAIo7E,IAAY,MAAQA,SAAiB,GAAKA,EAAQsiN,sBAAuB,CAC3E,OAAOtiN,EAAQ8pM,WAAWxoO,QAAQ18C,GAEpC,OAAOA,EAETA,UAAUA,GACRjW,MAAMiW,MAAQA,EAEhBgqR,eACE,MAAM5uM,QACFA,GACEvrG,KACJm6S,EAAWjgS,MAAMigS,SAEnB,GAAI5uM,IAAY,MAAQA,SAAiB,GAAKA,EAAQsiN,sBAAuB,CAC3E,OAAOtiN,EAAQ+pM,cAAczoO,QAAQstO,GAEvC,OAAOA,EAETA,aAAaA,GACXjgS,MAAMigS,SAAWA,EAGnBugB,uBACE,OAAO16T,KAAK26S,sBAAwB36S,KAAK26T,sBAAsB36T,KAAKmwB,MAAOnwB,KAAKm6S,UAAYn6S,KAAK26T,sBAAsB36T,KAAK+0G,EAAE5kF,MAAMi9Y,KAAMpta,KAAK+0G,EAAEolM,SAASizH,OAG9Jlua,EAAgBm+b,GAAiB,QAAS,mBAC1Cn+b,EAAgBm+b,GAAiB,uBAAwB,MACzDA,GAAgBn1b,OAAS,kBA6CzB,MAAMo1b,WAAwB9iI,GAAcmB,GAAqB6gH,GAA2B9zI,OAAOj8L,OACjG5qF,2BACE,MAAO,CACL04D,WAAY8iX,KAIlBn+b,EAAgBo+b,GAAiB,QAAS,mBAC1CA,GAAgBp1b,OAAS,kBAUzB,MAAMq1b,WAA8B/iI,GAAc3jB,GAAsBnO,OAAO/sN,MAuE7E5tE,mBACE,MAAO,yBAKXwvb,GAAsBr1b,OAAS,wBAgB/B,MAAMs1b,WAAsBhjI,GAAck/G,GAAkBhxI,OAAO/sN,MAEjE5tE,mBACE,MAAO,gBAyCTsrE,oBACE,MAAO,CAkCP,CACE50E,KAAM,WACNq0E,SAAU,KACVl0E,aAAc,OAIlBjF,WACE,OAAOK,KAAKyE,MAAQ,GAEtBod,2BACE,MAAO,CACLy2R,2BAA4BilJ,KAIlCC,GAAct1b,OAAS,gBAgBvB,MAAMu1b,WAA6BjjI,GAAciiH,GAAgC/zI,OAAOj8L,MAEtF5qF,2BACE,MAAO,CACL6kE,KAAM,KACNnM,WAAYijX,GAKZ7qI,aAAc,IAKdC,aAAc,IACd5rN,QAAS,cAKfy2V,GAAqBv1b,OAAS,uBA+D9B,MAAMw1b,WAAwBljI,GAAckzH,GAA4BhlJ,OAAOuqC,MAY7EllU,mBACE,MAAO,kBAET4vb,kCACE,OAAO,KAKTn9I,gBACE,IAAIvK,EACJ,IAAKA,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,GAAKA,EAAc4X,sBAAuB,CAC9G,OAAO7tT,KAAKurG,QAAQ8pM,WAAWxoO,QAAQ3yD,MAAMsmS,WAE/C,OAAOtmS,MAAMsmS,UAEfA,cAAcx7R,GACZ9K,MAAMsmS,UAAYx7R,EAEpBy7R,cACE,IAAI/J,EACJ,IAAKA,EAAiB12S,KAAKurG,WAAa,MAAQmrM,SAAwB,GAAKA,EAAemX,sBAAuB,CACjH,OAAO7tT,KAAKurG,QAAQ8pM,WAAWxoO,QAAQ3yD,MAAMumS,SAE/C,OAAOvmS,MAAMumS,QAEfA,YAAYluQ,GACVr4B,MAAMumS,QAAUluQ,GAKpBmrZ,GAAgBx1b,OAAS,kBA4CzB,MAAM01b,WAAwBpjI,GAAcsa,GAAqB4nG,GAA2Bh0I,OAAOj8L,OACjG5qF,2BACE,MAAO,CACL04D,WAAYmjX,KAIlBE,GAAgB11b,OAAS,kBASzB,IAAI21b,GAAoB3wa,GAAU,MAAM2wa,UAAyB3wa,EAC/Dnf,mBACE,MAAO,mBAaT+vb,gBACE,OAAO99b,KAAK4ub,YAAc,EAO5BmP,kBACE,OAAO/9b,KAAK4ub,aAAe,IAO7BoP,mBACE,OAAOh+b,KAAK89b,YAAc99b,KAAK+9b,YAGjCp+b,OACE,MAAMsmF,EAAO/rE,MAAM+rE,QAAQpnF,WAC3BonF,EAAK2oW,YAAc,EACnB3oW,EAAKd,eACL,OAAOc,EAQTg4W,0BACE,MAAM1+b,SAAeS,KAAK4ub,cAAgB,WAAa16a,MAAMlU,KAAK4ub,aAAe5ub,KAAK4ub,YAAc,EACpG,OAAO5ub,KAAKk+b,wBAAwB3+b,GAEtCI,wBAAwBJ,EAAQ,GAC9B,GAAIA,GAAS,GAAI,CACf,OAAO6U,KAAKkxB,MAAM/lC,GAEpB,OAAO6U,KAAK+oB,MAAM59B,GAEpB0+b,wBAAwB1+b,GACtBS,KAAK4ub,YAAcrvb,IAcvB,MAAM4+b,WAA0B/M,GAAyB1oJ,OAAOk9B,IAAUplT,MAAMswT,GAAiB+sH,GAAkBjtH,KACjH7iU,mBACE,MAAO,oBAgBTqiE,WACE,OAAOpwE,KAAKmwB,OAGhBgua,GAAkBj2b,OAAS,oBA0F3B,MAAMk2b,WAAmBzG,GAAkBjvJ,OAAOk9B,IAAUplT,MAAMmuT,GAAmBnU,GAAesW,GAAiB+sH,GAAkBjtH,KA8JrI7iU,mBACE,MAAO,aAETsrE,oBACE,MAAO,CAoJP,CACE50E,KAAM,iBACNoI,KAAM,UACNjI,aAAc,OAOhB,OAeA,CACEH,KAAM,WACN05E,QAAS5+E,GAASA,EAAQ,IAAIkoF,GAASloF,GAAS,MAgBlD,CACEkF,KAAM,YACN05E,QAAS5+E,GAASA,EAAQ,IAAIkoF,GAASloF,GAAS,OAGpDI,8BACE,OAAOw+b,GAITx+b,eAAe68B,EAAMlU,EAAUsqK,EAAU,MACvCtqK,EAAW,IAAIm/D,GAASn/D,GACxB,OAAO,IAAI9Z,KAAKguB,EAAKxsB,WAAa4iL,EAAU,GAAK,GAAKtqK,EAASua,cAEjEsK,gBACE,IAAIN,EACJ,GAAI7sC,KAAKi8T,aAAc,CACrBpvR,EAAK7sC,KAAK0R,IAAI,iBACT,CACL,IAAIqrS,EAEJlwQ,GAAMkwQ,EAAmB/8S,KAAK68S,cAAgB,MAAQE,SAA0B,EAAIA,EAAmB7iS,MAAMizB,UAE/G,GAAIntC,KAAK+hU,OAAQ,CACfl1R,EAAK7sC,KAAKqQ,YAAY6gU,mBAAmBrkS,GAE3C,OAAOA,EAETM,cAAcA,GACZ,MAAMptC,EAAKC,KACX,GAAID,EAAGq5E,SAAU,CACfr5E,EAAG88S,WAAa1vQ,EAChBptC,EAAGuR,IAAI,CACL67B,UAAAA,QAEG,CACLjzB,MAAMizB,UAAYA,EAClB,GAAIptC,EAAG2f,SAAU,CACf3f,EAAGqxU,cAAgB,KACnBrxU,EAAGsxU,YAAc,OAIvBjkS,cACE,IAAIP,EACJ,GAAI7sC,KAAKi8T,aAAc,CACrBpvR,EAAK7sC,KAAK0R,IAAI,eACT,CACL,IAAIsrS,EAEJnwQ,GAAMmwQ,EAAiBh9S,KAAK88S,YAAc,MAAQE,SAAwB,EAAIA,EAAiB9iS,MAAMkzB,QAEvG,GAAIptC,KAAK+hU,OAAQ,CACfl1R,EAAK7sC,KAAKqQ,YAAY8gU,iBAAiBtkS,GAEzC,OAAOA,EAETO,YAAYA,GACV,MAAMrtC,EAAKC,KACX,GAAID,EAAGq5E,SAAU,CACfr5E,EAAG+8S,SAAW1vQ,EACdrtC,EAAGuR,IAAI,CACL87B,QAAAA,QAEG,CACLlzB,MAAMkzB,QAAUA,EAChB,GAAIrtC,EAAG4f,UAAW,CAChB5f,EAAGqxU,cAAgB,KACnBrxU,EAAGsxU,YAAc,OAMvBD,oBACE,MAAMrxU,EAAKC,MACT0f,SACEA,EAAQytB,UACRA,GACEptC,EACJqxU,EAAgBrxU,EAAGs+b,eACrB,IAAIlyb,EACJ,GAAIilU,EAAe,CACjBjlU,EAASilU,MACJ,CACL,GAAI1xT,EAAU,CACZvT,EAASpM,EAAGu+b,eAAenxZ,EAAWztB,EAAU,OAChD3f,EAAGs+b,eAAiBlyb,MACf,CACLA,EAASghC,GAGb,OAAOhhC,EAETilU,kBAAkB7xU,GAChBS,KAAKq+b,eAAiB9+b,EAExB8xU,kBACE,MAAMtxU,EAAKC,MACT2f,UACEA,EAASytB,QACTA,GACErtC,EACJsxU,EAActxU,EAAGw+b,aACnB,IAAIpyb,EACJ,GAAIklU,EAAa,CACfllU,EAASklU,MACJ,CACL,GAAI1xT,EAAW,CACbxT,EAASpM,EAAGu+b,eAAelxZ,EAASztB,EAAW,MAC/C5f,EAAGw+b,aAAepyb,MACb,CACLA,EAASihC,GAGb,OAAOjhC,EAETklU,gBAAgB9xU,GACdS,KAAKu+b,aAAeh/b,EAEtBmgB,eACE,OAAO1f,KAAK0R,IAAI,YAElBgO,aAAangB,GACXS,KAAKoxU,cAAgB,KACrBpxU,KAAKsR,IAAI,WAAY/R,GAEvBogB,gBACE,OAAO3f,KAAK0R,IAAI,aAElBiO,cAAcpgB,GACZS,KAAKqxU,YAAc,KACnBrxU,KAAKsR,IAAI,YAAa/R,GAOxBi/b,qBACE,OAAOx+b,KAAKoxU,cAOdqtH,mBACE,OAAOz+b,KAAKqxU,YAgBd1xU,WAAWwzC,GACT,OAAQA,GAEN,IAAK,iBACL,IAAK,eACH,OAAO,MAET,IAAK,cACL,IAAK,sBACH,OAAOnzC,KAAKkvE,OAEd,IAAK,UACL,IAAK,WACL,IAAK,eACH,OAAOlvE,KAAKkvE,QAAUlvE,KAAKwxU,kBAE/B,OAAOt3T,MAAMkhJ,WAAWjoH,GAG1BmnQ,eACE,MAAM/uM,QACFA,GACEvrG,KACJs6S,EAAWpgS,MAAMogS,SAEnB,GAAI/uM,IAAY,MAAQA,SAAiB,GAAKA,EAAQsiN,wBAA0BvT,EAAU,CACxF,OAAO/uM,EAAQ4pM,gBAAgBjxS,QAAQ6qF,SAAS,QAAS/uF,MAE3D,OAAOs6S,EAETA,aAAaA,GACXpgS,MAAMogS,SAAWA,EAGnB36S,iBAAiBiN,GACf,MAAMulb,SACFA,GACEnyb,KACJmM,EAAS+N,MAAMuE,iBAAiB7R,GAElC,GAAIT,GAAUgmb,EAAU,CACtBhmb,EAAOgmb,SAAWA,EAAStob,KAAI0nb,GAAWA,EAAQ9ya,iBAAiB7R,KAErE,OAAOT,GAGXjN,EAAgBk/b,GAAY,kBAAmB,MAC/CA,GAAWl2b,OAAS,aA+CpB,MAAMw2b,WAAmBlkI,GAAcmJ,GAAsB6B,GAAqBxF,GAAemD,GAAcxE,GAAgBqiH,GAAsBt4I,OAAOj8L,WAG1J5qF,2BACE,MAAO,CACL04D,WAAY6jX,KAKlBl/b,EAAgBw/b,GAAY,QAAS,cACrCA,GAAWx2b,OAAS,aAMpB,MAAMy2b,WAA0B7pV,GAC9BjoG,WACE,MAAO,oBAETlN,UAAUwY,GACR,IAAIotE,MACFA,EAAKvY,QACLA,EAAOC,QACPA,GACE90D,EAEJ,GAAI60D,EAAQmlX,UAAYllX,EAAQklX,SAAU,CACxCllX,EAAUvuE,EAAe,GAAIuuE,GAC7BD,EAAUtuE,EAAe,GAAIsuE,GAC7B,MAAM4xX,EAAkB3xX,EAAQklX,SAASlgb,QACvC4sb,EAAkB7xX,EAAQmlX,SAASlgb,QACrC,IAAIwib,EAAa,MAKjBxnX,EAAQklX,SAASnzb,SAAQ,CAACuyb,EAASrhb,KACjC,MAAM4ub,EAAe9xX,EAAQmlX,SAAS1sb,QAAQ8rb,GAG9C,GAAIuN,GAAgB,EAAG,CACrBF,EAAgB1ub,GAAS2ub,EAAgBC,GAAgB,CAACvN,GAC1DkD,EAAa,SAGjB,GAAIA,EAAY,CACdxnX,EAAQklX,SAAWyM,EACnB5xX,EAAQmlX,SAAW0M,GAGvB,GAAI5xX,EAAQklX,SAAU,CAEpBllX,EAAQklX,SAAWllX,EAAQklX,SAAStob,KAAI0nb,GAC/Bhqb,MAAMC,QAAQ+pb,GAAWA,EAAUvxb,KAAK++b,oBAAoBxN,KAGvE,GAAIvkX,EAAQmlX,SAAU,CAEpBnlX,EAAQmlX,SAAWnlX,EAAQmlX,SAAStob,KAAI0nb,GAC/Bhqb,MAAMC,QAAQ+pb,GAAWA,EAAUvxb,KAAK++b,oBAAoBxN,KAGvE,OAAOr3a,MAAMsB,UAAU,CACrB+pE,MAAAA,EACAvY,QAAAA,EACAC,QAAAA,IAOJttE,oBAAoB4xb,GAClB,GAAIA,EAAQ9iX,QAAS,CACnB,MAAMv0C,EAAOq3Z,EAAQ9rW,SACrBvrD,EAAK4oG,YAAcyuT,EAAQzuT,YAC3B5oG,EAAK6oG,UAAYwuT,EAAQxuT,UACzB,MAAO,CAACwuT,EAASr3Z,GAEnB,MAAO,CAAC,KAAMq3Z,GAIhB5xb,sBAAsBq/b,GACpB,MAAOzN,EAASr3Z,GAAQ8ka,EACxB,GAAIzN,IAAYA,EAAQr1a,YAAa,CACnCje,OAAOmZ,OAAOm6a,EAASr3Z,GACvB,OAAOq3Z,EAET,OAAOr3Z,EAETv6B,OACE,MAAMstE,QACJA,GACEjtE,KACJ,GAAIitE,EAAQklX,SAAU,CACpBllX,EAAQklX,SAAWllX,EAAQklX,SAAStob,IAAI7J,KAAKi/b,uBAE/C/kb,MAAMw3F,OAER/xG,OACE,MAAMqtE,QACJA,GACEhtE,KACJ,GAAIgtE,EAAQmlX,SAAU,CACpBnlX,EAAQmlX,SAAWnlX,EAAQmlX,SAAStob,IAAI7J,KAAKi/b,uBAE/C/kb,MAAMy3F,QAGVgtV,GAAkBz2b,OAAS,oBA0E3B,MAAMg3b,WAAsB1kI,GAAc0D,GAAmBo8H,GAA0B5xJ,OAAOj+D,OAwB5F18N,mBACE,MAAO,gBAITusS,eACE,IAAIypB,EACJ,MAAMx4N,QACJA,GACEvrG,KAEJ,GAAIurG,IAAY,MAAQA,SAAiB,IAAMw4N,EAAwBx4N,EAAQ4pM,gBAAgBjxS,QAAQyrF,YAAc,MAAQo0O,SAA+B,GAAKA,EAAsB5pB,SAAU,CAC/L,IAAIglJ,EACJ,OAAQA,EAAyB5zV,EAAQ4pM,gBAAgBjxS,QAAQ6qF,SAAS,WAAY/uF,SAAW,MAAQm/b,SAAgC,EAAIA,EAAyB,IAAItgb,IAE5K,OAAO3E,MAAMogS,SAEfA,aAAaA,GACXpgS,MAAMogS,SAAWA,GAKrB4kJ,GAAch3b,OAAS,gBA6CvB,MAAMk3b,WAAsB5kI,GAAcmD,GAAmByjH,GAAyB14I,OAAOj8L,OAC3F5qF,2BACE,MAAO,CACL04D,WAAY2kX,KAIlBE,GAAcl3b,OAAS,gBAKvB,MAAMkrG,GAAwB,CAAC7tB,EAAOvY,EAASC,KAE7C,GAAIsY,EAAM85W,kBAAmB,CAC3B,OAAO,IAAIV,GAAkB,CAC3Bp5W,MAAAA,EACAvY,QAAAA,EACAC,QAAAA,IAGJ,OAAO,IAAI6nC,GAAa,CACtBvvB,MAAAA,EACAvY,QAAAA,EACAC,QAAAA,KA4EJ,MAAMqyX,WAA6BjoV,GACjCx1F,2BACE,MAAO,CACLuxF,sBAAuBA,KAI7BksV,GAAqBp3b,OAAS,uBAgB9B,IAAIiuU,GAAsBjpT,GAAU,MAAMipT,WAA4BjpT,GAAU7R,IAAQmF,MAAM01T,KAC5F12U,0BACE,MAAO,CACL+uT,gCAAiC,kCACjCC,gCAAiC,mCAGrC7uT,aAAa4b,GACX,MAAMxb,EAAKC,KACXka,MAAMsB,aAAaD,GAEnBxb,EAAGg7U,oBAAoBh7U,EAAGw1S,sBAC1Bx1S,EAAGg7U,oBAAoBh7U,EAAGo1S,iBAC1Bp1S,EAAGg7U,oBAAoBh7U,EAAGq1S,iBAC1Br1S,EAAGg7U,oBAAoBh7U,EAAGu1S,eAC1Bv1S,EAAGg7U,oBAAoBh7U,EAAGs1S,YAC1B,GAAIt1S,EAAGm4U,eAAgB,CACrBn4U,EAAGg7U,oBAAoBh7U,EAAGm4U,gBAE5B,GAAIn4U,EAAGo4U,uBAAwB,CAC7Bp4U,EAAGg7U,oBAAoBh7U,EAAGo4U,yBAG9B5sO,cACE,OAAOvrG,KAETurG,YAAYhsG,GACV2a,MAAMqxF,QAAUhsG,EAElBovT,wCACE,MAAO,CAAC3uT,KAAKuyT,mBAAmBvyT,KAAKq1S,YAAYruM,SAEnDrnG,uBAAuB4b,GACrB,GAAIvb,KAAKs6a,mBAAqBt6a,KAAK6tT,wBAA0B7tT,KAAKqlb,sBAAuB,CACvFrlb,KAAKo5a,6BAEPl/Z,MAAMq9S,uBAAuBh8S,KAIjC,MAAM+uE,GAAS,CAACzkF,EAAGye,KACjB,GAAIze,EAAIye,EAAG,CACT,OAAQ,OACH,GAAIze,EAAIye,EAAG,CAChB,OAAO,MACF,CACL,OAAO,IAuIX,IAAIi7a,GAAuBrya,GAAU,MAAMqya,UAA6Brya,GAAU7R,IAChF7b,0BACE,MAAO,CAKLqN,KAAM,KA0CN2yb,QAAS,KAOTC,QAAS,KACTC,eAAgB,KA6ChBC,SAAU,MA0Bd19M,cACE,OAAO/hP,QAAQF,KAAKy/b,SAOtB9/b,cAAc8wZ,GACZ,IAAItkZ,EACJ,GAAIskZ,EAAWryY,OAAS,KAAM,CAC5BjS,EAASskZ,EAAWryY,UACf,CACL,MAAMqhb,QACFA,EAAOD,QACPA,EAAOE,eACPA,EAAiB1/b,MACfA,MACJygL,YACEA,GACEgwO,EACN,UAAWgvC,IAAY,WAAY,CACjCtzb,EAASszb,EAAQ54b,KAAK64b,EAAgBj/Q,OACjC,CACLt0K,EAASs0K,EAAYg/Q,GACrB,GAAID,EAAS,CACX,IAAII,EAEJzzb,GAAUyzb,EAAkBJ,EAAQrzb,MAAa,MAAQyzb,SAAyB,EAAIA,EAAkB5wV,UAG5GyhT,EAAWryY,MAAQjS,EAErB,OAAOA,EAOTxM,eAAesuB,GAEb,GAAIjuB,KAAKiiP,QAAS,CAChB,MAAMrO,EAAS,IAAI/0N,IACnBoP,EAAOhW,MAAK,CAACpS,EAAGye,KACd,MAAMu7a,EAAS7/b,KAAK8/b,cAAcj6b,GAChCk6b,EAAS//b,KAAK8/b,cAAcx7a,GAC9BsvN,EAAO70N,IAAI8gb,GACXjsN,EAAO70N,IAAIghb,GACX,OAAOz1W,GAAOu1W,EAAQE,MAExB,OAAOx4b,MAAMyd,KAAK4uN,GAAQ37N,KAAKqyE,QAC1B,CACL,MAAO,MAmBb,MAAM01W,WAAiC92G,GAAsB1oU,MAAM++a,KACjExxb,mBACE,MAAO,2BAMTpO,oBAAoBsuB,EAAQk7T,EAAY,OACtCnpV,KAAKigc,eAAehya,GACpB,OAAO/T,MAAMytU,oBAAoB15T,EAAQk7T,IAG7C62G,GAAyB93b,OAAS,2BAclC,MAAMg4b,WAAgCl3G,GAAqBxoU,MAAM++a,KAC/Dxxb,mBACE,MAAO,0BAKTpO,oBAAoBsuB,GAClB,MAAM2lN,EAAS5zO,KAAKigc,eAAehya,GAEjCkya,EAAavsN,EAAO90O,QAAU,EAChC,MAAMqN,EAASnM,KAAKipV,kBAAkBh7T,GAAQ,CAACkC,EAAOmgB,EAAG23S,EAAMO,KAC7D,MAAMj3U,EAAOi3U,EAAW23G,EACtBC,EAAaD,IAAe,EAAI,EAAIvsN,EAAOnuO,QAAQ0qB,EAAM/R,OACzDiib,EAAoBD,EAAaD,EAEnChwa,EAAMlpB,OAASsK,EACf4e,EAAMglB,IAAMkrZ,EAAoBp4G,EAAKz/T,MAAQ23a,EAAa7vZ,EAAI/+B,EAG9D4e,EAAMmwa,aAAe93G,EACrBr4T,EAAMowa,UAAYt4G,EAAKz/T,MAAQ8nB,EAAIk4S,KAErCv6T,EAAOjvB,SAAQmxB,IACblyB,OAAOmZ,OAAO+Y,EAAOnwB,KAAKynV,uBAAuB5gV,KAAK7G,KAAK0nV,6BAA+B1nV,KAAMmwB,EAAMglB,IAAKhlB,EAAMlpB,OAAQkpB,EAAMswJ,YAAatwJ,EAAM6jM,oBAEpJ,OAAO7nN,GAGX+zb,GAAwBh4b,OAAS,0BAKjC,MAAMs4b,WAA+BrpH,GACnCppU,mBACE,MAAO,0BA+BX7O,EAAgBshc,GAAwB,cAAe,qBACvD,MAAMC,WAA0BniG,GAE9BvwV,mBACE,MAAO,oBAETvO,0BACE,MAAO,CAOLywS,SAAU,QAOVywJ,kBAAmB,KAwBnBC,0BAA2B,KAC3BhiG,SAAU,mCACV7mB,4BAA6B0oH,GAC7B55O,QAAS,GAGbpmJ,0BACE,MAAMroD,EAAS+B,MAAMsmD,aACrBroD,EAAOf,OAAS,CAAC,0BAA2B,6BAA8B,wBAC1E,OAAOe,EAETxY,iBACEua,MAAMuB,iBACNzb,KAAK6/D,OAAO1wC,GAAG,CACbyxa,eAAgB,mBAChBC,eAAgB,uBAChBC,iBAAkB,qBAClBC,eAAgB,uBAChBC,gBAAiB,oBACjBC,gBAAiB,uBACjB3kb,QAAStc,OAIbL,kBAAkBukU,EAAcqM,GAC9BrM,EAAephT,GAAYm7B,QAAQimR,GACnCqM,EAAkBztT,GAAYm7B,QAAQsyR,GACtC,GAAIvwU,KAAKiwS,WAAa,QAAS,CAC7BjwS,KAAKkhc,wBAAwBh9H,EAAcqM,OACtC,CACLvwU,KAAKmhc,2BAA2B5wH,IAWpC5wU,wBAAwBukU,EAAcqM,EAAiB6wH,EAAgB,MACrE,MAAMrhc,EAAKC,MACT6/D,OACEA,GACE9/D,GACJotC,UACEA,EAASC,QACTA,GACEyyB,EACN,GAAI9/D,EAAG6/D,SAAU,CACf,OAEF,GAAIwhY,EAAe,CACjBrhc,EAAGshc,uBAELn9H,EAAephT,GAAYm7B,QAAQimR,GACnC,IAAKqM,EAAiB,CACpBA,EAAkBrM,EAAaznE,SAAQtsO,GAASA,EAAMwhT,mBAExD5xU,EAAGm9C,UAAY,IAAI1rC,IACnB++T,EAAkBztT,GAAYm7B,QAAQsyR,GACtCrM,EAAallU,SAAQyhL,IACnB,IAAI6gR,EACJ,IAAK7gR,EAAYwvH,SAAU,CACzB,OAEF,MAAMsxJ,GAAaD,EAAwB7gR,EAAYwvH,YAAc,MAAQqxJ,SAA+B,OAAS,EAAIA,EAAsBE,qBAAqBr0Z,EAAWC,GAASvjC,KAAImnV,GAAY,IAAIwvG,GAAuBxvG,KACnO,GAAIuwG,EAAW,CACb,IAAK,MAAMvtO,KAAkBu8G,EAAiB,CAC5CxwU,EAAGm9C,UAAU5rC,IAAI0iN,EAAgButO,GACjC1hY,EAAOsoJ,mBAAmB2hM,yBAAyB91L,EAAgB,KAAM,OAE3E,GAAIu8G,EAAgBzxU,OAAS,EAAG,CAC9B+gE,EAAOsoJ,mBAAmBmiM,oBAWlC3qZ,2BAA2B4wU,EAAiB6wH,EAAgB,MAC1D,MAAMrhc,EAAKC,MACTmtC,UACEA,EAASC,QACTA,EAAO+6K,mBACPA,GACEpoN,EAAG8/D,OACT,GAAI9/D,EAAG6/D,SAAU,CACf,OAEF,GAAIwhY,EAAe,CACjBrhc,EAAGshc,uBAGLthc,EAAGm9C,UAAY,IAAI1rC,IACnB,IAAK,MAAMwiN,KAAkBu8G,EAAiB,CAC5C,IAAIkxH,EACJ,MAAMF,GAAaE,EAAwBztO,EAAei8E,YAAc,MAAQwxJ,SAA+B,OAAS,EAAIA,EAAsBD,qBAAqBr0Z,EAAWC,GAASvjC,KAAImnV,GAAY,IAAIwvG,GAAuBxvG,KACtO,GAAIuwG,EAAW,CACbxhc,EAAGm9C,UAAU5rC,IAAI0iN,EAAgButO,GACjCp5O,EAAmB2hM,yBAAyB91L,EAAgB,KAAM,QAGtE,GAAIu8G,EAAgBzxU,OAAS,EAAG,CAC9BqpN,EAAmBmiM,gBAOvB3qZ,uBACE,IAAKK,KAAKk9C,UAAW,CAEnB,OAEF,MAAMirK,mBACFA,GACEnoN,KAAK6/D,OACT88P,EAAY38T,KAAKk9C,UAAUl/C,OAC7BgC,KAAKk9C,UAAY,KACjB,IAAK,MAAMi9P,KAAYwiB,EAAW,CAChCx0G,EAAmB2hM,yBAAyB3vG,EAAU,KAAM,OAE9DhyF,EAAmBmiM,eAIrB3qZ,kBAAiB8tE,QACfA,IAEA,IAAIi0X,EAAuBC,EAC3B,GAAI3hc,KAAK4/D,SAAU,CACjB,OAEF,MAAM7/D,EAAKC,MACT6/D,OACEA,GACE9/D,GACJmkU,aACEA,GACEz2P,EACJ8iQ,EAAkB9iQ,EAAQm0X,mBAAqB/hY,EAAOkyD,SAAS2/P,UAAU7mC,wBAA0B,CAACp9Q,EAAQumJ,iBAAmB0tO,GAAyBC,EAAyB5hc,EAAG4gc,6BAA+B,MAAQgB,SAAgC,OAAS,EAAIA,EAAuB96b,KAAK9G,EAAI,CACtSwrT,UAAW1rP,EACXqkQ,aAAAA,OACM,MAAQw9H,SAA+B,EAAIA,EAAwB7hY,EAAOy1O,cAAcrjO,QAClGlyE,EAAG8hc,kBAAkB39H,EAAcqM,GAErC5wU,oBAAmB8gL,YACjBA,EAAWuzC,eACXA,IAEA,IAAKh0N,KAAK4/D,SAAU,CAClB5/D,KAAK6hc,kBAAkBphR,EAAa,CAACuzC,KAGzCr0N,mBAAkB8gL,YAChBA,EAAWuzC,eACXA,IAEA,IAAKh0N,KAAK4/D,SAAU,CAClB5/D,KAAK6hc,kBAAkBphR,EAAa,CAACuzC,KAMzCr0N,kBAAkBw6S,EAAUlsR,GAC1B,IAAI6za,EACJ,MAAMP,GAAaO,EAAkB9hc,KAAKk9C,aAAe,MAAQ4kZ,SAAyB,OAAS,EAAIA,EAAgBpwb,IAAIyoS,GAC3HonJ,GAAatza,EAAOzvB,QAAQ+ic,GAC5B,OAAOtza,EAETtuB,qBAAqBqzN,GACnB,MAAMvyC,YACJA,GACEuyC,EACJ,GAAIvyC,EAAYgyM,yBAA0B,CACxC,MAAM7rK,QACJA,GACE5mN,KAEJgzN,EAAW0rI,SAAW1+V,KAAK6/D,OAAOopP,WAElCj2F,EAAW84E,WAAW,oCAAsC,EAE5D94E,EAAW3rK,SAAS7oD,KAAK,CACvBkgD,UAAW,sBACXiK,KAAM83H,EAAYh8K,KAClBiyB,QAAS,CACPimX,eAAgB,aAIpB3pL,EAAW9rN,OAAS0/M,EAAU,EAC9BoM,EAAW/rN,QAAU2/M,EAAU,EAC/BoM,EAAW19K,MAAQsxK,EACnBoM,EAAW79K,KAAOyxK,EAElBoM,EAAW0sF,QAAU1/S,KAAK8+V,kBAAkBr+K,IAGhD9gL,eAAeigE,EAAUtnD,GACvB4B,MAAMkjI,eAAex9E,EAAUtnD,GAC/B,GAAIsnD,EAAU,CACZ5/D,KAAKqhc,wBAGT1hc,cAAc8gL,GACZ,OAAOA,EAAYgyM,yBAGrB7wT,qBAEF6+X,GAAkBv4b,OAAS,oBAC3BijO,GAAmB2F,gBAAgB2vN,GAAmB,MAAO,gBAiB7D,MAAM5sD,WAAuB17B,GAE3BpqW,mBACE,MAAO,iBAETvO,0BACE,MAAO,CAOLw4W,aAAc,KACdjgF,aAAc,CACZ90Q,MAAO,CACL8+a,YAAa,CACXl1b,KAAM,WACNpI,KAAM,SACNqkJ,MAAO,iBASnB+qP,GAAe3rY,OAAS,iBACxBijO,GAAmB2F,gBAAgB+iK,GAAgB,OAuBnD,MAAMmuD,WAAoBtiY,GACxB3xD,mBACE,MAAO,cAETvO,0BACE,MAAO,CAMLyic,aAAc,KAUd33G,gBAAiB,CACf/qV,MAAO,KACPiiB,QAAS,YAIfg/C,0BACE,MAAO,CACLC,MAAO,CAAC,yBAIZ9gE,sBAAsB2qV,GACpB,MAAMvqV,EAAKC,KACX,GAAIsqV,EAAiB,CACnBvqV,EAAG6oD,QAAU2wE,GAAQ1I,IAAI,CACvBoW,WAAYlnI,EAAG8/D,OAAOyrR,uBACtBpkN,YAAa,uDACb7wF,MAAO,CACLA,MAAO,MACPvH,OAAQ,CAAC,EAAG,KAEdnvC,SAAQinI,aACNA,IAEA,MAAM65C,EAAc1gL,EAAG8/D,OAAOy1R,mBAAmB1uN,GAC/CzrE,EAASyrE,EAAatkI,QAAQ,8BAC9BgmB,EAAW6yC,EAASslH,EAAY/gK,SAAW+gK,EAAY9gK,UACzD,OAAO5f,EAAGuqV,gBAAgB,CACxB7pK,YAAAA,EACAn4J,SAAAA,EACA6yC,OAAAA,WAID,CACL,IAAIurJ,GACHA,EAAc3mN,EAAG6oD,WAAa,MAAQ89J,SAAqB,OAAS,EAAIA,EAAY3qM,WAGzFpc,sBAAqB41V,eACnBA,EAAco/B,kBACdA,EAAiBD,iBACjBA,EAAgBj0M,YAChBA,EAAWowM,gBACXA,IAEA,GAAI7wX,KAAKogE,SAAWm1R,EAAgB,CAClC,MAAMnK,aACFA,GACEprV,KAAK6/D,QACToiY,aACEA,GACEjic,MACJ0f,SACEA,EAAQC,UACRA,GACE8gK,EACJn2B,EAAW8gM,EAAe,QAAU,SAEtCylC,EAAgBryX,KAAK,CACnBkgD,UAAW,CACTwjZ,qBAAsB,EACtBC,4BAA6B,EAC7BC,iBAAkBztE,GAEpBtzX,MAAO,GAAGipJ,MAAaqqO,MACvBttU,SAAU46Y,GAAgBvib,EAAW,CAAC,CACpCe,IAAK,OACLi+B,UAAW,iBACXiK,KAAMjpC,EAAS1V,SAAS,QACrBpH,WACJ,CACD87C,UAAW,CACTwjZ,qBAAsB,EACtBG,2BAA4B,EAC5BD,iBAAkB1tE,GAEpBrzX,MAAO,GAAGipJ,MAAaoqO,MACvBrtU,SAAU46Y,GAAgBtib,EAAY,CAAC,CACrCc,IAAK,OACLi+B,UAAW,iBACXiK,KAAMhpC,EAAU3V,SAAS,QACtBpH,aAKXjD,qBACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAK6/D,OAAO27S,yBAGhB77W,UAAUgiE,GACRznD,MAAM6nD,UAAUJ,GAChB,MAAM9B,OACJA,GACE7/D,KACJ,IAAK6/D,EAAOriD,eAAiBqiD,EAAOgpE,UAAW,CAE7ChpE,EAAOppB,QAAQmI,UAAU7/B,IAAI,4BAC7B8gD,EAAO27S,wBACP37S,EAAOyvK,oBAAoB7+N,MAAK,KAC9BovD,EAAOppB,QAAQmI,UAAU98C,OAAO,iCAKxCkgc,GAAY95b,OAAS,cACrBijO,GAAmB2F,gBAAgBkxN,GAAa,MAAO,gBAmBvD,MAAMM,WAAoB/uG,GACxBxlV,mBACE,MAAO,cAETpO,SACE,MAAMI,EAAKC,MACT6/D,OACEA,GACE9/D,EACNma,MAAMH,UAAUlb,WAEhBkB,EAAG+7K,aAAe/7K,EAAG27K,iBAAmB77G,EAAO0rR,cAAgB,8BAGnE+2G,GAAYp6b,OAAS,cACrBijO,GAAmB2F,gBAAgBwxN,GAAa,KAAM,gBAgBtD,MAAMC,WAAyBrmF,GAG7Br6V,2BACE,MAAO,CACLgpU,wBAAyB,MAG7BrrV,0BACE,MAAO,CACL0tV,qBAAsB,gBAG1B1sR,0BACE,MAAO,CACLC,MAAO,CAAC,UAAW,4BA8FvB9gE,iBAAiBsrV,GACf,MAAMqwB,kBACJA,EAAiBp3C,aACjBA,EAAYlwG,eACZA,EACAjvK,aAAc50B,GACZ86T,EACJ,MAAO,CAELx9Q,QAASw9Q,EACT/mB,aAAAA,EACAlwG,eAAAA,EACAsnJ,kBAAAA,EACAnrV,MAAAA,GAGJxwB,iBAAiBsrV,EAAUziU,GACzBxoB,KAAKurT,UAAUh+R,QAAQ,mBAAoBtvB,OAAOmZ,OAAOpX,KAAKo8W,iBAAiBnxB,GAAW,CACxF99S,UAAW89S,EAAS99S,UACpBC,QAAS69S,EAAS79S,WAGtBztC,iBAAiBsrV,GACfjrV,KAAKurT,UAAU1rT,UAAUszK,cAAgB,KACzCnzK,KAAKurT,UAAUh+R,QAAQ,wBAAyBvtB,KAAKo8W,iBAAiBnxB,IAExEtrV,iBAAiBsrV,GACfjrV,KAAKurT,UAAUh+R,QAAQ,wBAAyBvtB,KAAKo8W,iBAAiBnxB,IAExEtrV,0BAA0BsrV,GACxBjrV,KAAKurT,UAAUh+R,QAAQ,iCAAkCvtB,KAAKo8W,iBAAiBnxB,IAEjFtrV,iBAAiBsrV,EAAUx0M,GACzBz2I,KAAKurT,UAAUh+R,QAAQ,wBAAyBtvB,OAAOmZ,OAAOpX,KAAKo8W,iBAAiBnxB,GAAW,CAC7Fx0M,MAAAA,KAEF,IAAKA,EAAO,CAOV,MAAM0+J,gBACFA,EAAeE,WACfA,GACEr1S,KAAK6/D,OACTw8S,EAAcr8W,KAAKirV,SAASqxB,wBAAwBvrV,MAAK,EACvDopR,SAAAA,EACAC,WAAAA,GACCx7S,KACD,IAAI4jc,EACJ,OAAQrtJ,EAAgBvpS,SAASwuS,KAAgB/E,EAAWzpS,SAASwuS,EAAWjqR,QAAUgqR,EAASxvS,OAAS63b,EAAwBxic,KAAKirV,SAASqwB,kBAAkB18W,MAAQ,MAAQ4jc,SAA+B,OAAS,EAAIA,EAAsBhjJ,eAE1P,GAAI68D,EAAa,CACfr8W,KAAK6/D,OAAOi5H,YAYlBn5L,oBAAoB8tE,GAClB,MAAM1tE,EAAKC,MACT6/D,OACEA,GACE9/D,EACJ+8W,EAAiB,MACnB,IAAI3wW,EACJ,IAAKshE,EAAQohR,mBAAoB,CAC/BhvR,EAAOw1O,WAAWuQ,oBAClBz5S,QAAepM,EAAG0ic,cAAc5iY,EAAQ4N,EAASqvS,GACjDj9S,EAAOw1O,WAAW0Q,mBAGpBlmP,EAAOtyC,QAAQ,mBAAoBtvB,OAAOmZ,OAAOrX,EAAGq8W,iBAAiB3uS,GAAU,CAC7EuvS,OAAQF,EACR3sV,MAAOs9C,EAAQ1oB,aACfk4T,kBAAmBxvS,EAAQwvS,kBAC3BtB,qBAAsBluS,EAAQq3O,YAC9B+pC,mBAAoBphR,EAAQohR,sBAE9B,OAAO1iV,EAOTxM,oBAAoBkgE,EAAQ4N,GAE1B,MAAM1tE,EAAKC,KACTipT,EAAappP,EAAO1b,OAAS,YAC7B+/Q,aACEA,EAAYo3C,kBACZA,EAAiBrrB,SACjBA,GACExiR,EACN5N,EAAO28L,iBACP,IAAInoK,EAAU,MACd,GAAI40N,EAAY,CAEdib,EAAallU,SAAQ,CAACg/W,EAAcp/W,KAClC,MAAMq/W,EAAWxwS,EAAQ+hR,YAAY5wV,UAC9Bo/W,EAAazuS,aAAa1P,GAAQq+S,wBAIzC,GAAID,EAASvnV,QAAQwrO,UAAW,CAC9B+7G,EAASn8W,aAIf,MAAM0tV,EAAc/hR,EAAQ+hR,YAAYv9U,QACtC+rW,EAAevwS,EAAQgzG,YACvBwgK,EAAelhV,EAAGywV,gBAAgB/iR,EAAQshR,UAAWkB,GACvD,IAAKpwT,GAAW2L,QAAQwyU,EAAa7wU,UAAW8zS,GAAe,CAC7D,IAAIyhH,EACJ7iY,EAAOo4R,gCACPl4V,EAAG4ic,kBAAkB3kF,GACrBA,EAAa7wU,UAAY8zS,EACzB5sP,EAAU,WACJx0B,EAAO0rC,QAAQ6wJ,eACpBsmM,EAAqB3ic,EAAG6ic,kBAAoB,MAAQF,SAA4B,OAAS,EAAIA,EAAmB77b,KAAK9G,EAAIi+W,GAE5Hn+S,EAAOg9L,gBACP,GAAIy+G,EAAkBx8W,OAAS,EAAG,CAChC,IAAKu1F,EAAS,CACZ5mB,EAAQgpE,MAAQ,UACX,CAIL,GAAI52E,EAAOu/S,UAAW,CACpB5vB,EAAYxwV,SAAQ0rD,UAAaA,EAAGmI,gBAGtCgN,EAAO27S,0BAOb77W,wBAAwBo0V,EAActzK,EAAa/1H,EAAIv6B,GACrD,MAAMpwB,EAAKC,KAGX,GAAID,EAAG6/D,YAAc6gH,EAAYkmL,gBAAkBlmL,EAAY0xQ,UAAW,CACxE,OAAO,KAGT,OAAQznY,EAAGzG,QAAQlkD,EAAGu7K,KAAKpc,gBAE7Bv/J,wBACE,MAAMwY,EAAS+B,MAAMiyU,wBACrBh0U,EAAO+mJ,eAAiB,qCACxB,OAAO/mJ,EAETxY,mBAAmBw7H,GACjB,MAAMp7H,EAAKC,MACT6/D,OACEA,GACE9/D,EACJ02C,EAAU12C,EAAG2/W,sBAAsBvkP,GACnCslD,EAAc5gH,EAAOy1R,mBAAmB7+S,GACxCu9K,EAAiBn0J,EAAOo1R,sBAAsBx+S,GAC9CiuR,EAAmB7kQ,EAAO42R,wBAAwBhgT,GAClD6kU,EAAoB52C,EAAmB,CAACA,GAAoB,GAC5DR,EAAe,CAACzjJ,GAClB,MAAO,CACLA,YAAAA,EACAuzC,eAAAA,EACA0wG,iBAAAA,EACAR,aAAAA,EACAo3C,kBAAAA,GAGJ37W,iBAAiB8gL,GACfA,EAAYtwJ,MAAMkoE,aAClBooF,EAAYpoF,aAEd14F,eAAe8gL,GACb,IAAI+7N,GAEHA,EAAqB/7N,EAAYtwJ,SAAW,MAAQqsX,SAA4B,OAAS,EAAIA,EAAmBlkT,WACjHmoF,EAAYnoF,WAEd34F,kBAAkB8gL,GAChB,IAAIoiR,GACHA,EAAsBpiR,EAAYtwJ,SAAW,MAAQ0ya,SAA6B,OAAS,EAAIA,EAAoB76V,cACpHy4E,EAAYz4E,cAEdroG,qBAAqBw7H,GACnB,IAAI2kP,EACJ,MAAM//W,EAAKC,MACT6/D,OACEA,GACE9/D,EACJ02C,EAAU12C,EAAG2/W,sBAAsBvkP,IACnCslD,YACEA,EAAWuzC,eACXA,GACEj0N,EAAG+sV,mBAAmB3xN,GAC1Bq0N,EAAc,GACdszG,EAAmBjjY,EAAOisT,2BAA2BrrM,EAAYtwJ,MAAO6jM,EAAgB,MAAM,GAChG,GAAIj0N,EAAG8qV,0BAA4B72H,EAAgB,CACjD,MAAM,IAAItjN,MAAM,6CAA+C+vK,EAAY91K,IAK7E5K,EAAGu7K,KAAK9Y,wBAA0B3iG,EAAOpqB,KAAOgrI,EAAY6wQ,YAG5D,IAAKzxX,EAAOq2R,uBAAwB,CAClCr2R,EAAOs2R,kCAGTp2V,EAAGgjc,iBAAiBtiR,GACpB,MAAM2vK,GAAmB0vB,EAAwB//W,EAAGm6V,sBAAwB,MAAQ4lB,SAA+B,OAAS,EAAIA,EAAsBj5W,KAAK9G,EAAIi0N,EAAgBvzC,GAC7Ks/L,EAAqBhgX,EAAGggX,mBAAqBhgX,EAAGigX,yBAAyB5vB,EAAiBp8H,EAAgBvzC,GAC1Gw/L,EAAc1pU,GAAUvxB,KAAKyxB,EAASopB,EAAOo/R,iBAAkB,MAC/D+jG,EAAkBzsZ,GAAUvxB,KAAK89a,EAAkBjjY,EAAOo/R,iBAAkB,MAE9E8gB,EAAmBnlV,WAAWooa,EAAgB7+b,GAC9C+V,MAAMgmW,iBAAiBH,EAAoBE,EAAapgT,EAAO+qP,kBAAkBqnC,gBAAiB/xV,QAAQkwV,EAAgB5nU,QAC1HgnU,EAAYhxV,KAAKi4C,GACjB,MAAO,CACL+7B,OAAQiuG,EACRgrK,gBAAiB,CAAChrK,GAClB2vK,gBAAiBA,IAAoB,MAAQA,SAAyB,GAAKA,EAAgB5nU,MAAQ4nU,EAAkB,KACrHZ,YAAAA,EACAszG,iBAAAA,GAGJnjc,iCACAA,2BACAA,mBAAmBq0N,EAAgBvzC,GACjC,IAAIoqB,QACFA,EAAOC,QACPA,GACE5wL,MAAMggV,mBAAmBlmI,EAAgBvzC,GAE7C,GAAIA,EAAY4wQ,mBAAqBxmP,GAAWA,EAAUpqB,EAAY4wQ,gBAAgBjkZ,SAAU,CAC9Fy9J,EAAUpqB,EAAY4wQ,gBAAgBjkZ,QAExC,GAAIqzI,EAAY6wQ,eAAiBxmP,GAAWA,EAAUrqB,EAAY6wQ,YAAYnkZ,WAAY,CACxF29J,EAAUrqB,EAAY6wQ,YAAYnkZ,UAEpC,MAAO,CACL3kB,MAAOqiL,EACPnnL,IAAKonL,GAGT4hJ,YACE,MAAO,GAAG1sV,KAAK6/D,OAAOl1D,sBAExBhL,uBAAuBorV,GACrB7wU,MAAM8xU,yBAEN,GAAIhsV,KAAK6/D,OAAOpqB,MAAQz1C,KAAKirV,SAASxqK,YAAY6wQ,YAAa,CAC7DvmG,EAAO5mV,EAAI,GAGfxE,kBAAkB8tE,EAASt9C,GACzBjW,MAAMm0U,qBAAqBxvV,WAC3B,MAAMghE,OACFA,GACE7/D,MACJsuV,MACEA,EAAK7tK,YACLA,EAAWrzI,QACXA,GACEptC,KAAKirV,SAGX,GAAIqD,IAAU7tK,EAAY6wQ,YAAa,CACrC,IAAIl8F,EACJ,MAAMxoC,sBACJA,GACE/sP,EACJA,EAAO+sP,sBAAwB,MAC/BnsI,EAAYtwJ,MAAM7e,IAAI,UAAW87B,GACjC,IAAKgoT,EAAwBv1R,EAAOkyD,SAASyjO,eAAiB,MAAQJ,SAA+B,GAAKA,EAAsBh1R,QAAS,CACvIqgH,EAAYtwJ,MAAMkhT,YAAcjkS,EAElCyyB,EAAO+sP,sBAAwBA,IAKrC1tT,EAAgBqjc,GAAkB,QAAS,oBAC3CA,GAAiBr6b,OAAS,mBAC1BijO,GAAmB2F,gBAAgByxN,GAAkB,KAAM,gBAC3Dp3N,GAAmB2F,gBAAgByxN,GAAkB,MAAO,qBAgB5D,MAAMU,WAA2BX,GA8D/B9hY,0BACE,MAAO,CACLC,MAAO,IAAIvmD,MAAMsmD,aAAaC,MAAO,mCAKzC9gE,SACEua,MAAMH,UAAUlb,WAEhBmB,KAAK87K,aAAe97K,KAAK07K,iBAAmB,uBAG9C/7K,+BAA+Bo0V,EAActzK,EAAa/1H,EAAIv6B,GAC5D,OAAOnwB,KAAKkjc,2BAA2Brkc,WAGzCc,wBAAwBo0V,EAActzK,EAAa/1H,EAAIv6B,GACrD,MAAMpwB,EAAKC,KACTg0V,EAAiBvzK,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAY6hD,UAIzF,GAAIviO,EAAG6/D,WAAao0R,GAAkBvzK,EAAYkgJ,YAAa,CAC7D,OAAO,KAGT,GAAIlgJ,EAAY0xQ,SAAU,CACxB,MAAM/ka,EAAYrtB,EAAG8/D,OAAOysR,mBAC5B,OAAO7rK,EAAY0xQ,SAAShib,OAAM,CAACgzb,EAAejzb,KAChD,MAAMkzb,EAAmBD,EAAc7gO,UACrC+gO,EAAiB9oV,GAAQzqD,SAASikS,EAAc,GAAG3mU,cAAsBld,KAC3E,OAAQkzb,IAAqBA,IAAqB,MAAQA,IAAqB,UAAYrjc,EAAGk0V,kBAAkB9jU,EAAOkza,MAAqBD,IAAqB,MAAQA,IAAqB,QAAUrjc,EAAGm0V,gBAAgB/jU,EAAOkza,OAGtO,OAAOnpb,MAAMgpb,2BAA2Brkc,WAE1C6tV,YACE,MAAO,GAAG1sV,KAAK6/D,OAAOl1D,8BAExBhL,UAAU27K,GACRt7K,KAAKsjc,gBAAkB,KACvBtjc,KAAKujc,qBAAuB,EAC5B,OAAOrpb,MAAMwiK,aAAa79K,WAE5Bc,sBAAsB8gL,GACpBvmK,MAAMk8U,sBAAsB31K,GAE5B,GAAIA,EAAYkmL,eAAgB,CAC9BlmL,EAAYtwJ,MAAMkoE,cAItB14F,oBAAoB27K,GAClB,MAAMz7G,OACFA,GACE7/D,KACJyE,EAAOo7D,EAAOysR,mBACd7rK,EAAc5gH,EAAOm1R,sBAAsB15K,EAAKtC,aAClD,OAAOn5G,EAAOtyC,QAAQ,SAASsyC,EAAOqtR,oCAAqCxuV,EAAe,CACxFiB,CAAC8E,EAAO,UAAWg8K,EACnBtwJ,MAAOmrJ,EAAKnrJ,OACXnwB,KAAK22V,sBAAsB,CAC5BxmU,MAAOmrJ,EAAKzX,WACZptH,QAAS6kI,EAAKtC,gBAIlBr5K,wBAAwBgvV,EAAWx+T,GACjC,MAAM0vC,OACJA,GACE7/D,KACJ6/D,EAAOtyC,QAAQ,GAAGsyC,EAAOysR,uCAAwCn8T,GAEnExwB,sBAAsBgvV,EAAWx+T,GAC/B,MAAM0vC,OACJA,GACE7/D,KACJ6/D,EAAOtyC,QAAQ,GAAGsyC,EAAOysR,qCAAsCn8T,GAEjExwB,0BAA0BgvV,EAAWx+T,GAEnC,MAAM0vC,OACJA,GACE7/D,KACJ6/D,EAAOtyC,QAAQ,GAAGsyC,EAAOysR,yCAA0Cn8T,GAErExwB,iCAAiCgvV,EAAWx+T,GAC1C,MAAM0vC,OACJA,GACE7/D,KACJ6/D,EAAOtyC,QAAQ,SAASsyC,EAAOqtR,4CAA6C/8T,GAE9ExwB,qBAAqB68B,EAAMikJ,EAAahzG,GACtC,IAAIqpR,EAAuBC,EAC3B,IAAIlsJ,GAAWisJ,EAAwBrpR,EAAQ2iR,mBAAqB,MAAQ0G,SAA+B,OAAS,EAAIA,EAAsBtuU,MAC5IsiL,GAAWisJ,EAAyBtpR,EAAQ2iR,mBAAqB,MAAQ2G,SAAgC,OAAS,EAAIA,EAAuBrzU,IAE/I,GAAI+8J,EAAYkmL,eAAgB,CAC9B,MAAM0qF,gBACJA,EAAeC,YACfA,GACE7wQ,EACJ,GAAI4wQ,EAAiB,CACnBxmP,EAAUA,EAAUhrK,GAAWxrB,IAAIg9a,EAAgBjkZ,QAASy9J,GAAWwmP,EAAgBjkZ,QAEzF,GAAIkkZ,EAAa,CACfxmP,EAAUA,EAAUjrK,GAAWlX,IAAI2oa,EAAYnkZ,UAAW29J,GAAWwmP,EAAYnkZ,WAIrF,GAAI09J,GAAWC,EAAS,CACtBtuK,EAAOqD,GAAWgiI,UAAUrlI,EAAMquK,EAASC,GAC3Cr9H,EAAQm+Q,YAAc/rT,GAAWgiI,UAAUp0F,EAAQm+Q,YAAa/gJ,EAASC,GAE3E,OAAOtuK,EAET78B,6BAA6B8gL,EAAahzG,GACxC,MAAM1tE,EAAKC,MACTszE,MACEA,GACE7F,EACNvzD,MAAMy9U,gCAAgC94V,WAEtC,GAAI4hL,EAAYkmL,eAAgB,CAG9B,IAAKlmL,EAAY6wQ,aAAeh+W,IAAU,UAAW,CACnDmtG,EAAYtwJ,MAAM7e,IAAI,UAAWm8D,EAAQ6F,SAItC,IAAKmtG,EAAY4wQ,iBAAmB/9W,IAAU,YAAa,CAC9DmtG,EAAYtwJ,MAAM7e,IAAI,YAAam8D,EAAQ6F,QACtC,CACL,MAAM6+W,EAAW1xQ,EAAYtwJ,MAAMze,IAAI,YAKvC3R,EAAGujc,gBAAkBvjc,EAAGujc,iBAAmB,CAACnR,EAASlgb,QAASkgb,EAASlgb,SACvElS,EAAGwjc,sBAAwBxjc,EAAGwjc,qBAAuB,GAAK,EAC1D9iR,EAAYtwJ,MAAM7e,IAAI,WAAYvR,EAAGujc,gBAAgBvjc,EAAGwjc,yBAI9D5jc,uBAAuB8gL,GACrBvmK,MAAM69U,uBAAuBt3K,GAE7B,GAAIA,EAAYkmL,eAAgB,CAC9BlmL,EAAYtwJ,MAAM63E,eAOtBroG,kBACE,MAAMu5J,SACJA,GACEl5J,KAEJk5J,EAASt6G,UAAU7/B,IAAI,kBAAmB,wBAM5Cpf,kBAAkBgS,EAAO3R,KAAKk5J,UAC5BvnJ,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKitC,UAAU98C,OAAO,kBAAmB9B,KAAKwzV,qBAAsB,uBAAwBxzV,KAAKg8K,kBAIjJ98K,EAAgB+jc,GAAoB,QAAS,sBAC7CA,GAAmB/6b,OAAS,qBAC5BijO,GAAmB2F,gBAAgBmyN,GAAoB,KAAM,gBAC7D93N,GAAmB2F,gBAAgBmyN,GAAoB,MAAO,qBAiB9D,MAAMO,WAAsB9jY,GAI1B//D,kBAAkBwwB,GAChB,MAAMpwB,EAAKC,MACT6/D,OACEA,GACE9/D,GACJpB,OACEA,EAAM0kD,cACNA,GACElzB,EACJs2W,EAAY9nY,EAAOslD,QAAQ4b,EAAO0rR,eAClC4H,EAAiBtzR,EAAOm1R,sBAAsBr2V,GAEhD,GAAIw0V,IAAmB,MAAQA,SAAwB,GAAKA,EAAewT,gBAAkB8/B,GAAa5mU,EAAOqmU,cAAcjoX,IAAIwoX,GAAY,CAE7I,GAAIpjV,GAAiBpL,GAAUmY,aAAaq2U,EAAWpjV,GAAgB,CACrE,QAGJrjD,KAAKihE,WAAWslU,qBAAqB1nY,WAIvCc,2BAA2B8gL,EAAauzC,GAEtC,GAAIvzC,IAAgB,MAAQA,SAAqB,GAAKA,EAAYkmL,eAAgB,CAEhF,MAAMm8F,EAAmB9ic,KAAKihE,WAAW6qT,2BAA2BrrM,EAAYtwJ,MAAO6jM,GAAgB,GACvG,MAAO,CAACz5G,GAAQzqD,SAASgzY,EAAkB,YAAcriR,EAAYm0Q,eAEvE,OAAO50b,KAAKihE,WAAW6qT,8BAA8BjtX,WAGvDc,mBAAmBs6Y,GACjB,IAAIj0S,EACJ,MAAMvvD,EAAUwjW,aAA0BtsV,MAAQssV,EAAet7Y,OAASs7Y,EACxEopD,EAAiB5sZ,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQwN,QAAQ,wBACrF,IAAI93C,EAASnM,KAAKihE,WAAWq0R,mBAAmB2kD,GAChD,IAAKj0S,EAAU75F,KAAY,MAAQ65F,SAAiB,GAAKA,EAAQmsV,UAAYkR,EAAgB,CAC3Fl3b,EAASA,EAAOgmb,SAASkR,EAAe3sa,QAAQ66Z,SAElD,OAAOplb,EAGTxM,kBAAkB82C,GAChB,IAAIyvD,EACJ,MAAMm9V,EAAiB5sZ,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQwN,QAAQ,wBACzF,IAAI93C,EAASnM,KAAKihE,WAAWwiY,kBAAkBhtZ,GAC/C,IAAKyvD,EAAW/5F,KAAY,MAAQ+5F,SAAkB,GAAKA,EAASisV,UAAYkR,EAAgB,CAC9Fl3b,EAASA,EAAOgmb,SAASkR,EAAe3sa,QAAQ66Z,SAElD,OAAOplb,EAITxM,iBAAiBu6B,GACfA,EAAKumJ,YAAcvmJ,EAAK67T,WAExB,GAAI77T,EAAK0nB,cAAcqC,QAAQ/pB,EAAK8hI,QAAQn8F,OAAO0rR,eAAgB,CACjEvrV,KAAK0jc,kBAAkBxpa,IAG3Bv6B,mBAAkB8gL,YAChBA,EAAWs1K,WACXA,EAAU9yU,MACVA,EAAK45H,SACLA,IAEA,MAAM98I,EAAKC,KAGX,IAAKD,EAAG8/D,OAAOgZ,WAAa4nG,EAAY9wG,WAAa8wG,EAAYwyL,UAAW,CAC1EhwV,EAAM,QAAQ8yU,EAAa,OAAS,WAAa,CAC/Ch9T,YAAah5B,EAEbkL,KAAM,UAAU8qV,EAAa,OAAS,WACtCnmO,KAAM,oBACNhwD,SAAU6gH,EAAY5nG,SACtB46C,OAAQ,IACRxqF,UAAW,KACXtpC,OAAO8tE,GACL1tE,EAAG4jc,WAAWl2X,KAGlB,MAAM41X,EAAiBxmT,EAASl+I,OAAOslD,QAAQ,wBAC/C,GAAIo/Y,EAAgB,CAClB,MAAMF,EAAgBpjc,EAAG8/D,OAAOy1R,mBAAmB+tG,GACnDpgb,EAAM2gb,cAAgB,CACpB7qa,YAAah5B,EACbkL,KAAM,mBACN2kH,KAAM,uBACNhwD,SAAU6gH,EAAY5nG,UAAYsqX,EAActqX,SAChD46C,OAAQ,IACR9zH,SACEI,EAAGo2O,OAAOgtN,EAAeE,OA2BnC1jc,aAAa8tE,GACX,MAAMgzG,YACJA,EAAWjkJ,KACXA,EAAIurR,SACJA,GACEt6O,EAEJ,OAAOs6O,EAASyqC,UAAUh2T,EAAMikJ,EAAYtzI,WA0B9CxtC,iBAAiB8tE,GACf,MAAMo2X,cACJA,EAAaC,iBACbA,EAAgBC,iBAChBA,GACE/jc,KAEJ,GAAI6jc,IAAkB,MAAQA,SAAuB,GAAKA,EAAc95Z,UAAW,CACjF,OAAO85Z,EAAc95Z,UAEvB,MAAM02I,YACJA,EAAW+yC,KACXA,GACE/lJ,EACJ,GAAI+lJ,EAAM,CACR,MAAM8nH,EAAYt7U,KAAKgkc,qBAAqBv2X,IAC1C89B,QACEA,GACEk1E,EAEN,IAAIwjR,EAAkBzwO,EAAKpmL,QAAUomL,EAAKrmL,UAE1C,GAAI42Z,EAAkB,CACpB,MAAMG,EAAgB34V,EAAQguC,IAAI,mBAAoBwqT,EAAiBh6Z,UAAWg6Z,EAAiB97Z,MAAQqzS,EAAW,eACtH2oH,EAAkB7vb,KAAKuU,IAAIs7a,EAAiBC,GAG9C,GAAIJ,EAAkB,CACpB,MAAMK,EAAgB54V,EAAQguC,IAAI,mBAAoBuqT,EAAiB/5Z,UAAW+5Z,EAAiB77Z,MAAQqzS,EAAW,eACtH2oH,EAAkB7vb,KAAKC,IAAI4vb,EAAiBE,GAG9C,OAAO54V,EAAQguC,IAAI,mBAAoB0qT,EAAiB,cAAe3oH,IAsC3E37U,qBAAqB8tE,GACnB,MAAMo2X,cACJA,GACE7jc,KAEJ,OAAQ6jc,IAAkB,MAAQA,SAAuB,OAAS,EAAIA,EAAc57Z,OAASwlC,EAAQgzG,YAAYq9H,aAMnHn+S,WAAW8tE,GACT,MAAM5N,OACFA,GACE4N,EAAQuuF,SACZ+rJ,SACEA,GACEloP,EACN4N,EAAQjxC,KAAOqjC,EAAOmtR,cAAcv/Q,EAAQ6jE,MAAO1uI,UAAW,OAC9D6qE,EAAQ+lJ,KAAOu0F,EAAS/0N,MAAM5+E,KAAK+oB,MAAM4qR,EAASo8B,gBAAgB12Q,EAAQjxC,QAC1EixC,EAAQs6O,SAAWA,EACnBt6O,EAAQgzG,YAAY2jR,gBAAgBpkc,KAAKqkc,aAAa52X,GAAUztE,KAAKskc,iBAAiB72X,GAAUztE,KAAKgkc,qBAAqBv2X,IAE5H9tE,OAAOwjc,EAAe1sZ,GACpB,MAAMopB,OACJA,GACE7/D,KACJ,MAAM06N,EAAS,IAAIrmB,GAAO,CACxB17L,MAAOknD,EACPo2D,SAAUp2D,EAAOyrR,uBACjB70N,aAAc,UACdpgF,MAAO,CACLA,MAAO,OAETvgC,IAAK,0BACLuX,UAAW,CACT1tB,WAEEkgE,EAAOi5H,WAETx8K,QAAStc,QAGb06N,EAAOwU,UAAU,CACfvwO,OAAQ83C,EACR+7B,OAAQ2wX,EACR5sb,MAAO,SAKX5W,UAAUgiE,GACR,GAAI3hE,KAAK6/D,OAAOgpE,UAAW,CACzB7oI,KAAK6/D,OAAOi5H,UAEd5+K,MAAM6nD,UAAUJ,GAElBhiE,0BAA0Bwjc,EAAenwO,GACvC,IAAI7mN,EAAQo4b,EACZ,GAAIvkc,KAAK6/D,OAAO1gD,QAAS,CACvB,MAAMqlb,EAAgBxkc,KAAK6/D,OAAOsoJ,mBAClC,MAAMh2E,EAAMqyT,EAAcC,WAAWtB,GACnCjpa,EAAO,CACL67T,WAAYotG,EACZ/yX,KAAM+yX,EAENx0R,IAAKqkD,EAAWrkD,IAChBtnH,SAAU,IAEd,GAAI8qF,EAAK,CACPl0I,OAAOmZ,OAAO8iB,EAAM,CAClBk5T,OAAQ,KACRj+S,IAAKg9F,EAAIh9F,IACTG,KAAM68F,EAAI78F,KACVpuC,MAAOirI,EAAIjrI,MACXD,OAAQkrI,EAAIlrI,SAGhBu9b,EAAcE,+BAA+Bxqa,EAAMipa,GACnDoB,EAAoBrqa,MACf,CACLqqa,EAAoBvkc,KAAK6/D,OAAOkrV,mBAAmBo4C,EAAenwO,EAAWgB,eAAgB,MAE/F,GAAIuwO,EAAmB,CACrB,IAAII,EACJx4b,EAAS,CACPg3b,cAAAA,EACAtkG,aAAc0lG,EAAkB1lG,cAAgB0lG,EAAkBK,YAClE9ub,IAAKyub,EAAkBzub,OAAS6ub,EAAqBxB,EAAcrtb,OAAS,MAAQ6ub,SAA4B,OAAS,EAAIA,EAAmBp1b,UAAY,IAAIiuC,GAChKrI,IAAK69K,EAAW79K,IAChBG,KAAMivZ,EAAkBjvZ,KAAO09K,EAAW19K,KAC1CpuC,MAAOq9b,EAAkBr9b,MACzBD,OAAQ+rN,EAAW/rN,QAErBhJ,OAAOmZ,OAAOjL,EAAO2J,IAAK,CACxBnW,CAAC,eAAe4kc,EAAkB97I,cAAe87I,EAAkB97I,WACnEo8I,sBAAuB,KACvBC,WAAY3B,EAAc9R,gBAC1BrnI,UAAWm5I,EAAc7R,aACxBiT,EAAkBzub,KAEvB,OAAO3J,EAETxM,gBAAgBqzN,GACd,MAAMvyC,EAAcuyC,EAAWvyC,aAAeuyC,EAAW+iI,WACzD,GAAIt1K,EAAY0xQ,WAAanyb,KAAK4/D,SAAU,CAC1C,MAAMi/R,EAAe7rI,EAAW6rI,cAAgB7rI,EAAW4xO,YACzD10b,EAAQ8iN,EAAW3rK,SAAS5hD,QAAQo5V,GAEtC,GAAI3uV,GAAS,EAAG,CACd8iN,EAAW3rK,SAASnvC,OAAOhI,EAAO,UAE7B8iN,EAAW6rI,oBACX7rI,EAAW4xO,YAClB5xO,EAAWl9M,IAAI,eAAiB,KAChCk9M,EAAWm/N,SAAW1xQ,EAAY0xQ,SAAStob,KAAI0nb,GAAWvxb,KAAK+kc,0BAA0BxT,EAASv+N,KAClGA,EAAWgyO,kBAAoBhyO,EAAWm/N,SAAStob,IAAI7J,KAAKilc,oBAAoBjwb,KAAKhV,OACrFgzN,EAAW3rK,SAAS8mC,QAAQ,CAC1BhlC,YAAa,CACXmI,YAAa,UACb6qD,iBAAkB,GAEpBz9D,UAAW,uBACXhoB,QAAS,CACPimX,eAAgB,YAElBt1V,SAAU2rK,EAAWgyO,qBAI3Brlc,oBAAoB+3b,EAAaxnb,GAC/B,MAAO,CACLwuC,UAAWg5Y,EAAY5hb,IACvBzU,MAAO,CACLi0C,KAAMoiZ,EAAYpiZ,KAClBruC,OAAQywb,EAAYzwb,OACpBC,MAAOwwb,EAAYxwb,OAErBwvB,QAAS,CACP66Z,QAASrhb,GAEXi5C,YAAa,CACXmI,YAAa,kBAEfjK,SAAU,CAACqwY,EAAY74F,eAI3Bl/V,qBAAqBknP,GACnB7mP,KAAKklc,gBAAgBr+M,GAGvBlnP,oBAAoBwlc,GAClBnlc,KAAKklc,gBAAgBC,GAIvBvjY,qBAEF1iE,EAAgBskc,GAAe,QAAS,iBACxCtkc,EAAgBskc,GAAe,eAAgB,CAyB7CK,cAAe,EA4BfE,iBAAkB,CAChBh6Z,UAAW,EACX9B,KAAM,OAkCR67Z,iBAAkB,IAEpB5kc,EAAgBskc,GAAe,eAAgB,CAC7C9iY,SAAU,CAAC,6BAA8B,qBAAsB,oBAAqB,qBACpFD,MAAO,CAAC,mBAAoB,oBAAqB,sBAAuB,0BAE1E+iY,GAAct7b,OAAS,gBACvBijO,GAAmB2F,gBAAgB0yN,GAAe,KAAM,gBACxDr4N,GAAmB2F,gBAAgB0yN,GAAe,KAAM,SAKxD,MAAM4B,GAAe,CACnBtvL,OAAQ,EACRuvL,OAAQ,GAkGV,MAAMC,WAAqB5lY,GAAel/C,MAAM2kU,GAAsBnhR,KAIpErkE,iBACGK,KAAK6/D,OAAOriD,eAAiBxd,KAAK6/D,OAAO27S,wBAE5C77W,YACEK,KAAKulc,gBAGP5lc,oBACEK,KAAKulc,gBAEP5lc,kBACEK,KAAKulc,gBAEP5lc,uBACEK,KAAKulc,gBAEP5lc,oBACEK,KAAKulc,gBAEP5lc,mBAAmBsH,GACjBjH,KAAK6/D,OAAOppB,QAAQp1C,MAAMm1D,YAAY,4CAA6C,GAAGvvD,OACtFjH,KAAKulc,gBAGP5lc,eAAeq0N,EAAgBooL,GAC7B,GAAIA,EAAmB,CACrB,OAAOp8Y,KAAKgnT,cAAgB,OAAS,CACnCn6S,KAAM7M,KAAKgnT,aACT,OAEN,OAAOhnT,KAAKihE,WAAWq6U,eAAetnL,GAGxCr0N,kBAAkBq0N,EAAgBooL,GAChC,GAAIA,IAAsBA,EAAkBjtU,OAAQ,CAClD,OAAOnvE,KAAKmrY,eAEd,OAAOnrY,KAAKihE,WAAWo7U,kBAAkBroL,GAG3Cr0N,aAAaq0N,EAAgBooL,GAC3B,GAAIA,IAAsBA,EAAkBjtU,OAAQ,CAClD,OAAOnvE,KAAK6zW,UAEd,OAAO7zW,KAAKihE,WAAWs7U,aAAavoL,GAGtCr0N,yBAAyBq0N,EAAgBooL,GACvC,MAAMr8Y,EAAKC,KACX,GAAIo8Y,IAAsBA,EAAkBjtU,OAAQ,CAClD,GAAIpvE,EAAGinT,cAAgB,QAAS,CAE9B,OAAOjnT,EAAGylc,YAAczlc,EAAGorY,eAAiB,MACvC,CACL,IAAIs6D,EACJ,MAAMviU,GAAeuiU,EAAwBL,GAAarlc,EAAG8/D,OAAOs+U,cAAc/B,EAAmBpoL,OAAsB,MAAQyxO,SAA+B,EAAIA,EAAwB,EAC9L,OAAO1lc,EAAG2lc,qBAAuB3lc,EAAG+oQ,aAAe5lI,GAGvD,OAAOnjI,EAAGkhE,WAAWq7U,yBAAyBtoL,GAIhDr0N,mBAAmB01S,GAGjB,IAAKA,EAAW96N,WAAWorX,mBAAoB,CAC7C30Z,GAAa40Z,aAAavwJ,EAAW96N,WAAW1sE,UAAW,YAAa,MACtEtO,YACE,OAAO2a,MAAM3a,MAEfA,UAAUiO,GAER,GAAIxN,KAAKq9E,YAAcr9E,KAAK2vE,SAAU,CACpC,MAAMsgR,EAAWpwT,GAAW6K,KAAK1qC,KAAKmtC,UAAW3/B,GACjD,GAAIyiV,EAAU,CAEZ,IAAK,MAAMliS,KAAS/tD,KAAKqnD,SAAU,CACjC0G,EAAM5gB,UAAYtN,GAAW9gB,IAAIgvC,EAAM5gB,UAAW8iT,KAIxD/1U,MAAM3a,MAAQiO,KAIlB6nS,EAAW96N,WAAWorX,mBAAqB,KAE7CtwJ,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWlmR,GAAG,CACpE1qB,KAAM,aACN2gF,OAAQ,qBACR9oE,QAAStc,OAGbL,oBAAmBsyE,QACjBA,IAGA,GAAIA,IAAY,MAAQA,SAAiB,GAAKA,EAAQtqE,MAAKuoB,GAAKA,EAAE5d,SAAW4d,EAAE5d,OAAO68D,SAAS,CAC7FnvE,KAAKulc,iBAGT5lc,2BAA0BsyE,QACxBA,IAGA,GAAIjyE,KAAK6/D,OAAOq2R,wBAA0BjkR,IAAY,MAAQA,SAAiB,GAAKA,EAAQtqE,MAAKuoB,GAAKA,EAAE5d,SAAW4d,EAAE5d,OAAO68D,SAAS,CACnInvE,KAAKulc,gBAEL,OAAO,OAOX5lc,qBAAqB8tE,EAASw9Q,GAC5B,MAAMlrV,EAAKC,MACT6/D,OACEA,GACE9/D,GACJ0gL,YACEA,EAAW66L,kBACXA,GACErwB,GACJzzS,cACEA,GACEi2B,EAAQh3B,QAEd,GAAIgqI,EAAYnuK,QAAUklC,IAAkBqoB,EAAOo/R,iBAAkB,CACnEl/V,EAAG8lc,sBAAwB,KAE3Bp4X,EAAQq4X,sBAAwBtuZ,EAChCi2B,EAAQs4X,eAAiB,GACzB,IAAK,MAAM3rJ,KAAckhE,EAAmB,CAC1C,MAAMnrV,MACJA,GACEiqR,EAIJ,GAAIjqR,EAAM7d,SAAWmuK,EAAYnuK,OAAQ,CACvC,MAAMyhV,EAAel0R,EAAOgyS,+BAA+Bz3D,EAAY,MACvE3sO,EAAQs4X,eAAevnc,KAAK,CAC1Bi4C,QAASs9S,EACTt4R,OAAQllB,GAAUvxB,KAAK+uU,EAAcv8S,KAEvC,IAAKz3C,EAAGimc,uBAAyBnmY,EAAOkyD,SAAS2/P,UAAU9mC,wBAAyB,CAElF,MAAMq7G,EAAiB1vZ,GAAUvxB,KAAK+uU,EAAcl0R,EAAOyrR,wBAC3DyI,EAAa1yV,MAAM8zC,IAAM,GAAG8wZ,EAAe9wZ,QAC3C4+S,EAAa1yV,MAAMi0C,KAAO,GAAG2wZ,EAAe3wZ,SAC5CilE,GAAQ1oD,SAASgO,EAAOo/R,iBAAkBlL,EAAc35C,EAAWzvS,WAIpE,CACL5K,EAAG8lc,sBAAwB,OAI/Blmc,oBAAoB8tE,EAASw9Q,GAE3B,GAAIjrV,KAAK6lc,uBAAyB7lc,KAAKgmc,sBAAuB,CAC5D,MAAMt0E,UACFA,GACE1xX,KAAK6/D,OAAOkyD,UAChBz/G,OACEA,GACE24U,EAASxqK,YACbylR,EAAez4X,EAAQq4X,sBAAsBxuZ,wBAE/Co6U,EAAU1/B,eAAe,EAAGk0G,EAAaj/b,OAASwmE,EAAQs4X,eAAe,GAAGtqY,OAAOx0D,QAEnFyqX,EAAU3/B,eAAe,EAAGm0G,EAAah/b,MAAQumE,EAAQs4X,eAAe,GAAGtqY,OAAOv0D,OAClF+jV,EAASmF,gBAAkB,CACzB5nU,MAAOlW,EAAO66B,UACdzpB,IAAKpR,EAAO86B,UAIlBztC,wBAAuBs9W,kBACrBA,EAAiBx8L,YACjBA,EAAWwvK,SACXA,EAAQnrC,YACRA,EAAW9wF,eACXA,IAEA,MAAMj0N,EAAKC,KAIX,GAAID,EAAG8lc,wBAA0B9lc,EAAGomc,uBAAyBlpF,IAAsBhtB,GAAYnrC,IAAgB9wF,GAAiB,CAC9H,MAAO,CACLv9E,MAAO,MACPhiI,QAAS1U,EAAGo7B,EAAE,2BAIlB,IAAKp7B,EAAGqmc,oBAAsBnpF,GAAqBA,IAAsBx8L,EAAYnuK,OAAQ,CAC3F,MAAO,CACLmkI,MAAO,MACPhiI,QAAS1U,EAAGo7B,EAAE,0BAKpBx7B,kBAAiB8tE,QACfA,EAAOovS,YACPA,EAAWp8L,YACXA,EAAWuzC,eACXA,EAAc0qJ,eACdA,EAAcjoU,QACdA,EAAOinU,YACPA,EAAWS,YACXA,EAAWC,kBACXA,IAEA,IAAIioF,EACJ,MAAM/zb,OACFA,GACEmuK,GACJw8L,kBACEA,GACExvS,EACN,IAAIgD,EAAYn+D,EAGhB,GAAIA,IAAW2qW,IAAsBj9W,KAAKgmc,0BAA4BK,EAAwB5lR,EAAYp5H,YAAc,MAAQg/Y,SAA+B,GAAKA,EAAsBvnc,QAAS,CAEjM,GAAIm+W,GAAqBj9W,KAAKomc,mBAAoB,CAChD31X,EAAYwsS,EAAkB3qW,OAAO68D,OAAS8tS,EAAoBA,EAAkB3qW,OAGpF,MAAMy0V,EAAiB/mW,KAAK6/D,OAAOo1R,sBAAsBxnR,EAAQ1oB,cACjE,GAAIgiT,IAAmB/yI,EAAgB,CACrCA,EAAiBoqJ,EAAkBjkE,SAAW4sD,OAI7C,CACHt2R,EAAYosS,EAAYxnE,WAAW3kO,SAErC,GAAID,GAAaA,IAAcn+D,EAAQ,CACrC6rW,EAAY3/W,KAAKiyE,EAAUhvE,YAAYg/K,IAEvC39J,GAAYhhB,OAAO47W,EAAaj9L,IAIpC,GAAInuK,IAAW,MAAQA,SAAgB,GAAKA,EAAO68D,QAAUsxG,EAAY9wG,UAAY+uS,IAAmB1qJ,EAAgB,CACtH,IAAK,MAAMjmK,KAAS0yH,EAAYp5H,SAAU,CACxC,MAAM81Q,EAAqBpvQ,EAAMyuQ,YAAYzrS,MAAKlrB,GAAKA,EAAEs0S,WAAaukE,IACtE,GAAIvhD,EAAoB,CACtBA,EAAmBhjB,SAAWnmF,IAMpC,GAAIvjJ,IAAcA,EAAUtB,OAAQ,CAClC,MAAMm3X,EAAmBtmc,KAAK6/D,OAAO6nS,0BAA0Bj3R,EAAWujJ,GAAgB1hK,UAAUi0Y,sBAClGvwB,EAAeswB,GAAoB/vZ,GAAUvxB,KAAKyxB,EAAS6vZ,GAE7D,GAAIA,EAAkB,CACpB7vZ,EAAQp1C,MAAM8zC,IAAM,GAAG6gY,EAAa7gY,QACpCsB,EAAQp1C,MAAMi0C,KAAO,GAAG0gY,EAAa1gY,SAGrCmB,EAAQoc,cAAgB,KACxB0nD,GAAQ1oD,SAASy0Y,EAAkB7vZ,EAASA,EAAQ/f,QAAQ27B,UAKlE1yD,gCAA+B8gL,YAC7BA,IAEA,GAAIA,EAAY9wG,SAAU,CACxB,IAAK,MAAM5hB,KAAS0yH,EAAYp5H,SAAU,CACxC0G,EAAMosP,SAAW15H,EAAY05H,WAKnCx6S,oCAAmCmmc,sBACjCA,EAAqBC,eACrBA,IAEA,GAAI/lc,KAAK6lc,sBAAuB,CAE9B,IAAK,MAAM/mT,KAAainT,EAAe,GAAGtvZ,QAAQ+vZ,gBAAiB,CACjE,GAAI1nT,EAAUnoF,qBAAuB,OAASmoF,EAAUnoF,qBAAuB,OAAQ,OAC/EmoF,EAAU2nT,UAGpB,IAAK,MAAMhwZ,QACTA,EAAOglB,OACPA,KACGsqY,EAAgB,CAEnBtvZ,EAAQp1C,MAAM8zC,IAAM,GAAGsmB,EAAOtmB,QAC9BsB,EAAQp1C,MAAMi0C,KAAO,GAAGmmB,EAAOnmB,SAC/BwwZ,EAAsBrkc,YAAYg1C,KAKxC92C,sBAAsB8tE,GACpB,GAAIztE,KAAK0mc,wBAAyB,CAChC,MAAMp0b,OACJA,GACEm7D,EAAQqoR,eACZ,GAAIxjV,IAAWA,EAAO68D,OAAQ,CAC5B,IAAIhiC,UACFA,EAASC,QACTA,GACE96B,EACJ,GAAIm7D,EAAQ2iR,gBAAiB,CAC3BjjT,EAAYtN,GAAWxrB,IAAI84B,EAAWsgC,EAAQ2iR,gBAAgB5nU,OAC9D4kB,EAAUvN,GAAWlX,IAAIykB,EAASqgC,EAAQ2iR,gBAAgB1sU,KAE5D+pD,EAAQ2iR,gBAAkB,CACxB5nU,MAAO2kB,EACPzpB,IAAK0pB,KAQbztC,+BAA+B+kU,EAAkB+0E,GAC/C,IAAIktD,EACJ,GAAIjiI,IAAqB,MAAQA,SAA0B,IAAMiiI,EAAwBjiI,EAAiBv0S,SAAW,MAAQw2a,SAA+B,GAAKA,EAAsBr0b,SAAWoyT,EAAiBv0S,MAAM7d,OAAO68D,OAAQ,CACtO,MAAM33B,EAAgBx3C,KAAK6/D,OAAO6nS,0BAA0BhjC,EAAiBv0S,MAAM7d,OAAQoyT,EAAiBvqB,UAC5G,OAAO5/L,GAAQzqD,SAAStY,EAAe,yBAAyBktR,EAAiB/5T,KAAK8uY,EAAgB,GAAK,YAE7G,OAAOz5Y,KAAKihE,WAAW4wS,+BAA+BntC,EAAkB+0E,GAG1E95Y,qBAAoB8gL,YAClBA,EAAW27N,kBACXA,EAAiBjvW,UACjBA,EAASsJ,QACTA,IAGA,GAAI2lW,EAAmB,CACrB37N,EAAYtzI,UAAYA,EACxBszI,EAAc27N,EAAkB36Y,YAAYg/K,GAC5CA,EAAYrpK,OAAOglY,EAAkBjiG,UAErC,GAAI1jQ,EAAS,CACX,MAAMe,EAAgBx3C,KAAK6/D,OAAO6nS,0BAA0B00C,GAAmB9pV,UAAUi0Y,sBACvF9zC,EAAYl8W,GAAUvxB,KAAKyxB,EAASe,GAEtCS,GAAU6d,eAAerf,EAAS,EAAG,GACrCwB,GAAUinU,WAAWzoU,EAASg8W,EAAUjuX,EAAGiuX,EAAUtuZ,GACrDo2G,GAAQ1oD,SAASra,EAAef,EAASgqI,EAAY+7I,YAAY,GAAG7xT,UAEhE3K,KAAK6/D,OAAO0rC,QAAQ6wJ,kBACrB,CACL,OAAOp8P,KAAKihE,WAAW2lY,iBAAiB/nc,YAM5Cc,kBAAkBq0N,EAAgBkwG,GAChC,IAAKlkU,KAAK4/D,SAAU,CAElB98C,GAAYhhB,OAAOoiU,KAAiBA,EAAa9lU,QAAO4F,IACtD,IAAI6ic,EACJ,SAAUA,EAAY7ic,EAAEsO,UAAY,MAAQu0b,SAAmB,GAAKA,EAAU13X,YAGlF,OAAO+0P,EAITvkU,sBAAqB8gL,YACnBA,EAAWuzC,eACXA,EAAc83E,WACdA,EAAU7kS,OACVA,EAAMogD,SACNA,EAAQ/R,KACRA,IAEA,GAAImrI,EAAY9wG,SAAU,CACxBm8N,EAAW,0BAA4B,EACvC,MAAM/rS,EAAKC,KACXD,EAAG2lc,qBAAuBz+b,EAC1B,MAAMkhN,mBACFA,GACEpoN,EAAG8/D,OACPinY,EAAmBrmR,EAAYp5H,SAASjpD,QAAO4F,IAC7C,IAAI+ic,EACJ,OAAQA,EAAsB/ic,EAAE2tU,oBAAsB,MAAQo1H,SAA6B,OAAS,EAAIA,EAAoBn7b,SAASooN,MAIvIwnL,EAAUrzL,EAAmB4kM,aAAa/4L,EAAgB8yO,EAAkB,MAAOrmR,EAAa1gL,EAAG26Y,wBACnGv1C,EAAe,GACjB,GAAIq2C,IAAY,MAAQA,SAAiB,GAAKA,EAAQj4F,WAAY,CAChE,IAAK,MAAMhxK,KAAUipQ,EAAQj4F,WAAY,CAEvC,GAAIxjT,EAAGinT,cAAgB,OAAQ,CAC7Bz0K,EAAOp9F,IAAM,EACbo9F,EAAOtrI,OAASlH,EAAGu8Y,yBAAyBtoL,EAAgBvzC,QAGzD,GAAI1gL,EAAGinT,cAAgB,QAAS,CACnCz0K,EAAOtrI,OAASlH,EAAGylc,YAGrBjzT,EAAOj9F,MAAQA,EACfi9F,EAAOi2Q,YAAcj2Q,EAAOp9F,IAC5B,MAAMiI,EAAY+qK,EAAmBs5L,YAAYlvQ,EAAQtrI,GACzDm2C,EAAUsB,UAAU,kBAAoB,EACxCymT,EAAa3mW,KAAK4+C,IAItBiK,EAAS7oD,KAAK,CACZkgD,UAAW,CACTsoZ,4BAA6B,EAC7Brnc,CAAC,0BAA0BI,EAAGinT,eAAgB,GAEhDtwR,QAAS,CACPimX,eAAgB,yBAElBt1V,SAAU89S,EACVh8S,YAAa,CACXmI,YAAa,SACb6qD,iBAAkB,OAO5Bj9G,EAAgBomc,GAAc,QAAS,gBACvCpmc,EAAgBomc,GAAc,eAAgB,CAuB5Ct+I,YAAa,OAUb6sD,UAAW,EAUXs3B,eAAgB,EAUhBq6D,YAAa,GAkBb18L,aAAc,GAYdk9L,sBAAuB,MAsBvBI,mBAAoB,KAgBpBD,qBAAsB,KAqBtBO,wBAAyB,OAE3Bxnc,EAAgBomc,GAAc,eAAgB,CAC5CnqY,OAAQ,CAAC,6BACTsF,MAAO,CAAC,oBAAqB,uBAAwB,mBAAoB,iCAAkC,uBAAwB,sBAAuB,+BAAgC,yBAA0B,yBACpNC,SAAU,CAAC,oBAAqB,eAAgB,2BAA4B,iBAAkB,iCAAkC,mBAElIxhE,EAAgBomc,GAAc,YAAa,CACzCC,cAAe,QAEjBD,GAAap9b,OAAS,eACtBijO,GAAmB2F,gBAAgBw0N,GAAc,MAAO,gBAMxD,SAASxvb,GAAI6nC,GACX,MAAO,qBAAqBA,EAAQ,GAAK,IAAIA,EAAQ,KAAO,KAsC9D,MAAMspZ,WAAmBvnY,GAEvB3xD,mBACE,MAAO,aAETvO,0BACE,MAAO,CAMLgoK,YAAa,KAMb0/R,eAAgB,KAMhBvqQ,WAAY,cAMZ1E,aAAc,uBAGlBz3H,0BACE,MAAO,CACLC,MAAO,CAAC,UAAW,CACjBzoD,GAAI,sBAEJ6U,MAAO,KACN,CACD7U,GAAI,uBAEJ6U,MAAO,OAUbltB,SAAQipI,WACNA,IAEA,GAAIA,EAAY,CACd,MAAM7oI,EAAKC,MACT6/D,OACEA,GACE9/D,EACNA,EAAGu7K,KAAO,IAAI/X,GAAW,CACvB9+J,KAAM,mBACNi6J,MAAO,KAEPQ,eAAgB,GAAGr/F,EAAO0rR,2CAC1B9nL,cAAe,EACfhzG,aAAcoP,EAAOyrR,uBACrBj+T,UAAW,CACTypN,gBAAiB,oBACjBp6D,UAAW,cACXpB,KAAM,SACN27D,KAAM,SACN/hN,MAAO,cACP5Y,QAASvc,KAGbA,EAAGwpE,gBAAgB,QACnBxpE,EAAG8/D,OAAO1wC,GAAG,CACX1qB,KAAM,OACN9E,CAAC,GAAGkgE,EAAOysR,gCAAiC,uBAC5C3sV,CAAC,GAAGkgE,EAAOysR,gCAAiC,uBAC5ChwU,QAASvc,KAIfJ,kBAAkBJ,GAChBS,KAAK6/D,OAAOppB,QAAQmI,UAAU8X,OAAO5gD,EAAG,iBAAkBvW,GAE5DI,qBAAqBJ,GACnBS,KAAK6/D,OAAOppB,QAAQmI,UAAU8X,OAAO5gD,EAAG,kBAAmB5V,QAAQX,IAErEI,YACE,IAAI6sV,GACHA,EAAaxsV,KAAKs7K,QAAU,MAAQkxK,SAAoB,OAAS,EAAIA,EAAWzwU,UACjF7B,MAAM8B,YAERrc,UAAUgiE,GAER,GAAI3hE,KAAK6/D,OAAOgpE,UAAW,CACzB7oI,KAAK6/D,OAAOi5H,UAEd5+K,MAAM6nD,UAAUJ,GAIlBhiE,QAAQ8tE,GACN,MAAM1tE,EAAKC,KACTmnc,EAAS15X,EAAQh3B,QAAQwN,QAAQlkD,EAAG8/D,OAAO0rR,eAC7C47G,EAAOvoZ,UAAU98C,OAAOgU,EAAG,YAC3B/V,EAAG8/D,OAAOppB,QAAQmI,UAAU98C,OAAOgU,EAAG,iBAEtC,IAAK/V,EAAGqnc,mBAAoB,CAC1Brnc,EAAGimE,OAAOlkE,SACV/B,EAAGimE,OAAS,MAGhBrmE,uBAAuBo2V,GACrB,MAAO,CACLr3S,UAAW5oC,EAAG,QACd4gB,QAAS,CACPimX,eAAgB,cAElBt1V,SAAU,CAAC,CACT3I,UAAW5oC,EAAG,GACd4gB,QAAS,CACPw4I,QAAS6mL,EAAW/1V,KAAKi4L,eAE3B52L,MAAO,CACL6F,MAAO6uV,EAAW/1V,KAAK28L,YAAc,QAK7Ch9L,gBAAgBo2V,EAAY1uS,EAAU2rK,GACpC,IAAK+iI,EAAWnxB,SAAWmxB,EAAW3C,UAAY2C,EAAWp1B,cAAgB3gU,KAAK4/D,SAAU,CAC1F,MAAMynY,cACJA,GACErnc,KAAK6/D,OAAOkyD,SAGhB,GAAIgkO,EAAWygG,aAAe6Q,IAAkB,MAAQA,SAAuB,GAAKA,EAAcjnY,QAAS,CACzG21R,EAAWo8F,SAASnzb,SAAQ,CAACmkc,EAAejzb,KAC1C8iN,EAAWgyO,kBAAkB90b,GAAOm3C,SAAS8mC,QAAQnuF,KAAKsnc,uBAAuBnE,WAE9E,CACL97Y,EAAS8mC,QAAQnuF,KAAKsnc,uBAAuBvxG,MAKnDp2V,qBAAqBknP,GACnB7mP,KAAKklc,gBAAgBr+M,EAAUpmE,YAAaomE,EAAUx/L,SAAUw/L,GAGlElnP,oBAAoBwlc,GAClBnlc,KAAKklc,gBAAgBC,EAASpvG,WAAYovG,EAAS99Y,SAAU89Y,GAI/Dxlc,gBAAgBwwB,GACd,MAAMkza,GAAkBlza,EAAM2tC,WAAa3tC,EAAMxxB,QAAQslD,QAAQ,wBACjE,GAAIo/Y,EAAgB,CAClB,MAAMkE,EAAahxZ,GAAUvxB,KAAKq+a,GAClC,GAAIkE,IAAe,MAAQA,SAAoB,GAAKA,EAAWxvZ,SAAS+I,GAAYkqH,aAAa76I,IAAS,CACxG,OAAOkza,IAIb1jc,cAAcwwB,GACZ,OAAOjwB,QAAQF,KAAKwnc,gBAAgBr3a,IAGtCxwB,qBAAqBwwB,GACnB,MAAMpwB,EAAKC,KACTwyE,EAASriD,EAAM,GAAGpwB,EAAG8/D,OAAOysR,4BAC9B,GAAI95Q,EAAOmuP,aAAenuP,EAAOqG,UAAY94E,EAAG6/D,UAAY4S,EAAO7C,WAAa6C,EAAO4oF,WAAWr7J,EAAG48L,YAAa,CAChH,OAGF,IAAK58L,EAAGu7K,KAAK7tG,QAAS,CACpB,MAAMh3B,EAAUtmB,EAAM,GAAGpwB,EAAG8/D,OAAOysR,6BACjCh6U,EAASioG,GAAQzqD,SAASrZ,EAAS12C,EAAG8/D,OAAOysR,oBAE/C,IAAKvsV,EAAGimE,OAAQ,CACd,MAAMtvC,EAAU,CACdw4I,QAAS18F,EAAOzyE,EAAG48L,aAErB,IAAIjhJ,EAAM82B,EAAOzyE,EAAG48L,YAAc,IAClC,MAAM0qQ,cACJA,GACEtnc,EAAG8/D,OAAOkyD,SACd,GAAIv/C,EAAOgkX,aAAe6Q,IAAkB,MAAQA,SAAuB,GAAKA,EAAcjnY,QAAS,CACrG1pC,EAAQ66Z,QAAU,EAClB,MAAMkW,EAAYlxZ,GAAUvxB,KAAK1S,GACjC,IAAIo1b,EAAiBC,EAErBn1X,EAAO2/W,SAASxqb,MAAK,CAAC4pb,EAASrhb,KAI7B,IAAKqhb,EAAQ3C,aAAe8Y,IAAoB,IAAK,CACnD,OAAO,KAETA,EAAkBnW,EAAQ3C,YAC1Bl4Z,EAAQ66Z,QAAUrhb,EAClB,MAAM03b,EAA2BrtV,GAAQzqD,SAASx9C,EAAQ,YAAYpC,gBAAoBooD,WAC1FqvY,EAAoBpxZ,GAAUvxB,KAAK4ib,MAGrC,GAAI7nc,EAAG8/D,OAAOpqB,IAAK,CACjBiG,EAAMisZ,EAAoBA,EAAkBvyZ,MAAQuyZ,EAAkBzgc,MAAQugc,EAAUryZ,MAAQ,MAC3F,CACLsG,EAAMisZ,EAAoBA,EAAkBryZ,KAAOqyZ,EAAkBzgc,MAAQugc,EAAUnyZ,KAAO,GAGlGv1C,EAAGimE,OAAS/tB,GAAU72C,cAAc,CAClCkR,OAAAA,EACAosC,UAAW5oC,EAAG,SACdzU,MAAO,CACL1B,CAACI,EAAG8/D,OAAOpqB,IAAM,QAAU,QAASiG,GAEtChlB,QAAAA,IAIJ32B,EAAGqnc,mBAAqB,UAGrB,GAAI50X,IAAWzyE,EAAGu7K,KAAK7tG,QAAQsoR,WAAY,CAE9Ch2V,EAAGqnc,mBAAqB,MAI5Bznc,qBAAqBwwB,GACnB,MAAMpwB,EAAKC,KACX,IAAKD,EAAGu7K,KAAK7tG,SAAW1tE,EAAGimE,QAAU71C,EAAMA,MAAM2tC,YAAc/9D,EAAGimE,OAAQ,CACxEjmE,EAAGimE,OAAOlkE,SACV/B,EAAGimE,OAAS,KAEdjmE,EAAGqnc,mBAAqB,MAE1Bznc,mBAAkBZ,OAChBA,EAAM0uE,QACNA,IAEA,MAAM5N,OACFA,GACE7/D,MACJqnc,cACEA,GACExnY,EAAOkyD,UACXt7E,QACEA,GACEg3B,EACJsoR,EAAal2R,EAAOy1R,mBAAmB7+S,GACzC,IAAIoxZ,EAAiBC,EAAYC,EAAUC,EAE3C,GAAIjyG,EAAWygG,aAAe6Q,IAAkB,MAAQA,SAAuB,GAAKA,EAAcjnY,QAAS,CACzG,MAAMw0X,EAAen+Y,EAAQ/f,QAAQ66Z,QACrCsW,EAAkBttV,GAAQzqD,SAASrZ,EAAQe,cAAe,YAAYo9Y,gBACtEkT,EAAaD,EAAgBl0Y,kBAE7Bq0Y,EAAavxZ,EAAQe,cAAcwL,YACnC+kZ,EAAWxtV,GAAQzqD,SAASrZ,EAAQe,cAAe,YAAYo9Y,KAAgBrgY,WAAauzY,EAAW9kZ,gBAClG,CACL6kZ,EAAkBttV,GAAQzqD,SAASrZ,EAAQe,cAAe,cAC1DswZ,EAAaD,EAAgBl0Y,kBAC7Bq0Y,EAAaH,EAAgB7kZ,YAC7B+kZ,EAAWD,EAAW9kZ,YAExB,GAAIhjD,KAAK6/D,OAAOpqB,IAAK,CACnB12C,EAAO6mH,KAAOmiV,EACdhpc,EAAOw/J,OAASypS,EAAaD,OACxB,CACLhpc,EAAOw/J,MAAQwpS,EACfhpc,EAAO6mH,KAAOoiV,EAAaD,EAE7B9pc,OAAOmZ,OAAOq2D,EAAS,CACrBq6X,WAAAA,EACAC,SAAAA,EACAC,WAAAA,EACAjyG,WAAAA,IAEF,OAAQA,EAAWl9Q,SAErBl5E,aAAY8tE,QACVA,IAEA,MAAM5N,OACFA,GACE7/D,KACJmnc,EAAS15X,EAAQh3B,QAAQwN,QAAQ4b,EAAO0rR,eAC1C47G,EAAOvoZ,UAAU7/B,IAAIjJ,EAAG,YACxB+pD,EAAOppB,QAAQmI,UAAU7/B,IAAIjJ,EAAG,iBAChC23D,EAAQh3B,QAAQgS,cAAgB,KAElC9oD,QAAO8tE,QACLA,IAEA,MAAMyhG,EAAU96J,KAAKkxB,OAAOmoC,EAAQs6X,SAAWt6X,EAAQo8D,MAAQ7pI,KAAK6/D,OAAOpqB,KAAO,EAAI,IAAMg4B,EAAQu6X,WAAa,MAC/GX,cACEA,GACErnc,KAAK6/D,OAAOkyD,SAGlBtkD,EAAQyhG,QAAUzhG,EAAQh3B,QAAQ/f,QAAQw4I,QAAUA,EACpD,GAAIzhG,EAAQsoR,WAAWygG,aAAe6Q,IAAkB,MAAQA,SAAuB,GAAKA,EAAcjnY,QAAS,CACjHqN,EAAQsoR,WAAWo8F,SAASnzb,SAAQ,CAACuyb,EAASrhb,KAC5C,MAAM43b,EAAavtV,GAAQzqD,SAAS2d,EAAQh3B,QAAQe,cAAe,YAAYtnC,gBAAoBooD,WACjG+qY,EAAiB9oV,GAAQzqD,SAAS2d,EAAQh3B,QAAQe,cAAe,YAAYtnC,KAE/E,GAAIu9D,EAAQyhG,SAAWqiR,EAAQ0B,eAAgB,CAC7C6U,EAAWzmc,MAAM6F,MAAQm8b,EAAergZ,YAAc,UAGnD,GAAIyqB,EAAQyhG,SAAWqiR,EAAQ4B,iBAAkB,CACpD2U,EAAWzmc,MAAM6F,MAAQ,WAGtB,GAAIumE,EAAQyhG,SAAWqiR,EAAQ4B,kBAAoB1lX,EAAQyhG,SAAWqiR,EAAQ0B,eAAgB,CACjG,MAAMgV,EAAoB1W,EAAQ0B,eAAiB1B,EAAQ4B,iBAE3D2U,EAAWzmc,MAAM6F,OAASgoK,EAAUqiR,EAAQ4B,kBAAoBkQ,EAAergZ,YAAcilZ,EAAoB,aAGhH,CACLx6X,EAAQq6X,WAAWpxa,QAAQw4I,QAAUA,EACrCzhG,EAAQq6X,WAAWzmc,MAAM6F,MAAQgoK,EAAU,KAG/CvvK,aAAY8tE,QACVA,IAGA,GAAIA,EAAQsoR,WAAWygG,YAAa,CAClC/oX,EAAQq6X,WAAWzmc,MAAM6F,MAAQumE,EAAQsoR,WAAWo8F,SAAS1kX,EAAQh3B,QAAQ/f,QAAQ66Z,SAAS3C,YAAc,QACvG,CACLnhX,EAAQq6X,WAAWzmc,MAAM6F,MAAQumE,EAAQsoR,WAAW/1V,KAAK28L,YAAc,IAEzE38L,KAAK23E,QAAQlK,GAEf9tE,QAAO8tE,QACLA,IAEA,MAAMsoR,WACFA,GACEtoR,GACJ45X,cACEA,GACErnc,KAAK6/D,OAAOkyD,SAClBgkO,EAAW/1V,KAAK28L,YAAclvH,EAAQyhG,QAGtC,GAAI6mL,EAAWygG,aAAe6Q,IAAkB,MAAQA,SAAuB,GAAKA,EAAcjnY,QAAS,CACzG21R,EAAWo8F,SAASxqb,MAAK,CAAC4pb,EAASrhb,KAEjC,GAAIu9D,EAAQyhG,SAAWqiR,EAAQ4B,kBAAoB1lX,EAAQyhG,SAAWqiR,EAAQ0B,eAAgB,CAC5F,MAAMgV,EAAoB1W,EAAQ0B,eAAiB1B,EAAQ4B,iBACzDkQ,EAAiB9oV,GAAQzqD,SAAS2d,EAAQh3B,QAAQe,cAAe,YAAYtnC,KAG7EolC,EAAOlsC,SAASi6b,EAAehic,MAAMi0C,OAASm4B,EAAQyhG,QAAUqiR,EAAQ4B,kBAAoBkQ,EAAergZ,YAAcilZ,EAE3Hx6X,EAAQh3B,QAAQp1C,MAAM2E,QAAU,SAASsvC,MAEzCm4B,EAAQh3B,QAAQ/f,QAAQ66Z,QAAUrhb,EAClC,OAAO,aAGN,CAELu9D,EAAQh3B,QAAQp1C,MAAM2E,QAAU,SAAShG,KAAK6/D,OAAOpqB,IAAM,IAAMg4B,EAAQyhG,QAAUzhG,EAAQyhG,WAE7FlvK,KAAK23E,QAAQlK,GAIf7L,qBAEFqlY,GAAW/+b,OAAS,aACpBijO,GAAmB2F,gBAAgBm2N,GAAY,MAAO,gBACtD97N,GAAmB2F,gBAAgBm2N,GAAY,KAAM,SAqIrD,MAAMiB,WAA+B5pG,GAInC1mV,wBACE,MAAO,CACL48W,YAAa,IAAIhjX,KAKrB7R,YACE,IAAIgpE,EACJzuD,MAAMsB,aAAa3c,WACnBmB,KAAK83U,6BAA+BnvQ,EAAS,MAAMw/X,UAAoCnoc,KAAK83U,8BAAgC54U,EAAgBypE,EAAQ,QAAS,+BAAgCzpE,EAAgBypE,EAAQ,cAAe,+BAAgCA,GACpQ3oE,KAAK6/D,OAAOkoP,SAAS54R,GAAG,CACtB1qB,KAAM,WACNgzE,YAAa,wBAEb5qD,KAAM,IACNvQ,QAAStc,OAKbL,sBAAsB21S,GACpBp7R,MAAMqrU,sBAAsBjwC,GAC5BA,IAAkB,MAAQA,SAAuB,OAAS,EAAIA,EAAcnmR,GAAG,CAC7E1qB,KAAM,gBACNs7F,gBAAiB,mBACjBzjF,QAAStc,OAGbL,6BAA6B41S,GAC3Br7R,MAAMwrU,6BAA6BnwC,GACnCA,IAAyB,MAAQA,SAA8B,OAAS,EAAIA,EAAqBpmR,GAAG,CAClG1qB,KAAM,uBACNs7F,gBAAiB,mBACjBzjF,QAAStc,OAKbL,wBAEEK,KAAKw0X,YAAY/1U,QAEnB9+C,kBAAiByyD,OACfA,EAAM6f,QACNA,EAAOO,OACPA,EAAMD,QACNA,IAEA,MAAMxyE,EAAKC,KAEX,GAAIoyD,IAAW,SAAU,CACvB,IAAIuqY,EACJ,MAAMv3W,EAAS7S,EAAQ09N,SAEvB,GAAI7qN,WAAkBA,EAAOvrE,WAAa,YAAc8ib,EAAgBv3W,EAAO7lF,SAAW,MAAQo9b,SAAuB,OAAS,EAAIA,EAAchyb,MAAQy6E,EAAOvrE,UAAW,CAC5K9Z,EAAGy0X,YAAYl7W,OAAOk5D,EAAO7nE,IAE7B5K,EAAG8/D,OAAOw4T,mBAAkB,KAC1Bt4X,EAAG8/D,OAAOsoJ,mBAAmB2hM,yBAAyBt3U,OAK5D,GAAIpgB,IAAW,SAAU,CACvB6f,EAAQjzE,SAAQwzE,GAAUzyE,EAAGy0X,YAAYl7W,OAAOk5D,EAAO7nE,MAEzD,GAAIynD,IAAW,YAAa,CAC1BryD,EAAGy0X,YAAY/1U,SAGnB9+C,kBAAiByyD,OACfA,EAAM6f,QACNA,EAAOO,OACPA,EAAMD,QACNA,KAQF5yE,kBAAkBw6S,EAAUlsR,GAC1B,MAAMluB,EAAKC,MACTw0X,YACEA,EAAW30T,OACXA,GACE9/D,GACJgoT,SACEA,GACEloP,EACJ2sT,GAAezsX,EAAG0sX,iBAAmB5sV,GAAW+5C,aAAamuO,EAAS9/Q,KAAMloC,EAAG0sX,kBAAoB,EACrG,IAAK1sX,EAAG6/D,UAAY4sT,GAAeryE,EAASiL,kBAAmB,CAC7D,IAAKovE,EAAYv2W,IAAIk8R,EAASxvS,IAAK,CACjC,MAAMy9b,EAASjuJ,EAASiL,kBAAkBknE,wBAAwBzsT,EAAO1yB,UAAW0yB,EAAOzyB,SACzF6kC,EAAUm2X,EAAOv+b,KAAI,CAACkoL,EAAOnzL,IAAM,IAAImB,EAAG+3U,4BAA4B,CACpEntU,GAAI,IAAIwvS,EAASxvS,MAAM/L,IACvB0pJ,QAASypC,EAAMzpC,SAAW6xJ,EAASiL,kBAAkB98J,SAAW,GAChExyI,IAAK,GAAGqkS,EAASiL,kBAAkBtvS,KAAO,MAAMi8K,EAAMj8K,KAAO,KAC7Dq3B,UAAW4kJ,EAAM5kJ,UACjBC,QAAS2kJ,EAAM3kJ,QACfoyQ,WAAYrF,EAASxvS,GACrB24K,aAAc,SAElBkxM,EAAYljX,IAAI6oS,EAASxvS,GAAIsnE,GAE/BhkD,EAAOzvB,QAAQg2X,EAAY9iX,IAAIyoS,EAASxvS,KAE1C,OAAOsjB,EAETtuB,eAAc2jL,aACZA,IAEA,OAAOA,GAKXpkL,EAAgBgpc,GAAwB,QAAS,0BACjDhpc,EAAgBgpc,GAAwB,eAAgB,CACtDvpG,SAAU,uDAcV8tB,gBAAiB,OAKjB30C,4BAA6BX,KAE/B+wH,GAAuBtmY,aAAe,GACtCsmY,GAAuBhgc,OAAS,yBAChCijO,GAAmB2F,gBAAgBo3N,GAAwB,MAAO,gBAUlE,IAAIG,GAAkBn7a,GAAU,MAAMo7a,UAAqBp7a,GAAU7R,IACnEtN,mBACE,MAAO,cAETpO,aACE,MAAMI,EAAKC,KACTurG,EAAUxrG,EAAGwrG,QACb5/B,EAAM4/B,EAAQu/U,SAChB/qb,EAAG2nb,qBAAuB/7W,EAAI/L,SAC9B7/D,EAAG4nb,uBAAyBh8W,EAAIomC,WAChC,GAAIhyG,EAAG2nb,qBAAsB,CAC3B/7W,EAAI0pB,SAIJ1pB,EAAIomC,WAAa,UACZ,CACL,GAAIhyG,EAAG4nb,uBAAwB,CAC7Bh8W,EAAIomC,WAAa,MAEnB,GAAIpmC,EAAI+rC,YAAa,CACnB/rC,EAAI6oC,oBAIV70G,sBAEEK,KAAKurG,QAAQu/U,SAAS12U,mBAExBz0G,uBACE,MAAMI,EAAKC,KACT2rE,EAAM5rE,EAAGwrG,QAAQu/U,SACnBn/W,EAAI6oC,kBACJ,GAAIz0G,EAAG2nb,qBAAsB,CAC3B/7W,EAAI8lC,cAGR9xG,6BACE,IAAI4oc,EACJ,MAAM58X,EAAM3rE,KAAKurG,QAAQu/U,UACvBjrX,OACEA,GACE7/D,KACN,IAAKuoc,EAAmB58X,EAAI+mC,eAAiB,MAAQ61V,SAA0B,GAAKA,EAAiBzpc,OAAQ,CAC3G+gE,EAAO28L,iBACP7wL,EAAI87W,0BACE5nX,EAAOg9L,cAAc,UACtB,CACLlxL,EAAI6oC,mBAGR70G,YACEK,KAAKurG,QAAQu/U,SAASz1V,SAExB11F,aACEK,KAAKurG,QAAQu/U,SAASnpX,UAExBhiE,UACE,MAAMI,EAAKC,KACT2rE,EAAM5rE,EAAGwrG,QAAQu/U,SACnBn/W,EAAI/L,SAAW7/D,EAAG2nb,qBAClB/7W,EAAIomC,WAAahyG,EAAG4nb,yBAIxB,IAAI6gB,GAAwBt7a,GAAU,cAAeA,GAAUD,GAAO5R,KACpEotb,6BACE,OAAO,KAETC,cACE,OAAO,KAET/oc,0BACEK,KAAKutB,QAAQ,mBAAoB,CAC/Bm7a,QAAS1oc,KAAK0oc,UAMlBlmY,qBAGF,MAAMxsC,GAASF,GAAaO,aAAai9W,GAAU2+B,GAAU,CAC3D02B,qBAAsB,CACpBC,KAAM,OACNn1B,YAAa,gBACbC,aAAc,iBACdH,mBAAoB,wBACpBI,iBAAkB,sBAClBH,oBAAqB,yBACrBI,kBAAmB,wBAErB2oB,cAAe,CACbsM,mBAAoB,oBAEtBC,eAAgB,CACdC,YAAa,cACb70D,KAAM,OACNrsR,OAAQ,SACRssR,OAAQ,SACR60D,cAAe,iBACfC,UAAW,2CAEbC,SAAU,CACRC,YAAa,YACbC,qBAAsB,mBACtBC,uBAAwB,8CAE1BC,gBAAiB,CACfC,YAAa,QAEfC,oBAAqB,CACnBD,YAAa,QAEfE,oBAAqB,CACnB/9Q,WAAY,MACZg+Q,QAAS,UACTt1D,KAAM,OACNu1D,UAAW,YACXC,aAAc,aACdniX,SAAU,WACV6sT,MAAO,QACPu1D,OAAQ,SACRC,SAAU,WACVC,UAAW,aAEbC,WAAY,CACVt+Q,WAAY,QACZg+Q,QAAS,UACTt1D,KAAM,OACNw1D,aAAc,aACdniX,SAAU,WACV6sT,MAAO,QACPu1D,OAAQ,SACRI,OAAQ,SACRC,MAAO,SAETC,qBAAsB,CACpBz+Q,WAAY,OACZ0+Q,SAAU,WACVC,SAAU,WACVC,qBAAsB,qBACtBC,kBAAmB,kBACnBC,kBAAmB,kBACnBC,SAAU,WACVC,2BAA4B,4BAE9BC,YAAa,CACXj/Q,WAAY,SACZ2+Q,SAAU,WACVD,SAAU,WACVQ,kBAAmB,kBACnBC,gBAAiB,gBACjBP,qBAAsB,qBACtBC,kBAAmB,kBACnBC,kBAAmB,kBACnBM,WAAY,aACZC,OAAQ,SACRN,SAAU,WACVC,2BAA4B,4BAE9BM,cAAe,CACbC,aAAc,eACdC,WAAY,aACZC,GAAI,KACJ/2D,KAAM,OACNlhE,KAAM,OACN8gE,IAAK,MACLo3D,iBAAkB,oBAClBC,kBAAmB,sBAErBC,SAAU,CACRC,MAAO,SAETC,aAAc,CACZC,SAAU,EACRlsc,MAAAA,KACI,GAAGA,KACToqc,UAAW,YACXt1D,SAAU,WACVq3D,MAAO,SAETC,qBAAsB,CACpBnqC,OAAQ,SACRoqC,iBAAkB,iBAClBC,cAAe,cACfC,eAAgB,gBAElBC,kBAAmB,CACjBC,cAAe,+GACfC,aAAc,sGACdC,sBAAuB,4EACvBC,mBAAoB,+GACpBC,kBAAmB,sGACnBC,SAAU,iBAEZC,oBAAqB,CACnBN,cAAe,6FACfC,aAAc,oFACdC,sBAAuB,0DACvBC,mBAAoB,+GACpBC,kBAAmB,sGACnBC,SAAU,gBACVE,eAAgB,oBAElBC,+BAAgC,CAC9BC,iBAAkB,mCAClBC,mBAAoB,sBACpBC,cAAe,+BACfz9J,MAAO,mBACP09J,MAAO,SAETC,qBAAsB,CACpBC,gBAAiB,8BACjBC,uBAAwB,sEAE1Bl5D,eAAgB,CACdm5D,OAAQ,UAEVC,iBAAkB,CAChBC,YAAa,sBACbC,gBAAiB,eACjBxmS,WAAY,sBAEd68R,cAAe,CACbG,WAAY,cACZC,cAAe,UAEjB0B,aAAc,CACZ8H,oBAAqB,yBACrBC,kBAAmB,yBAIvBh1a,GAAuBvB,eAAe,KAAM,CAC1CC,KAAM,UACNf,OAAAA,KAYF,MAAM8ya,WAAuB79U,GAAMzqG,MAAMgob,KAEvCz6b,mBACE,MAAO,iBAETlB,kBACE,MAAO,iBAETrN,0BACE,MAAO,CACLy5B,sBAAuB,CAAC,SACxBk5E,MAAO,iBACPr8F,IAAK,4BACLo+I,SAAU,KACV3hB,OAAQ,MACRhc,UAAW,CACT+O,eAAgB,+BAGlBriH,MAAO,KAEPssI,KAAM,CAEJ7c,cAAe,KACfzwF,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACLw1V,WAAY,CACVxtW,KAAM,UACNixD,MAAO,SACPpmD,IAAK,WACL29G,OAAQ,KAEVykP,aAAc,CACZjtW,KAAM,YACNwoH,OAAQ,KAEVkuF,aAAc,CACZ12M,KAAM,mBACNwoH,OAAQ,OAIdvsH,MAAO,CACLsa,QAAS,CACP+X,UAAW,oBAKnB1X,2BACE,MAAO,CACLo5B,SAAU,WACVy0E,UAAW,KACX7mC,SAAU,KACVykX,SAAU,KACVC,OAAQ,KACRzlT,SAAU,MACV4sD,WAAY,SACZj+E,aAAc,UAKdiwL,yBAA0B,EAC1B8mJ,cAAe,KACfC,YAAa,KAMbzE,cAAe,KAOf0E,mBAAoB,IACpBz0a,sBAAuB,CAAC,iBACxBsyE,QAAS,KAKToiW,kBAAmB,MAMvBhuc,oBAAoBu2I,GAClB,IAAI03T,EACJ,IAAKA,EAAqB13T,EAAarpI,QAAU,MAAQ+gc,SAA4B,GAAKA,EAAmBhic,SAAS,SAAWsqI,EAAatrG,cAAgB,KAAM,CAClKsrG,EAAatrG,aAAe5qC,KAAK4qC,aAGnC,GAAIsrG,EAAajoF,MAAQ,QAAUjuD,KAAK6tc,WAAY,CAClD,MAAMC,EAAgB,GACtB,IAAK,MAAM7uc,KAAOe,KAAK6tc,WAAY,CAEjC,MAAME,EAAc9uc,EAAIuL,QAAQ,MAAO,OACvCsjc,EAAcC,GAAe,CAC3B9qb,MAAO1b,MAAMC,QAAQxH,KAAK6tc,WAAW5uc,IAAQ+xC,GAAag9Z,4BAA4Bhuc,KAAK6tc,WAAW5uc,IAAQe,KAAK6tc,WAAW5uc,IAGlI+xC,GAAaxhC,MAAM0mI,EAAajzH,MAAO6qb,GAEzC,OAAO53T,EAETv2I,YAAYsjB,GACV,MAAMuqb,cACFA,EAAgB,IACdxtc,KAEJiuc,EAAcj9Z,GAAazhC,MAAM0T,GACjCgnM,EAAWgkP,EAAYl9a,MAAKkT,GAAKA,EAAEgqB,MAAQ,SAC7CjuD,KAAKm9V,iBAAiBqwG,GACtBx8Z,GAAaxhC,MAAMy6M,EAAShnM,MAAOuqb,GACnC,OAAOtzb,MAAM+oL,YAAYgrQ,GAG3Btuc,iBAAiBsjB,GACf,IAAK,MAAMgrC,KAAOhrC,EAAO,CACvB,MAAMm6U,EAAUn6U,EAAMgrC,GACtB,GAAImvS,IAAY,KAAM,QACbn6U,EAAMgrC,QACR,GAAImvS,IAAY,MAAQA,SAAiB,GAAKA,EAAQn6U,MAAO,CAClEjjB,KAAKm9V,iBAAiBC,EAAQn6U,SAIpCtjB,iBACE,IAAIuuc,EACJ,MAAMnuc,EAAKC,MACTsrI,UACEA,GACEvrI,GACJosN,KACEA,GACE7gF,GACJq2E,aACEA,EAAYu2J,aACZA,EAAYO,WACZA,KACIy1F,EAAWnuc,EAAGwvJ,QAAU,MAAQ2+S,SAAkB,OAAS,EAAIA,EAAS5iU,YAAc,GAC9FmtO,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWtpV,GAAG,QAASpvB,EAAGo+V,YAAap+V,GAC/F4hN,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAaxyL,GAAG,QAASpvB,EAAGiiN,cAAejiN,GACvGm4W,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAa/oV,GAAG,QAASpvB,EAAGw5W,cAAex5W,GACvG9B,OAAO4N,OAAOy/H,GAAWtsI,SAAQ0iH,IAC/B,GAAIA,EAAOysV,gBAAiB,CAC1BzsV,EAAO6tF,iBAAmBvvM,KAAK0mT,8BAC1B,GAAIhlM,EAAOzzD,MAAQ,aAAeyzD,EAAOzzD,MAAQ,UAAW,CACjEyzD,EAAOnW,QAAUvrG,KAAKurG,aACjB,GAAImW,EAAOzzD,MAAQ,mBAAqByzD,EAAOzzD,MAAQ,gBAAiB,CAC7EyzD,EAAOu0G,KAAKywF,yBAA2B1mT,KAAK0mT,yBAC5ChlM,EAAOisV,kBAAoBjsV,EAAOisV,mBAAqB5tc,EAAG4tc,kBAE5D,GAAIjsV,EAAO+mV,uBAAwB,CACjC/mV,EAAOvyF,GAAG,mBAAoBpvB,EAAGquc,mBAAoBruc,OAMzDosN,EAAKl9E,cAAgB,EACnBlwI,OAAAA,MAEA,MAAM0F,KACJA,EAAIgiF,QACJA,EAAOlnF,MACPA,GACER,EAEJ,GAAIgB,EAAGsuc,cAAgB5pc,GAAQgiF,IAAY1mF,EAAGuuc,eAAgB,CAC5Dvuc,EAAGsuc,aAAa5pc,GAAQlF,IAI9Bmpc,cACE,IAAIA,EAAU,KAEdzqc,OAAO4N,OAAO7L,KAAKsrI,WAAWtsI,SAAQilC,IACpC,GAAIA,EAAEwka,uBAAwB,CAC5BC,EAAUA,GAAWzka,EAAEyka,YAG3B,OAAOA,EAGT/oc,aACE,MAAMI,EAAKC,KACXD,EAAGwpE,gBAAgB,WACnBxpE,EAAGwpE,gBAAgB,cACnBxpE,EAAGwuc,eAAiB,KAIpB,MAAMC,QAAsBt0b,MAAMy3G,OAClC,IAAK5xH,EAAGmc,YAAa,CACnBnc,EAAGwtB,QAAQxtB,EAAG20M,YAEhB,OAAO85P,EAGT7uc,qBAAqB6yE,GACnBxyE,KAAK06H,YAAWhZ,IACd,GAAIA,EAAO+sV,SAAW/sV,EAAOj9G,KAAM,CACjC,MAAMiqc,EAAkBl8X,EAAO4oF,WAAW15C,EAAOj9G,MAEjD,GAAIiqc,IAAoB9rc,UAAW,CACjC8+G,EAAO9hD,UAAY4S,EAAO4oF,WAAW15C,EAAOj9G,WAUpD9E,UAAU6yE,EAAQ8iE,EAAmB,OACnC,MAAMv1I,EAAKC,KACXD,EAAGuuc,eAAiB,KAEpBvuc,EAAG4uc,qBAAqBn8X,GACxBzyE,EAAG6uc,eAAe,YAAap8X,EAAQ8iE,GACvCv1I,EAAGwpE,gBAAgB,WAGnBxpE,EAAGsuc,aAAe77X,EAClBA,EAAO+4B,QAAQp8E,GAAG,CAChB1qB,KAAM,UACNohb,aAAc,wBACdzrG,UAAW,qBACX99T,QAASvc,IAEXA,EAAGwpE,gBAAgB,cACnBiJ,EAAO+4B,QAAQ8pM,WAAWlmR,GAAG,CAC3B1qB,KAAM,aACN3C,OAAQ,eACRwa,QAASvc,IAEXA,EAAGuuc,eAAiB,MACpBvuc,EAAGwtB,QAAQ,aAEb5tB,eAAe8E,KAAS8W,GACtBvb,KAAK06H,YAAWz2F,IACd,UAAWA,EAAEx/B,KAAU,WAAY,CACjCw/B,EAAEx/B,MAAS8W,OAMjB5b,oBAAoB+G,GAClB,MAAM3G,EAAKC,KACT6uc,EAAoB5wc,OAAO4N,OAAO9L,EAAGurI,WAAW3jI,MAAKs8B,GAAKA,EAAE6qa,kBAC9D,IAAI18Y,EAAS,KACb,GAAIy8Y,EAAmB,CACrB,MAAM1+a,MACFA,GACEzpB,GACJ+xW,WACEA,EAAU92J,aACVA,EAAYu2J,aACZA,GACEn4W,EAAGurI,UACPyjU,EAAkB5+a,EAAMxxB,OAAOslD,QAAQ,UAWzC,GAAI8qZ,EAAiB,CACnB,OAAQA,GACN,KAAKt2F,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWhiU,QACtE2b,EAASryD,EAAGo+V,YACZ,MACF,KAAKx8I,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAalrK,QAC5E2b,EAASryD,EAAGiiN,cACZ,MACF,KAAKk2J,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAazhU,QAC5E2b,EAASryD,EAAGw5W,cACZ,QAIRx5W,EAAGwuc,eAAiBn8Y,EACpBl4C,MAAMw+I,oBAAoBhyJ,GAE5B/G,cACE,MAAMI,EAAKC,KACXD,EAAGwuc,eAAiB,KACpB,GAAIxuc,EAAG2oc,QAAS,CACd3oc,EAAGwtB,QAAQ,YACN,CACLg+I,GAAMn7C,KAAK,CACThpE,YAAarnD,EAAGqnD,YAChBuB,KAAM5oD,EAAGo7B,EAAE,mBAIjBx7B,gBACEK,KAAKkrH,QAEPvrH,gBACEK,KAAKuuc,eAAiB,KACtBvuc,KAAKutB,QAAQ,UAEf5tB,yBACEK,KAAKutB,QAAQ,sBAEf5tB,oBAAmBZ,OACjBA,EAAM2pc,QACNA,IAEA1oc,KAAKgvc,0BACL,IAAKjwc,EAAOkwc,eAAgB,CAC1Blwc,EAAOkwc,eAAiBlwc,EAAOozG,MAEjC,GAAIpzG,EAAOuT,SAAWtS,KAAKsrI,UAAU6gF,KAAM,CACzC,GAAIu8O,EAAS,CACX3pc,EAAO42H,IAAIl/E,QAAQmI,UAAU98C,OAAO,aACpC/C,EAAO42H,IAAI/F,KAAO,KAClB7wH,EAAOozG,MAAQpzG,EAAOkwc,eACtBlwc,EAAOkwc,eAAiB,SACnB,CACLlwc,EAAO42H,IAAIl/E,QAAQmI,UAAU7/B,IAAI,aACjChgB,EAAO42H,IAAI/F,KAAO,iBAClB7wH,EAAOozG,MAAQpzG,EAAOkwc,iBAI5Btvc,eACEK,KAAKkvc,cAEPvvc,wBACE,GAAIK,KAAKgpc,cAAe,CACtBhpc,KAAK+wH,KAAK,CACR9lH,KAAMjL,KAAKgpc,cACXl5U,UAAW9vH,KAAK0tc,sBAItB/tc,oBAAmBsyE,QACjBA,IAEA,IAAIk9X,EACJ,MAAMpvc,EAAKC,KACX,GAAID,EAAGipc,cAAe,CACpBjpc,EAAG40J,SAEL,GAAI1iF,EAAQh0D,IAAIle,EAAGsuc,cAAe,CAChCtuc,EAAG6uc,eAAe,uBAEnBO,EAAqBpvc,EAAGwuc,kBAAoB,MAAQY,SAA4B,OAAS,EAAIA,EAAmBtoc,KAAK9G,GAExHJ,aACEK,KAAK4uc,eAAe,cAEtBjvc,YACEK,KAAKquc,aAAezrc,UACpB5C,KAAK4uc,eAAe,aAEtBjvc,eACEK,KAAK4uc,eAAe,gBAEtBjvc,cACEK,KAAKquc,aAAezrc,UACpB5C,KAAK4uc,eAAe,eAEtBjvc,eACEK,KAAK4uc,eAAe,gBAEtBjvc,cACEK,KAAKquc,aAAezrc,UACpB5C,KAAK4uc,eAAe,eAEtBjvc,kBAAkBwwB,GAChB,GAAIA,EAAMlxB,MAAQ,SAAWe,KAAK48V,qBAAuBzsU,EAAMxxB,OAAOi6D,QAAQ3vD,gBAAkB,QAAS,CACvG,GAAIknB,EAAMxxB,OAAO2D,QAAQ,SAAU,CAEjC,MAAMiU,EAAQ+1C,GAAOC,YAAYp8B,EAAMxxB,QACvC,GAAI4X,IAAU,MAAQA,SAAe,GAAKA,EAAMk5K,mBAAqBl5K,EAAM64b,aAAe74b,EAAM84b,SAAU,CACxG94b,EAAMk5K,oBAKVt/J,EAAM21B,iBACN9lD,KAAKm+V,cAEPjkV,MAAM0xH,kBAAkBz7G,GAG1BxwB,eAAek5E,GACb,MAAMq/R,aACFA,EAAYO,WACZA,EAAU92J,aACVA,EAAYwK,KACZA,GACEnsN,KAAKsrI,WAEProH,MAAOqsb,GACLnjP,EACNjyM,MAAM6tI,eAAelvE,GACrB,GAAIq/R,EAAc,CAChBA,EAAa11Q,OAAS3pB,EAExB,GAAI4/R,EAAY,CACdA,EAAWj2Q,OAAS3pB,EAEtB,GAAI8oI,EAAc,CAChBA,EAAan/G,OAAS3pB,EAGxB,IAAK,IAAIj6E,EAAI,GAAGE,OACZA,GACEwwc,EAAW1wc,EAAIE,EAAQF,IAAK,CAChC0wc,EAAU1wc,GAAGi6E,SAAWA,IAK9BiwX,GAAelyX,YACfkyX,GAAe5gc,OAAS,iBAWxB,IAAIqnc,GAAerib,GAAU,cAAeA,GAAUklH,IACpD7mC,cACE,IAAIikW,EACJ,OAAQA,EAAexvc,KAAKwyE,UAAY,MAAQg9X,SAAsB,OAAS,EAAIA,EAAajkW,QAElG5rG,UAAU6yE,EAAQ8iE,GAChBt1I,KAAKyvc,UAAUj9X,EAAQ8iE,GAEzB31I,YACEK,KAAKwyE,OAAS,KAEhB7yE,cACAA,YACEK,KAAK0vc,YAEP/vc,gBACAA,cACEK,KAAK0vc,YAEP/vc,gBACAA,cACEK,KAAK0vc,YAKPltY,qBAaF,MAAMmtY,WAAkBv9T,GAAU5xH,MAAM+ub,GAAa/G,KACnDz6b,mBACE,MAAO,YAETlB,kBACE,MAAO,YAETrN,0BACE,MAAO,CACL2yG,MAAO,OAIbw9V,GAAUznc,OAAS,YAWnB,MAAM0nc,WAAgBD,GACpB5hc,mBACE,MAAO,UAETlB,kBACE,MAAO,UAETgV,2BACE,MAAO,CACLywH,YAAa,CACXkwD,SAAU,WACVD,WAAY,aACZstQ,aAAc,cAEhBr9T,iBAAkB,MAGtB7yI,eAAcZ,OACZA,EAAM03I,MACNA,EAAKlB,WACLA,IAEA,GAAIA,EAAY,CACdkB,EAAQA,IAAU7zI,UAAY6zI,SAAe13I,EAAO0nF,UAAY,WAAa1nF,EAAO0nF,UAAY1nF,EAAO0nF,QACvG,GAAIgwD,EAAO,CACTv8H,MAAM+0H,iBAAiBpwI,cAK/B+wc,GAAQh5X,YACRg5X,GAAQ1nc,OAAS,UAuBjB,MAAM4nc,WAAuBzmV,GAE3Bt7G,mBACE,MAAO,iBAGTlB,kBACE,MAAO,iBAGTuqE,mBACE,MAAO,YAETv1D,2BACE,MAAO,CAKL0pF,QAAS,KAKTk1E,YAAa,MAKjBsvR,uBACE,OAAO/vc,KAAKygL,aAAezgL,KAAKurG,QAElCkjG,oBACE,MAAM1uM,EAAKC,KACX,OAAOD,EAAGgwc,iBAAiBx2T,IAAI,kBAAmBx5I,EAAGR,MAAO,MAAOQ,EAAG2uM,MAAM3kK,UAAWhqC,EAAG2uM,MAAMzmK,MAElG0mK,uBACE,MAAM5uM,EAAKC,KACX,IAAImM,EAASpM,EAAGgwc,iBAAiBx2T,IAAI,kBAAmBx5I,EAAGR,MAAO,KAAMQ,EAAG2uM,MAAM3kK,UAAWhqC,EAAG2uM,MAAMzmK,MAGrG97B,EAASA,GAAUpM,EAAGgwc,iBAAiBx2T,IAAI,qBAAsBptI,EAAQ,MACzE,OAAOA,EAETxM,mBAAmBJ,GACjB,MAAMwwc,iBACJA,EAAgB5hQ,SAChBA,GACEnuM,KACJ,GAAI+vc,GAAoB5hQ,IAAa,UAAW,CAC9C,MAAM6hQ,EAAgBnwa,GAAWoL,UAAU1rC,GAEzC0wc,EAAeF,EAAiBx2T,IAAI,qBAAsBy2T,GAE5D,GAAInwa,GAAWgvK,YAAYohQ,IAAiBpwa,GAAW2L,QAAQyka,EAAcD,EAAe,OAAQ,CAClG,OAAOnwa,GAAWovK,eAAe+gQ,EAAeC,IAGpD,OAAO/1b,MAAM60L,mBAAmBxvM,GAElCopB,UACE,IAAIstR,EACJ,OAAO/7R,MAAMyO,OAASstR,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAc9oQ,WAEpHxkB,QAAQppB,GACN2a,MAAMyO,IAAMppB,GAKhBuwc,GAAel5X,YACfk5X,GAAe5nc,OAAS,iBAuBxB,MAAMgoc,WAAqB7mV,GAEzBt7G,mBACE,MAAO,eAGTlB,kBACE,MAAO,eAGTuqE,mBACE,MAAO,UAETv1D,2BACE,MAAO,CAKL0pF,QAAS,KAKTk1E,YAAa,MAKjB93J,UACE,IAAIwnb,EACJ,IAAIxnb,EAAM3oB,KAAK4xM,KACf,MAAM4uH,GAAkB2vI,EAAoBnwc,KAAKygL,eAAiB,MAAQ0vR,SAA2B,OAAS,EAAIA,EAAkBhja,UACpI,GAAIqzR,EAAgB,CAClB73S,EAAMkX,GAAWxrB,IAAIsU,GAAO63S,EAAgBA,GAE9C,OAAO73S,EAETA,QAAQppB,GACN2a,MAAMyO,IAAMppB,EAEdwwc,uBACE,OAAO/vc,KAAKygL,aAAezgL,KAAKurG,QAElCkjG,oBACE,MAAM1uM,EAAKC,KACX,IAAImM,EAASpM,EAAGgwc,iBAAiBx2T,IAAI,kBAAmBx5I,EAAGR,MAAO,MAAOQ,EAAG2uM,MAAM3kK,UAAWhqC,EAAG2uM,MAAMzmK,MAGtG97B,EAASA,GAAUpM,EAAGgwc,iBAAiBx2T,IAAI,qBAAsBptI,EAAQ,OACzE,OAAOA,EAETwiM,uBACE,MAAM5uM,EAAKC,KACX,OAAOD,EAAGgwc,iBAAiBx2T,IAAI,kBAAmBx5I,EAAGR,MAAO,KAAMQ,EAAG2uM,MAAM3kK,UAAWhqC,EAAG2uM,MAAMzmK,MAEjGtoC,mBAAmBJ,GACjB,MAAMwwc,iBACJA,EAAgB5hQ,SAChBA,GACEnuM,KACJ,GAAI+vc,GAAoB5hQ,IAAa,UAAW,CAC9C,MAAM6hQ,EAAgBnwa,GAAWoL,UAAU1rC,GACzC6wc,EAAiBvwa,GAAW9gB,IAAIixb,EAAe,EAAG,OAElDK,EAAaN,EAAiBx2T,IAAI,qBAAsB62T,EAAgB,OAE1E,GAAIvwa,GAAWgvK,YAAYwhQ,IAAexwa,GAAW2L,QAAQ6ka,EAAYL,EAAe,OAAQ,CAC9F,OAAOnwa,GAAWovK,eAAe+gQ,EAAeK,IAIpD,IAAKliQ,GAAY5uM,GAASS,KAAK2oB,KAAOkX,GAAWoL,UAAU1rC,EAAO,OAASS,KAAK2oB,IAAK,CACnF,OAAO3oB,KAAK2oB,IAEd,OAAOzO,MAAM60L,mBAAmBxvM,IAKpC2wc,GAAat5X,YACbs5X,GAAahoc,OAAS,eActB,MAAMooc,WAAoBxmV,GACxB/7G,mBACE,MAAO,cAGTlB,kBACE,MAAO,SAGTuqE,mBACE,MAAO,eAIXk5X,GAAY15X,YACZ05X,GAAYpoc,OAAS,cAsBrB,MAAM8hc,WAAmB4F,GACvB7hc,mBACE,MAAO,aAGTlB,kBACE,MAAO,aAETgV,2BACE,MAAO,CACLswF,MAAO,aACPr8F,IAAK,gBACLmsC,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACLxe,KAAM,CACJoI,KAAM,OACN4mH,OAAQ,IACR65D,SAAU,KACVxkC,MAAO,UACPykC,UAAW,KACX9oL,KAAM,OACNqR,IAAK,UAEP84a,YAAa,CACX/hb,KAAM,SACN4mH,OAAQ,IACRq1B,MAAO,gBACPrkJ,KAAM,sBACNqR,IAAK,0BACLshH,KAAM,UACNzuG,IAAK,EACLtU,IAAK,KAEP4jb,OAAQ,CACNprb,KAAM,SACN4mH,OAAQ,IACRq1B,MAAO,YACPrkJ,KAAM,aACN2yH,KAAM,WAERm5U,QAAS,CACP5nZ,KAAM,GACN8qE,OAAQ,IACR/8F,QAAS,CACPzrB,KAAMjL,KAAKm7B,EAAE,aAEfrlB,IAAK,YACLshH,KAAM,YAERjqF,UAAW,CACTtgC,KAAM,YACN4mH,OAAQ,IACRq1B,MAAO,WACPrkJ,KAAM,YACNqR,IAAK,wBACLshH,KAAM,WAERhqF,QAAS,CACPvgC,KAAM,UACN4mH,OAAQ,IACRq1B,MAAO,YACPrkJ,KAAM,UACNqR,IAAK,wBACLshH,KAAM,WAER9uG,SAAU,CACRzb,KAAM,gBACN4mH,OAAQ,IACRq1B,MAAO,cACPrkJ,KAAM,eACN2yH,KAAM,OACNthH,IAAK,cAKbnW,UAAU6yE,GACR,MAAMntC,EAAO,CACT4C,KAAMuqC,EAAOsrO,aACb/zQ,UAAW,IAEboD,UACEA,EAASC,QACTA,EAAO6qZ,OACPA,GACEj4b,KAAKsrI,UACX,GAAIn+F,EAAW,CACbA,EAAU9H,KAAOA,EACjB8H,EAAUszI,YAAcjuG,EAE1B,GAAIplC,EAAS,CACXA,EAAQ/H,KAAOA,EACf+H,EAAQqzI,YAAcjuG,EAExB,GAAIylX,EAAQ,CACVA,EAAOhwZ,KAAOuqC,EAAOg+X,WAEvBt2b,MAAMu2b,UAAUj+X,IAIpBw3X,GAAWpzX,YACXozX,GAAW9hc,OAAS,aAKpB,MAAMg2L,GAAaj7K,GAASA,EAAMpZ,KAAI,CAAC8H,EAAMzB,IAAU,CAACA,EAAOyB,KAQ/D,MAAM++b,WAA6B1oV,GAEjCj6G,mBACE,MAAO,uBAGTlB,kBACE,MAAO,uBAITlN,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAEhBkgB,GAAuBlJ,GAAG,CACxB6G,OAAQ,KACNh2B,KAAKijB,MAAQi7K,GAAWl+L,KAAKm7B,EAAE,4BAEjC7e,QAAStc,OAKb4rE,YACE,IAAK5rE,KAAKozI,OAAQ,CAChBpzI,KAAKijB,MAAQjjB,KAAKozI,OAAS8qD,GAAWl+L,KAAKm7B,EAAE,2BAE/C,OAAOjhB,MAAM0xD,MAEfA,UAAUA,GACR1xD,MAAM0xD,MAAQA,GAKlB8kY,GAAqB95X,YACrB85X,GAAqBxoc,OAAS,uBAK9B,MAAMyoc,GAAsB,CAAC76H,EAAK7/G,KAC9B6/G,EAAIvmQ,aAAa0mJ,GAAMx/E,MAAQ,MAEjCm6T,GAAwB,CAAC96H,EAAK7/G,KAC5B6/G,EAAIvmQ,aAAa0mJ,GAAMx/E,MAAQ,OAEjCo6T,GAA0B,CAAC/6H,EAAK7/G,IAAS6/G,EAAIvmQ,aAAa0mJ,GAAMx/E,QAAU,MAO5E,MAAMu0T,WAAsB2E,GAE1B5hc,mBACE,MAAO,gBAETlB,kBACE,MAAO,gBAETrN,0BACE,MAAO,CAMLmuc,kBAAmB,KACnBr7T,YAAa,CACXkwD,SAAU,iBAGZsuQ,UAAW,KAMXC,mBAAoB,OACpB9tb,MAAO,CACLgzM,KAAM,CACJppN,KAAM,OACN4mH,OAAQ,IACR2D,KAAM,WACNsmE,UAAW,GACXoqC,iBAAkB,YAClBwoD,2BAA4B,KAC5Bv+J,SAAU,CACR3zG,MAAO,OAET2lL,QAAS,CACP7pK,KAAM,CACJvvB,GAAI,CACFouB,YAAa/4B,KACbiL,KAAM,QACNmsH,KAAM,EACNsjG,OAAQ,MACR2H,WAAY,MACZ7/H,OAAQ,KACR7iG,SAASqxc,EAAaC,GACpB,IAAIC,EAAuBC,EAC3B,MAAMxD,kBACFA,EAAiBxhZ,UACjBA,GACEnsD,KAAKi2N,KAAK3jN,OACd8+b,GAAOF,EAAwBF,EAAY7kZ,MAAgB,MAAQ+kZ,SAA+B,OAAS,EAAIA,EAAsBvD,GACrI0D,GAAOF,EAAwBF,EAAY9kZ,MAAgB,MAAQglZ,SAA+B,OAAS,EAAIA,EAAsBxD,GACvI,GAAIyD,IAAQC,EAAK,CACf,OAAO,EAET,OAAOD,EAAMC,GAAO,EAAI,GAE1B3xO,SAAU,EACRltJ,OAAQ+pO,EACR5tI,IAAAA,EACAsnD,KAAAA,EACAlf,OAAAA,MAEA,IAAIpuJ,EACJ,MAAMwD,UACFA,GACE8pK,EAAK3jN,OACTg/b,EAAc/0J,EAAWpwP,GAC3B,GAAImlZ,GAAeT,GAAwBt0J,EAAYtmF,GAAO,CAC5D,MAAMr6I,EAAUq6I,EAAK3jN,OAAOq7b,kBAC1Bhjc,EAAK2mc,EAAY11X,GACnB,GAAIA,IAAY,KAAM,CACpBjzB,GAAQ2oZ,GAAeA,EAAY3nY,eAAiB,IAAM2nY,EAAY3mc,OACjE,CACLg+C,EAAOh+C,OAEJ,CACLgkK,EAAIsgE,OAAO,aACXtmL,EAAO,4CAET,OAAOA,IAGXlkD,KAAM,CACJs0B,YAAa/4B,KACbiL,KAAM,UACNmsH,KAAM,EACNsoG,SAAU,EACRngO,MAAO4wB,EACP8lM,KAAAA,EACAqI,YAAAA,MAEA,GAAInuM,EAAO,CAETmuM,EAAY1/K,UAAU8X,OAAO,aAAcvmC,EAAM+tX,UACjD,MAAMvzY,EAAKwlB,EAAM8lM,EAAK3jN,OAAOq7b,mBAC7B,OAAOx9a,EAAM1rB,MAAQkG,GAAM,OAASwlB,EAAMw5C,eAAiB,KAAKh/D,KAAQ,IAE1E,MAAO,IAET0kO,iBAAkB,gCAClB3U,OAAQ,CACN7tN,KAAM,aACNorL,aAAc,OACd0E,WAAY,KACZU,eAAgB,IAChB2Y,aAAc,KACdr2M,YAAYwwB,GACV,MAAMpwB,EAAKC,KACTuxc,EAAgBxxc,EAAGyxc,iBAAmBzxc,EAAGyxc,eAAiBzxc,EAAG6+D,GAAG,gBAAiB,QACjF+uY,kBACEA,GACE4D,EACJ5mc,EAAKwlB,EAAMw5C,gBAAkBgkY,IAAsB,KAAO,KAAOx9a,EAAMw9a,GAIzE,OAAOvjc,EAAa04V,GAAG,GAAG3yU,EAAM1rB,OAAOkG,GAAM,KAAO,KAAKA,KAAQ,QAIvEkC,KAAM,CACJksB,YAAa/4B,KACbiL,KAAM,UACNsL,MAAO,OACP6gH,KAAM,EACN0kG,SAAU,MACVpB,OAAQ,uBACR/6N,UAASJ,MACPA,IAEA,OAAOS,KAAKm7B,EAAE,0BAA0B57B,KAG5Cs0U,IAAK,CACH96S,YAAa/4B,KACbiL,KAAM,SACN4B,KAAM,WACN0J,MAAO,UACP6gH,KAAM,EACNsjG,OAAQ,CACNlnB,cAAe,UAMzBtlD,QAAS,CACPrhJ,KAAM,UACN4oH,KAAM,SACN3/G,IAAK,iBACLmN,MAAO,CACLlE,IAAK,CACHlS,KAAM,SACN4mH,OAAQ,IACR39G,IAAK,uBACL85G,KAAM,oBACN8yE,SAAU,iBAEZ5gM,OAAQ,CACN+K,KAAM,SACN4mH,OAAQ,IACR39G,IAAK,wBACL85G,KAAM,sBACNhwD,SAAU,KACV8iI,SAAU,wBAStB/iM,kCAAiCs2N,KAC/BA,EACA12N,MAAOkyc,EACPj/X,OAAQ+pO,IAER,MAAMhxM,QACFA,GACE0qH,EAAKrqJ,MAAMwzB,YACfsyW,EAAc1xc,KAAKmsD,YAAc,UACjCptD,EAAS2yc,EAAcn1J,EAAWiE,UAAYixJ,EAC9C9yc,EAAS+yc,EAAcD,EAAal1J,EAAWkE,QAC/Cg7I,QAAyBlwV,EAAQmwV,mBAAmB38b,EAAQJ,EAAQ49S,EAAW1vS,KAAM0vS,GACvF,OAAQk/I,GAEN,KAAK,EACH,OAAO,KAET,KAAK,EACH,MAAO,oCAEX,MAAO,qCAET97b,iBACEua,MAAMuB,iBACN,MAAMw6M,EAAOj2N,KAAKi2N,KAAOj2N,KAAKsrI,UAAU2qF,KACxCA,EAAK9mM,GAAG,CACNorO,gBAAiB,wBACjBo3M,cAAe,sBACfC,eAAgB,uBAChBC,eAAgB,uBAChBv1b,QAAStc,OAGb8xc,gBACE,MAAM77O,KACFA,GACEj2N,KACJglB,EAAOixM,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAKlyB,QAAQryL,IAAI1R,KAAKmsD,WAC3E,OAAOnnC,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAK01M,OAE1D/6N,UAAU8gL,GACR,MAAM1gL,EAAKC,MACTi2N,KACEA,EAAI67O,UACJA,EAASt/X,OACTA,GACEzyE,EACNma,MAAMu2b,UAAUhwR,GAChB,MAAM20H,gBACFA,EAAeC,WACfA,GACEt1S,EAAGwrG,QACPwmW,EAAc97O,EAAKrqJ,MAAMwzB,cAAgBg2M,EACzC48J,GAAgBD,GAAetxR,IAAgBjuG,EAKjD,GAAIu/X,EAAa,CAGfhyc,EAAGkyc,mBAAqB78J,EAAgBlxS,QAAQm5E,WAChDt9E,EAAGmyc,qBAAuB78J,EAAWnxS,QAAQm5E,WAC7Ct9E,EAAGwpE,gBAAgB,aACnB0sJ,EAAKrqJ,MAAQwpO,EAAgB30O,OAAMthC,GAAKA,EAAEp/B,EAAGoyc,gBAAkBpyc,EAAGyyE,QAAQ,MAC1E,MAAM4/X,EAAaN,EAAUlmY,MAAQypO,EAAW50O,OAEhDz8D,GAAKA,IAAMjE,EAAGyyE,QAAQ,KAAM,CAC1B6sB,gBAAiB,GAEjBG,wBAAyB,QAE3B4yW,EAAWn6b,KAAKlY,EAAGgxc,oBAInBqB,EAAWjqX,UAASnkF,IAAMiyN,EAAKrqJ,MAAM76C,MAAKoO,IACxC,MAAM22S,EAAM32S,EAAEp/B,EAAGosD,WACfkmZ,EAAatyc,EAAG+uc,gBAChBwD,EAAeD,GAAcv8H,IAAQu8H,EAAW7/X,OAAOzyE,EAAGosD,WAE5D,OAAO2pR,IAAQ9xU,IAAMsuc,OAEvBR,EAAU3ib,GAAG,CACX1qB,KAAM,YACN2gF,OAAQ,uBACR9oE,QAASvc,QAEN,CAGL,GAAIiyc,GAAgB58J,EAAgBlxS,QAAQm5E,aAAet9E,EAAGkyc,mBAAoB,CAChFh8O,EAAKrqJ,MAAMs0B,iBACXngG,EAAGkyc,mBAAqB78J,EAAgBlxS,QAAQm5E,eAI7C,CACH44I,EAAKqkB,cAEP,GAAI03N,GAAgB38J,EAAWnxS,QAAQm5E,aAAet9E,EAAGmyc,qBAAsB,CAC7EJ,EAAUlmY,MAAMs0B,iBAChBngG,EAAGmyc,qBAAuB78J,EAAWnxS,QAAQm5E,YAGjD,GAAI20X,EAAc,CAChB/7O,EAAKrqJ,MAAM3zD,KAAKlY,EAAG+wc,WAErB/wc,EAAGivc,0BAELrvc,4BACE,MAAMI,EAAKC,MACTi2N,KACEA,GACEl2N,GAEHwyc,GAAUt8O,EAAKrqJ,MAAMgnB,OAAO,EAAG,CAC9B/lF,KAAMqgS,GAAemmC,WACrBQ,IAAK,EACLE,QAASjnC,GAASmB,IAClBtuS,CAACI,EAAGoyc,cAAepyc,EAAGyyE,SAG1BzyE,EAAGkyc,mBAAqBlyc,EAAGwrG,QAAQ6pM,gBAAgBlxS,QAAQm5E,iBACrD44I,EAAKlkG,SAASq0G,SAASqJ,aAAa,CACxCl5N,MAAOxW,EAAGosD,UACVxhD,GAAI4nc,EAAO5nc,KAEbimc,GAAsB2B,EAAQt8O,GAC9B,OAAOs8O,EAET5yc,aACEK,KAAKwyc,sBAEP7yc,gBACE,MAAMI,EAAKC,MACTi2N,KACEA,GACEl2N,EACJ0kB,EAAWwxM,EAAK/5D,gBAClBn8J,EAAGwrG,QAAQ6pM,gBAAgBtzS,OAAO2iB,GAClCwxM,EAAKs5B,eAAiBt5B,EAAKrqJ,MAAMugC,QAAQ1nF,EAAS,IAClD1kB,EAAG+xc,UAAUlmY,MAAMs0B,iBAErBvgG,uBAAsBs8J,UACpBA,IAEA,MAAMqiD,EAAet+M,KAAKsrI,UAAUxpI,OAClC6/D,EAAUzhE,UAAU+7J,IAAc,MAAQA,SAAmB,GAAKA,EAAUn9J,SAAWkB,KAAK4+D,IAAG36B,GAAKA,EAAE40C,YAIxG,GAAIylI,EAAa9yE,eAAiB7pE,EAAS,CAEzC3hE,KAAKi2N,KAAK8Y,UAAU,CAClBznC,UAAW,EACX9jB,YAAa,IAGjB86B,EAAa1+I,SAAW+B,EAE1BhiE,0BACE,MAAM8yc,EAAiBzyc,KAAK8uc,gBAC5B,GAAI2D,GAAkBA,EAAe17P,OAAOxgM,QAAUvW,KAAKmsD,UAAW,CACpEsmZ,EAAe/3O,OAAOjmB,WAAW1gB,cAIrCp0L,uBAKEK,KAAK0yc,0BAEP/yc,qBAAoBy2M,cAClBA,IAEA,MAAMr2M,EAAKC,KACT81U,EAAM/1U,EAAG4yc,mBAAqBv8P,EAAc5jI,QAC5CyjJ,KACEA,EAAI9pK,UACJA,GACEpsD,EACNA,EAAG+uc,gBAAkB14P,EACrB,GAAIA,EAAcW,OAAOxgM,QAAU41C,EAAW,CAC5C,IAAK0kZ,GAAwB/6H,EAAK7/G,GAAO,CACvC,IAAK6/G,EAAI3pR,GAAY,CACnBiqJ,EAAcskB,OAAOjmB,WAAWxgB,SAAS,0CACpC,CACLmiB,EAAcskB,OAAOjmB,WAAWxgB,SAAS,0CAEtC,CACLl0L,EAAG2yc,4BAMT/yc,4BAA2By2M,cACzBA,IAEA,MAAMr2M,EAAKC,MAEPwyE,OAAQ+pO,EAAUxlG,OAClBA,GACEX,GACJ6f,KACEA,EAAI9pK,UACJA,GACEpsD,EAEN,GAAIg3M,EAAOxgM,QAAU41C,EAAW,CAC9BwkZ,GAAoBp0J,EAAYtmF,GAChCl2N,EAAG+xc,UAAUlmY,MAAMs0B,qBAGhB,CACHngG,EAAG6yc,oBAAoBr2J,GAEzBx8S,EAAG+uc,gBAAkB/uc,EAAG4yc,mBAAqB,KAC7C5yc,EAAGivc,0BAELrvc,cAGE,GAAIK,KAAK8uc,gBAAiB,CACxB9uc,KAAKi2N,KAAKlkG,SAASq0G,SAAS0G,cAAc,OAG9CntO,qBAAqBu6B,GACnB,MAAMn6B,EAAKC,KACTu8S,EAAax8S,EAAG4yc,mBAClB,GAAIp2J,EAAY,CACd,IAAKA,EAAWx8S,EAAGosD,WAAY,CAC7BykZ,GAAsBr0J,EAAYx8S,EAAGk2N,MACrCl2N,EAAG6yc,oBAAoBr2J,GAEzBx8S,EAAG+uc,gBAAkB/uc,EAAG4yc,mBAAqB,KAE/C5yc,EAAGivc,0BAELrvc,oBAAoB48S,GAElB,MAAMtmF,KACFA,GACEj2N,KACJ2uK,EAAMsnD,EAAKY,WAAW6B,WAAW6jF,GAEnC,GAAI5tI,EAAK,CACP,MAAMwyF,EAAclrC,EAAKrqJ,MAAMnmE,QAAQ82S,GAEvC,GAAIp7C,GAAe,EAAG,CACpBxyF,EAAI50J,OAAOk8M,EAAKrqJ,MAAMnmE,QAAQ82S,GAAaA,KAIjDmsJ,cACE,MAAMzyO,KACJA,GACEj2N,KACJ,OAAOi2N,EAAKrqJ,MAAMz7D,OAAMgvB,GAAK0xa,GAAwB1xa,EAAG82L,MAG5D+0O,GAAc9ic,OAAS,gBAuDvB,MAAM2qc,WAAsB7H,GAC1Bj9b,mBACE,MAAO,gBAGTlB,kBACE,MAAO,gBAETrN,0BACE,MAAO,CACLsW,IAAK,mBACLq2C,UAAW,UACXgmZ,aAAc,YACdhgW,MAAO,8BAOP2+V,UAAW,cACX7tb,MAAO,CACLgzM,KAAM,CACJlyB,QAAS,CACP7pK,KAAM,CACJz1B,KAAM,CACJ8R,MAAO,iBAUvBs8b,GAAcj8X,YACdi8X,GAAc3qc,OAAS,gBAuDvB,MAAM4qc,WAAwB9H,GAC5Bj9b,mBACE,MAAO,kBAGTlB,kBACE,MAAO,kBAETrN,0BACE,MAAO,CACLsW,IAAK,qBACLq2C,UAAW,YACXgmZ,aAAc,UACdhgW,MAAO,gCAOP2+V,UAAW,gBACX7tb,MAAO,CACLgzM,KAAM,CACJlyB,QAAS,CACP7pK,KAAM,CACJz1B,KAAM,CACJ8R,MAAO,mBAUvBu8b,GAAgBl8X,YAChBk8X,GAAgB5qc,OAAS,kBAoDzB,MAAMsjc,WAAqBmE,GACzB5hc,mBACE,MAAO,eAGTlB,kBACE,MAAO,eAETrN,0BACE,MAAO,CACL2yG,MAAO,eACPr8F,IAAK,kBACLw8H,YAAa,CACXkwD,SAAU,iBAEZv/K,MAAO,CACLgzM,KAAM,CACJppN,KAAM,OACN4mH,OAAQ,IACR2D,KAAM,WACN2sE,QAAS,CACP7pK,KAAM,CACJigR,SAAU,CACRphR,YAAa/4B,KACbiL,KAAM,cACNsL,MAAO,WACP6gH,KAAM,EACNsoG,SAAU,EACRngO,MAAAA,MACKA,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMkF,OAAS,GACpEi2N,OAAQ,CACN7tN,KAAM,aACNorL,aAAc,OACd0E,WAAY,OAGhBhzJ,MAAO,CACL98B,KAAM,SACNksB,YAAa/4B,KACbiL,KAAM,WACNsL,MAAO,QACP6gH,KAAM,EACNsoG,SAAUxlM,GAAQl6B,KAAKm7B,EAAE,cAAejB,GACxCvR,IAAK,EACLtU,IAAK,IACLgxB,KAAM,MAIZirP,2BAA4B,KAC5BxoD,iBAAkB,aAEpB55E,QAAS,CACPrhJ,KAAM,UACN4oH,KAAM,SACN3/G,IAAK,iBACLmN,MAAO,CACLlE,IAAK,CACHlS,KAAM,SACN4mH,OAAQ,IACR39G,IAAK,uBACL85G,KAAM,qBAER9tH,OAAQ,CACN+K,KAAM,SACN4mH,OAAQ,IACR39G,IAAK,wBACL85G,KAAM,sBACNhwD,SAAU,UAOtBjgE,iBACEua,MAAMuB,iBACN,MAAM1b,EAAKC,KACT+yc,EAAYhzc,EAAGgzc,UAAYhzc,EAAGurI,UAAUvsH,IACxCu/L,EAAev+M,EAAGu+M,aAAev+M,EAAGurI,UAAUxpI,OAC9Cm0N,EAAOl2N,EAAGk2N,KAAOl2N,EAAGurI,UAAU2qF,KAChC88O,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAU5jb,GAAG,QAASpvB,EAAGizc,WAAYjzc,GAC3Fu+M,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAanvL,GAAG,QAASpvB,EAAGkzc,cAAelzc,GACvGk2N,EAAK9mM,GAAG,CACNorO,gBAAiB,wBACjBo3M,cAAe,sBACfC,eAAgB,uBAChBC,eAAgB,uBAChBv1b,QAASvc,IAGbJ,eAAek5E,GACb,MAAM95D,IACJA,EAAGjd,OACHA,GACE9B,KAAKsrI,UACTpxH,MAAM6tI,kBAAkBlpJ,WAExBkgB,EAAIyjF,OAAS1gG,EAAO0gG,OAAS3pB,EAE/Bq6X,oBACE,IAAI72O,EACJ,MAAMr3M,GAAQq3M,EAAar8N,KAAKi2N,QAAU,MAAQoG,SAAoB,OAAS,EAAIA,EAAWt4B,QAAQryL,IAAI,YAC1G,OAAOsT,IAAS,MAAQA,SAAc,OAAS,EAAIA,EAAK01M,OAE1D/6N,UAAU8gL,GACR,MAAM1gL,EAAKC,MACTkzc,cACEA,EAAaj9O,KACbA,EAAIzjJ,OACJA,GACEzyE,EACNma,MAAMu2b,UAAUhwR,GAChB,MAAM00H,gBACFA,EAAeG,cACfA,GACEv1S,EAAGwrG,QACPwmW,EAAc97O,EAAKrqJ,MAAMwzB,cAAgB+1M,EACzC68J,GAAgBD,GAAetxR,IAAgBjuG,EAEjD,IAAKiuG,EAAY2yK,OAAQ,CACvBn9H,EAAKlyB,QAAQryL,IAAI,SAASigH,OAE5B,GAAIogV,EAAa,CAGfhyc,EAAGozc,0BAA4Bh+J,EAAgBjxS,QAAQm5E,WACvDt9E,EAAGqzc,wBAA0B99J,EAAcpxS,QAAQm5E,WACnD44I,EAAKrqJ,MAAQupO,EAAgB10O,OAAM56D,GAAK9F,EAAGyyE,QAAU3sE,EAAEsqB,QAAUpwB,EAAGyyE,QAAQ,MAC5E0gY,EAActnY,MAAQ0pO,EAAc70O,OAAM05O,IAChCA,EAAS9zN,cAAgBtmF,EAAGyyE,SAAWzyE,EAAGyyE,OAAO6gY,aAAal5J,KAAcp6S,EAAGyiX,kBAAoBziX,EAAGyiX,iBAAiBroE,WAAaA,GAC3I,KAAM,CACP/iN,SAAUk+M,EAAcl+M,eAErB,CAGL,GAAI46W,GAAgB78J,EAAgBjxS,QAAQm5E,aAAet9E,EAAGozc,0BAA2B,CACvFl9O,EAAKrqJ,MAAMs0B,iBAEb,GAAI8xW,GAAgB18J,EAAcpxS,QAAQm5E,aAAet9E,EAAGqzc,wBAAyB,CACnFF,EAActnY,MAAMs0B,mBAK1BsiR,uBACE,OAAOxiX,KAAKi2N,KAAKlkG,SAASq0G,SAAS2G,aAErCptO,4BACE,MAAMI,EAAKC,MACTurG,QACEA,EAAO0qH,KACPA,GACEl2N,EACJo1S,EAAkB5pM,EAAQ4pM,gBAC5B,MAAOspE,GAAiBtpE,EAAgBviN,OAAO,EAAG,CAChDziE,MAAOpwB,EAAGyyE,OACV2nO,SAAU,KACVxwQ,MAAO,MAGT5pC,EAAGozc,0BAA4Bh+J,EAAgBjxS,QAAQm5E,iBACjD44I,EAAKlkG,SAASq0G,SAASqJ,aAAa,CACxCl5N,MAAO,WACP5L,GAAI8zW,EAAc9zW,KAEpB,OAAO8zW,EAET9+W,aACEK,KAAKszc,0BAEP3zc,aACEK,KAAKuzc,sBAEP5zc,gBACE,MAAMI,EAAKC,MACTi2N,KACEA,GACEl2N,EACNk2N,EAAKrqJ,MAAM9pE,OAAOm0N,EAAK/5D,iBACvB+5D,EAAK/5D,gBAAkB,KACvBn8J,EAAGu+M,aAAa38I,UAElBhiE,uBAAsBs8J,UACpBA,IAEA,MAAMqiD,aACFA,GACEt+M,KACJ2hE,IAAYs6F,IAAc,MAAQA,SAAmB,GAAKA,EAAUn9J,SAAWkB,KAAK4+D,IAAG36B,GAAKA,EAAE40C,WAIhG,GAAIylI,EAAa9yE,eAAiB7pE,EAAS,CACzC3hE,KAAKi2N,KAAKnhK,QAEZwpJ,EAAa1+I,SAAW+B,EAE1BhiE,qBAAoBy2M,cAClBA,IAEA,GAAIA,EAAcW,OAAOxgM,QAAU,WAAY,CAC7CvW,KAAKkzc,cAActnY,MAAMs0B,iBACzBlgG,KAAKwzc,mBAAqBp9P,EAAc5jI,OACxCxyE,KAAK8uc,gBAAkB14P,GAG3Bz2M,uBACEK,KAAK8uc,gBAAkB9uc,KAAKwzc,mBAAqB,KAEnD7zc,uBACEK,KAAK8uc,gBAAkB9uc,KAAKwzc,mBAAqB,KAEnD7zc,0BACE,MAAMisE,MACJA,GACE5rE,KAAKi2N,KACTrqJ,EAAM9pE,OAAO8pE,EAAMtN,OAAMz4D,IAAMA,EAAE4gF,YAIrC+kX,GAAa50X,YACb40X,GAAatjc,OAAS,eAgBtB,MAAMygc,WAA6B3gV,GAEjCj6G,mBACE,MAAO,uBAGTlB,kBACE,MAAO,uBAETrN,0BACE,MAAO,CACLm9L,WAAY,MAKhBh9L,qBACEua,MAAMsf,qBAENx5B,KAAK4rE,MAAM1xC,KAAOl6B,KAAKyzc,iBAIzB9zc,iBACE,MAAMI,EAAKC,KAEX,MAAO,CAAC,CACN2K,GAAM,OACNM,KAAMlL,EAAGo7B,EAAE,YACV,CACDxwB,GAAM,cACNM,KAAMlL,EAAGo7B,EAAE,mBACV,CACDxwB,GAAM,eACNM,KAAMlL,EAAGo7B,EAAE,oBACV,CACDxwB,GAAM,qBACNM,KAAMlL,EAAGo7B,EAAE,0BACV,CACDxwB,GAAM,mBACNM,KAAMlL,EAAGo7B,EAAE,wBACV,CACDxwB,GAAM,sBACNM,KAAMlL,EAAGo7B,EAAE,2BACV,CACDxwB,GAAM,oBACNM,KAAMlL,EAAGo7B,EAAE,0BAKf57B,UAAUA,GACR2a,MAAM3a,MAAQA,EAEhBA,YACE,MAAMA,EAAQ2a,MAAM3a,MACpB,OAAOA,IAAU,OAAS,KAAOA,EAEnCqsE,YACE,IAAK5rE,KAAKi7L,OAAQ,CAChBj7L,KAAK4rE,MAAQ,IAAIg7B,GAAM,CACrB1sE,KAAMl6B,KAAKyzc,iBACXC,YAAa,OAGjB,OAAO1zc,KAAKi7L,OAEdrvH,UAAUA,GACR1xD,MAAM0xD,MAAQA,GAKlB+8X,GAAqB/xX,YACrB+xX,GAAqBzgc,OAAS,uBAe9B,MAAMyjc,WAA6B3jV,GACjCj6G,mBAEE,MAAO,uBAGTlB,kBACE,MAAO,sBAITlN,iBACE,MAAO,CAAC,CACNgL,GAAIqiS,GAAew0H,OACnBv2Z,KAAMjL,KAAKm7B,EAAE,cACZ,CACDxwB,GAAIqiS,GAAe2mK,cACnB1oc,KAAMjL,KAAKm7B,EAAE,sBACZ,CACDxwB,GAAIqiS,GAAe4mK,WACnB3oc,KAAMjL,KAAKm7B,EAAE,mBACZ,CACDxwB,GAAIqiS,GAAe6mK,YACnB5oc,KAAMjL,KAAKm7B,EAAE,qBAGjBywC,YACE,IAAK5rE,KAAKi7L,OAAQ,CAChBj7L,KAAK4rE,MAAQ,IAAIg7B,GAAM,CACrB1sE,KAAMl6B,KAAKyzc,mBAGf,OAAOzzc,KAAKi7L,OAEdrvH,UAAUA,GACR1xD,MAAM0xD,MAAQA,EAEhBjsE,qBACEua,MAAMsf,qBAENx5B,KAAK4rE,MAAM1xC,KAAOl6B,KAAKyzc,kBAK3B9H,GAAqB/0X,YACrB+0X,GAAqBzjc,OAAS,uBAyB9B,MAAMyic,WAAoBiF,GACxB7hc,mBACE,MAAO,cAGTlB,kBACE,MAAO,cAETgV,2BACE,MAAO,CACLkX,YAAa/4B,KACbmyG,MAAO,cACPr8F,IAAK,iBACLmsC,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACL6wb,cAAe,CACbjnc,KAAM,gBACN4mH,OAAQ,IACRxlE,IAAK,GACLxpD,KAAM,WACNqkJ,MAAO,cACP1xB,KAAM,UACNthH,IAAK,YAEPi+b,uBAAwB,CACtBlnc,KAAM,WACN4mH,OAAQ,IACRhvH,KAAM,oBACNqkJ,MAAO,wBACP1xB,KAAM,WAER48U,oBAAqB,CACnBnnc,KAAM,sBACN4mH,OAAQ,IACRhvH,KAAM,iBACNqkJ,MAAO,qBACP1xB,KAAM,UACNthH,IAAK,YAEPm+b,kBAAmB,CACjBpnc,KAAM,WACN4mH,OAAQ,IACRhvH,KAAM,eACNqkJ,MAAO,mBACP1xB,KAAM,WAERm5U,QAAS,CACP98U,OAAQ,IACR9qE,KAAM,GACNjyB,QAAS,CACPzrB,KAAMjL,KAAKm7B,EAAE,kBAEfrlB,IAAK,YACLshH,KAAM,YAER88U,oBAAqB,CACnBrnc,KAAM,uBACN4mH,OAAQ,IACRhvH,KAAM,iBACNqkJ,MAAO,qBACP8zC,YAAa,OACbrP,UAAW,KACXn2D,KAAM,UACNthH,IAAK,YAEPq+b,oBAAqB,CACnBtnc,KAAM,OACN4mH,OAAQ,IACRhvH,KAAM,iBACNqkJ,MAAO,qBACPqlD,SAAU,UACV/2E,KAAM,UACNthH,IAAK,YAEPs+b,YAAa,CACXvnc,KAAM,WACN4mH,OAAQ,IACRhvH,KAAM,SACNqkJ,MAAO,YACP1xB,KAAM,UACNthH,IAAK,uBAEPu+b,cAAe,CACbxnc,KAAM,WACN4mH,OAAQ,IACRhvH,KAAM,WACNqkJ,MAAO,cACP1xB,KAAM,UACNthH,IAAK,YAEPw+b,4BAA6B,CAC3Bznc,KAAM,WACN4mH,OAAQ,IACRhvH,KAAM,yBACNqkJ,MAAO,8BACP1xB,KAAM,UACNthH,IAAK,yBAKbg+b,oBACE,OAAO9zc,KAAKsrI,UAAUwoU,cAExBI,0BACE,OAAOl0c,KAAKsrI,UAAU4oU,oBAExBC,0BACE,OAAOn0c,KAAKsrI,UAAU6oU,oBAExBF,wBACE,OAAOj0c,KAAKsrI,UAAU2oU,kBAExBF,6BACE,OAAO/zc,KAAKsrI,UAAUyoU,uBAExBK,kBACE,OAAOp0c,KAAKsrI,UAAU8oU,YAExBJ,0BACE,OAAOh0c,KAAKsrI,UAAU0oU,oBAExBr0c,UAAU8gL,GACR,MAAM1gL,EAAKC,MACT8zc,cACEA,EAAaI,oBACbA,GACEn0c,GACJw1S,qBACEA,GACE90H,EAAYl1E,QAChBwmW,GAAe+B,IAAkB,MAAQA,SAAuB,OAAS,EAAIA,EAAcloY,SAAW2pO,EACxG,GAAIu+J,GAAiB/B,EAAa,CAEhC+B,EAAcloY,MAAQ2pO,EAAqB90O,MAAM79D,UAAWA,UAAW,CACrE48F,wBAAyB,QAG7B,GAAI00W,IAAwB,MAAQA,SAA6B,GAAKA,EAAoBK,uBAAwB,CAChH,MACE3oY,MAAO4oY,GACLN,EACJM,EAAWr3P,aAAa,4BACxBq3P,EAAWp2c,OAAO,CAEhBuM,GAAM,2BAENw9E,SAAUj4D,GAAKuwJ,EAAYlnC,IAAI,6BAA8BrpH,EAAEvlB,MAGnEuP,MAAMu2b,UAAUhwR,GAElB9gL,cACE,MAAMu0c,oBACJA,GACEl0c,KAGJ,GAAIk0c,IAAwB,MAAQA,SAA6B,GAAKA,EAAoBK,uBAAwB,CAChHL,EAAoBtoY,MAAMuxI,aAAa,4BAEzCjjM,MAAMg1b,eAAerwc,YAIzB8rc,GAAY/zX,YACZ+zX,GAAYzic,OAAS,cAgBrB,MAAMojc,WAAiBsE,GACrB7hc,mBACE,MAAO,WAGTlB,kBACE,MAAO,WAETrN,0BACE,MAAO,CACLsW,IAAK,cACLq8F,MAAOnyG,KAAKm7B,EAAE,YACdw6F,IAAK,CACH/F,KAAM,cACNs6F,cAAe,WAEjBuqP,aAAc,CACZlyQ,WAAY,aACZstQ,aAAc,WAEhB5sb,MAAO,CACLyxb,UAAW,CACTjhV,OAAQ,IACR5mH,KAAM,YACNshL,gBAAiB,CACf1tK,IAAK,YAEP3K,IAAK,2BACLrR,KAAM,WAOhB6mc,GAAS10X,YACT00X,GAASpjc,OAAS,WAUlB,MAAMohc,WAAwBR,GAE5Bj8b,kBACE,MAAO,kBAGTkB,mBACE,MAAO,kBAET8T,2BACE,MAAO,CACLoB,MAAO,CAAC,CACNpW,KAAM,WACNyqE,YAAa,UACbrpB,IAAK,OACLmpE,KAAM,WACN82F,WAAY,KACZumP,aAAc,CACZlyQ,WAAY,UACZstQ,aAAc,WAEhB5sb,MAAO,CACL0xb,WAAY,CACV9nc,KAAM,aACN4mH,OAAQ,KAEVmhV,gBAAiB,CACf/nc,KAAM,kBACN4mH,OAAQ,KAEVohV,cAAe,CACbhoc,KAAM,gBACN4mH,OAAQ,KAEVqhV,aAAc,CACZjoc,KAAM,eACN4mH,OAAQ,KAEVshV,YAAa,CACXloc,KAAM,cACN4mH,OAAQ,KAEVuhV,SAAU,CACRnoc,KAAM,WACN4mH,OAAQ,UASpB61U,GAAgB1yX,YAChB0yX,GAAgBphc,OAAS,kBA0DzB,MAAMuhc,WAA4BmG,GAChC7hc,mBACE,MAAO,sBAGTlB,kBACE,MAAO,sBAETgV,2BACE,MAAO,CACLswF,MAAO,aACPr8F,IAAK,gBACLmsC,SAAU,CACRlpB,YAAa/4B,KAEbyzH,OAAQ,IAEVxwG,MAAO,CACLyiE,UAAW,CACT74E,KAAM,OACNygL,SAAU,KACVxkC,MAAO,UACPykC,UAAW,KACX9oL,KAAM,OACNqR,IAAK,SACL29G,OAAQ,KAGVwhV,eAAgB,CACdpoc,KAAM,QACNi8I,MAAO,eACPrkJ,KAAM,YACNopL,SAAU,KACV8O,WAAY,KACZ1E,aAAc,OACdlkE,wBAAyB,MACzBj+G,IAAK,cACL29G,OAAQ,KAEV6iN,eAAgB,CACdzpU,KAAM,WACNi8I,MAAO,WACPrkJ,KAAM,YACNqR,IAAK,eACLshH,KAAM,WACN3D,OAAQ,IACRm/E,UAAW,CACT/lM,KAAM,mBAGV0pU,aAAc,CACZ1pU,KAAM,WACNi8I,MAAO,YACPrkJ,KAAM,UACNqR,IAAK,aACLshH,KAAM,WACN3D,OAAQ,IACRm/E,UAAW,CACT/lM,KAAM,iBAGVqoc,cAAe,CACbroc,KAAM,gBACNi8I,MAAO,cACPrkJ,KAAM,eACN2yH,KAAM,UACNthH,IAAK,sBACL29G,OAAQ,KAEV0hV,iBAAkB,CAChBtoc,KAAM,SACNi8I,MAAO,gBACPrkJ,KAAM,sBACN2yH,KAAM,UACNzuG,IAAK,EACLtU,IAAK,IACLo/G,OAAQ,KAEV2hV,cAAe,CACbvoc,KAAM,gBACN21F,OAAQ,KACR5a,gBAAiB,KACjB6rC,OAAQ,IACRq1B,MAAO,kCACPrkJ,KAAM,WACN2yH,KAAM,UACNthH,IAAK,uBAEPu/b,eAAgB,CACdxoc,KAAM,gBACN21F,OAAQ,KACR5a,gBAAiB,KACjB6rC,OAAQ,IACRq1B,MAAO,mCACPrkJ,KAAM,YACN2yH,KAAM,aAKdz3H,UAAU6yE,GACR,MAAMzyE,EAAKC,KACTqlC,EAAO,CACL4C,KAAMuqC,EAAOsrO,aACb/zQ,UAAW,IAEb4lC,SACEA,EAAQ47B,QACRA,GACE/4B,GACJ0iY,cACEA,EAAaC,iBACbA,EAAgB7+H,eAChBA,EAAcC,aACdA,EAAY0+H,eACZA,GACEl1c,EAAGurI,UACPymU,EAAckD,GAAkBA,EAAerpY,MAAMwzB,cAAgBmM,EAAQ+pM,cAE/E,GAAI4/J,EAAe,CACjBA,EAAct1Y,SAAW+P,EACzB,IAAKwlY,EAAkB,CACrBD,EAAcz+Z,QAAQmI,UAAU98C,OAAO,aAG3C,GAAIqzc,EAAkB,CACpBA,EAAiBv1Y,SAAW+P,EAE9B,GAAI2mQ,EAAgB,CAClBA,EAAe1jI,UAAUnyB,YAAcjuG,EACvC,GAAI3yC,GAAW+5C,aAAav0C,EAAK4C,KAAM,QAAU,EAAG,CAClDquS,EAAe1jI,UAAUvtK,KAAOA,MAC3B,CACLixS,EAAezjI,UAAUxtK,KAAOA,GAGpC,GAAIkxS,EAAc,CAChBA,EAAa3jI,UAAUnyB,YAAcjuG,EACrC,GAAI3yC,GAAW+5C,aAAav0C,EAAK4C,KAAM,QAAU,EAAG,CAClDsuS,EAAa3jI,UAAUvtK,KAAOA,MACzB,CACLkxS,EAAa1jI,UAAUxtK,KAAOA,EAEhCkxS,EAAa32Q,SAAW+P,EAE1B,GAAIslY,EAAgB,CAClB,IAAIK,EACJL,EAAe/8Q,aAAeo9Q,EAAwBL,EAAe98b,OAAO+/K,eAAiB,MAAQo9Q,SAA+B,EAAIA,GAAyB/pW,EAAQ8pM,WAAW4nB,qBAGpL,GAAI80I,EAAa,CAEfkD,EAAerpY,MAAQ2/B,EAAQ+pM,cAAc70O,OAAM+R,IAAWA,EAAO6T,gBAGzEnsE,MAAMu2b,aAAa5xc,WAErBc,eAAcZ,OACZA,EAAM03I,MACNA,EAAKlB,WACLA,EAAUh2I,MACVA,IAEA,GAAIg2I,GAAckB,EAAO,CACvB,MAAM4+J,WACFA,GACEr1S,KAAKwyE,OACT+iY,EAAqBx2c,EAAO0F,OAAS,aAAelF,EAAMT,SAAW,GAAKkB,KAAKwyI,kBAAoB6iK,EAAWuuB,sBAChH,GAAI2xI,EAAoB,CAEtBlgK,EAAWuuB,sBAAwB,MAErC1pT,MAAM+0H,iBAAiBpwI,WACvB,GAAI02c,EAAoB,CACtBlgK,EAAWuuB,sBAAwB,OAIzCjkU,aAEE,GAAIK,KAAKwyE,OAAOmqP,UAAU79T,SAAW,GAAKkB,KAAKwyE,OAAO6iO,WAAWuuB,sBAAuB,CACtF5jU,KAAKwyE,OAAO1wE,SAEdoY,MAAMs7b,cAIV/L,GAAoB7yX,YACpB6yX,GAAoBvhc,OAAS,sBAuB7B,MAAMiic,WAA6ByF,GACjC7hc,mBACE,MAAO,uBAETlB,kBACE,MAAO,uBAETrN,0BACE,MAAO,CACLsW,IAAK,iBACL6/G,IAAK,CACH/F,KAAM,kBACNhnE,QAAS,oCAEX3G,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACL6wb,cAAe,CACbjnc,KAAM,gBACNpI,KAAM,WACNqkJ,MAAO,cACPr1B,OAAQ,KAEVygV,oBAAqB,CACnBrnc,KAAM,uBACNpI,KAAM,iBACNqkJ,MAAO,qBACPykC,UAAW,KACX95D,OAAQ,KAEV0gV,oBAAqB,CACnBtnc,KAAM,OACNpI,KAAM,iBACNqkJ,MAAO,qBACPqlD,SAAU,UACV16E,OAAQ,KAEVsgV,uBAAwB,CACtBlnc,KAAM,WACNpI,KAAM,oBACNqkJ,MAAO,wBACPr1B,OAAQ,KAEV4gV,cAAe,CACbxnc,KAAM,WACN4mH,OAAQ,IACRhvH,KAAM,WACNqkJ,MAAO,eAETwrT,4BAA6B,CAC3Bznc,KAAM,WACN4mH,OAAQ,IACRhvH,KAAM,yBACNqkJ,MAAO,8BACP1xB,KAAM,aAKd08U,oBACE,OAAO9zc,KAAKsrI,UAAUwoU,cAExBI,0BACE,OAAOl0c,KAAKsrI,UAAU4oU,oBAExBC,0BACE,OAAOn0c,KAAKsrI,UAAU6oU,oBAExBJ,6BACE,OAAO/zc,KAAKsrI,UAAUyoU,uBAExBp0c,UAAU8gL,GACR,MAAM1gL,EAAKC,KAET,MAAM8zc,cACJA,GACE/zc,EACN,GAAI+zc,EAAe,CACjBA,EAAcloY,MAAQ60G,EAAYl1E,QAAQgqM,qBAC1Cu+J,EAActxW,QAAUi+E,EAAYl1E,QAAQgqM,qBAAqBvxR,MAEnE9J,MAAMu2b,aAAa5xc,YAGvBsrc,GAAqBvzX,YACrBuzX,GAAqBjic,OAAS,uBAK9B,MAAMutc,GAAW,kBA4BjB,MAAMjM,WAA4BV,GAEhCj8b,kBACE,MAAO,sBAGTkB,mBACE,MAAO,sBAET8T,2BACE,MAAO,CACL6zb,sBAAuB,MACvBzyb,MAAO,CAAC,CACNpW,KAAM,WACNyqE,YAAa,UACbrpB,IAAK,OACLmpE,KAAM,WACN82F,WAAY,KACZumP,aAAc,CACZlyQ,WAAY,UACZstQ,aAAc,WAEhB5sb,MAAO,CACL0xb,WAAY,CACV9nc,KAAM,sBACN4mH,OAAQ,KAEVmhV,gBAAiB,CACf/nc,KAAM,kBACN4mH,OAAQ,KAEVohV,cAAe,CACbhoc,KAAM,gBACN4mH,OAAQ,KAIVshV,YAAa,CACXloc,KAAM,uBACN4mH,OAAQ,KAEVuhV,SAAU,CACRnoc,KAAM,WACN4mH,OAAQ,SAMlB9zH,oBAAoBu2I,GAClB,IAAIy/T,EACJ,IAAKA,EAAoBz/T,EAAajoF,OAAS,MAAQ0nZ,SAA2B,GAAKA,EAAkBx1c,MAAMs1c,IAAW,CACxHv/T,EAAa1zC,QAAUxiG,KAAK01c,sBAE9B,OAAOx7b,MAAMi8H,oBAAoBD,IAKrCszT,GAAoB5yX,YACpB4yX,GAAoBthc,OAAS,sBAoQ7B,MAAMghc,WAAiBxpY,GAAel/C,MAAMwjD,GAAWqkY,KAoKrDt6b,mBACE,MAAO,WAETyyD,0BACE,MAAO,CACLC,MAAO,CAAC,oBAAqB,mBAC7BrpD,OAAQ,CAAC,cAGbyK,2BACE,MAAO,CAQLo5H,aAAc,gBAQd26T,eAAgB,CACdj2c,CAACytS,GAAY+3I,gBAAiB,sBAC9Bxlb,CAACytS,GAAYpiE,cAAe,sBAC5BrrO,CAACytS,GAAYniE,OAAQ,mBAYvBmB,YAAa,KAoBb2rD,aAAc,KAOd89K,cAAe,KAOfj5G,oBAAqB,KAMrBloJ,WAAY,SAOZ9pK,aAAc,KAMdqhG,eAAgB,MAGpBzsI,0BACE,MAAO,CAuCLyjB,MAAO,KAQP6yb,uBAAwB,OAK5Bn2c,UAAU4rT,EAAWpzS,GACnB,IAAIwzY,EACJpgG,EAAUivC,SAAWx6V,KACrBka,MAAMsB,UAAU+vS,EAAWv6Q,GAAa55B,OAAO,CAC7CwzB,aAAc2gR,EAAU3gR,aACxB8qa,uBAAwB/pD,EAAwBpgG,EAAUx5L,SAASyjO,eAAiB,MAAQm2D,SAA+B,OAAS,EAAIA,EAAsBvrV,SAC7JjoD,IACHozS,EAAUp8R,GAAG,CACXxvB,CAACK,KAAKi7I,cAAe,mBACrBpiE,SAAU,yBACVkkR,cAAe,kBACfzgV,QAAStc,OAGbL,YACE,IAAIu2O,EACJl2O,KAAK+1c,qBACJ7/N,EAAel2O,KAAK06N,UAAY,MAAQwb,SAAsB,OAAS,EAAIA,EAAan6N,UACzF,GAAI/b,KAAKg2c,0BAA2B,CAClC7zP,GAAcxwF,OAEhBz3G,MAAM8B,YAIRrc,wBAAuBk5E,SACrBA,IAEA,GAAI74E,KAAK06N,OAAQ,CACf16N,KAAK06N,OAAO7hJ,SAAWA,GAG3B0yO,gBACE,OAAOvrT,KAAK6/D,OAEdlgE,yBAAyBo2V,EAAY/hI,GACnC,OAAOh0N,KAAK6/D,OAAO6nS,0BAA0B3R,EAAY/hI,GAE3Dr0N,oBAAoB8gL,EAAauzC,GAC/Bh0N,KAAK6/D,OAAO8qT,4BAA4B32J,EAAgBvzC,GAE1Dh6F,cACE,OAAOzmF,KAAK06N,OAAOhgG,YAAWhZ,IAC5B,GAAIA,EAAOj7B,UAAY,MAAQi7B,EAAOlf,QAAUkf,EAAO9hD,UAAY8hD,EAAO+sV,UAAY/sV,EAAOj9G,KAAM,CACjG,OAAO,KAET,OAAOi9G,EAAOj7B,UAAY,QACzB,MAIL8kB,cACE,OAAOvrG,KAAKurT,UAAUhgN,QAExB5rG,kBACEK,KAAK+1c,oBACL/1c,KAAKurG,QAAQp8E,GAAG,CACd1qB,KAAM,UACNwxc,UAAW,IAAMj2c,KAAKo+V,OACtBhkB,UAAW,cACX99T,QAAStc,OAGbL,oBACEK,KAAKupE,gBAAgB,WAGvB5pE,cACE,MAAM6yE,OACJA,GACExyE,KAEJ,GAAIwyE,IAAW,MAAQA,SAAgB,GAAKA,EAAO+4B,SAAWvrG,KAAKurT,UAAUgtB,UAAU3sU,SAAS4mE,GAAS,CACvGxyE,KAAK6tG,KAAKr7B,EAAQ,UACb,CACLxyE,KAAK06N,OAAOxvG,SAShBmwG,gBACE,QAASr7N,KAAKk2c,SAEhBv2c,kBAAiB8gL,YACfA,EAAWuzC,eACXA,EAAc+/H,aACdA,IAEA/zV,KAAKqrX,UAAU5qM,EAAauzC,EAAgB+/H,GAa9Cp0V,gBAAgBo2V,EAAY/hI,EAAiB,KAAMv9K,EAAU,MAC3D,MAAM12C,EAAKC,MACTurT,UACEA,GACExrT,EACNg2V,EAAaA,EAAW4Q,eAAiB5Q,EAAW5lU,MAAQ4lU,EAE5D,GAAIh2V,EAAGs7N,UAAW,OACVt7N,EAAG4nB,eAKLpX,QAAQ/G,IAAI,CAACzJ,EAAGo2c,YAAap2c,EAAGq2c,UAAUrhb,OAAM,SACtD,IAAKw2R,EAAUx6D,cAAgB/8B,EAAgB,CAC7C,IAAIqiP,EAEJriP,EAAiB+hI,EAAW57C,YAAck8J,EAAwBtgH,EAAWp5B,aAAe,MAAQ05I,SAA+B,OAAS,EAAIA,EAAsB,IAGxK,IAAKt2c,EAAG6/D,WAAam2R,EAAWl9Q,WAAa0yO,EAAUhgN,QAAQsiN,wBAA0BkoC,EAAWxqP,UAAYggN,EAAUsqD,kBAAmB,CAC3I,MAAMt9B,UACJA,GACEhtB,EACJxrT,EAAGm2c,SAAW,KACdn2c,EAAGu2c,aACHv2c,EAAGw2c,sBACHhrJ,EAAUhgN,QAAQssN,kBAClB,UAAWk+B,IAAe,WAAY,CACpCA,EAAaA,IAGfA,EAAaA,EAAWrgR,UAGxB,IAAKqgR,EAAW95B,eAAiBsc,EAAU3sU,SAASmqV,KAAgBA,EAAWz4Q,WAAY,CACzFy4Q,EAAWz4Q,WAAa,KACxBi7P,EAAUx5T,IAAIg3U,GACd,GAAI/hI,EAAgB,CAClBu3F,EAAUpW,gBAAgBuqB,sBAAsBq2B,EAAY/hI,SAExDu3F,EAAUhgN,QAAQ6wJ,cACxB,GAAIr8P,EAAGmc,YAAa,CAClB,QAIJ,GAAInc,EAAGksI,iBAAmBs/K,EAAUmjC,gBAAgBl/Q,YAAc/4B,GAAW8hS,EAAU3sU,SAASmqV,KAAgB/hI,GAAkBu3F,EAAUpsS,SAAU,OAC9Ipf,EAAGy2c,oBAAoBzgH,EAAY/hI,GACzC,GAAIj0N,EAAGmc,YAAa,CAClB,QAGJ,MAAMu6b,EAAchga,GAAWwB,GAAUmzF,KAAKrrI,EAAG22c,yBAAyB3gH,EAAY/hI,GAAiBu3F,EAAUqtC,oBAC/Gl+H,EAAS36N,EAAGi5W,UAAUjjB,GACxB,SAAWh2V,EAAG42c,gBAAgB,iBAAkB,CAC9Cn8G,SAAUz6V,EACVg2V,WAAAA,EACA0gH,YAAAA,MACM,MAAO,CACb,GAAI12c,EAAG+1c,uBAAwB,CAC7BvqJ,EAAUhgN,QAAQ8pN,yBAIpB9J,EAAU90Q,QAAQmI,UAAU7/B,IAAI,8BAE1BwsS,EAAUhgN,QAAQ6wJ,cACxB,GAAIr8P,EAAGmc,YAAa,CAClB,OAEFnc,EAAG8tG,KAAKkoP,GACRh2V,EAAG42c,gBAAgB,qBAAsB,CACvCn8G,SAAUz6V,EACVg2V,WAAAA,EACA0gH,YAAAA,EACA/7O,OAAAA,IAEF,MAAMpvF,UACFA,GACEovF,EACJk8O,EAAgB7gH,EAAWzjV,SAAWyjV,EAAWzjV,OAAO68D,OAC1D,GAAIm8D,EAAU4sO,aAAc,CAC1B5sO,EAAU4sO,aAAa11Q,OAAS+oN,EAAU1yO,UAAYk9Q,EAAWz4Q,YAAco9I,EAAO7hJ,SAExF,GAAI0yO,EAAUx5L,SAASozO,aAAc,CAEnC,GAAI75N,EAAUspU,gBAAiB,CAC7BtpU,EAAUspU,gBAAgBh1Y,SAAWg3Y,EAEvC,GAAItrU,EAAUupU,cAAe,CAC3BvpU,EAAUupU,cAAcj1Y,SAAWg3Y,EAErC,GAAItrU,EAAU2pU,eAAgB,CAC5B3pU,EAAU2pU,eAAer1Y,SAAWg3Y,GAGxC72c,EAAGulV,kBACH,GAAI5qH,EAAOlkG,SAAU,OACbkkG,EAAOtqG,WACR,CACL,IAAKm7L,EAAUmjC,gBAAgBl/Q,WAAainY,KAE3ClrJ,EAAUx6D,aAAehxP,EAAGksI,gBAAkB11F,GAAUvxB,KAAKyxb,GAAa/8Z,UAAUnD,GAAUvxB,KAAKumS,EAAU+/B,0BAA2B,OACjI5wH,EAAOnyF,OAAO,CAClB5pI,OAAQ83c,EACR1lc,OAAQ,KACR+9B,QAAS,QAEN,OAEC4rL,EAAOnyF,OAAO,CAClB5pI,OAAQ4sT,EAAU90Q,QAClB1lC,OAAQ,MAERslC,MAAO,MACPuiU,UAAW,aAIZ,CACLrtD,EAAUhgN,QAAQwsN,uBACZh4T,EAAGymb,uBACT,GAAIzmb,EAAGmc,YAAa,CAClB,OAEFnc,EAAG82c,aACH92c,EAAG+2c,UACH/2c,EAAGm2c,SAAW,QAIpBv2c,UAAUo2V,EAAa/1V,KAAKwyE,QAC1B,MAAMzyE,EAAKC,MACT6/D,OACEA,GACE9/D,EACN,IAAI26N,OACFA,GACE36N,EACJ,IAAK26N,EAAQ,CACX,IAAIq8O,EACJ,MAAM5+b,EAAS64B,GAAaxhC,MAAM,CAChCopW,UAAW,CAAC/4S,EAAOyrR,uBAAwBzrR,EAAOgxK,eAClDkyI,iBAAkBhjX,EAClB6qC,aAAc7qC,EAAG6qC,aACjB8qa,sBAAuB31c,EAAG21c,sBAC1B94G,oBAAqB78V,EAAG68V,oBACxBloJ,WAAY30M,EAAG20M,WACf/7L,MAAOknD,EACP8tY,oBAAqBoJ,EAAmBh3c,EAAGg4R,gBAAkB,MAAQg/K,SAA0B,OAAS,EAAIA,EAAiBpJ,oBAAsB9tY,EAAO8tY,kBAC1JpiW,QAASxrG,EAAGwrG,QACZm7M,yBAA0B7mP,EAAO6mP,yBACjC8mJ,cAAeztc,EAAGkjB,MAClBoK,UAAW,CACT2nL,WAAY,CACVh9L,GAAI,eAEJ6U,MAAO,KAETlF,OAAQ,WACRrO,OAAQ,WACR8kV,KAAM,SACN9hV,QAASvc,GAGXi3c,WAAYj3c,EAAGi3c,YACdj3c,EAAGg4R,cAEN,GAAIh4R,EAAGqsO,cAAgBj0N,EAAOtL,KAAM,CAClC6tN,EAAS36N,EAAG26N,OAAS36N,EAAGqsO,YAAYv7G,IAAI14G,OACnC,CACL,MAEEozF,GAAWwqP,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWxqP,UAAYxrG,EAAGwrG,QAC7F0rW,EAAc1rW,EAAQ2rW,UACxBx8O,EAAS36N,EAAG26N,OAASpuK,GAAOj1C,OAAOpZ,OAAOmZ,OAAO,CAC/CvK,KAAM9M,EAAG61c,eAAeqB,IAAgB,uBACvC9+b,KAKPuiN,EAAO7hJ,SAAWhZ,EAAOgZ,SACzB6hJ,EAAOnvH,QAAUxrG,EAAGwrG,QACpB,OAAOmvH,EAIT/6N,KAAKo2V,EAAYzgN,GACf,MAAMv1I,EAAKC,KACT06N,EAAS36N,EAAGi5W,UAAUjjB,GACxBh2V,EAAGo3c,SAAW,KAEd,GAAIphH,EAAW4Q,eAAgB,CAC7B5Q,EAAaA,EAAW5lU,MAE1BpwB,EAAGyyE,OAASujR,EACZr7H,EAAO+1O,UAAU16G,EAAYzgN,GAC7Bv1I,EAAGo3c,SAAW,MAEhBx3c,aACE,MAAMI,EAAKC,MACTurT,UACEA,EACA/4O,OAAQujR,GACNh2V,EACN,GAAIA,EAAGs7N,UAAW,CAChB,MAAMX,EAAS36N,EAAGi5W,YAClB,IAAKj5W,EAAG0mF,eAAkB1mF,EAAG42c,gBAAgB,iBAAkB,CAC7D5gH,WAAAA,EACAr7H,OAAQA,MACF,MAAO,CACb,OAEF36N,EAAGg2c,oBACHr7O,EAAO86O,aAEPz/G,EAAWz4Q,WAAa,MACxBv9E,EAAGq3c,uBACHr3c,EAAG+2c,UACH/2c,EAAGm2c,SAAW,YAERx7O,EAAOxvG,QACbqgM,EAAUhgN,QAAQwsN,eAAe,MACjCxM,EAAU90Q,QAAQmI,UAAU98C,OAAO,wBACnC/B,EAAG42c,gBAAgB,gBAAiB,CAClC5gH,WAAAA,EACAr7H,OAAAA,IAEFA,EAAO28O,YACP,GAAIt3c,EAAG+1c,uBAAwB,CAC7BvqJ,EAAUhgN,QAAQgqN,wBAEpBx1T,EAAG42c,gBAAgB,gBAAiB,CAClC5gH,WAAAA,EACAr7H,OAAAA,KAMN/6N,iBACE,MAAMI,EAAKC,KACX,MAAMurT,UACJA,GACExrT,EACJ,GAAIA,EAAGs7N,UAAW,CAChBt7N,EAAGg2c,oBACH,MAAMhgH,EAAah2V,EAAGyyE,QACpB+4B,QACEA,GACExrG,EACJ26N,EAAS36N,EAAGi5W,YACdt+I,EAAOqT,eAEP,GAAIhuO,EAAGmc,YAAa,CAClB,IAAIo7b,GAEHA,EAAwB/rW,EAAQwsN,kBAAoB,MAAQu/I,SAA+B,OAAS,EAAIA,EAAsBzwc,KAAK0kG,EAAS,OAC7I,aAEIxrG,EAAGymb,uBAET,GAAIzmb,EAAGmc,YAAa,CAClB,IAAIq7b,GAEHA,EAAyBhsW,EAAQwsN,kBAAoB,MAAQw/I,SAAgC,OAAS,EAAIA,EAAuB1wc,KAAK0kG,EAAS,OAChJ,OAEFxrG,EAAG82c,mBACGtrW,EAAQ6wJ,cAEd,GAAIr8P,EAAGmc,YAAa,CAClB,IAAIs7b,GAEHA,EAAyBjsW,EAAQwsN,kBAAoB,MAAQy/I,SAAgC,OAAS,EAAIA,EAAuB3wc,KAAK0kG,EAAS,OAChJ,OAEFxrG,EAAG+2c,UACHp8O,EAAO+8O,cACPlsW,EAAQwsN,eAAe,OACvBxM,EAAU90Q,QAAQmI,UAAU98C,OAAO,wBACnC/B,EAAGm2c,SAAW,MACdn2c,EAAGwtB,QAAQ,iBACXxtB,EAAG42c,gBAAgB,mBAAoB,CACrC5gH,WAAAA,EACAr7H,OAAAA,IAEF,GAAI36N,EAAG+1c,uBAAwB,CAC7BvqW,EAAQgqN,wBAEVx1T,EAAG42c,gBAAgB,gBAAiB,CAClC5gH,WAAAA,EACAr7H,OAAAA,KAIN/6N,eACE,MAAMI,EAAKC,KAEX,GAAID,EAAGyyE,OAAO8K,WAAY,CACxB,OAAOv9E,EAAGuZ,SAEZ,OAAOvZ,EAAGo2c,cAAgBp2c,EAAGo2c,YAAcp2c,EAAG23c,WAAWtoM,SAAQ,IAAMrvQ,EAAGo2c,YAAcvzc,aAE1FjD,eACE,MAAMI,EAAKC,MACT06N,OACEA,EAAM6wF,UACNA,EACA/4O,OAAQujR,EAAUxqP,QAClBA,GACExrG,EACN,SAAWA,EAAG42c,gBAAgB,mBAAoB,CAChD5gH,WAAAA,EACAr7H,OAAAA,MACM,MAAO,CACb,OAEF36N,EAAGg2c,oBACHr7O,EAAOi9O,eACP5hH,EAAWj0V,SACX/B,EAAG+2c,gBACGvrW,EAAQ6wJ,cAEd7wJ,EAAQwsN,gBAAgBg+B,EAAWz4Q,YAEnC,GAAIv9E,EAAGmc,YAAa,CAClB,OAEFnc,EAAGm2c,SAAW,MACdx7O,EAAOxvG,QACPwvG,EAAOw0O,cACP3jJ,EAAU90Q,QAAQmI,UAAU98C,OAAO,wBACnC,GAAI/B,EAAG+1c,uBAAwB,CAC7BvqJ,EAAUhgN,QAAQgqN,wBAEpBx1T,EAAG42c,gBAAgB,gBAAiB,CAClCj8O,OAAAA,EACAq7H,WAAAA,IAKJp2V,SAGEK,KAAK8oB,uBAAsB,IAAM9oB,KAAKo+V,SAExCz+V,WACEK,KAAK2nB,SAASlX,OAEhB9Q,iBACE,MAAMI,EAAKC,KACX,GAAID,EAAG81c,cAAe,CAEpB,MAAMn7O,OACFA,GACE36N,EACJ2vH,EAAYgrG,EAAOhrG,UACrBgrG,EAAOhrG,UAAY,MACnB3vH,EAAGi2c,0BAA4B7zP,GAAcwqB,QAAQ,CACnDx6H,MAAO,mCACP19F,QAAS,qCACTgtM,SAAU,2BACVr6J,YAAarnD,EAAGqnD,cAElB,MAAMj7C,QAAepM,EAAGi2c,0BACxBt7O,EAAOhrG,UAAYA,EACnB3vH,EAAGi2c,0BAA4B,KAC/B,GAAI7pc,IAAWg2M,GAAcT,UAAW,CACtC3hN,EAAGuZ,cAEA,CAGLvZ,EAAG+oB,uBAAsB,IAAM/oB,EAAGuZ,YAGtC3Z,cAAaZ,OACXA,IAIA,GAAIA,EAAO23H,cAAe,CACxB12H,KAAKo2c,QAAU,IAAI7lc,SAAQC,IACzBzR,EAAOowB,GAAG,mBAAoB3e,MAC7B4+P,SAAQ,IAAMpvQ,KAAKo2c,QAAUxzc,aAGpCjD,iBAAgB8gL,YACdA,EAAWuzC,eACXA,EAAcknI,aACdA,IAIA,IAAKl7V,KAAK4/D,UAAY6gH,EAAYnjG,WAAY,CAC5Ct9E,KAAKqrX,UAAU5qM,EAAauzC,IAKhCr0N,mBAAkB8gL,YAChBA,EAAWuzC,eACXA,EAAc/wM,MACdA,IAEA,IAAKjjB,KAAKurT,UAAU1yO,SAAU,CAC5B51D,EAAMooW,UAAY,CAChBpgX,KAAM,eACN8tB,YAAa/4B,KACb4vH,KAAM,qBACN6D,QAAS,IACT7zD,SAAU5/D,KAAK4/D,WAAa6gH,EAAY5nG,SACxCy4J,OAAQ,IAAMtxO,KAAKqrX,UAAU5qM,EAAauzC,KAKhDr0N,iBAAgB+kU,iBACdA,EAAgBjkJ,YAChBA,IAEA,GAAIikJ,EAAkB,CACpB1kU,KAAKqrX,UAAU5qM,EAAaikJ,EAAiBvqB,eACxC,GAAI15H,EAAa,CACtBzgL,KAAKqrX,UAAU5qM,EAAaA,EAAY05H,WAK5Cx6S,sBAAsB8E,EAAMiC,GAC1B,MAAMkxc,EAAanzc,EAAK+F,QAAQ,OAAQ,SAASA,QAAQ,OAAQ,SAC/Dqtc,QAA4B73c,KAAKurT,UAAUh+R,WAAW1uB,WACxD6H,EAAO+5K,YAAc/5K,EAAOqvV,WAE5BrvV,EAAOw9T,aAAe,CAACx9T,EAAOqvV,YAC9B,MAAM+hH,QAA6B93c,KAAKurT,UAAUh+R,QAAQqqb,EAAYlxc,GACtE,OAAOmxc,GAAuBC,GAGlC5O,GAAShhc,OAAS,WAClBijO,GAAmB2F,gBAAgBo4N,GAAU,KAAM,gBACnD/9N,GAAmB2F,gBAAgBo4N,GAAU,MAAO,qBAoDpD,MAAM6O,WAA0Br4Y,GAC9B//D,eAAe4b,GACbrB,SAASqB,GACTrc,EAAgBc,KAAM,aAAc,IAEtC+N,mBACE,MAAO,oBAETvO,0BACE,MAAO,CACL24C,QAAS,GAGbqoB,0BACE,MAAO,CACLppD,OAAQ,CAAC,oBAAqB,qBAAsB,wBACpDqpD,MAAO,CAAC,8BAoBZ9gE,kBAAkBwY,EAAQw9V,EAAO,MAC/B,MAAM51W,EAAKC,MACTmtC,UACEA,EAASC,QACTA,EAAO2oT,WACPA,EAAUtxV,KACVA,EAAIuzc,SACJA,EAAQC,YACRA,EAAW9/Z,QACXA,EAAUp4C,EAAGo4C,QAAOipZ,cACpBA,EAAgB,MACdjpb,GACJ0nD,OACEA,GACE9/D,EACN,IAAIi0N,eACFA,GACE77M,EACJ,GAAI8/b,EAAa,CACfhga,GAAU0pF,kBAAkB9hE,EAAOppB,QAAS,yBAA0B,IAAKopB,GAE7E,GAAIuhY,EAAe,CACjBrhc,EAAG+jW,WAAWhlW,OAAS,EAEzB,GAAIiB,EAAG6/D,UAAYxyB,GAAWyyB,EAAO1yB,WAAaA,GAAa0yB,EAAOzyB,QAAS,CAE7E,OAEF,GAAI4qa,EAAU,CACZj4c,EAAGm4c,iBAAiB//b,GACpB,OAEF,IAAIwmH,EACJ,GAAI9+D,EAAOkxL,YAAa,CACtBpyH,EAAO9+D,EAAOqyR,kBAAkB6D,EAAY,KAAM,CAChDvtU,MAAO2kB,EACPzpB,IAAK0pB,QAEF,CACL,GAAI4mL,EAAgB,CAElBA,EAAiBn0J,EAAO+L,MAAMiB,QAAQmnJ,GAExCr1F,EAAO9+D,EAAOqyR,kBAAkBl+H,EAAgB,KAAM,KAAM,CAC1DxrM,MAAO2kB,EACPzpB,IAAK0pB,IACH4mL,GAEN,IAAKr1F,EAAM,CAET,OAEF,GAAIxmF,EAAS,CACX,GAAI0nB,EAAOurR,aAAc,CACvBzsN,EAAKioF,QAAQzuK,EAAS,EAAGA,EAAS,OAC7B,CACLwmF,EAAKioF,QAAQ,EAAGzuK,EAAS,EAAGA,IAGhCp4C,EAAG+jW,WAAWtlW,KAAKmgI,EAAKw5U,UAAU,CAChC9wZ,SAAU,CAAC,CACTnnC,MAAO,+BACPyoC,KAAMlkD,IAERiyB,QAAS,CACP27B,OAAQ4lZ,GAEV/3b,MAAO,CACLk4b,0BAA2B,EAC3Bz4c,CAACwY,EAAOrC,KAAMqC,EAAOrC,IACrBnW,CAACwY,EAAO+H,OAAS,mCAAoC,GAEvDqoC,YAAa,CACX8vZ,gBAAiBlgc,IAElB,OACH,GAAIw9V,EAAM,CACR51W,EAAG41W,QAGPh2W,OACE46G,GAAQ+K,KAAK,CACX1jE,cAAe5hD,KAAKs4c,YACpBl7Z,UAAW,CACT6L,aAAc,KACd5B,SAAUrnD,KAAK8jW,cAIrBnkW,iBAAiB0lU,GACfrlU,KAAKu4c,mBAAmB,CAACt6c,OAAOmZ,OAAO,GAAIiuT,EAAU,CACnD4yI,aAAc5yI,EAAS4yI,aAAe,IAAM,SAC5C/3b,MAAO,gBACP83b,SAAU,MACV7qa,UAAWntC,KAAK6/D,OAAO1yB,UACvBC,QAASi4R,EAASl4R,YAChBlvC,OAAOmZ,OAAO,GAAIiuT,EAAU,CAC9B4yI,aAAc5yI,EAAS4yI,aAAe,IAAM,QAC5C/3b,MAAO,gBACP83b,SAAU,MACV7qa,UAAWk4R,EAASj4R,QACpBA,QAASptC,KAAK6/D,OAAOzyB,WAClB,CACHg0Z,cAAe/7H,EAAS+7H,gBAW5Bzhc,mBAAmBgtX,EAAW//W,EAAU,IACtC,MAAM7M,EAAKC,MACTohc,cACEA,EAAgB,MACdx0b,EACN,GAAIw0b,EAAe,CACjBrhc,EAAG+jW,WAAWhlW,OAAS,EAEzB,GAAIiB,EAAG6/D,SAAU,CACf,OAEF+sT,EAAU3tX,SAAQqmU,IAChBtlU,EAAGy4c,kBAAkB95c,EAAeA,EAAe,GAAI2mU,GAAW,GAAI,CACpE+7H,cAAe,QACb,UAENrhc,EAAG41W,OAOLh2W,2BAA2B84c,EAAU,OACnC,MAAM14c,EAAKC,MACT6/D,OACEA,GACE9/D,EACN,GAAI04c,EAAS,CACXxga,GAAU0pF,kBAAkB9hE,EAAOppB,QAAS,yBAA0B,IAAKopB,GAE7Et4D,MAAMyd,KAAKjlB,EAAGu4c,YAAYjxZ,UAAUroD,SAAQy3C,IAC1C,GAAIgia,EAAS,CACXhia,EAAQp1C,MAAMu6D,QAAU,EACxB77D,EAAG24c,gBAAkB53Z,GAAY2D,gBAAgB,CAC/ChO,QAAAA,EACAtkC,SAAU,UACVmK,QAASujD,EACThwD,QAAS,KACP9P,EAAG+jW,WAAWhlW,OAAS,EACvBiB,EAAG41W,cAGF,CACL51W,EAAG+jW,WAAWhlW,OAAS,EACvBiB,EAAG41W,WAIT2iG,kBACE,IAAKt4c,KAAK24c,aAAc,CACtB34c,KAAK24c,aAAe1ga,GAAU72C,cAAc,CAC1CkR,OAAQtS,KAAK6/D,OAAOo/R,iBACpBx2S,cAAe,KACfvoC,MAAO,8BAGX,OAAOlgB,KAAK24c,aAEdh5c,4BACE,IAAIi5c,EACJ,KAAMA,EAAmB54c,KAAK8jW,cAAgB,MAAQ80G,SAA0B,OAAS,EAAIA,EAAiB95c,QAAU,EAAG,CACzHkB,KAAKu4c,mBAAmBv4c,KAAK8jW,WAAWj6V,KAAI,EAC1C0+C,YAAAA,KACIA,EAAY8vZ,oBAGtB14c,eAAeigE,EAAUtnD,GACvB,GAAIsnD,EAAU,CACZ5/D,KAAK64c,uBAEP3+b,MAAMkjI,eAAex9E,EAAUtnD,GAGjCspD,qBAEFm2Y,GAAkB7vc,OAAS,oBAC3BijO,GAAmB2F,gBAAgBinO,GAAmB,MAAO,CAAC,eAAgB,UAM9E,MAAMe,GAAa,CAAC3la,EAAWkpC,EAAS7J,KACtC,MAAMj8D,EAAQi8D,EAAOvG,mBAAmB94B,IACtColC,WACEA,GACEhiE,EACJiC,EAAWg6D,EAAOniE,YAAYgyE,aAAalvC,EAAWkpC,EAAQ9D,GAAa/F,GAC7E,OAAO+F,KAAc8D,IAAY9lE,EAAMi1B,QAAQhzB,EAAUg6D,EAAOr/B,KAMlE,IAAI4la,GAA6B7rb,GAAU,MAAM6rb,UAAmC7rb,GAAU7R,IAC5F1b,eAAewY,GAEbnY,KAAKme,UAAU,WACfjE,MAAM0D,eAAezF,GAuBvBxY,0BAA0B4yE,GACxBvyE,KAAKq1T,yBAILr1T,KAAK80F,eAAe9jD,GAAazhC,MAAMgjE,IAAU,CAACymY,EAAcptY,KAC9D,GAAIA,EAAMjhE,KAAO,SAAWihE,EAAMjhE,KAAO,SAAU,CACjD,MAAM4vE,WACFA,GACE3O,EACJz+B,EAAYotC,EAAWoY,mBAAmB,aAC1CvlD,EAAUmtC,EAAWoY,mBAAmB,WAC1C,GAAIqmX,EAAa3kX,QAAS,CACxB,IAAK,MAAMn6D,KAAQ8+a,EAAa3kX,QAAS,CACvC,MAAM7hB,EAAS5G,EAAMiB,QAAQ3yC,EAAKvvB,IAClC,KAAMmuc,GAAW,iBAAkB5+a,EAAMs4C,IAAWsmY,GAAW,iBAAkB5+a,EAAMs4C,IAAU,QACxFt4C,EAAKiT,UACLjT,EAAKkT,gBAMhBptC,KAAKo8P,cAGX,IAAK,MAAMp1J,KAAWz0B,EAAS,CAC7B,IAAI0mY,EAAuBC,EAC3B,MAAMttY,EAAQg7B,GAAMM,SAASF,GAC3BgyW,EAAezmY,EAAQy0B,GACvBmyW,EAAc,KAAMF,EAAwBD,EAAa3kX,WAAa,MAAQ4kX,SAA+B,EAAIA,EAAwB,OAAUC,EAAsBF,EAAankY,SAAW,MAAQqkY,SAA6B,EAAIA,EAAsB,IAElQ,GAAIttY,EAAO,CAET,IAAK,MAAM1xC,KAAQi/a,EAAa,CAC9B,MAAM3mY,EAAS5G,EAAMiB,QAAQ3yC,EAAKvvB,IAElC,IAAK,MAAMwoC,KAAaq/B,EAAOqR,cAAe,CAC5C,IAAKi1X,GAAW3la,EAAWjZ,EAAMs4C,GAAS,QACjCA,EAAOryD,KAAKqzD,SAASrgC,OAMtCnzC,KAAKu1T,0BAeT,IAAI6jJ,GAAgClsb,IAClC,IAAIy7C,EACJ,OAAOA,EAAS,MAAMywY,UAAsClsb,GAAU7R,IACpE1b,YACE,IAAI05c,GACHA,EAAwBr5c,KAAKs5c,oBAAsB,MAAQD,SAA+B,OAAS,EAAIA,EAAsBt9b,UAC9H7B,MAAM8B,YAGRrc,gBAAgB82K,GACd,IAAI8iS,EACJ,MAAMx5c,EAAKC,MACVu5c,EAAuBx5c,EAAGu5c,oBAAsB,MAAQC,SAA8B,OAAS,EAAIA,EAAqBx9b,UACzH,GAAI06J,EAAS,CACX12K,EAAGu5c,iBAAmB,IAAInjS,GAAiB,CACzCM,QAAAA,EACA0B,SAAUp4K,EAAGy5c,WACbnsb,UAAW,CACT5Y,QAAS,yBACTy2G,MAAO,uBACPl2F,MAAO,uBACP1Y,QAASvc,KAGb,GAAIA,EAAG05c,WAAY,CACjB15c,EAAG25c,UAGP35c,EAAG45c,yBAELh6c,yBACE,MAAMI,EAAKC,KACXD,EAAGwpE,gBAAgB,sBACnB,GAAIxpE,EAAG65c,aAAe75c,EAAG85c,WAAY,CACnC95c,EAAGovB,GAAG,CACJ1qB,KAAM,qBACNgwb,WAAY,8BAIlB90b,mBACEK,KAAK25c,yBAEPh6c,kBAAkBJ,GAChB,GAAIA,GAAS,MAAQS,KAAKy5c,WAAY,CACpCz5c,KAAK05c,UAKT/5c,2BACE,MAAMI,EAAKC,KACX,IAAKD,EAAGwoL,WAAW,gBAAkBxoL,EAAGm0T,oBAAqB,CAC3Dn0T,EAAGgd,WAAW,CACZtY,KAAM,aACNuT,GAAI,KACFjY,EAAG+5c,UAELh9b,MAAO/c,EAAGqxT,mBAkBhBzxT,eAAes0T,EAAS,MACtB/5S,MAAM69S,eAAe9D,GAErB,GAAIj0T,KAAKs5c,mBAAqBt5c,KAAKk0T,qBAAuBl0T,KAAKuyE,QAAS,CACtEvyE,KAAK85c,UAUTn6c,aAAao4K,EAAS79I,EAAMhE,EAAS,OACnC,SAAUl2B,KAAK+5c,SAAU,CACvB/5c,KAAKs5c,iBAAiBrhS,KAAKF,EAAS79I,GAQpC,IAAKhE,EAAQ,CACXl2B,KAAKutB,QAAQ,gBAAiB,CAC5BwqJ,QAAAA,EACA79I,KAAAA,IAGJ,OAAO,KAET,OAAO,MAOTv6B,UAAUu6B,IACVv6B,uBAMEK,KAAKutB,QAAQ,WAEf5tB,sBAAqBq1B,MACnBA,IAQAh1B,KAAKutB,QAAQ,UAAW,CACtByH,MAAAA,IAGJr1B,8BAA6Bu6B,KAC3BA,IAEA,MAAMn6B,EAAKC,MACTg6c,YACEA,GACEj6c,GACJwrG,QACEA,GACErxE,EAQNn6B,EAAGwtB,QAAQ,YAAa,CACtB2M,KAAAA,IAEF,GAAIqxE,IAAYyuW,GAAe9/a,EAAK69I,UAAY,gBAAiB,CAC/D,MAAMo/I,EAAcp3T,EAAG4rE,IAAI/L,SAC3B,GAAI7/D,EAAGq3T,yBAA0B,CAC/Br3T,EAAG4rE,IAAIhK,gBAEH5hE,EAAGk6c,oBAAoB//a,EAAKq4C,SAClCxyE,EAAG4rE,IAAI/L,SAAWu3P,EAMlBp3T,EAAGwtB,QAAQ,yBACN,GAAIg+E,IAAYyuW,GAAe9/a,EAAK69I,UAAY,UAAW,OAC1Dh4K,EAAG6jT,eAAe1pR,EAAKxD,SAC7B,GAAIwD,EAAKggb,YAAa,CACpBj8c,OAAOmZ,OAAOrX,EAAIm6B,EAAKggb,aAOzBn6c,EAAGwtB,QAAQ,wBACN,CACLxtB,EAAGo6c,UAAUjgb,IAOjBv6B,eACE,MAAM25c,iBACJA,GACEt5c,KACJ,GAAIs5c,EAAkB,CACpB,MAAM/rb,GAAW+rb,EAAiBpiS,gBAAmBoiS,EAAiB5iS,OACtE,GAAInpJ,EAAS,CAMXvtB,KAAKutB,QAAQ,UAEf,OAAO+rb,EAAiBpiS,SAE1B,OAAO,MAWTv3K,eACE,MAAMI,EAAKC,KACX,GAAID,EAAGi6c,aAAe,KAAM,CAC1B,aAGIj6c,EAAGq6c,OAAO,UAAW,CACzB7uW,QAASxrG,EAAGi6c,oBAGR,IAAIzpc,SAAQC,IAChB,MAAMgS,EAAWziB,EAAGovB,GAAG,CACrBxvB,mBACE6iB,IACAhS,EAAQ,OAEVsc,QAAS,CACPhQ,MAAO/c,EAAGs6c,oBACVnzb,IAAK,KACH1E,IACAhS,EAAQ,oBAKVzQ,EAAGq8P,cAMTr8P,EAAGwtB,QAAQ,UAgBb5tB,eACE,MAAMI,EAAKC,MACTg6c,YACEA,GACEj6c,EACN,GAAIi6c,GAAe,KAAM,CACvB,aAIIh6c,KAAKo8P,cACX,MAAM7pL,QACJA,GACEvyE,KACJ,GAAIuyE,GAAWxyE,EAAGu6c,aAAev6c,EAAG2xT,uBAAwB,CAC1D3xT,EAAG0zF,gBACH,MAAMlmE,QAAgBxtB,EAAGq6c,OAAO,gBAAiB,CAC/C7uW,QAASyuW,EACTznY,QAAAA,IAEF,GAAIhlD,EAAS,CAMXxtB,EAAGwtB,QAAQ,mBAOjB5tB,UACE,IAAI46c,GACHA,EAAyBv6c,KAAKs5c,oBAAsB,MAAQiB,SAAgC,OAAS,EAAIA,EAAuBrvV,UAElIhsH,EAAgBypE,EAAQ,eAAgB,CAMzC6xY,UAAW,KAKXhB,WAAY,GAOZC,WAAY,KAOZa,WAAY,KAOZD,oBAAqB,IAQrBL,YAAa,OACXrxY,GA6MN,MAAM8xY,WAAqBrB,GAA6BL,GAA0B5iI,GAAmByB,GAAkB+iH,QAiFrH5sb,mBACE,MAAO,eA+NT8T,2BACE,MAAO,CAyNLihS,mBAAoB06I,GASpB36I,qBAAsB66I,GAStBh7I,gBAAiB07I,GASjBz7I,qBAAsB06I,GAStBz6I,mBAAoBs8I,GAQpB/7I,0BAA2Bs6I,GAQ3Bv6I,qBAAsB06I,GAQtB76I,gBAAiB27I,GAQjB17I,qBAAsBs6I,GAQtBr6I,mBAAoBm8I,GASpB/7I,cAAe,KAOfoL,6BAA8B,sNAc9B6rH,iBAAkB,KAClB/kI,qBAAsB,GACtBkwI,SAAU6Z,IAGd9/b,0BACE,MAAO,CAkBLqxS,UAAW,MAIf0nC,gBACE,OAAOv4U,KAAKq1S,WAIdxE,gBACE,OAAO7wS,KAAKu1S,qBAAqBtjO,QAEnCtyE,gBAAgBkxS,GACd7wS,KAAKu1S,qBAAqBr7Q,KAAO22Q,GAKrC4pK,GAAavyc,OAAS,eAetB,IAAIwyc,GAAwBxtb,IAC1B,IAAIy7C,EACJ,OAAOA,EAAS,MAAM+xY,UAA8Bxtb,GAAU7R,IAC5DtN,mBACE,MAAO,uBAETpO,cAAc4rG,EAASjP,GACrBpiF,MAAMk7W,cAAc7pR,EAASjP,GAC7Bt8F,KAAK26c,wBACL36c,KAAKupE,gBAAgB,sBACrB,GAAIgiC,IAAY,MAAQA,SAAiB,GAAKA,EAAQ+uU,iBAAkB,CACtE/uU,EAAQp8E,GAAG,CACT1qB,KAAM,qBACNm2c,sBAAuB,yCACvBC,oBAAqB,uCACrBv+b,QAAStc,QAKfL,wBACE,MAAMI,EAAKC,KACXD,EAAGwpE,gBAAgB,mBACnB,GAAIxpE,EAAG+6c,yBAA0B,CAC/B,IAAI5jJ,GACHA,EAAcn3T,EAAGwrG,WAAa,MAAQ2rN,SAAqB,OAAS,EAAIA,EAAY/nS,GAAG,CACtF1qB,KAAM,kBACNikB,SAAU,oBACVpM,QAASvc,KAIfJ,iCACE,IAAKK,KAAKwd,cAAe,CACvBxd,KAAK26c,yBAOTh7c,mBAAkBuia,MAChBA,EAAK/pR,UACLA,EAASswR,MACTA,EAAQ,gBAER,MAAM1oa,EAAKC,KACX,IAAKD,EAAG8oI,UAAW,CACjB,OAGF,GAAIq5R,EAAQnia,EAAGg7c,yBAA0B,CACvC,OAEF,IAAI52Z,EAAOpkD,EAAG+6c,yBACd,GAAI32Z,IAAS,OAAQ,CACnBA,EAAOpkD,EAAGwrG,QAAQ+uU,iBAAmB,cAAgB,OAEvD,GAAIn2X,IAAS,cAAe,CAC1B,IAAI2nH,EAAkB/rK,EAAGi7c,2BACzB,IAAKlvS,EAAiB,CAGpBA,EAAkB/rK,EAAGi7c,2BAA6B/ia,GAAU72C,cAAc,CACxEkR,OAAQvS,EAAG2uV,gBAAgB9uM,OAAOnpG,QAClCgS,cAAe,KACf/J,UAAW,8BACX2I,SAAU,CAAC,CACT3I,UAAW,6BAIjBotH,EAAgBn4G,kBAAkBtyD,MAAM6F,MAAQ,IAAIg7Z,EAAQ/pR,GAAa+pR,EAAQ,OACjF,GAAIA,EAAQ,GAAK/pR,IAAc,EAAG,CAEhCp4I,EAAGk7c,2BAA6Bl7c,EAAGgd,YAAW,KAC5C,IAAIm+b,GACHA,EAAmBpvS,KAAqB,MAAQovS,SAA0B,OAAS,EAAIA,EAAiBp5c,SACzG/B,EAAGi7c,2BAA6B,OAC/B,QACE,CACLj7c,EAAG2nB,aAAa3nB,EAAGk7c,iCAEhB,CACL,MAAMrzc,EAAM7H,EAAGo7B,EAAE,sBAAsBstY,MACrCx9Z,EAAOi3Z,EAAQ,GAAGt6Z,KAAOwM,KAAKkxB,MAAM,KAAO48X,EAAQ/pR,GAAa+pR,MAAYt6Z,EAC9E,IAAK7H,EAAGs2H,OAAQ,CACdt2H,EAAGgxH,KAAK,CACNhB,YAAamyS,EACblyS,cAAe,MACf/kH,KAAAA,IAGJlL,EAAGs2H,OAAOprH,KAAOA,EACjB,GAAIi3Z,EAAO,CAETnia,EAAGs2H,OAAOtG,YAAcmyS,EACxBnia,EAAGs2H,OAAO3tG,SAAWw5Y,EAAQ/pR,EAE/B,GAAI+pR,EAAQ,GAAK/pR,IAAc,EAAG,CAChCp4I,EAAG40J,WAQTh1J,yCACE,IAAKK,KAAK64E,SAAU,CAClB74E,KAAKm7c,0BAA4Bn7c,KAAK64E,SAAW,MAIrDl5E,uCACE,GAAIK,KAAKm7c,0BAA2B,CAClCn7c,KAAKm7c,0BAA4Bn7c,KAAK64E,SAAW,OAIrDrW,qBACCtjE,EAAgBypE,EAAQ,eAAgB,CAazCmyY,yBAA0B,OAC1BC,yBAA0B,MACxBpyY,GAoBN,IAAIyyY,GAA8Blub,GAAU,MAAMkub,UAAoClub,GAAU7R,IAC9FtN,mBACE,MAAO,6BAETvO,0BACE,MAAO,CA2DLwnT,YAAa,QAUbg0F,0BAA2BklD,GAU3BjlD,2BAA4B+kD,IAIhCrgc,0BAA0BqnT,EAAau0F,GACrC,MAAMx7Y,EAAKC,KACX,IAAKD,EAAGyd,cAAe,CACrBzd,EAAGs7c,eAELnhc,MAAMohc,0BAA0Bt0J,EAAau0F,GAG/C57Y,eAAewY,GACbA,EAAS+B,MAAMohY,eAAenjY,GAC9B,GAAI,aAAcA,EAAQ,CACxBA,EAAOtL,KAAO,WAEhB,OAAOsL,EAETxY,eACE,MAAMI,EAAKC,KACX,GAAID,EAAGy7Y,QAAS,CACd,IAAK,MAAMv8Y,KAAOc,EAAGy7Y,QAAS,CAC5Bz7Y,EAAGy7Y,QAAQv8Y,GAAK8c,iBACThc,EAAGy7Y,QAAQv8Y,KAYxBU,sBAAsBqnT,GACpB,MAAMjnT,EAAKC,KACX,IAAKD,EAAGqrV,aAAc,CACpB,OAAO,KAET,MAAMxgC,kBACJA,EAAiB5wQ,WACjBA,GACEj6C,EACJ,IAAKA,EAAGy7Y,QAAS,CACfz7Y,EAAGy7Y,QAAU,GAEf,MAAMA,QACJA,GACEz7Y,EACJ,OAAQinT,EAAYn6S,MAElB,IAAK,QACH,CACE,IAAK2uY,EAAQC,gBAAiB,CAC5BD,EAAQC,gBAAkB17Y,EAAGk7Y,2BAA2BpqR,IAAI,CAC1D06L,UAAWxrT,EACX6qT,kBAAAA,EACA68B,uBAAwBztS,EAAW0hW,2BACnCh0D,4BAA6B1tS,EAC7B0lZ,eAAgB3/b,GACfinT,GAEL,OAAOw0F,EAAQC,gBAGnB,IAAK,OACH,CACE,IAAKD,EAAQG,eAAgB,CAC3BH,EAAQG,eAAiB57Y,EAAGi7Y,0BAA0BnqR,IAAI,CACxD06L,UAAWxrT,EACX6qT,kBAAAA,EACA68B,uBAAwBztS,EAAW4hW,0BACnCl0D,4BAA6B1tS,EAC7B0lZ,eAAgB3/b,GACfinT,GAEL,OAAOw0F,EAAQG,eAEnB,IAAK,WACH,CAEE,MAAO,CACL9uY,KAAM,WACN0+S,UAAWxrT,EACX8sZ,YAAa7lG,EAAY24I,SACzBh4G,oBAAqB3gC,EAAY24I,UAGvC,QACE,OAAO,MAGbn9X,qBAiBF,MAAMgqY,WAAuCvhV,GAC3Cl9G,mBACE,MAAO,iCAGTlB,kBACE,MAAO,iCAETrN,0BACE,MAAO,CACLy5B,sBAAuB,GACvB+oZ,gBAAiB,KACjB3rY,MAAO,MACPyxG,SAAU,MACVp4B,UAAW,MACXskC,YAAa,qBACbG,MAAO,KACP39B,SAAU,KACVC,aAAc,UACdp8E,YAAaj4C,WACbm0H,UAAW,MACX29B,SAAU,KACVh3F,SAAU,KACVpnD,IAAK,sCACLy8H,OAAQ,OACRgpU,iBAAkB,CAChB1uc,KAAM,aACNpI,KAAM,eAERwe,MAAO,CACL+1X,YAAa,CACXnsY,KAAM,SACNiJ,IAAK,sBACL29G,QAAS,MAGb87B,KAAM,CACJttG,SAAU,CACRlpB,YAAa/4B,MAEfijB,MAAO,CACLu4b,YAAa,CACX/nV,OAAQ,IACRv3D,MAAO,kBACPjxD,KAAM,WACNqxL,QAAS,wBACT18H,SAAU,MAEZ+hJ,aAAc,CACZluF,OAAQ,IACRv3D,MAAO,SACPjxD,KAAM,mBACNqxL,QAAS,6BAMnBm/Q,0BACE,IAAIC,EAAuBC,EAC3B,MAAMF,EAAsB,IAAI58b,IAC9B+8b,GAAsBF,EAAwB17c,KAAKu7c,oBAAsB,MAAQG,SAA+B,OAAS,GAAKC,EAAyBD,EAAsBhjR,YAAc,MAAQijR,SAAgC,OAAS,EAAIA,EAAuB19H,WACzQ,GAAI29H,EAAoB,CACtBH,EAAoB18b,IAAI68b,GAE1B,OAAOH,EAET97c,uBAAuBwY,EAAQR,GAC7B,OAAO0tM,GAAW5tI,YAAY9/D,EAAUQ,EAAqBnY,MAE/DL,uBAAuByZ,GACrBA,GAAYpZ,KAAK+e,IAAI3F,GAQvBzZ,wBAAwBs+U,GACtB,MAAO,GAETt+U,qBACE,MAAMI,EAAKC,MACTy7c,oBACEA,GACE17c,EACN,GAAI07c,EAAoBlqc,KAAM,CAE5Bkqc,EAAoBz8c,SAAQi/U,GAAcA,EAAWztU,WAAWzQ,EAAG87c,wBAAwB59H,MAC3Fl+U,EAAGkib,6BAA6BlN,GAAuBje,QACvD/2Z,EAAGmiN,UAAUu5P,OACR,CACL17c,EAAG+7c,uBAGPn8c,sBACEK,KAAKiib,6BAA6BlN,GAAuBltT,QACzD7nH,KAAKkiN,YAEPviN,qBACE,GAAIK,KAAK+7c,UAAW,CAClB/7c,KAAK87c,uBAGTE,kBACE,OAAO97c,QAAQF,KAAKi8c,WAWtBt8c,eAAcZ,OACZA,EAAMijb,gBACNA,EAAeC,6BACfA,IAEA,MAAMlib,EAAKC,KACXD,EAAGwrG,QAAUxsG,EACbgB,EAAGiib,gBAAkBA,EACrBjib,EAAGkib,6BAA+BA,EAClClib,EAAG2jX,mBAAmBs+D,EAAiBC,GACvClib,EAAGm8c,mBAAmB,IACtBn8c,EAAGqwH,OACHrwH,EAAGk8c,UAAY,IAAI3tV,GACnB,OAAOvuH,EAAGk8c,UAAUxnb,QAEtB90B,UAAU22a,GACR,MAAMv2a,EAAKC,MACTi8c,UACEA,GACEl8c,EACN,GAAIk8c,EAAW,CACbl8c,EAAGk8c,UAAUzrc,QAAQ8la,GACrBv2a,EAAGk8c,UAAY,KACfl8c,EAAGiib,gBAAkB,KACrBjib,EAAG4xH,QAGPhyH,0BAA0Bs+U,GACxB,MAAO,CACLhzU,KAAMb,EAAaY,WAAWizU,EAAWo3F,kBACzCv/Z,IAAK,eACL2yL,aAAcw1I,EAAW7hU,OACzB2c,YAAa/4B,KACbyE,KAAM,cACN4oB,UAAW,CACT+3D,OAAQ,yBAEV64P,WAAAA,GAGJt+U,iBACE,IAAIw8c,EACJ,OAAQA,EAAwBn8c,KAAKgib,mBAAqB,MAAQm6B,SAA+B,OAAS,EAAIA,EAAsBxmC,iBAEtIh2a,mBAAmBqib,EAAiBC,GAClC,IAAIm6B,EAAkBC,EACtB,MAAMt8c,EAAKC,MACTu7c,iBACEA,GACEx7c,EACN,GAAIkib,EAA8B,CAChClib,EAAGkib,6BAA+BA,EAEpC,GAAID,EAAiB,CACnBjib,EAAGiib,gBAAkBA,MAChB,CACLA,EAAkBjib,EAAGiib,gBAKvBjib,EAAGoyG,OAASiqW,EAAmBp6B,KAAqB,MAAQo6B,SAA0B,GAAKA,EAAiBvvc,KAAO9M,EAAGq6B,UAAU4nZ,EAAgBn1a,MAAQ,gBACxJ9M,EAAGurI,UAAU0tQ,YAAY5gW,QAAU4pY,GAAmB53a,EAAaY,WAAWg3a,EAAgB3M,kBAC9F,MAAMiB,EAAcv2a,EAAG41a,iBACrB2mC,GAAmBhmC,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYzsa,KAAIo0U,GAAcl+U,EAAGw8c,0BAA0Bt+H,OAAiB,GACzJx5U,IAAS43c,EAAoBC,EAAgB,MAAQ,MAAQD,SAA2B,OAAS,EAAIA,EAAkB53c,OAAS,cAClI82c,EAAiB17W,YACjB07W,EAAiB92c,KAAOA,EACxB82c,EAAiBx8b,OAAOu9b,EAAiB,CACvCruZ,IAAK,mBACLhjD,KAAM,oBACNxG,KAAMA,EACNgkM,aAAc,SACd1vK,YAAa/4B,KACb8V,IAAK,eACLuX,UAAW,CACT+3D,OAAQ,2BAIZrlF,EAAGy8c,sBAELC,eACE,OAAOz8c,KAAKu7c,iBAAiBh8c,OAAS,KAExCw8c,gBACE,IAAI9lK,EAEJ,SAAUA,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,GAAKA,EAAckM,iBAEhGu6J,uBACE,OAAO18c,KAAKu7c,iBAAiBjwU,UAAUoxU,iBAEzC/8c,qBACEK,KAAKw8c,sBAEP78c,sBACE,MAAMI,EAAKC,MACTw7c,YACEA,EAAW75P,aACXA,GACE5hN,EAAGurI,UACTkwU,EAAY57Y,UAAY7/D,EAAG08c,SAC3B18c,EAAG28c,iBAAiBl6W,OAASm/G,EAAan/G,QAAUziG,EAAGg8c,UAEzDp8c,qBACEK,KAAK0jX,qBACLxpW,MAAMsf,sBAIVgza,GAA+B51X,YAC/B41X,GAA+Btkc,OAAS,iCAcxC,MAAM2kc,WAA6BL,GACjCz+b,mBACE,MAAO,uBAGTlB,kBACE,MAAO,uBAETlN,mBAAmB48S,GACjB,MAAO,IAAInyS,EAAaY,WAAWuxS,EAAWiE,UAAU/7S,cAAc2F,EAAaY,WAAWuxS,EAAWkE,QAAQh8S,SAEnH9E,0BAA0Bs+U,GACxB,MAAM1hC,WACFA,GACE0hC,EACJg+G,EAAsBj8b,KAAKgib,gBAAgBka,yBAC3C/vb,EAAS+N,MAAMqic,0BAA0Bt+H,GAC3C,GAAIg+G,EAAoBrwb,SAAS2wS,GAAa,CAC5Ct+S,OAAOmZ,OAAOjL,EAAQ,CACpB1H,KAAM,wBAENuxJ,SAAUh2J,KAAK28c,kCAGnB,OAAOxwc,EAETxM,iBACE,MAAMqib,gBACFA,GACEhib,KACJi8b,EAAsBja,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBka,yBAC1G,IAAI5lB,EAAc0L,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBrM,iBAGpG,GAAIW,GAAe2lB,EAAoBn9b,OAAQ,CAC7Cw3a,EAAcA,EAAYl4a,QAAO8xB,GAAKA,EAAEqsR,YAAc0/I,EAAoBrwb,SAASskB,EAAEqsR,cAEvF,OAAO+5H,EAET32a,mBAAmBqib,EAAiBC,GAClC,MAAMlib,EAAKC,MACT48c,+BACEA,EAA8BC,gBAC9BA,GACE98c,EAAGurI,UACTvrI,EAAG48c,8BAAgC,EACnCzic,MAAMwpW,sBAAsB7kX,WAE5B+9c,IAAmC,MAAQA,SAAwC,OAAS,EAAIA,EAA+BjrV,OAC/HkrV,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBlrV,OAClFqwT,EAAkBjib,EAAGiib,gBACrB,GAAIA,EAAiB,CACnB,MAAM1vG,EAAe0vG,EAAgBga,kBACnCC,EAAsBja,EAAgBka,yBACtC4gB,EAAoBxqI,EAAal0U,QAAOm+S,IAAe0/I,EAAoBrwb,SAAS2wS,KAEtF,GAAI0/I,EAAoBn9b,OAAQ,CAC9B,GAAI89c,EAAgC,CAClCA,EAA+BxsV,WAC1B,CACLrwH,EAAGgf,IAAI,CACLlS,KAAM,SACNohD,IAAK,iCACLwlE,QAAS,GACTvsH,MAAO,OACP4O,IAAK,qCACL6yC,KAAM5oD,EAAGo7B,EAAE,oCAKZ,CACH,MAAM4hb,EAAkBD,IAAsB,MAAQA,SAA2B,OAAS,EAAIA,EAAkBjzc,KAAIisU,IAAG,CACrHv2U,MAAOu2U,EAAInrU,GACXM,KAAMlL,EAAGi9c,mBAAmBlnI,OAE9B,GAAI+mI,EAAiB,CACnBA,EAAgBt9c,MAAQ,KACxBs9c,EAAgB55b,MAAQ85b,EACxBF,EAAgBzsV,WAGb,CACHrwH,EAAGgf,IAAI,CACLlS,KAAM,QACNohD,IAAK,kBACLwlE,OAAQ,GACRvsH,MAAO,OACPzC,KAAM,aACNqkJ,MAAO/oJ,EAAGo7B,EAAE,sBACZrlB,IAAK,qBACLmN,MAAO85b,EACP1vb,UAAW,CACT+3D,OAAQ,8BAOpBq3X,eACE,MAAMnxU,UACJA,GACEtrI,KAEJ,OAAOka,MAAMuic,WAAanxU,EAAUoxU,iBAAiB1mT,UAAY1qB,EAAUuxU,iBAAmBvxU,EAAUuxU,gBAAgBt9c,OAE1HI,qBACEK,KAAKw8c,sBAEP78c,wBAAwBs+U,GAEtB,GAAIA,EAAWg/H,yCAA2Ch/H,EAAWi/H,4CAA6C,CAChH,MAAMC,EAAen9c,KAAKsrI,UAAUuxU,gBAAgBt9c,MAClDg9S,EAAav8S,KAAKurG,QAAQ6pM,gBAAgBvoO,QAAQswY,GACpD,MAAO,CAAC5gK,GAEV,OAAOriS,MAAM2hc,wBAAwB59H,IAIzC4uH,GAAqBj2X,YACrBi2X,GAAqB3kc,OAAS,uBAmB9B,IAAIk1c,GAA6Blwb,GAAU,MAAMkwb,UAAmClwb,GAAU7R,IAC5FtN,mBACE,MAAO,4BAETvO,0BACE,MAAO,CASL69c,oCAAqC7Q,GASrC8Q,0BAA2BzQ,GAU3B0Q,sCAAuC,MAG3C59c,cAAc4rG,EAASu6O,GACrB5rU,MAAMk7W,cAAc7pR,EAASu6O,GAC7B9lV,KAAKw9c,2CAA2C13H,GAChD,GAAI9lV,KAAKu9c,uCAAyChyW,EAAS,CACzDvrG,KAAKy9c,uCAAuClyW,IAGhD5rG,uCAAuC4rG,GACrCA,EAAQp8E,GAAG,CACT1qB,KAAM,4BACNioc,mBAAoB,gCACpBC,cAAe,gCACfz9J,MAAO,gCACP5yR,QAAStc,OAGbg8c,kBACE,IAAI0B,EACJ,OAAQA,EAAwB19c,KAAK29c,uCAAyC,MAAQD,SAA+B,OAAS,EAAIA,EAAsB1B,YAE1J4B,2CACE,OAAO59c,KAAKg8c,aAAeh8c,KAAK29c,oCAElCh+c,2CAA2C4rG,GACzCvrG,KAAKupE,gBAAgB,6BAEvB5pE,kCAAkCqib,GAChC,GAAIA,EAAgBn1a,OAAS,QAAS,CACpC,OAAO7M,KAAK69c,wBAA0B79c,KAAK69c,sBAAwB,IAAI79c,KAAKs9c,0BAA0B,CACpGl2Z,YAAapnD,KAAKonD,mBAEf,CACL,OAAOpnD,KAAK89c,kCAAoC99c,KAAK89c,gCAAkC,IAAI99c,KAAKq9c,oCAAoC,CAClIj2Z,YAAapnD,KAAKonD,gBAIxBznD,+BAA8Bqib,gBAC5BA,IAEA,MAAM+7B,EAAQ/9c,KAAKg+c,kCAAkCh8B,GACrDhib,KAAK29c,oCAAsCI,EAC3CA,EAAMvtc,WAAW3R,WAEnB2jE,qBAWF,MAAMy7Y,WAA+Bz2D,GAOnC7nZ,gCAAgCqzN,GAC9B,MAAMjzN,EAAKC,MACTygL,YACEA,GACEuyC,GAEF84G,QAASoyI,EACTv8H,MAAOw8H,EACPz3I,WAAY03I,GACVr+c,EAAGksZ,YAAYxrO,EAAa,YAAa,WAC7CrlI,EAAWr7C,EAAGosZ,4BAA4Bn5L,EAAYkrP,EAAcC,EAAYC,GAClF,GAAIhja,EAAU,CACZ,MAAM9F,KACJA,EAAIpuC,MACJA,GACEk0C,EACJn9C,OAAOmZ,OAAO47M,EAAY,CACxBkrP,aAAAA,EACAC,WAAAA,EACAC,gBAAAA,EACAzpF,kBAAmBvgX,KAAKC,IAAIihC,EAAO09K,EAAW19K,KAAM,GAEpDo/U,iBAAkBtgX,KAAKC,IAAID,KAAK+oB,MAAM61L,EAAW19K,KAAO09K,EAAW9rN,MAAQouC,EAAOpuC,GAAQ,KAE5F,OAAO,SACF,CACL,OAAO,OAGXvH,sBAAsB0lU,EAAU41B,EAAWyhD,EAAiB,OAC1D,MAAMxiX,EAAOhgB,MAAMugW,sBAAsBp1C,EAAU41B,EAAWyhD,GAC9D,GAAIxiX,IAAS,MAAQA,SAAc,GAAKA,EAAKq7T,eAAgB,CAC3D,IAAKv1V,KAAKq+c,gCAAgCnkb,GAAO,CAC/C,OAAO,MAGX,OAAOA,GAGXh7B,EAAgB++c,GAAwB,QAAS,0BACjDA,GAAuB/1c,OAAS,yBAUhC,MAAMo2c,WAA6B1vD,GAOjCjvZ,8BAA8BqzN,GAC5B,MAAMjzN,EAAKC,MACTurT,UACEA,GACExrT,GACJ0gL,YACEA,GACEuyC,GACJriJ,gBACEA,GACE8vG,EACJtzI,EAAYwjC,EAAkB8vG,EAAY/uK,IAAI,aAAe+uK,EAAYtzI,UACzEC,EAAUujC,EAAkB8vG,EAAY/uK,IAAI,WAAa+uK,EAAYrzI,QACrE+H,EAAMo2Q,EAAUg3C,sBAAsBp1T,GACtC+wa,EAAe/wa,EAAUn9B,UACzBmuc,EAAa/wa,EAAQp9B,UACrBouc,EAAkBD,EAAaD,EACjC,IAAI7oa,EAASk2Q,EAAUg3C,sBAAsBn1T,GAC3CnmC,EAASouC,EAASF,EAEpB,GAAIE,KAAY,EAAG,CACjBpuC,EAASmN,KAAKkxB,MAAM84a,EAAkB7yJ,EAAUX,kBAAkB2lE,sBAAsB,gBACxFl7U,EAASF,EAAMluC,EAEjBhJ,OAAOmZ,OAAO47M,EAAY,CACxBkrP,aAAAA,EACAC,WAAAA,EACAC,gBAAAA,EACAzpF,kBAAmBx/U,EAAM69K,EAAW79K,IACpCu/U,iBAAkB1hK,EAAW79K,IAAM69K,EAAW/rN,OAASkuC,EAAMluC,IAE/D,OAAO,KAETtH,sBAAsB0lU,EAAU41B,EAAWyhD,EAAiB,OAC1D,MAAMxiX,EAAOhgB,MAAMugW,sBAAsBp1C,EAAU41B,EAAWyhD,GAC9D,GAAIxiX,IAAS,MAAQA,SAAc,GAAKA,EAAKq7T,eAAgB,CAC3D,IAAKv1V,KAAKu+c,8BAA8Brkb,GAAO,CAC7C,OAAO,MAGX,OAAOA,GAGXh7B,EAAgBo/c,GAAsB,QAAS,wBAC/CA,GAAqBp2c,OAAS,uBA8B9B,MAAM+kc,WAAyBt4D,GAAcn0X,MAAMk6b,GAAsB0C,GAA2BhC,KAElGrtc,mBACE,MAAO,mBAETlB,kBACE,MAAO,mBAETrN,0BACE,MAAO,CACLomV,kBAAmB60H,GAMnB9M,kBAAmB,MAGvBvub,4BACE,OAAO,KAwHTzf,mBAOAkxS,cAAcA,GACZ7wS,KAAKurG,QAAQslM,UAAYA,EAE3BA,gBACE,OAAO7wS,KAAKurG,QAAQslM,UAUtB1sP,WACE,OAAOnkD,KAAKiqV,MAEd9lS,SAASA,GACP,MAAMpkD,EAAKC,KACXD,EAAGkqV,MAAQ9lS,EACX,IAAKpkD,EAAGokD,GAAO,CACbpkD,EAAG02C,QAAQmI,UAAU7/B,IAAI,SAASolC,KAClC,GAAIA,IAAS,aAAc,CACzBpkD,EAAGi6C,WAAa,IAAIika,GAAuBl+c,GAC3C,GAAIA,EAAG8oI,UAAW,CAChB9oI,EAAGi6C,WAAWklC,aAEX,GAAI/6B,IAAS,WAAY,CAC9BpkD,EAAGsiH,SAAW,IAAIi8V,GAAqBv+c,GACvC,GAAIA,EAAG89H,SAAU,CACf99H,EAAGsiH,SAASnjC,UAQpBv/E,kBACE,MAAMI,EAAKC,KACX,GAAID,EAAG8wO,eAAiB9wO,EAAG82N,WAAY,CACrC5+K,GAAU28G,cAAc70J,EAAG8wO,cAAe,iBAAkB9wO,EAAG82N,WAAWkI,UAAYh/N,EAAGwrG,QAAQ4wJ,sBAIrGo8E,gBACE,OAAOv4U,KAAKurG,QAAQ8pM,WAGtB11S,YAAYwtC,EAAW6mL,EAAgBrlD,GAErC,IAAKqlD,EAAesqG,cAAcnxR,GAAY,CAC5C,OAWF,GAAIntC,KAAKw6V,UAAYx6V,KAAKw6V,SAASn/H,UAAW,CAC5Cr7N,KAAKmvB,GAAG,CACNqvb,cAAe,IAAMtkc,MAAM44W,YAAY3lV,EAAW6mL,EAAgBrlD,GAClE/hJ,KAAM,WAEH,CACL,OAAO1S,MAAM44W,YAAY3lV,EAAW6mL,EAAgBrlD,KAI1Ds+R,GAAiBr2X,YACjBlkE,EAAcmQ,WAAW,eAAgB,SACzCoqb,GAAiB/kc,OAAS,mBAK1B,MAAM0a,GAAU,OAwHhB,MAAMmpb,WAA0BkB,GAY9Br1b,wBACE,MAAO,CACL6mc,yBAA0B,IAAIjtc,IAC9Bktc,uBAAwB,IAAIltc,IAC5Bmtc,2BAA4B,IAAIntc,IAChCotc,uBAAwB,IAAI//b,IAC5Bggc,yBAA0B,IAAIrtc,KAKlC7R,UAAUwY,GACR+B,MAAMsB,UAAUrD,GAChB,MAAMpY,EAAKC,KAEXD,EAAG++c,oBAAsB/+c,EAAGoxN,cAAcpxN,EAAGu6O,YAAa,GAAIv6O,EAAI,MAIlEA,EAAGi6C,WAAWovW,0BAA4BrpZ,EAAGi6C,WAAW+ka,wBAA0Bh/c,EAAGi6C,WAAW0lL,SAAW,aAC3G3/N,EAAG82N,WAAW1nM,GAAG,CACf64X,gBAAiB,oBACjBg3D,UAAW,wBACX1ic,QAASvc,IAEXA,EAAGgoT,SAAS54R,GAAG,CACb8vb,eAAgB,2BAChB3ic,QAAStc,OAGbL,6BAA4B6yE,OAC1BA,IAGA,GAAIA,EAAO6T,aAAc,CACvB,MAAMtmF,EAAKC,KACX,GAAID,EAAGwrG,QAAQsiN,sBAAuB,OAC9B9tT,EAAGwrG,QAAQ6wJ,cACjB,GAAIr8P,EAAGmc,YAAa,CAClB,QAGJnc,EAAGm/c,qBAAqB1sY,GACxBzyE,EAAGo/c,iBAAiB3sY,IAGxB7yE,YACE,IAAIy/c,EAAsBC,EAC1B,MAAMt/c,EAAKC,KACX,IAAK,MAAOwyE,EAAQgoX,KAAc8kB,EAAwBv/c,EAAG4+c,8BAAgC,MAAQW,SAA+B,OAAS,EAAIA,EAAsBx4c,UAAW,CAChL,IAAIw4c,EACJ,GAAI9sY,EAAOioX,eAAgB,CACzBjoX,EAAOioX,eAAeD,GACtBz6b,EAAG4+c,2BAA2Brlc,OAAOk5D,IAGzC,IAAK,MAAOA,EAAQi6V,KAAY8yC,EAAwBx/c,EAAG0+c,4BAA8B,MAAQc,SAA+B,OAAS,EAAIA,EAAsBz4c,UAAW,CAC5K,IAAIy4c,EACJ,GAAI/sY,EAAO06V,aAAc,CACvB,IAAIsyC,GACHA,EAAuBhtY,EAAO06V,gBAAkB,MAAQsyC,SAA8B,OAAS,EAAIA,EAAqB34c,KAAK2rE,EAAQi6V,GACtI1sa,EAAG0+c,yBAAyBnlc,OAAOmzZ,IAGvC1sa,EAAG2+c,uBAAuBjga,SACzB2ga,EAAuBr/c,EAAG0/c,oBAAsB,MAAQL,SAA8B,OAAS,EAAIA,EAAqBrjc,WACxHsjc,EAAwBt/c,EAAG2/c,yBAA2B,MAAQL,SAA+B,OAAS,EAAIA,EAAsBtjc,UACjIhc,EAAG4/c,WAAa,KAIlBhgd,cAAc4rG,GACZvrG,KAAKupE,gBAAgB,4BACrBgiC,EAAQp8E,GAAG,CACT1qB,KAAM,2BACNm7c,mBAAoB,8BACpB9mR,QAAS,2BACT8hR,sBAAuB,iCACvBC,oBAAqB,+BACrBj4B,kBAAmB,sBACnBtma,QAAStc,OAEXA,KAAK4rE,MAAQ2/B,EAAQ+pM,cAIvB31S,uBAEAA,qBACAA,eACE,OAAOK,KAAKwvK,UAEd7vK,kBAAkBJ,EAAO0oC,EAAM2B,GAC7B,OAAO5pC,KAAKurG,QAAQguC,IAAI,mBAAoBh6I,EAAO0oC,EAAM2B,GAE3DjqC,oCACE,MAAMI,EAAKC,KAIX,GAAID,EAAG8oI,UAAW,CAEhB,MAAM+zB,EAAc,CAClBs2D,YAAanzN,EAAG8/c,uBA4BlB9/c,EAAGwtB,QAAQ,sBAAuBqvI,GAElC78J,EAAG+/c,sBAAwB//c,EAAGmzN,YAAct2D,EAAYs2D,YACxDnzN,EAAG++c,uBAGPzpK,iBACE,IAAIY,EACJ,OAAQA,EAAgBj2S,KAAKurG,WAAa,MAAQ0qM,SAAuB,OAAS,EAAIA,EAAcZ,WAEtGA,eAAeA,GACbn7R,MAAMm7R,WAAaA,EAOrB0qK,kBACE,OAAO//c,KAAK+jM,QAAQzlI,OAAMy4I,GAAUA,EAAO8lP,gBAAe,GAE5D3pO,kBACE,OAAOlzN,KAAKggd,aAEd9sP,gBAAgBA,GACd,MAAM+sP,gBACFA,EAAeF,YACfA,GACE//c,KACJkgd,EAAYhtP,EAAYA,EAAYp0N,OAAS,IAE3CS,MAAO8zN,EACPprL,KAAMk4a,GACJD,EACNlgd,KAAKmgd,UAAYA,EACjBngd,KAAKggd,aAAe9sP,EACpB,IAAIktP,EAAkB/sP,EACtB,GAAI0sP,EAAa,CACf,MAAMjjB,YACJA,GACEijB,EACJK,GAAmBtjB,EAAY3pO,gBAAkBE,EAInD4sP,EAAgBnsa,SAAW9zC,KAAKqgd,4BAA8Brgd,KAAKsgd,kBAAkBF,EAAiBD,EAAWrzK,GAASkzI,aAAengZ,GAAW4M,eAAe2za,EAAiBD,GAEpL,GAAIJ,EAAa,CACfA,EAAY7sP,YAAcA,GAG9BvzN,oBAAoB4gd,GAClB,MAAO,GAAGA,EAAWhhd,QAAQsgC,GAAW4J,mBAAmB82a,EAAWt4a,QAgBxEtoC,oBAAoB0zN,EAAUprL,GAC5B,MAAM8/Q,SACFA,GACE/nT,KACJkzN,EAAc,GAChBG,EAAWA,GAAY00F,EAASn7Q,UAChC3E,EAAOA,GAAQ8/Q,EAAS9/Q,KACxB,IAAIu4a,EAEJ,GAAIntP,IAAa,EAAG,CAElBprL,EAAOpI,GAAW4gb,eAAex4a,GACjCorL,EAAWj/M,KAAKkxB,MAAMtlC,KAAKqgd,4BAA8Brgd,KAAKsgd,kBAAkBjtP,EAAU00F,EAAS9/Q,KAAMA,GAAQpI,GAAWqI,GAAGD,EAAMorL,EAAU00F,EAAS9/Q,OAG1J,IAAK,MAAMyL,IAAU,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,CAEpC,KAAM2/K,EAAW3/K,GAAS,CACxB8sa,EAAYntP,EAAW3/K,EACvB,OAIJ,IAAK8sa,EAAW,CACdA,EAAYntP,EAEd,IAAK,IAAI9zN,EAAQihd,EAAWjhd,GAAS8zN,EAAU9zN,GAASihd,EAAW,CACjEttP,EAAY10N,KAAK,CACfe,MAAAA,IAGJ,MAAM2gd,EAAYhtP,EAAYA,EAAYp0N,OAAS,GAEnDohd,EAAUj4a,KAAOA,EACjBi4a,EAAUj1c,KAAOjL,KAAK0gd,oBAAoBR,GAC1C,OAAOhtP,EAETvzN,iBAAiB6pT,GACf,MAAMzpT,EAAKC,KAGXD,EAAG4gd,oBAAsB,KACzBzmc,MAAM0mc,oBAAoB/hd,WAC1BkB,EAAG4gd,oBAAsB,MAOzB,GAAI5gd,EAAGwrG,QAAQ62M,0BAA4BriT,EAAG8oI,UAAW,CACvD9oI,EAAG8gd,4BAGPlhd,SAAQipI,WACNA,IAEA1uH,MAAM27H,QAAQ,CACZjN,WAAAA,IAEF,GAAIA,GAAc5oI,KAAK8gd,WAAY,CACjC9gd,KAAK2/c,WAAa,IAGtBhgd,gBAAgBJ,GAEd,GAAIA,EAAO,CACTS,KAAK+gd,mBAAqB,KAE5B,OAAOxhd,EAETI,iBAAiBipD,EAASi+E,GACxBA,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAW9qH,UACnE,GAAI6sC,EAAS,CACX,OAAOA,EAAQk+E,UAAYl+E,EAAU5oD,KAAKghd,gBAAgBnwV,IAAI,CAC5DoW,WAAYjnI,KAAKsrV,uBACjBpkN,YAAa,oBACbigD,WAAY,EACZJ,WAAY,MACZjxK,IAAK,oBACLgxK,QAAS9mL,KAAK4sV,WAAW53U,KAAKhV,OAC7BA,KAAK8gd,WAAYl4Z,GAEtB,OAAO,KAETjpD,sBACEK,KAAKihd,gBAAkB,KACvBjhd,KAAKy+c,yBAAyBhga,QAC9Bz+C,KAAK0+c,uBAAuBjga,QAC5Bz+C,KAAK2+c,2BAA2Blga,QAElC9+C,WAAW4b,GACT,IAAI2lc,EACJ,MAAMt6U,aACFA,GACErrH,EACJrL,EAAQ02H,EAAalwG,QAAQxmB,MAC7BsiE,EAASxyE,KAAKoiM,qBAAqBx7D,GACnCu6U,EAAgBnhd,KAAK0+c,uBAAuBhtc,IAAI8gE,GAClDj3D,EAAOtd,OAAOmZ,OAAO,GAAImE,GACzBA,EAAKrL,MAAQ9G,SAAS8G,EAAO,IAC7BqL,EAAK62M,MAAQ+uP,EAAc5lc,EAAKrL,OAChC,OAAQgxc,EAAwBlhd,KAAK+gd,sBAAwB,MAAQG,SAA+B,OAAS,EAAIA,EAAsBr6c,KAAK7G,KAAMub,GAEpJ5b,uBACE,MAAMI,EAAKC,KACTy2S,EAAQ12S,EAAGwrG,QAAQitU,WACrB,IAAKz4a,EAAGkhd,gBAAiB,CACvBlhd,EAAGkhd,gBAAkBxqK,EAAM+0H,cAAcrI,GAAmBtyS,OAE9D9wH,EAAGkhd,gBAAgB5xC,aAAa54H,EAAO,IAAIijI,GAAkB,CAC3DngI,yBAA0B,MAC1B12O,UAAW9iE,EAAGgoT,SAASq4B,MAAMv2U,KAAI2pN,IACxB,CACLrmL,UAAWqmL,EAAKrmL,UAChBC,QAASomL,EAAKpmL,QACd8iQ,UAAW,YAMjBnwS,EAAGqhd,oBACH,OAAOrhd,EAAGkhd,gBAEZthd,oBACE,MAAMygV,MACFA,GACEpgV,KAAK+nT,SACTs5J,EAAejhI,EAAM,GAAGhzS,QAAUgzS,EAAM,GAAGjzS,UAC3Cm0a,EAAgB,CACdzzV,EAAGwzV,GAEP,IAAIjzB,EAAgBizB,EAClBE,EAAe,KACjB,IAAK,IAAI3id,EAAI,GAAGE,OACZA,GACEshV,EAAOxhV,EAAIE,EAAQF,IAAK,CAC5B,MAAM40N,EAAO4sH,EAAMxhV,GACjB0pB,EAAWkrM,EAAKpmL,QAAUomL,EAAKrmL,UAEjC,GAAIk0a,IAAiB/4b,EAAU,CAC7Bi5b,EAAe,MAEjBnzB,GAAiB9la,EACjBg5b,EAAc1id,GAAK0pB,EAIrB,IAAKi5b,EAAc,CACjB,MAAMC,EAAa,GACnB,IAAK,IAAI5id,EAAI,GAAGE,OACZA,GACEshV,EAAOxhV,EAAIE,EAAQF,IAAK,CAC5B4id,EAAW5id,GAAK0id,EAAc1id,GAAKwvb,EAErCpub,KAAKwhd,WAAaA,MACb,CACLxhd,KAAKwhd,WAAa,MAGtB7hd,cAAc4tB,GACZrT,MAAM2iP,cAAc,OACpB,MAAM98P,EAAKC,KACX,IAAKD,EAAGooP,kBAAoB56N,EAAS,CACnC,IAAKxtB,EAAG82N,WAAW8wB,OAAQ,CAEzB5nP,EAAG82N,WAAWimC,eAEd/8P,EAAGkgd,gBAAgB/lb,KAAO,GAC1Bn6B,EAAGkgd,gBAAgBnnR,cACd,CACL/4L,EAAGy7W,0BAIT77W,iCACEK,KAAKw8P,iBAEP78P,+BACEK,KAAK68P,cAAc,MAErBl9P,yBACE,MAAM4rG,QACJA,GACEvrG,KACJ,OAAOurG,EAAQk2U,eAAiBzhb,KAAKyhd,sBAAwBl2W,EAAQi2U,cAAgBxhb,KAAK0hd,qBAAuBn2W,EAAQg2U,cAAgBvhb,KAAK2hd,oBAEhJhid,0BAAyBZ,OACvBA,EAAMojT,gBACNA,EAAe0D,aACfA,IAEA,GAAIA,EAAc,CAChB,MAAM9lT,EAAKC,KACX,IAAKD,EAAGkhd,gBAAiB,CACvBlhd,EAAG8gd,2BAGL,GAAI9gd,EAAGsgd,6BAA+Btgd,EAAG6hd,yBAA0B,CACjE7hd,EAAG0hd,qBAAuB1id,EAAO0ib,aACjC1hb,EAAG2hd,oBAAsB3id,EAAOyib,YAChCzhb,EAAG4hd,oBAAsB5id,EAAOwib,YAEhC,MAAM3kR,EAAc,CAClBs2D,YAAanzN,EAAG8/c,uBAElB9/c,EAAGwtB,QAAQ,sBAAuBqvI,GAElC78J,EAAG+/c,sBAAwB//c,EAAGmzN,YAAct2D,EAAYs2D,YAE1DnzN,EAAG88P,cAAcslD,IAAoBpiT,EAAG82N,WAAW8wB,SAGvD5jD,cACE,OAAO7pL,MAAM6pL,QAEfA,YAAYA,GACV,MAAMhkM,EAAKC,KACXka,MAAM6pL,QAAUA,EAChB,IAAKhkM,EAAGoZ,aAAc,CACpBpZ,EAAGykP,eAAe9kB,SAAW3/N,EAAG8hd,wBAChC9hd,EAAGykP,eAAevpB,QAAUl7N,EAAG+hd,sBAE/B,IAAK/9Q,EAAQp8L,MAAK84N,GAAOA,EAAI5zN,OAAS,UAAU,CAC9C9M,EAAGgid,sBAITpid,oBACEK,KAAK+jM,QAAQrzH,SAASa,YAAY,CAChC1kE,KAAM,SACL7M,KAAKwkP,gBAEV7kP,8BACEK,KAAKw8P,iBAEP78P,qBAAqBwY,GACnB,IAAI6pc,EACJ,MAAMjid,EAAKC,KACX,GAAID,EAAGixN,uBAAyB74M,EAAO64M,qBAAsB,CAC3D74M,EAAO64M,qBAAuBjxN,EAAGixN,qBAEnC,MAAMivP,EAAkBlgd,EAAGkid,qBAAqBpxV,IAAI,CAClDl4G,MAAO5Y,EACPk2H,SAAUl2H,EAAG02C,QACb3gC,IAAK,iDACL7O,OAAQlH,EAAGyvK,UACXtoK,QAAS86c,EAAqBjid,EAAGykP,kBAAoB,MAAQw9N,SAA4B,OAAS,EAAIA,EAAmB96c,QAAU,EACnI0pN,mBAAoB,KACpB12L,KAAM,GACN42L,WAAY/wN,EAAGghd,oBAAsBhhd,EAAG+wN,WAAaluM,GACrDiuM,aAAc9wN,EAAG8wN,cAAgB9wN,EAAGmid,oBACpCnxP,WAAYhxN,EAAGgxN,YAAchxN,EAAGoid,kBAChCzxP,OAAQ3wN,EAAG2wN,QACV3wN,EAAGqid,sBAAuBjqc,GAC7BpY,EAAGoid,kBAAkBntc,KAAKirc,GAC1B,OAAOA,EAETA,sBACE,MAAMlgd,EAAKC,KACX,IAAKD,EAAG0/c,iBAAkB,CACxB,MAAM/uP,EAAS3wN,EAAG2wN,OAClB,IAAK3wN,EAAGsid,eAAiB3xP,EAAO0nO,UAAW,CACzC1nO,EAAO0nO,UAAY,MAErBr4b,EAAG0/c,iBAAmB1/c,EAAGuid,uBAE3B,OAAOvid,EAAG0/c,iBAGZ9/c,oBAAoB+wN,EAAQ2B,EAAYD,GACtC,GAAI1B,EAAO/lN,KAAO,SAAU,CAC1B,OAAQ,MACN,KAAKynN,EAAMimO,gBACT,MAAO,kBACT,KAAKjmO,EAAMkmO,iBACT,MAAO,oBAGb,MAAO,GAETiqB,sBACE,MAAMxid,EAAKC,KACT88B,EAAS/8B,EAAGyid,aACd,IAAI/lb,EAAY18B,EAAG0id,iBACnB,IAAKhmb,GAAa18B,EAAG2id,gBAAkB5lb,EAAQ,CAC7CL,EAAYmtF,GAAal4G,IAAI3R,EAAGmxM,YAAcp0K,GAC9C/8B,EAAG0id,iBAAmBhmb,EAExB,OAAOA,EAUT98B,cAAcs4b,EAAQhwZ,EAAM06a,EAAiB3id,KAAK2id,gBAChD,MAAMxC,UACJA,EAASoC,gBACTA,GACEvid,KACJioC,EAAOA,GAAQk4a,EACf,MAAMyC,EAAgB/ib,GAAW4J,mBAAmBxB,GAClD46a,EAAgB7id,KAAKsgd,kBAAkBroB,EAAQnrJ,GAASkzI,YAAa/3Y,GACvE,OAAOs6a,EAAgBzlb,OAAO+lb,IAAkBF,EAAiBC,EAAgB,IAEnFjjd,sBACE,MAAM6wc,WACFA,EAAUsS,iBACVA,EAAgB/6J,SAChBA,GACE/nT,KACJgvC,EAAc8za,GAAoBtS,EACpC,OAAO3wa,GAAW+5C,aAAamuO,EAAS9/Q,KAAM+G,GAAe,EAAI+4Q,EAAS9/Q,KAAO+G,EAEnFrvC,gBAAeyyN,MACbA,IAEA,MAAMryN,EAAKC,MACT8gd,WACEA,EAAU/4J,SACVA,GACEhoT,EACN,IAAIoM,EAAS,GACb,GAAI20c,GAAc1uP,EAAM6lO,OAAQ,CAC9B,MAAMhwZ,EAAOloC,EAAGgjd,uBAAuBlkd,WACrCmkd,EAAYjjd,EAAGkjd,cAAc7wP,EAAM6lO,OAAQhwZ,GAC3Ci7a,EAAYnjd,EAAGkjd,cAAc7wP,EAAMgmO,UAAWnwZ,GAC9Ck7a,EAAgBpjd,EAAGo7B,EAAE,4BACvB,IAAIoyF,EAAa,IACf61V,EAAerjd,EAAGo7B,EAAE,yBACpBkob,EAAoB,GACtB,GAAIxjb,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASmB,OAAS,EAAG,CAC9Dm1K,EAAerjd,EAAGo7B,EAAE,6BACf,GAAI0E,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASw2K,SAAW,EAAG,CACvE/1V,EAAa,kBACR,GAAI1tF,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASy2K,OAAS,EAAG,CACrEh2V,EAAa,KAEf,IAAIi2V,EAAmB,IAAIpxP,EAAMqxP,mBAAmB38c,WAAW1I,QAAO,EAAE+7S,EAAUjgR,KAAUA,EAAK+9Z,SAAQhgb,MAAK,EAAEyrc,EAAMxsc,IAAUysc,EAAMxsc,KAAYD,EAAO+gb,OAAS9gb,EAAO8gb,QAAU,EAAI,IACvL,GAAIurB,EAAiB1kd,OAASiB,EAAG6jd,2BAA4B,CAC3DP,EAAoB,OAAStjd,EAAGo7B,EAAE,eAAe3wB,QAAQ,UAAWg5c,EAAiB1kd,OAASiB,EAAG6jd,4BACjGJ,EAAmBA,EAAiBvxc,MAAM,EAAGjS,KAAK4jd,4BAEpD,MAAMpnJ,EAAcgnJ,EAAiB35c,KAAI,EAAEswS,EAAUh/K,KAC5CgoV,EAAc34c,QAAQ,aAAcJ,EAAaY,WAAWmvS,EAAS11S,OAAO+F,QAAQ,cAAezK,EAAGkjd,cAAc9nV,EAAK88T,OAAQhwZ,IAAOz9B,QAAQ,cAAezK,EAAGkjd,cAAc9nV,EAAKi9T,UAAWnwZ,IAAOz9B,QAAQ,QAAS2wH,EAAKk9T,gBAAkB,kBAAoBl9T,EAAKm9T,iBAAmB,mBAAqB,MACtTrub,KAAK,QAAUo5c,EAGlBl3c,EAASi3c,EAAa54c,QAAQ,gBAAiBgyT,GAAahyT,QAAQ,cAAeq1B,GAAW/C,OAAOs1L,EAAMoB,KAAKrmL,UAAWogF,IAAa/iH,QAAQ,YAAaq1B,GAAW/C,OAAOs1L,EAAMoB,KAAKpmL,QAASmgF,IAAa/iH,QAAQ,cAAew4c,GAAWx4c,QAAQ,cAAe04c,GAAW14c,QAAQ,QAAS4nN,EAAMimO,gBAAkB,kBAAoBjmO,EAAMkmO,iBAAmB,mBAAqB,IAC/Xnsb,EAAS,wCAAwCA,UAEnD,OAAOA,EAETxM,mBAAkByyN,MAChBA,IAEA,MAAMryN,EAAKC,MACT8gd,WACEA,EAAU/4J,SACVA,GACEhoT,EACN,IAAIoM,EAAS,GACb,GAAI20c,GAAc1uP,EAAM6lO,OAAQ,CAC9B,MAAMhwZ,EAAOloC,EAAGgjd,sBACdC,EAAYjjd,EAAGkjd,cAAc7wP,EAAM6lO,OAAQhwZ,GAC3Ci7a,EAAYnjd,EAAGkjd,cAAc7wP,EAAMgmO,UAAWnwZ,GAChD,IAAIslF,EAAa,IACf61V,EAAerjd,EAAGo7B,EAAE,oBACtB,GAAI0E,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASmB,OAAS,EAAG,CAC9Dm1K,EAAerjd,EAAGo7B,EAAE,wBACf,GAAI0E,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASw2K,SAAW,EAAG,CACvE/1V,EAAa,kBACR,GAAI1tF,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASy2K,OAAS,EAAG,CACrEh2V,EAAa,KAIfphH,EAASi3c,EAAa54c,QAAQ,cAAeq1B,GAAW/C,OAAOs1L,EAAMoB,KAAKrmL,UAAWogF,IAAa/iH,QAAQ,YAAaq1B,GAAW/C,OAAOs1L,EAAMoB,KAAKpmL,QAASmgF,IAAa/iH,QAAQ,cAAew4c,GAAWx4c,QAAQ,cAAe04c,GAAW14c,QAAQ,QAAS4nN,EAAMimO,gBAAkB,kBAAoBjmO,EAAMkmO,iBAAmB,mBAAqB,IACzV,GAAIlmO,EAAM+nF,SAAU,CAClBhuS,EAASA,EAAO3B,QAAQ,aAAcJ,EAAaY,WAAWonN,EAAM+nF,SAAS11S,OAE/E0H,EAAS,wCAAwCA,UAEnD,OAAOA,EAYTxM,uBACE,MAAM6wc,WACFA,EAAUqT,kBACVA,EAAiB97J,SACjBA,GACE/nT,KACJgvC,EAAc60a,GAAqBrT,EACrC,OAAO3wa,GAAW+5C,aAAamuO,EAAS9/Q,KAAM+G,GAAe,EAAI+4Q,EAAS9/Q,KAAO+G,EAgCnFrvC,kBAAkByyN,EAAOliN,GACvB,MAAM4zc,YACJA,GACE9jd,KAAK2Y,MACT,IAAIxM,EAAS,GACb,GAAI23c,GAAe1xP,EAAM6lO,OAAQ,CAC/B,MAAMhwZ,EAAOjoC,KAAK2Y,MAAMorc,uBACxB53c,EAASnM,KAAK2Y,MAAMsqc,cAAc7wP,EAAM6lO,OAAQhwZ,GAElD,OAAO97B,EAETxM,kBAAkBJ,GAChBS,KAAK8+c,sBAEPn/c,iBAAiBJ,GACfS,KAAK2/c,WAAapgd,EAEpBI,oBAAoBJ,GAClB,MAAMQ,EAAKC,KACXD,EAAGikd,eAAiBzkd,EACpB,IAAIg/V,EAAe,MACnB,CAACx+V,EAAG0/c,iBAAkB1/c,EAAG2/c,uBAAuB1gd,SAAQ0iH,IAEtD,IAAKA,EAAQ,CACX,OAEF,MAAMgvG,OACJA,GACEhvG,EACJ,IAAKniH,EAAO,CACV,GAAImxN,EAAO0nO,UAAW,CACpB12U,EAAOuiW,iBAAmBvzP,EAAO0nO,iBAC1B1nO,EAAO0nO,gBAEX,UAAW74b,IAAU,SAAU,CACpCmxN,EAAO0nO,UAAY74b,OACd,UAAWmiH,EAAOuiW,mBAAqB,SAAU,CACtDvzP,EAAO0nO,UAAY12U,EAAOuiW,qBACrB,CACLvzP,EAAO0nO,UAAY,CACjBvrb,KAAM,UACN0J,MAAO,aAETm6M,EAAO0nO,UAAUztb,GAAK,YAExB4zV,EAAe,QAEjB,GAAIA,EAAc,CAChBx+V,EAAG++c,uBAGPn/c,4BAA4BJ,GAE1BS,KAAKy+c,yBAAyBz/c,SAAQkld,GAAoBA,EAAiBzrB,sBAAwBl5b,IAIrGI,mCACE,MAAMI,EAAKC,KAEX,IAAKD,EAAG4gd,oBAAqB,CAC3B,MAAM14a,KACJA,EAAI2E,UACJA,GACE7sC,EAAGgoT,SAEP,GAAI9/Q,IAASloC,EAAGokd,mBAAqBv3a,IAAc7sC,EAAGqkd,uBAAwB,CAE5Erkd,EAAGokd,kBAAoBl8a,EACvBloC,EAAGqkd,uBAAyBx3a,EAE5B,MAAMsmL,EAAcnzN,EAAG8/c,sBACrBjjT,EAAc,CACZs2D,YAAAA,GAGJnzN,EAAGwtB,QAAQ,sBAAuBqvI,GAClC78J,EAAG+/c,sBAAwB//c,EAAGmzN,YAAct2D,EAAYs2D,YAE1DnzN,EAAGskd,wBAGP1kd,2BACE,MAAMI,EAAKC,KAEX,IAAKD,EAAG4gd,oBAAqB,CAC3B,GAAI5gd,EAAGwrG,QAAQkrM,MAAO,CACpB12S,EAAGukd,uCAGA,CACHvkd,EAAGwrG,QAAQp8E,GAAG,CACZxvB,aACEI,EAAGukd,oCAELhoc,QAASvc,EACT6sB,KAAM,SAKdjtB,mBAAkBsH,OAChBA,IAGA,GAAIjH,KAAK8wY,gBAAiB,CACxB,IAAK,MAAMpvR,IAAU,CAAC1hH,KAAKy/c,iBAAkBz/c,KAAK0/c,uBAAwB,CACxE,IAAKh+V,EAAQ,SACbA,EAAOz6G,OAASA,EAChBy6G,EAAOjD,gBAAgBiD,EAAOjrE,WAIpC92C,4BACEua,MAAMk3W,6BAA6BvyX,WACnC,IAAK,MAAM6iH,IAAU,CAAC1hH,KAAKy/c,iBAAkBz/c,KAAK0/c,uBAAwB,CACxE,IAAKh+V,EAAQ,SACbA,EAAOx6G,MAAQlH,KAAK4qT,kBAAkB+C,UACtCjsM,EAAOjD,gBAAgBiD,EAAOjrE,UAKlC92C,kCAAkC6yE,EAAQ+xY,EAAYjmP,EAAa2hP,EAAkB,MACnFsE,EAAah9c,MAAMC,QAAQ+8c,GAAcA,EAAaA,EAAWriD,MAGjE,GAAIlia,KAAKwhd,WAAY,CACnB,IAAK,IAAI5id,EAAI,GAAGE,OACZA,GACEyld,EAAY3ld,EAAIE,EAAQF,IAAK,CACjC2ld,EAAW3ld,GAAGsI,MAAQlH,KAAKwhd,WAAW5id,IAG1C,OAAO2ld,EAET5kd,2BAA2B6yE,EAAQ+xY,EAAYjmP,EAAa2hP,EAAkB,MAE5EA,EAAkBA,GAAmBjgd,KAAKigd,gBAC1C,MAAM/lb,EAAOl6B,KAAKwkd,kCAAkChyY,EAAQ+xY,EAAYjmP,EAAa2hP,GAErF,IAAK/lb,EAAM,CACT,OAEFl6B,KAAK0+c,uBAAuBptc,IAAIkhE,EAAQt4C,GACxC+lb,EAAgB/lb,KAAOA,EACvB+lb,EAAgBnnR,UAChB,MAAM2rR,EAAwBxE,EAAgBxpa,QAAQyc,UAAU,MAChEuxZ,EAAsBj1Z,gBAAgB,MACtCi1Z,EAAsB7la,UAAU98C,OAAO,oBACvCw8N,EAAY5sK,UAAY,GACxB4sK,EAAY78N,YAAYgjd,GAE1B9kd,aACE,MAAMI,EAAKC,KACX,IAAKD,EAAGkhd,iBAAmBlhd,EAAGwrG,QAAQ62M,yBAA0B,CAI9DriT,EAAG8gd,2BAEH,IAAK9gd,EAAGqjW,SAASj2T,YAAcptC,EAAGqjW,SAASh2T,QAAS,CAClDrtC,EAAGqjW,SAASrxK,MAAQ,CAClB5kJ,UAAWptC,EAAGotC,UACdC,QAASrtC,EAAGqtC,UAIlB,OAAOlzB,MAAMsyN,cAAc3tO,WAE7Bc,6BAA6B6yE,EAAQ+xY,EAAYL,GAC/C,MAAMnkd,EAAKC,KACX,IAAKD,EAAGoZ,aAAc,CACpB,MAAMguL,EAAOpnM,EAAGgnM,QAAQ,CACtBv0H,OAAAA,EACA2jJ,SAAUp2N,EAAGykP,eAAe75O,KAE9B,GAAIw8L,EAAM,CACRpnM,EAAG2kd,2BAA2BlyY,EAAQ+xY,EAAYp9Q,GAGpDpnM,EAAGwtB,QAAQ,mBAAoB,CAC7BilD,OAAAA,EACA+xY,WAAAA,IAEF,MAAM5yX,EAAc5xF,EAAG4kd,uBAAuBnyY,GAC9C,GAAImf,EAAa,CAEf5xF,EAAG8+c,yBAAyBvlc,OAAOq4E,GAEnC5xF,EAAG6kd,oBAAoBjzX,KAI7BhyF,8BAA8Bw6S,GAC5B,OAAOn6S,KAAKurG,QAAQuvV,4BAA4BjqU,IAAI,CAClD4nU,sBAAuBz4b,KAAKy4b,sBAC5Br4G,MAAOpgV,KAAKihd,gBACZ9mK,SAAAA,IAGJx6S,+BAA+B6yE,GAC7B,MAAMzyE,EAAKC,KACTy2S,EAAQ12S,EAAGwrG,QAAQitU,WACnB0rC,EAAmBnkd,EAAG8kd,8BAA8BryY,GAEtDzyE,EAAG0+c,yBAAyBntc,IAAIkhE,EAAQ0xY,GACxC1xY,EAAOy6V,UAAUi3C,GAEjB,MAAMY,EAAqBruK,EAAM/3L,SAAQ,YACvC,aAAawlW,EAAiBnvW,EAAEwvW,cAC/BA,GAAcxkd,EAAGgld,6BAA6BvyY,EAAQ+xY,EAAYL,KACrEnkd,EAAG4+c,2BAA2Brtc,IAAIkhE,EAAQsyY,GAE1CtyY,EAAOwyY,YAAYF,GACnB,OAAOZ,EAETvkd,yBACEs2N,KAAMl2N,EAAEu+N,YACRA,EAAW9rJ,OACXA,IAEA,MAAM+4B,QACJA,GACExrG,EAGJ,GAAIA,EAAGkhd,iBAAmB11W,EAAQ62M,2BAA6B5vO,EAAO6T,aAAc,CAClF,IAAI4+X,EACJ,MAAMxG,yBACJA,EAAwBE,2BACxBA,GACE5+c,EACJ,IAAImkd,EAAmBzF,EAAyB/sc,IAAI8gE,GAGpD,IAAK0xY,EAAkB,CACrBA,EAAmBnkd,EAAGmld,+BAA+B1yY,GAGvD,IAAKyyY,EAAoBf,KAAsB,MAAQe,SAA2B,GAAKA,EAAkBV,WAAY,CACnH,GAAIL,EAAiBztK,MAAO,CAC1B12S,EAAG2kd,2BAA2BlyY,EAAQ0xY,EAAiBK,WAAYjmP,OAGhE,CACHmgP,EAAyBnlc,OAAOk5D,GAChCzyE,EAAG2+c,uBAAuBplc,OAAOk5D,GACjCmsY,EAA2Brlc,OAAOk5D,GAEpC,MAAMmf,EAAc5xF,EAAG4kd,uBAAuBnyY,GAE9C,GAAImf,GAAe5xF,EAAG6rE,MAAMhgE,SAAS+lF,GAAc,CACjD5xF,EAAG6kd,oBAAoBjzX,MAK/BhyF,wBAGE,IAAK,MAAMgyF,KAAepqF,MAAMyd,KAAKhlB,KAAK4+c,wBAAyB,CACjE5+c,KAAKk/c,qBAAqBvtX,GAE5B3xF,KAAK0nB,aAAa1nB,KAAKmld,2BAEzBxld,oBAAoBgyF,GAClB3xF,KAAK4+c,uBAAuB7/b,IAAI4yE,GAChC3xF,KAAKmld,0BAA4Bnld,KAAK+c,WAAW,CAC/C/E,GAAI,wBACJ8E,MAAO,GACP4R,kBAAmB,OAGvB/uB,uBAAuBw6S,GACrB,MAAM5qO,EAAe4qO,EAAS5qO,aAAavvE,KAAKurG,QAAQ+pM,cAAc3qS,IACtE,OAAO4kE,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAaoiB,YAElFhyF,iCAAiCgyF,GAC/B,IAAIyzX,EAAqBC,EACzB,MAAMtld,EAAKC,MACTy+c,yBACEA,GACE1+c,GACJ6xF,cACEA,GACED,EACJ2zX,EAAoB1zX,EAAc/nF,KAAIswS,GAAYskK,EAAyB/sc,IAAIyoS,KAC/EorK,GAAiBH,EAAsBE,EAAkB,MAAQ,MAAQF,SAA6B,OAAS,GAAKC,EAAwBD,EAAoBb,cAAgB,MAAQc,SAA+B,OAAS,EAAIA,EAAsBnjD,MAC1PsjD,EAAsBD,IAAkB,MAAQA,SAAuB,OAAS,EAAIA,EAAczmd,OAEpG,GAAIymd,GAAiBD,EAAkBn1c,OAAMs1c,IAAmBA,IAAmB,MAAQA,SAAwB,OAAS,EAAIA,EAAelB,aAAekB,EAAelB,WAAWriD,MAAMpja,SAAW0md,IAAsB,CAC7N,MAAME,EAAqB,GAG3BJ,EAAkBtmd,SAAQ,EACxBuld,WAAAA,MAGAA,EAAWriD,MAAMlja,SAAQ,CAAC6G,EAAGqK,KAC3B,IAAIy1c,EAAWD,EAAmBx1c,GAClC,IAAKy1c,EAAU,CACbA,EAAWD,EAAmBx1c,GAAS,CACrCsjN,KAAM3tN,EAAE2tN,KACRykO,OAAQ,EACRG,UAAW,EACXzuZ,MAAO,EACPi8a,QAAS,KACTnC,mBAAoB,IAAIjyc,KAG5Bm0c,EAASlC,mBAAmBnyc,IAAIzL,EAAEs0S,SAAU,CAC1C89I,OAAQpyb,EAAEoyb,OACVG,UAAWvyb,EAAEuyb,UACbzuZ,MAAO9jC,EAAE8jC,MACT0uZ,gBAAiBxyb,EAAEoyb,OAASpyb,EAAEuyb,UAC9BE,iBAAkBzyb,EAAEoyb,OAASpyb,EAAEuyb,YAEjCutB,EAASttB,gBAAkBstB,EAASttB,iBAAmBxyb,EAAEwyb,gBACzDstB,EAASrtB,iBAAmBqtB,EAASrtB,kBAAoBzyb,EAAEyyb,iBAC3DqtB,EAAS1tB,QAAUpyb,EAAEoyb,OACrB0tB,EAASvtB,WAAavyb,EAAEuyb,UACxB,GAAIvyb,EAAE22T,YAAa,CACjB,GAAImpJ,EAASnpJ,YAAa,CACxB32T,EAAE22T,YAAYx9T,SAAQo7S,GAAcurK,EAASnpJ,YAAYz9S,IAAIq7R,SACxD,CACLurK,EAASnpJ,YAAc,IAAI39S,IAAIhZ,EAAE22T,qBAKzC,OAAOkpJ,GAGX/ld,qBAAqBgyF,GACnB,MAAM5xF,EAAKC,KACXD,EAAG6+c,uBAAuBtlc,OAAOq4E,GAEjC,IAAK5xF,EAAG6rE,MAAMhgE,SAAS+lF,GAAc,CACnC5xF,EAAG8+c,yBAAyBvlc,OAAOq4E,GAErC,MAAM+zX,EAAqB3ld,EAAG8+c,yBAAyBntc,IAAIigF,IAAgB5xF,EAAG8ld,iCAAiCl0X,GAC/G,GAAI+zX,EAAoB,CACtB,IAAII,EAEJ/ld,EAAG8+c,yBAAyBvtc,IAAIqgF,EAAa+zX,GAC7C,MAAM9zX,cACJA,GACED,EACJ,IAAIuhI,EAAcnzN,EAAG8/c,oBAAoB9/c,EAAGgoT,SAASn7Q,UAAYglD,EAAc9yF,QAC/E,MAAM89J,EAAc,CAClBs2D,YAAAA,EACAvhI,YAAAA,EACAo0X,sBAAuB,MAEzBhmd,EAAGwtB,QAAQ,sBAAuBqvI,GAClCs2D,EAAct2D,EAAYs2D,YAC1B,MAAMgtP,EAAYhtP,EAAYA,EAAYp0N,OAAS,GACjDu0N,EAAWtzN,EAAGsgd,4BAA8Btgd,EAAGugd,kBAAkBJ,EAAU3gd,MAAO2gd,EAAUj4a,KAAM6kQ,GAASkzI,aAAengZ,GAAW4M,eAAeyza,EAAU3gd,MAAO2gd,EAAUj4a,MAC/K6L,EAAWu/K,KAAcyyP,EAAkB/ld,EAAGggd,eAAiB,MAAQ+F,SAAyB,OAAS,EAAIA,EAAgBhpB,YAAY3pO,kBAAoB,GAAKE,EAClK3xG,EAAS3hH,EAAG2/c,uBAAyB3/c,EAAGuid,qBAAqB,CAC3Dxua,SAAAA,IAEFwqL,EAAcv+N,EAAGgnM,QAAQ,CACvBp8L,GAAIgnF,EAAYhnF,GAChBwrN,SAAUp2N,EAAGykP,eAAe75O,KAGhC,GAAI5K,EAAG2/c,sBAAuB,CAC5Bh+V,EAAO5tE,SAAWA,MAGf,CACH/zC,EAAG2/c,sBAAwBh+V,EAG7B,GAAI48G,EAAa,CACfv+N,EAAG2kd,2BAA2B/yX,EAAa+zX,EAAoBpnP,EAAa58G,GAC5E3hH,EAAGwtB,QAAQ,gBAAiB,CAC1BokE,YAAAA,UAKD,GAAI5xF,EAAG6rE,MAAMhgE,SAAS+lF,GAAc,CACvC5xF,EAAG6kd,oBAAoBjzX,IAG3BhyF,iBAAiBgyF,GACf,MAAM5xF,EAAKC,MACT+/c,YACEA,GACEhgd,EAEN,GAAIggd,EAAa,CACf,MAAMnuX,cACFA,GACED,EACJuhI,EAAcnzN,EAAG8/c,oBAAoB9/c,EAAGgoT,SAASn7Q,UAAYglD,EAAc9yF,QAC3Ew/N,EAAcv+N,EAAGgnM,QAAQ,CACvBp8L,GAAIgnF,EAAYhnF,GAChBwrN,SAAU4pP,EAAYp1c,KAExBiyJ,EAAc,CACZs2D,YAAAA,EACAvhI,YAAAA,GAEJ,IAAImrW,EAAc/8b,EAAGimd,kBACrB,IAAKlpB,EAAa,CAChBA,EAAc/8b,EAAGimd,kBAAoBjG,EAAY/iB,mBAEnDj9b,EAAGwtB,QAAQ,sBAAuBqvI,GAClCkgS,EAAY5pO,YAAct2D,EAAYs2D,YACtC,OAAO6sP,EAAYrgP,SAAS,CAC1BpB,YAAAA,EACAw+N,YAAAA,KAMNn9b,qBACE,MAAMI,EAAKC,KAGX,GAAID,EAAG+/c,wBAA0B//c,EAAGmzN,aAAenzN,EAAGmzN,YAAa,CACjEnzN,EAAGmzN,YAAYl0N,SAAQuhd,IAErB,GAAIA,EAAWt1c,MAAQs1c,EAAWt4a,KAAM,CACtCs4a,EAAWt1c,KAAOlL,EAAG2gd,oBAAoBH,OAI/Crmc,MAAMsf,sBAAsB36B,YAIhCK,EAAgB6sc,GAAmB,QAAS,qBAC5C7sc,EAAgB6sc,GAAmB,OAAQ,qBAC3C7sc,EAAgB6sc,GAAmB,eAAgB,CACjD+V,sBAAuB,+CAOvBU,aAAc,IAMdG,eAAgB,KAChBnzS,UAAW,GAEX6wS,4BAA6B,MAW7B7P,WAAY1jK,GAASy2K,KAUrBM,kBAAmB,KAUnBf,iBAAkB,KAMlBT,cAAe,KAOfyB,YAAa,MAObhD,WAAY,MACZnB,WAAY,KACZqB,gBAAiBznV,GACjBm3F,OAAQ,CACN0nO,UAAW,CACTvrb,KAAM,UACN0J,MAAO,aAET0hb,OAAQ,CACNprb,KAAM,MACN0J,MAAO,WAYXs6M,aAAc,KACd2gM,sBAAuB,MACvB34U,SAAU,KAYVi4I,UAAW,KAYXnxN,oBAAmByyN,MACjBA,IAEA,IAAIjmN,EAAS,GACb,MAAM8rb,OACJA,EAAM2tB,QACNA,GACExzP,EACJ,GAAI6lO,EAAQ,CACV,GAAI2tB,EAAS,CACXz5c,EAASnM,KAAKimd,kBAAkBpnd,eAC3B,CACLsN,EAASnM,KAAKkmd,qBAAqBrnd,YAGvC,OAAOsN,GAwDT4kN,WAAY,KACZC,qBAAsBpuN,UACtBghd,2BAA4B,EAC5B3B,qBAAsBxxP,GACtB2xP,sBAAuB,KAMvB3pB,sBAAuB,MACvBznM,eAAgB,OAElB+6M,GAAkBn1X,YAClBm1X,GAAkB7jc,OAAS,oBAwB3B,MAAMi+c,WAAiCxqY,GAUrCh8E,UAAUu6B,KAAS3e,GACjBvb,KAAKomd,eAAiB,IAAI50c,IAE1B,GAAI0oB,EAAKuqO,OAAQ,CACfxmQ,OAAOmZ,OAAO8iB,EAAMl6B,KAAKqmd,gBAAgBnsb,EAAKuqO,SAEhDvqP,MAAMsB,UAAU0e,KAAS3e,GACzB,GAAIvb,KAAKykQ,OAAQ,CACfzkQ,KAAKsmd,gBAGT3md,gBAAgB8kQ,GACd,MAAMt4P,EAAS,GACf,GAAIs4P,EAAOo5D,gBAAiB,CAC1B1xT,EAAO1H,KAAOggQ,EAAOhgQ,UAChB,GAAIggQ,EAAO8hN,kBAAmB,CACnC,IAAIC,EAAeC,EACnBt6c,EAAO1H,MAAQ+hd,EAAgB/hN,EAAOt0O,SAAW,MAAQq2b,SAAuB,OAAS,EAAIA,EAAc/hd,KAC3G0H,EAAOm8I,SAAWm+T,EAAiBhiN,EAAOt0O,SAAW,MAAQs2b,SAAwB,OAAS,EAAIA,EAAen+T,QAEnH,OAAOn8I,EAETxM,eACE,IAAI+md,EACJ,MAAM3md,EAAKC,MACTqnD,SACEA,GACEtnD,EACJ0kB,EAAW,IAAI5F,IAAIwoC,GACnB7iC,EAAQ,GACV,IAAKkic,EAAa3md,EAAG0kQ,UAAY,MAAQiiN,SAAoB,GAAKA,EAAW7oJ,gBAAiB,CAC5F,MAAMvjB,SACJA,GACEv6S,EAAG0kQ,OACP,IAAK,MAAM21C,KAAcE,EAAU,CACjC,IAAKv6S,EAAGqmd,eAAenoc,IAAIm8R,GAAa,CACtC51R,EAAMhmB,KAAKuB,EAAGsQ,YAAYwgH,IAAI,CAC5B4zI,OAAQ21C,SAEL,CACL31R,EAASnL,OAAOvZ,EAAGqmd,eAAe10c,IAAI0oS,MAI5C,GAAI31R,EAASlT,KAAM,CACjBvR,KAAKmG,YAAY,IAAIse,IAEvB,GAAID,EAAM1lB,OAAQ,CAChBkB,KAAKyB,YAAY+iB,IAGrB7kB,iBAAiBsyE,GACfA,EAAQjzE,SAAQwzE,GAAUxyE,KAAKomd,eAAe9sc,OAAOk5D,EAAOiyL,UAE9D9kQ,eAAe4b,GACb,IAAIs5D,EAAQ36D,MAAMq3D,eAAeh2D,GACjC,GAAIs5D,EAAO,CACT,IAAI8xY,EACJ,MAAMr4Y,OACJA,GACEtuE,KACJ,IAAKuH,MAAMC,QAAQqtE,GAAQ,CACzBA,EAAQ,CAACA,GAEX,IAAK8xY,EAAe3md,KAAKykQ,UAAY,MAAQkiN,SAAsB,GAAKA,EAAa9oJ,gBAAiB,CACpG,IAAK,MAAMrrP,KAAUqC,EAAO,CAC1B,GAAIrC,EAAOiyL,SAAWzkQ,KAAKomd,eAAenoc,IAAIu0D,EAAOiyL,QAAS,CAC5DzkQ,KAAKomd,eAAe90c,IAAIkhE,EAAOiyL,OAAQjyL,KAM7C,GAAIlE,IAAW,MAAQA,SAAgB,GAAKA,EAAOxvE,OAAQ,CACzD,IAAK,MAAM8sE,KAAS0C,EAAQ,CAC1B,IAAK,MAAMkE,KAAUqC,EAAO,CAC1BrC,EAAOtB,UAAS5pB,GAAQskB,EAAMg7Y,iBAAiBt/Z,EAAKm9M,OAAQn9M,QAKpE,OAAOutB,EAETl1E,iBAAiB8kQ,GACf,OAAOzkQ,KAAKomd,eAAe10c,IAAI+yP,IAGnCvlQ,EAAgBind,GAA0B,QAAS,4BACnDjnd,EAAgBind,GAA0B,SAAU,CAQpD,OAQA,YACAA,GAAyBxpY,mBACzBwpY,GAAyBj+c,OAAS,2BAgBlC,MAAM2+c,WAAiCrxK,GAAgC9M,OAAOj8L,KAE5E70F,wBACE,MAAO,CACLkvc,eAAgB,IAAIt1c,KAGxB7R,cAAc4rG,GACZvrG,KAAK4kb,iBAAiBr5U,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ+pM,eAChFt1S,KAAK6kb,mBAAmBt5U,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ4pM,iBAClFn1S,KAAK0kb,cAAcn5U,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQ8pM,YAC7Er1S,KAAK+md,uBAEPpnd,iBAAiBisE,GACf5rE,KAAKupE,gBAAgB,iBAErBqC,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMz8C,GAAG,CACrD1qB,KAAM,gBACN2gF,OAAQplF,KAAKgnd,2BACb1qc,QAAStc,OAGbL,cAAcisE,GACZ5rE,KAAKupE,gBAAgB,cAErBqC,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMz8C,GAAG,CACrD1qB,KAAM,aACNkpG,OAAQ3tG,KAAKind,cACb3qc,QAAStc,OAGbL,mBAAmBisE,GACjB5rE,KAAKupE,gBAAgB,mBAErBqC,IAAU,MAAQA,SAAe,OAAS,EAAIA,EAAMz8C,GAAG,CACrD1qB,KAAM,kBACN2gF,OAAQplF,KAAKknd,oBACbpuR,QAAS94L,KAAKmnd,qBACdpoc,IAAK/e,KAAKond,iBACVz5W,OAAQ3tG,KAAKqnd,mBACbvld,OAAQ9B,KAAKsnd,oBACbhrc,QAAStc,OAGbL,2BAA2BwwB,GAEzB,GAAIA,EAAMy9C,QAAUz9C,EAAMiiC,SAAW,SAAU,CAC7C,OAEFpyD,KAAK+md,uBAEPpnd,sBACEK,KAAKhB,SAAQuod,GAAmBA,EAAgBjB,iBAElD3md,qBAAqBwwB,GACnB,GAAIA,EAAMiiC,SAAW,QAAS,CAC5BpyD,KAAKhB,SAAQuod,GAAmBA,EAAgBjB,kBAGpD3md,kBAAiBsyE,QACfA,IAEAA,EAAQjzE,SAAQwzE,IACd,MAAM+0Y,EAAkBvnd,KAAKwnd,iBAAiBh1Y,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO2nO,UACrGotK,IAAoB,MAAQA,SAAyB,OAAS,EAAIA,EAAgBjB,kBAGtF3md,oBAAmB6yE,OACjBA,EAAMD,QACNA,IAGA,GAAI,aAAcA,EAAS,CACzB,MAEEk1Y,EAAoBznd,KAAKwnd,iBAAiBh1Y,GAE1Ck1Y,EAAqB1nd,KAAKwnd,iBAAiBh1Y,IAAW,MAAQA,SAAgB,OAAS,EAAIA,EAAO2nO,UAEpG,GAAIstK,GAAqBC,EAAoB,CAC3CA,EAAmBjmd,YAAYgmd,KAIrC9nd,qBAAoBsyE,QAClBA,IAEAjyE,KAAK8B,OAAOmwE,EAAQpoE,KAAI2oE,GAAUxyE,KAAKwnd,iBAAiBh1Y,MAE1D7yE,eAAc6yE,OACZA,EAAMD,QACNA,IAEA,GAAI,SAAUA,EAAS,CACrB,IAAK,MAAM6nO,KAAc5nO,EAAO8nO,SAAU,CACxC,MAAMmtK,EAAoBznd,KAAKwnd,iBAAiBptK,GAChDqtK,EAAkBn2c,IAAI,OAAQkhE,EAAO/tE,QAI3C9E,uBACE,IAAIgod,EACJ,MAAMnjc,EAAQ,IACbmjc,EAAiB3nd,KAAKm6U,YAAc,MAAQwtI,SAAwB,OAAS,EAAIA,EAAeryK,cAAct2S,SAAQm7S,IACrH,IAAKA,EAAS9zN,aAAc,CAC1B7hE,EAAMhmB,KAAKwB,KAAKu6E,WAAWs2C,IAAI,CAC7B4zI,OAAQ01C,SAIdn6S,KAAK6/F,YACL7/F,KAAK+e,IAAIyF,GAMTxkB,KAAKutB,QAAQ,mBAEf5tB,SACE,MAAMujB,EAAUhJ,MAAMpY,UAAUjD,WAEhCqkB,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQlkB,SAAQwzE,IAChExyE,KAAK8md,eAAextc,OAAOk5D,EAAOiyL,WAEpC,OAAOvhP,EAETvjB,YACEua,MAAM2lF,aAAahhG,WACnBmB,KAAK8md,eAAeroa,QAEtB9+C,iBAAiB8kQ,GACf,OAAOzkQ,KAAK8md,eAAep1c,IAAI+yP,GAEjC9kQ,iBAAiB8kQ,EAAQl/K,GACvB,OAAOvlF,KAAK8md,eAAex1c,IAAImzP,EAAQl/K,IAG3CrmF,EAAgB2nd,GAA0B,eAAgB,CACxDtsY,WAAY4rY,GAKZ56W,QAAS,KACT7kB,KAAM,OAERmgY,GAAyB3+c,OAAS,2BAqFlC,MAAMokc,WAA4BP,GAgBhCpsc,cAAc4rG,GACZrxF,MAAMk7W,cAAc7pR,GACpBvrG,KAAK4rE,MAAQ5rE,KAAK4nd,WAAWr8W,GAE/B5rG,WAAW4rG,GACT,OAAOs7W,GAAyBh2V,IAAI,CAClCtlB,QAAAA,IAGJ5rG,qBAEAA,YAAWinI,aACTA,IAEA,MAAM12H,EAAQ02H,EAAalwG,QAAQxmB,MACjCsiE,EAASxyE,KAAKoiM,qBAAqBx7D,GACnCihV,EAAiB7nd,KAAK0+c,uBAAuBhtc,IAAI8gE,EAAOiyL,QACxDvqO,EAAO2tb,EAAez+c,SAAS8G,EAAO,KACxC,OAAOlQ,KAAK+gd,mBAAmB7mb,GAEjCv6B,+BAA+B6yE,GAC7B,GAAIA,EAAOqrP,gBAAiB,CAC1B,OAAO3jT,MAAMgrc,+BAA+B1yY,GAE9C,GAAIA,EAAO+zY,kBAAmB,CAC5B,OAAOvmd,KAAK8nd,mCAAmCt1Y,IAGnD7yE,YACE,MAAMI,EAAKC,KAEX,IAAK,MAAOwyE,EAAQgoX,KAAc8kB,EAAwBv/c,EAAG4+c,8BAAgC,MAAQW,SAA+B,OAAS,EAAIA,EAAsBx4c,UAAW,CAChL,IAAIw4c,EACJ,GAAI9sY,EAAO+zY,kBAAmB,CAC5B/zY,EAAO2nO,SAASsgJ,eAAeD,GAC/Bz6b,EAAG4+c,2BAA2Brlc,OAAOk5D,IAGzC,IAAK,MAAOA,EAAQi6V,KAAY8yC,EAAwBx/c,EAAG0+c,4BAA8B,MAAQc,SAA+B,OAAS,EAAIA,EAAsBz4c,UAAW,CAC5K,IAAIy4c,EACJ,GAAI/sY,EAAO+zY,kBAAmB,CAC5B/zY,EAAO2nO,SAAS+yH,aAAaT,GAC7B1sa,EAAG0+c,yBAAyBnlc,OAAOmzZ,IAGvC,GAAI1sa,EAAG8lV,cAAe,CACpB,IAAIhtJ,GACHA,EAAY94L,EAAG6rE,SAAW,MAAQitH,SAAmB,OAAS,EAAIA,EAAU98K,UAE/E7B,MAAM6tc,YAERpod,mCAAmC6yE,GACjC,MAAMzyE,EAAKC,KACTy2S,EAAQ12S,EAAGwrG,QAAQitU,WACnB0rC,EAAmBnkd,EAAG0+c,yBAAyB/sc,IAAI8gE,EAAO2nO,UAC5D,GAAI+pK,EAAkB,CAEpBnkd,EAAG0+c,yBAAyBntc,IAAIkhE,EAAQ0xY,GAExC,MAAMY,EAAqBruK,EAAM/3L,SAAQ,YACvC,aAAawlW,EAAiBnvW,EAAEwvW,cAC/BA,GAAcxkd,EAAGgld,6BAA6BvyY,EAAQ+xY,EAAYL,KACrEnkd,EAAG4+c,2BAA2Brtc,IAAIkhE,EAAQsyY,GAE1CtyY,EAAO2nO,SAAS6qK,YAAYF,GAE9B,OAAOZ,EAETvkd,6BAA6B6yE,EAAQ+xY,EAAYL,GAE/C,GAAI1xY,EAAO+zY,kBAAmB,CAC5B,GAAIhC,EAAWvrB,cAActnb,IAAI8gE,GAAS,CACxCt4D,MAAM6qc,6BAA6BvyY,EAAQ+xY,EAAYL,OAKpD,CAEHlkd,KAAKy+c,yBAAyBnlc,OAAOk5D,GACrC,MAAMgoX,EAAWx6b,KAAK2+c,2BAA2Bjtc,IAAI8gE,GAErD,GAAIgoX,EAAU,CACZ0pB,EAAiB/pK,SAASsgJ,eAAeD,GACzCx6b,KAAK2+c,2BAA2Brlc,OAAOk5D,SAGtC,CACLt4D,MAAM6qc,6BAA6BvyY,EAAQ+xY,EAAYL,IAG3Dvkd,uBAAsBgvK,IACpBA,EAAGn8F,OACHA,IAEA,IAAIw1Y,EAAgBC,EAEpBt5S,EAAIu7D,UAAU,CACZg+O,kBAAmBF,EAAiBx1Y,EAAOiyL,UAAY,MAAQujN,SAAwB,OAAS,EAAIA,EAAenqJ,gBACnHsqJ,oBAAqBF,EAAkBz1Y,EAAOiyL,UAAY,MAAQwjN,SAAyB,OAAS,EAAIA,EAAgB1B,oBAG5H5md,uBAAuBw6S,GACrB,MAAM5qO,EAAe4qO,EAAS5qO,aAAavvE,KAAK4rE,OAChD,OAAO2D,IAAiB,MAAQA,SAAsB,OAAS,EAAIA,EAAaoiB,YAElFhyF,wBAAwBu6B,GACtB,MAAMqxE,QACJA,GACErxE,EAAK+7L,KACT,GAAI1qH,EAAQ62M,2BAA6BloR,EAAKs4C,OAAO6T,aAAc,CAGjEnsD,EAAKs4C,OAASt4C,EAAKs4C,OAAOiyL,OAC1B,OAAOvqP,MAAM2nc,wBAAwB3nb,IAGzCv6B,QAAQu6B,GACN,IAAIkub,EAAcC,EAElB,IAAKD,EAAelub,EAAKs4C,UAAY,MAAQ41Y,SAAsB,GAAKA,EAAavqJ,kBAAoBwqJ,EAAgBnub,EAAKs4C,UAAY,MAAQ61Y,SAAuB,GAAKA,EAAc9B,kBAAmB,CAE7Mrsb,EAAKs4C,OAASxyE,KAAK4rE,MAAM47Y,iBAAiBttb,EAAKs4C,QAEjD,OAAOt4D,MAAM6sL,QAAQ7sK,GAEvBv6B,qBAAqBwY,EAAS,MAAOoD,GACnC,IAAKvb,KAAKgxN,wBAA0B74M,IAAW,MAAQA,SAAgB,GAAKA,EAAO64M,sBAAuB,CACxG74M,EAAO64M,qBAAuBhxN,KAAKsod,4BAErCnwc,EAAOrC,IAAM,mDACbqC,EAAOlR,OAASjH,KAAKwvK,UACrB,OAAOt1J,MAAMooc,qBAAqBnqc,KAAWoD,GAE/C5b,4BAA4BqzN,EAAYZ,EAAOliN,GAE7C8iN,EAAWxuL,EAAI,MACf,OAAOwuL,EAETrzN,kCAAkC6yE,EAAQ+xY,EAAYjmP,EAAa2hP,EAAkB,MACnF,IAAI/lb,EACJ,GAAIs4C,EAAOqrP,gBAAiB,CAC1B3jS,EAAOqqb,EAAWriD,WACb,GAAI1vV,EAAO+zY,kBAAmB,CACnCrsb,EAAOqqb,EAAWvrB,cAActnb,IAAI8gE,GAGtC,GAAIt4C,EAAM,CAGR,IAAK,IAAIt7B,EAAI,GAAGE,OACZA,GACEo7B,EAAMt7B,EAAIE,EAAQF,IAAK,CAC3B,GAAIs7B,EAAKt7B,GAAGq5b,OAAQ/9Z,EAAKt7B,GAAGqI,OAAS,GAGzC,OAAOizB,EAGTv6B,kBAAkByyN,GAChB,MAAMryN,EAAKC,MACT8gd,WACEA,EAAU/4J,SACVA,GACEhoT,EACN,IAAIoM,EAAS,GACb,GAAI20c,GAAc1uP,EAAM6lO,OAAQ,CAC9B,MAAMhwZ,EAAOloC,EAAGgjd,uBAAuBlkd,WACrCmkd,EAAYjjd,EAAGkjd,cAAc7wP,EAAM6lO,OAAQhwZ,EAAM,MACjDi7a,EAAYnjd,EAAGkjd,cAAc7wP,EAAMgmO,UAAWnwZ,EAAM,MACpDk7a,EAAgBpjd,EAAGo7B,EAAE,4BACvB,IAAIoyF,EAAa,IACf61V,EAAerjd,EAAGo7B,EAAE,yBACpBkob,EAAoB,GACtB,GAAIxjb,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASmB,OAAS,EAAG,CAC9Dm1K,EAAerjd,EAAGo7B,EAAE,6BACf,GAAI0E,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASw2K,SAAW,EAAG,CACvE/1V,EAAa,kBACR,GAAI1tF,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASy2K,OAAS,EAAG,CACrEh2V,EAAa,KAEf,IAAIi2V,EAAmB,IAAIpxP,EAAMmmO,oBAAoBzxb,WAAW1I,QAAO,EAAEg8S,EAAYlgR,KAAUA,EAAK+9Z,SAAQhgb,MAAK,EAAEyrc,EAAMxsc,IAAUysc,EAAMxsc,KAAYD,EAAO+gb,OAAS9gb,EAAO8gb,QAAU,EAAI,IAC1L,GAAIurB,EAAiB1kd,OAASiB,EAAG6jd,2BAA4B,CAC3DP,EAAoB,OAAStjd,EAAGo7B,EAAE,eAAe3wB,QAAQ,UAAWg5c,EAAiB1kd,OAASiB,EAAG6jd,4BACjGJ,EAAmBA,EAAiBvxc,MAAM,EAAGjS,KAAK4jd,4BAEpD,MAAMpnJ,EAAcgnJ,EAAiB35c,KAAI,EAAEuwS,EAAYj/K,KAC9CgoV,EAAc34c,QAAQ,UAAWJ,EAAaY,WAAWovS,EAAWjqR,MAAM1rB,OAAO+F,QAAQ,cAAezK,EAAGkjd,cAAc9nV,EAAK88T,OAAQhwZ,EAAM,OAAOz9B,QAAQ,cAAezK,EAAGkjd,cAAc9nV,EAAKi9T,UAAWnwZ,EAAM,OAAOz9B,QAAQ,QAAS2wH,EAAKk9T,gBAAkB,kBAAoBl9T,EAAKm9T,iBAAmB,mBAAqB,MACvUrub,KAAK,QAAUo5c,EAGlBl3c,EAASi3c,EAAa54c,QAAQ,gBAAiBgyT,GAAahyT,QAAQ,cAAeq1B,GAAW/C,OAAOs1L,EAAMoB,KAAKrmL,UAAWogF,IAAa/iH,QAAQ,YAAaq1B,GAAW/C,OAAOs1L,EAAMoB,KAAKpmL,QAASmgF,IAAa/iH,QAAQ,cAAew4c,GAAWx4c,QAAQ,cAAe04c,GAAW14c,QAAQ,QAAS4nN,EAAMimO,gBAAkB,kBAAoBjmO,EAAMkmO,iBAAmB,mBAAqB,IAC/Xnsb,EAAS,wCAAwCA,UAEnD,OAAOA,EAETxM,oBAAoByyN,GAClB,MAAMryN,EAAKC,MACT8gd,WACEA,EAAU/4J,SACVA,GACEhoT,EACN,IAAIoM,EAAS,GACb,GAAI20c,GAAc1uP,EAAM6lO,OAAQ,CAC9B,MAAMhwZ,EAAOloC,EAAGgjd,uBAAuBlkd,WACrCmkd,EAAYjjd,EAAGkjd,cAAc7wP,EAAM6lO,OAAQhwZ,EAAM,MACjDi7a,EAAYnjd,EAAGkjd,cAAc7wP,EAAMgmO,UAAWnwZ,EAAM,MACtD,IAAIslF,EAAa,IACf61V,EAAerjd,EAAGo7B,EAAE,oBACtB,GAAI0E,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASmB,OAAS,EAAG,CAC9Dm1K,EAAerjd,EAAGo7B,EAAE,wBACf,GAAI0E,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASw2K,SAAW,EAAG,CACvE/1V,EAAa,kBACR,GAAI1tF,GAAW+5C,aAAamuO,EAAS9/Q,KAAM6kQ,GAASy2K,OAAS,EAAG,CACrEh2V,EAAa,KAIfphH,EAASi3c,EAAa54c,QAAQ,cAAeq1B,GAAW/C,OAAOs1L,EAAMoB,KAAKrmL,UAAWogF,IAAa/iH,QAAQ,YAAaq1B,GAAW/C,OAAOs1L,EAAMoB,KAAKpmL,QAASmgF,IAAa/iH,QAAQ,cAAew4c,GAAWx4c,QAAQ,cAAe04c,GAAW14c,QAAQ,QAAS4nN,EAAMt8M,KAAO,IAC5Q,GAAIs8M,EAAMgoF,WAAY,CACpBjuS,EAASA,EAAO3B,QAAQ,UAAWJ,EAAaY,WAAWonN,EAAMgoF,WAAWjqR,MAAM1rB,OAEpF0H,EAAS,wCAAwCA,UAEnD,OAAOA,GAGXjN,EAAgBotc,GAAqB,QAAS,uBAC9Cptc,EAAgBotc,GAAqB,OAAQ,uBAC7Cptc,EAAgBotc,GAAqB,eAAgB,CA2DnDwV,sBAAuB,iDAOvBtyS,UAAW,GACXmzS,eAAgB,MAKhBN,cAAe,MAQfyB,YAAa,KAUbnkd,oBAAmBs4b,OACjBA,EAAM2tB,QACNA,EAAOzrK,SACPA,EAAQC,WACRA,IAEA,IAAIjuS,EAAS,GAEb,GAAI8rb,EAAQ,CACV,GAAI99I,EAAU,CACZhuS,EAASnM,KAAKkmd,qBAAqBrnd,gBAC9B,GAAIu7S,EAAY,CACrBjuS,EAASnM,KAAKuod,uBAAuB1pd,gBAChC,GAAI+md,EAAS,CAClBz5c,EAASnM,KAAKimd,kBAAkBpnd,YAGpC,OAAOsN,GAETukN,OAAQ,CACNunO,OAAQ,CACNprb,KAAM,MACN0J,MAAO,WAGXsiE,SAAU,KACVkrH,QAAS,CAAC,CACRl3L,KAAM,OACN0J,MAAO,OACPtL,KAAM,oBACN8tB,YAAauza,OAGjBA,GAAoB11X,YAEpB01X,GAAoBpkc,OAAS,sBAC7BijO,GAAmB2F,gBAAgB2pB,GAAM,KAAM,uBAmG/C,MAAMzvB,WAAqBiiO,GAEzBl/b,mBACE,MAAO,eAETlB,kBACE,MAAO,gBAKXm+N,GAAap0J,YACbo0J,GAAa9iO,OAAS,eAuBtB,MAAMsgd,WAAiB7zE,GACrB5mY,mBACE,MAAO,WAGTlB,kBACE,MAAO,WAETgV,2BACE,MAAO,CAML5a,OAAQ,OACR+/S,YAAa,OACb6sD,UAAW,EAcX0rB,SAAU,KACVx3E,SAAU,CACRg3B,WAAY,OAEdlmQ,SAAU,KACVuvT,iBAAkB,MAClBjS,0BAA2B,MAC3B1tE,WAAY,KACZkjF,WAAY,KACZn8N,UAAW,GACXmtK,kBAAmB,IAInB5qN,SAAU,CACRq0G,SAAU,MACV2J,SAAU,MACV04O,gBAAiB,MACjBr4L,YAAa,MACb/6C,aAAc,MACdtC,cAAe,MACf21O,aAAc,MACd9iF,YAAa,MACb+iF,iBAAkB,MAClBj3F,UAAW,MACXk3F,gBAAiB,MACjB/rH,UAAW,MACXqtD,YAAa,MACbl8D,UAAW,MACX6vD,YAAa,MACbgrE,aAAc,MACdzqc,MAAO,MACPy3N,WAAY,MACZu8J,aAAc,MACd02E,oBAAqB,MACrBC,aAAc,MACdC,gBAAiB,MACjB/wc,KAAM,MACNgxc,mBAAoB,MACpBxxI,WAAY,CACVmgD,oBAAqB,OAIzBj7D,UAAW,CAAC,CACVhyT,GAAI,IAENo5L,QAAS,IAGbn7K,uBACE,MAAO,CACLsgc,kBAAmB,KAGvBvpd,UAAUwY,GACR,MAAMpY,EAAKC,KACXD,EAAGopd,eAAiBhod,SAASC,cAAc,SAC3CrB,EAAGopd,eAAezqa,UAAY,uBAC9B3+C,EAAGqpd,aAAejod,SAASC,cAAc,SACzCrB,EAAGqpd,aAAa1qa,UAAY,qBAC5B,IAAI2qa,EAAyB,KAC7B,GAAI,YAAalxc,EAAQ,CACvB,IAAKA,EAAOozF,QAAS,CACnB,MAAM,IAAI76F,MAAM,0DAIb,GAAIyH,EAAOozF,mBAAmBovV,GAA0B,CAC3D56b,EAAGw4U,UAAYpgU,EAAOozF,QAAQ8pM,WAC9B,IAAKl9R,EAAOozF,QAAQ62M,yBAA0B,CAC5CinK,EAAyB,MAEzBlxc,EAAOozF,QAAQp8E,GAAG,CAChB1qB,KAAM,gBACN9E,SAAQwiT,gBACNA,IAEA,GAAIA,EAAiB,CACnBpiT,EAAGmpd,oBACHnpd,EAAGwpE,gBAAgB,mBAGvBjtD,QAASvc,WAGNoY,EAAOozF,SAGlBrxF,MAAMsB,UAAUrD,GAChB,GAAIpY,EAAGgyH,SAAS0lN,WAAY,CAE1B13U,EAAGgyH,SAAS0lN,WAAW7rQ,MAAQ,IAAIg7B,GAMrCyiX,GAA0Btpd,EAAGmpd,kBAAkBz6c,MAC/C1O,EAAGw4U,UAAUppT,GAAG,CACd45X,iBAAkBhpZ,EAAGmpd,kBACrBnpX,gBAAiBhgG,EAAGupd,kBACpBhtc,QAASvc,IAEXA,EAAGovB,GAAG,CACJiiG,OAAQrxH,EAAGwpd,cACXjtc,QAASvc,IAEXA,EAAG8wO,cAAcpvO,YAAY1B,EAAGopd,gBAChCppd,EAAG8wO,cAAcpvO,YAAY1B,EAAGqpd,cAElCzpd,eAAcuH,MACZA,EAAKmmI,SACLA,IAEA,MAAMttI,EAAKC,KACTwpd,EAAQtid,IAAUmmI,EAGpBm8U,GAASzpd,EAAGy8P,iBACZz8P,EAAG0pd,kBACH,GAAID,EAAO,CACTzpd,EAAG88P,gBACH98P,EAAG2pd,eAGP/pd,kBACE,IAAKs4C,GAAUkxI,WAAWnpL,KAAK6wO,eAAgB,CAC7C7wO,KAAKwvK,UAAYxvK,KAAK6wO,cAAcz5L,cAGxCz3C,cACE,GAAIK,KAAKq1S,WAAWrxR,MAAQ,EAAG,CAC7BhkB,KAAK2pd,UAAU,CACbtgF,WAAY,GACZC,YAAa,KAGjBtpY,KAAK4pd,uBAEPjqd,uBACE,MAAMI,EAAKC,KACXD,EAAGopd,eAAez3Z,UAAY3xD,EAAGgzV,iBAAiBhzV,EAAGotC,WACrDptC,EAAGqpd,aAAa13Z,UAAY3xD,EAAGgzV,iBAAiBhzV,EAAGqtC,SAErDztC,yBAAwByyD,OACtBA,EAAMogB,OACNA,EAAMP,QACNA,EAAOM,QACPA,EAAO+vB,WACPA,IAEA,MAAMviG,EAAKC,KACTq1S,EAAat1S,EAAGs1S,WAClB,IAAIw0K,EACJ,OAAQz3Z,GACN,IAAK,MACH6f,EAAQjzE,SAAQoxE,IACd,GAAIA,EAAK05Y,eAAgB,CACvBz0K,EAAWt2R,IAAIhf,EAAGgqd,UAAU35Y,IAC5By5Y,EAAW,SAGf,MACF,IAAK,SACH,IAAKvnX,EAAY,CACfrwB,EAAQjzE,SAAQoxE,IACd,GAAIA,EAAK05Y,eAAgB,CACvBz0K,EAAWvzS,OAAOsuE,EAAKzlE,IACvBk/c,EAAW,SAIjB,MACF,IAAK,YACH9pd,EAAGmpd,kBAAkBz6c,MACrB,MACF,IAAK,SACH,CACE,MAAM2hE,EAAOoC,EACb,GAAID,EAAQu3Y,eAAgB,CAE1B,GAAI15Y,EAAK05Y,eAAgB,CACvBz0K,EAAWt2R,IAAIhf,EAAGgqd,UAAU35Y,QACvB,CACL,MAAM45Y,EAAgB30K,EAAWxoO,QAAQuD,EAAKzlE,IAC9C,GAAIq/c,EAAe,CACjB30K,EAAWvzS,OAAOkod,IAGtBH,EAAW,UACN,GAAIz5Y,EAAK05Y,eAAgB,CAE9B,MAAMv6c,EAAQ8lS,EAAWxoO,QAAQuD,EAAKzlE,IACtC,GAAI4E,EAAO,CAETA,EAAM+B,IAAIvR,EAAGgqd,UAAU35Y,IACvBy5Y,EAAW,MAGf,OAGN,GAAIA,EAAU,CACZ9pd,EAAG2pd,eAGP/pd,UAAUywE,GACR,MAAO,CACLzlE,GAAIylE,EAAKzlE,GACT60S,WAAY,EACZ/6S,KAAM2rE,EAAK3rE,KACX0oC,UAAWijC,EAAKjjC,UAChBC,QAASgjC,EAAKhjC,QACdt3B,IAAKs6D,EAAKt6D,KAGdnW,SACEua,MAAMH,UAAUlb,WAChBmB,KAAKypd,kBAEP9pd,0BACE,MAAMI,EAAKC,KACTiqd,EAAgB,GAClBlqd,EAAGw4U,UAAUrnQ,UAASd,IACpB,GAAIA,EAAK05Y,gBAAkB15Y,EAAKkvP,YAAa,CAC3C2qJ,EAAczrd,KAAKuB,EAAGgqd,UAAU35Y,QAGpCrwE,EAAGkuB,OAASg8b,QACNlqd,EAAGwrG,QAAQ6wJ,cACjB,GAAIr8P,EAAGmc,YAAa,CAClB,OAEFnc,EAAG2pd,cAEL/pd,iBACEK,KAAK4pd,uBACL1vc,MAAMuqW,kBAIV+jG,GAAS5xY,YACT4xY,GAAStgd,OAAS","sourcesContent":["/*!\n *\n * Bryntum Scheduler Pro 5.2.1\n *\n * Copyright(c) 2022 Bryntum AB\n * https://bryntum.com/contact\n * https://bryntum.com/license\n *\n */\nconst productName = 'schedulerpro'\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\n/**\n * @module Core/helper/BrowserHelper\n */\n/**\n * Static helper class that does browser or platform detection and provides other helper functions.\n */\nclass BrowserHelper {\n //region Init\n static cacheFlags(platform = navigator.platform, userAgent = navigator.userAgent) {\n const me = this;\n // os\n me._isLinux = Boolean(platform.match(/Linux/));\n me._isMac = Boolean(platform.match(/Mac/));\n me._isWindows = Boolean(platform.match(/Win32/));\n // Edge user agent contains webkit too.\n // This is not a typo. Edge has \"Safari/537.36 Edg/96.0.1054.34\"\n me._isWebkit = Boolean(userAgent.match(/WebKit/) && !userAgent.match(/Edg/));\n me._firefoxVersion = me.getVersion(userAgent, /Firefox\\/(\\d+)\\./);\n me._isFirefox = me._firefoxVersion > 0;\n me._chromeVersion = me.getVersion(userAgent, /Chrom(?:e|ium)\\/(\\d+)\\./);\n me._isChrome = me._chromeVersion > 0;\n me._isSafari = Boolean(userAgent.match(/Safari/)) && !me._isChrome;\n me._isMobileSafari = Boolean(userAgent.match(/Mobile.*Safari/));\n me._safariVersion = me.getVersion(userAgent, /Version\\/(.*).Safari/);\n me._isAndroid = Boolean(userAgent.match(/Android/g));\n }\n //endregion\n //region Device\n /**\n * Yields `true` if the current browser supports CSS style `overflow:clip`.\n * @property {Boolean}\n * @readonly\n * @internal\n */\n static get supportsOverflowClip() {\n if (this._supportsOverflowClip == null) {\n const div = document.createElement('div');\n div.style.overflow = 'clip';\n div.style.display = 'none';\n // If we're called before DOMContentLoaded, body won't be available.\n // HTML element works for style calcs.\n document.documentElement.appendChild(div);\n this._supportsOverflowClip = div.ownerDocument.defaultView.getComputedStyle(div).getPropertyValue('overflow') === 'clip';\n div.remove();\n }\n return this._supportsOverflowClip;\n }\n /**\n * Yields `true` if the current browser supports CSS style `position:sticky`.\n * @property {Boolean}\n * @readonly\n * @internal\n */\n static get supportsSticky() {\n return true;\n }\n /**\n * Returns matched version for userAgent.\n * @param {String} versionRe version match regular expression\n * @returns {Number} matched version\n * @readonly\n * @internal\n */\n static getVersion(userAgent, versionRe) {\n const match = userAgent.match(versionRe);\n return match ? parseFloat(match[1]) : 0;\n }\n /**\n * Determines if the user is using a touch device.\n * @property {Boolean}\n * @readonly\n * @internal\n */\n static get isTouchDevice() {\n // Allow tests or client code to set\n if ('_isTouchDevice' in this) {\n return this._isTouchDevice;\n }\n return globalThis.matchMedia('(pointer:coarse)').matches;\n }\n static get supportsPointerEvents() {\n return Boolean(globalThis.PointerEvent || globalThis.MSPointerEvent);\n }\n // Reports true by default for our tests\n static get isHoverableDevice() {\n if (this._isHoverableDevice === undefined) {\n this._isHoverableDevice = globalThis.matchMedia('(any-hover: hover)').matches;\n }\n return this._isHoverableDevice;\n }\n //endregion\n //region Platform\n static get isBrowserEnv() {\n // This window reference is left on purpose, globalThis is always defined\n return typeof window !== 'undefined';\n }\n /**\n * Checks if platform is Mac.\n * @property {Boolean}\n * @readonly\n * @category Platform\n */\n static get isMac() {\n return this._isMac;\n }\n /**\n * Checks if platform is Windows.\n * @property {Boolean}\n * @readonly\n * @category Platform\n */\n static get isWindows() {\n return this._isWindows;\n }\n /**\n * Checks if platform is Linux.\n * @property {Boolean}\n * @readonly\n * @category Platform\n */\n static get isLinux() {\n return this._isLinux;\n }\n /**\n * Checks if platform is Android.\n * @property {Boolean}\n * @readonly\n * @category Platform\n */\n static get isAndroid() {\n return this._isAndroid;\n }\n //endregion\n //region Browser\n /**\n * Checks if browser is Webkit.\n * @property {Boolean}\n * @readonly\n * @category Browser\n */\n static get isWebkit() {\n return this._isWebkit;\n }\n /**\n * Checks if browser is Chrome or Chromium based browser.\n * Returns truthy value for Edge Chromium.\n * @property {Boolean}\n * @readonly\n * @category Browser\n */\n static get isChrome() {\n return this._isChrome;\n }\n /**\n * Returns the major Chrome version or 0 for other browsers.\n * @property {Number}\n * @readonly\n * @category Browser\n */\n static get chromeVersion() {\n return this._chromeVersion;\n }\n /**\n * Checks if browser is Firefox.\n * @property {Boolean}\n * @readonly\n * @category Browser\n */\n static get isFirefox() {\n return this._isFirefox;\n }\n /**\n * Returns the major Firefox version or 0 for other browsers.\n * @property {Number}\n * @readonly\n * @category Browser\n */\n static get firefoxVersion() {\n return this._firefoxVersion;\n }\n /**\n * Checks if browser is Safari.\n * @property {Boolean}\n * @readonly\n * @category Browser\n */\n static get isSafari() {\n return this._isSafari;\n }\n static get safariVersion() {\n return this._safariVersion;\n }\n /**\n * Checks if browser is mobile Safari\n * @property {Boolean}\n * @readonly\n * @category Browser\n */\n static get isMobileSafari() {\n return this._isMobileSafari;\n }\n static get platform() {\n const me = this;\n return me._isLinux ? 'linux' : me._isMac ? 'mac' : me._isWindows ? 'windows' : me._isAndroid ? 'android' : me._isMobileSafari ? 'ios' : null;\n }\n /**\n * Returns `true` if the browser supports passive event listeners.\n * @property {Boolean}\n * @internal\n * @deprecated Since 5.0. All modern browsers now support passive event listeners.\n * @category Browser\n */\n static get supportsPassive() {\n return true;\n }\n // Only works in secure contexts\n static get supportsRandomUUID() {\n if (this._supportsRandomUUID === undefined) {\n try {\n this._supportsRandomUUID = Boolean(globalThis.crypto.randomUUID().length > 0);\n } catch (e) {\n this._supportsRandomUUID = false;\n }\n }\n return this._supportsRandomUUID;\n }\n //endregion\n //region Storage\n // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\n static get storageAvailable() {\n let storage, x;\n try {\n storage = localStorage;\n x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n } catch (e) {\n return e instanceof DOMException && (\n // everything except Firefox\n e.code === 22 ||\n // Firefox\n e.code === 1014 ||\n // test name field too, because code might not be present\n // everything except Firefox\n e.name === 'QuotaExceededError' ||\n // Firefox\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&\n // acknowledge QuotaExceededError only if there's something already stored\n storage.length !== 0;\n }\n }\n static setLocalStorageItem(key, value) {\n this.storageAvailable && localStorage.setItem(key, value);\n }\n static getLocalStorageItem(key) {\n return this.storageAvailable && localStorage.getItem(key);\n }\n static removeLocalStorageItem(key) {\n this.storageAvailable && localStorage.removeItem(key);\n }\n //endregion\n //region Helpers\n /**\n * Returns parameter value from search string by parameter name.\n * @param {String} paramName search parameter name\n * @param {String} [defaultValue] default value if parameter not found\n * @param {String} [search] search string. Defaults to `document.location.search`\n * @returns {String} search parameter string value\n * @category Helper\n */\n static searchParam(paramName, defaultValue = null, search = document.location.search) {\n const re = new RegExp(`[?&]${paramName}=?([^&]*)`),\n match = search.match(re);\n return match && match[1] || defaultValue;\n }\n /**\n * Returns cookie by name.\n * @param {String} name cookie name\n * @returns {String} cookie string value\n * @category Helper\n */\n static getCookie(name) {\n const nameEq = encodeURIComponent(name) + '=',\n cookieItems = document.cookie.split(';');\n for (let i = 0; i < cookieItems.length; i++) {\n let c = cookieItems[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEq) === 0) {\n return decodeURIComponent(c.substring(nameEq.length, c.length));\n }\n }\n return '';\n }\n /**\n * Triggers a download of a file with the specified name / URL.\n * @param {String} filename The filename of the file to be downloaded\n * @param {String} [url] The URL where the file is to be downloaded from\n * @internal\n * @category Download\n */\n static download(filename, url) {\n const a = document.createElement('a');\n a.download = filename;\n a.href = url || filename;\n a.style.cssText = 'display:none';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n /**\n * Triggers a download of a Blob with the specified name.\n * @param {Blob} blob The Blob to be downloaded\n * @param {String} filename The filename of the file to be downloaded\n * @internal\n * @category Download\n */\n static downloadBlob(blob, filename) {\n const url = globalThis.URL.createObjectURL(blob);\n this.download(filename, url);\n globalThis.URL.revokeObjectURL(url);\n }\n static get queryString() {\n var _Object$fromEntries;\n // new URLSearchParams throws in salesforce\n // https://github.com/salesforce/lwc/issues/1812\n const params = new URL(globalThis.location.href).searchParams;\n // ?. to be nice to users with Chrome versions < 73\n return (_Object$fromEntries = Object.fromEntries) === null || _Object$fromEntries === void 0 ? void 0 : _Object$fromEntries.call(Object, params.entries());\n }\n static copyToClipboard(code) {\n let success = true;\n const textArea = document.createElement('textarea');\n textArea.value = code;\n textArea.style.height = textArea.style.width = 0;\n document.body.appendChild(textArea);\n textArea.select();\n try {\n document.execCommand('copy');\n } catch (e) {\n success = false;\n }\n textArea.remove();\n return success;\n }\n static isBryntumOnline(searchStrings) {\n var _searchStrings;\n searchStrings = Array.isArray(searchStrings) ? searchStrings : [searchStrings];\n return Boolean(/^(www\\.)?bryntum\\.com/.test(globalThis.location.host) || ((_searchStrings = searchStrings) === null || _searchStrings === void 0 ? void 0 : _searchStrings.some(str => this.queryString[str] != null)));\n }\n /**\n * Returns truthy value if page contains Content Security Policy meta tag or globalThis.bryntum.CSP is truthy value\n * @returns {Boolean}\n * @internal\n **/\n static get isCSP() {\n const {\n bryntum,\n document\n } = globalThis;\n if (bryntum.CSP == null) {\n bryntum.CSP = Boolean(document.querySelector('meta[http-equiv=\"Content-Security-Policy\"]'));\n }\n return bryntum.CSP;\n }\n //endregion\n}\n\nif (BrowserHelper.isBrowserEnv) {\n BrowserHelper.cacheFlags();\n}\nBrowserHelper._$name = 'BrowserHelper';\n\n/**\n * @module Core/helper/StringHelper\n */\nlet charsToEncode, entitiesToDecode, htmlEncodeRe, htmlDecodeRe;\nconst camelLettersRe = /([a-z])([A-Z])/g,\n crlfRe = /[\\n\\r]/g,\n escapeRegExpRe = /[.*+?^${}()|[\\]\\\\]/g,\n // same as NPM escape-string-regexp\n htmlRe$1 = /[&<]/,\n idRe = /(^[^a-z]+[^\\w]+)/gi,\n whiteSpaceRe$1 = /\\s+/,\n domIdRe = /^[^a-z]+|[^\\w:.-]+/gi,\n htmlDecoder = (m, captured) => entitiesToDecode[captured.toLowerCase()] || String.fromCharCode(parseInt(captured.substr(2), 10)),\n htmlEncoder = (m, captured) => charsToEncode[captured],\n hyphenateCamelLetters = (all, g1, g2) => {\n return `${g1}-${g2.toLowerCase()}`;\n },\n separateCamelLetters = (all, g1, g2) => {\n return `${g1} ${g2.toLowerCase()}`;\n },\n replaceNonIdChar = c => {\n if (c) {\n return `_x${[...c].map(ch => ch.charCodeAt(0).toString(16)).join('')}`;\n }\n return '__blank__';\n },\n hyphenateCache = {},\n separatedCache = {};\n/**\n * Helper for string manipulation.\n */\nclass StringHelper {\n //region Transform\n /**\n * Capitalizes the first letter of a string, \"myString\" -> \"MyString\".\n * @param {String} string The string to capitalize\n * @returns {String} The capitalized string or the value of `string` if falsy.\n * @category String formatting\n */\n static capitalize(string) {\n return string && string[0].toUpperCase() + string.substr(1);\n }\n /**\n * Makes the first letter of a string lowercase, \"MyString\" -> \"myString\".\n * @param {String} string The string to un-capitalize.\n * @returns {String} The un-capitalized string or the value of `string` if falsy.\n * @category String formatting\n */\n static uncapitalize(string) {\n return string && string[0].toLowerCase() + string.substr(1);\n }\n /**\n * Converts the passed camelCased string to a hyphen-separated string. eg \"minWidth\" -> \"min-width\"\n * @param {String} string The string to convert.\n * @returns {String} The string with adjoining lower and upper case letters\n * separated by hyphens and converted to lower case.\n * @category String formatting\n * @internal\n */\n static hyphenate(string) {\n // Cached since it is used heavily with DomHelper.sync()\n const cached = hyphenateCache[string];\n if (cached) {\n return cached;\n }\n return hyphenateCache[string] = string.replace(camelLettersRe, hyphenateCamelLetters);\n }\n /**\n * Converts the passed camelCased string to a capitalized, space-separated string. eg \"startDate\" -> \"Start date\".\n * @param {String} string The string to convert.\n * @returns {String} The string with spaces separating words.\n * @category String formatting\n * @internal\n */\n static separate(string) {\n // Cached since it may be used heavily\n const cached = separatedCache[string];\n if (cached) {\n return cached;\n }\n return separatedCache[string] = this.capitalize(string.replace(camelLettersRe, separateCamelLetters));\n }\n /**\n * Creates an alphanumeric identifier from any passed string. Encodes spaces and non-alpha characters.\n * @param {String} inString The string from which to strip non-identifier characters.\n * @returns {String}\n * @category Misc\n * @internal\n */\n static createId(inString) {\n return String(inString).replace(idRe, replaceNonIdChar);\n }\n static makeValidDomId(id, replaceValue = '') {\n if (id == null) {\n return null;\n }\n return String(id).replace(domIdRe, replaceValue);\n }\n //endregion\n //region Html\n static escapeRegExp(string, flags) {\n // $& means the whole matched string\n let ret = string.replace(escapeRegExpRe, '\\\\$&');\n if (flags !== undefined) {\n ret = new RegExp(ret, flags);\n }\n return ret;\n }\n /**\n * This method decodes HTML entities and returns the original HTML.\n *\n * See also {@link #function-encodeHtml-static}.\n * @param {String} str\n * @returns {String}\n * @category HTML\n */\n static decodeHtml(str) {\n return str && String(str).replace(htmlDecodeRe, htmlDecoder);\n }\n /**\n * This method encodes HTML entities and returns a string that can be placed in the document and produce the\n * original text rather than be interpreted as HTML. Using this method with user-entered values prevents those\n * values from executing as HTML (i.e., a cross-site scripting or \"XSS\" security issue).\n *\n * See also {@link #function-decodeHtml-static}.\n * @param {String} str\n * @returns {String}\n * @category HTML\n */\n static encodeHtml(str = '') {\n return str && String(str).replace(htmlEncodeRe, htmlEncoder);\n }\n /**\n * This method is similar to {@link #function-encodeHtml-static} except that `\\n` and `\\r` characters in the\n * given `str` are replaced by `
` tags _after_ first being encoded by {@link #function-encodeHtml-static}.\n * @param {String} str\n * @returns {String}\n * @category HTML\n * @internal\n */\n static encodeHtmlBR(str) {\n var _StringHelper$encodeH;\n return (_StringHelper$encodeH = StringHelper.encodeHtml(str)) === null || _StringHelper$encodeH === void 0 ? void 0 : _StringHelper$encodeH.replace(crlfRe, '
');\n }\n /**\n * Returns `true` if the provided `text` contains special HTML characters.\n * @param {String} text\n * @returns {Boolean}\n * @category HTML\n * @internal\n */\n static isHtml(text) {\n return typeof text === 'string' && htmlRe$1.test(text || '');\n }\n /**\n * Initializes HTML entities used by {@link #function-encodeHtml-static} and {@link #function-decodeHtml-static}.\n * @param {Object} [mappings] An object whose keys are characters that should be encoded and values are the HTML\n * entity for the character.\n * @private\n */\n static initHtmlEntities(mappings) {\n mappings = mappings || {\n '&': '&',\n '>': '>',\n '<': '<',\n '\"': '"',\n \"'\": '''\n };\n const chars = Object.keys(mappings);\n // Maps '<' to '<'\n charsToEncode = mappings;\n // Inverts the mapping so we can convert '<' to '<'\n entitiesToDecode = chars.reduce((prev, val) => {\n prev[mappings[val]] = val;\n return prev;\n }, {});\n // Creates a regex char set like /([<&>])/g to match the characters that need to be encoded (escaping any of\n // the regex charset special chars '[', ']' and '-'):\n htmlEncodeRe = new RegExp(`([${chars.map(c => '[-]'.includes(c) ? '\\\\' + c : c).join('')}])`, 'g');\n // Creates a regex like /(<|&|>)/ig to match encoded entities... good news is that (valid) HTML\n // entities do not contain any regex special characters:\n htmlDecodeRe = new RegExp(`(${Object.values(mappings).join('|')}|&#[0-9]+;)`, 'ig');\n }\n //endregion\n //region JSON\n /**\n * Parses JSON inside a try-catch block. Returns null if the string could not be parsed.\n *\n * @param {String} string String to parse\n * @returns {Object} Resulting object or `null` if parse failed\n * @category JSON\n */\n static safeJsonParse(string) {\n let parsed = null;\n try {\n parsed = JSON.parse(string);\n } catch (e) {}\n return parsed;\n }\n /**\n * Stringifies an object inside a try-catch block. Returns null if an exception is encountered.\n *\n * See [JSON.stringify on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * for more information on the arguments.\n *\n * @param {Object} object The object to stringify\n * @param {Function|String[]|Number[]} [replacer] A function or array of string/number used to determine properties\n * to include in the JSON string\n * @param {String|Number} [space] Number of spaces to indent or string used as whitespace\n * @returns {String} Resulting object or null if stringify failed\n * @category JSON\n */\n static safeJsonStringify(object, replacer = null, space = null) {\n let result = null;\n try {\n result = JSON.stringify(object, replacer, space);\n } catch (e) {}\n return result;\n }\n //endregion\n //region Split & join\n /**\n * Joins all given paths together using the separator as a delimiter and normalizes the resulting path.\n * @param paths {Array} array of paths to join\n * @param pathSeparator [{String}] path separator. Default value is '/'\n * @returns {String}\n * @category Misc\n * @internal\n */\n static joinPaths(paths, pathSeparator = '/') {\n return paths.join(pathSeparator).replace(new RegExp('\\\\' + pathSeparator + '+', 'g'), pathSeparator);\n }\n /**\n * Returns the provided string split on whitespace. If the string is empty or consists of only whitespace, the\n * returned array will be empty. If `str` is not a string, it is simply returned. This allows `null` or already\n * split strings (arrays) to be passed through.\n *\n * For example:\n * ```\n * console.log(StringHelper.split(' abc def xyz '));\n * > ['abc', 'def', 'xyz']\n * console.log(StringHelper.split(''));\n * > []\n * ```\n * Compare to the standard `split()` method:\n * ```\n * console.log(' abc def xyz '.split(/\\s+/));\n * > ['', 'abc', 'def', 'xyz', '']\n * console.log(''.split(/\\s+/));\n * > ['']\n * ```\n * @param {String} str\n * @param {String|RegExp} delimiter\n * @returns {String[]}\n * @category Misc\n * @internal\n */\n static split(str, delimiter = whiteSpaceRe$1) {\n let ret = str;\n if (typeof ret === 'string') {\n ret = str.trim(); // w/o trim() whitespace on the ends will give us '' in the array\n ret = ret ? ret.split(delimiter) : []; // also ''.split() = ['']\n }\n\n return ret;\n }\n //endregion\n //region XSS\n /**\n * This is a tagged template function that performs HTML encoding on replacement values to avoid XSS (Cross-Site\n * Scripting) attacks.\n *\n * For example:\n *\n * ```javascript\n * eventRenderer(eventRecord) {\n * return StringHelper.xss`${eventRecord.name}`;\n * }\n * ```\n *\n * See {@link Core.helper.StringHelper#function-encodeHtml-static}.\n */\n static xss(strings, ...values) {\n const buf = [];\n let i = values.length;\n buf[i] = strings[i];\n while (i-- > 0) {\n buf[i] = strings[i] + StringHelper.encodeHtml(values[i]);\n }\n return buf.join('');\n }\n /**\n * This is a tagged template function that performs HTML encoding on replacement values to avoid XSS (Cross-Site\n * Scripting) attacks. Unlike {@link Core.helper.StringHelper#function-xss-static}, this method converts `\\n` and\n * `\\r` characters into `
` tags.\n *\n * For example:\n *\n * ```javascript\n * eventRenderer(eventRecord) {\n * return StringHelper.xssBR`${eventRecord.name}`;\n * }\n * ```\n *\n * See {@link Core.helper.StringHelper#function-encodeHtmlBR-static}.\n * @internal\n */\n static xssBR(strings, ...values) {\n const buf = [];\n let i = values.length;\n buf[i] = strings[i];\n while (i-- > 0) {\n buf[i] = strings[i] + StringHelper.encodeHtmlBR(values[i]);\n }\n return buf.join('');\n }\n //endregion\n //region JavaScript string\n /**\n * Converts a value to a JavaScript string (not JSON).\n *\n * For example a date to `\"new Date(y, m, d)\"`, an array to `\"[...]\"` etc.\n *\n * @param {*} value\n * @param {Object} [options]\n * @returns {String}\n * @internal\n */\n static toJavaScriptValue(value, options) {\n const type = Objects.typeOf(value);\n if (type === 'boolean' || type === 'string' || type === 'number' || value === null) {\n return StringHelper.safeJsonStringify(value);\n }\n if (value === globalThis) {\n return 'window';\n }\n if (type === 'date') {\n return `new Date(${value.getFullYear()}, ${value.getMonth()}, ${value.getDate()}, ${value.getHours()}, ${value.getMinutes()}, ${value.getSeconds()}, ${value.getMilliseconds()})`;\n }\n if (type === 'array') {\n return `[${value.map(v => StringHelper.toJavaScriptValue(v, options))}]`;\n }\n if (type === 'object' || type === 'instance') {\n return this.toJavaScriptString(value, options);\n }\n if (type === 'function') {\n let contents = value.toString();\n // async myFunction() {} => async function() {}\n if (contents.match(/^async (\\w+?)\\(/)) {\n contents = contents.replace(/^async (\\w+?)\\(/, 'async function(');\n }\n // Not an arrow fn? Replace name with function since we always add prop name prior to getting here\n // eventRenderer() {} -> function() {}\n else if (!contents.startsWith('async(') && contents.match(/^(\\w+?)\\(/)) {\n contents = contents.replace(/^(\\w+?)\\(/, 'function(');\n }\n return contents;\n }\n if (type === 'class') {\n if (value.toJavaScriptValue) {\n return value.toJavaScriptValue(options);\n }\n return Object.prototype.hasOwnProperty.call(value, '$name') ? value.$name : value.name;\n }\n }\n /**\n * Converts an object into a JavaScript string (not JSON).\n *\n * For example `{ a: 1, b: [2, 3] }` -> `\"'{ a: 1, b: [2, 3] }'\"`\n *\n * @param {Object} obj\n * @param {Object} [options]\n * @returns {String}\n * @internal\n */\n static toJavaScriptString(obj, options = {}) {\n var _options$level;\n const level = (_options$level = options.level) !== null && _options$level !== void 0 ? _options$level : 0,\n intendSize = 2;\n // Not using template strings to have control over indentation\n return '{\\n' + Object.keys(obj).map(key =>\n // All properties in an object are indented one step further than the object itself\n ' '.repeat((level + 1) * intendSize) + (key.match(/[- *]/) ? `\"${key}\"` : key) + `: ${StringHelper.toJavaScriptValue(obj[key], _objectSpread2(_objectSpread2({}, options), {}, {\n level: level + 1\n }))}`).join(',\\n') +\n // Closing brace is indented to same level as the object\n '\\n' + ' '.repeat(level * intendSize) + '}';\n }\n /**\n * Escapes \" and \\ in CSS attribute selectors, e.g. [data-id=\"somevalue\"]\n *\n * Usage:\n * ```javascript\n * document.querySelector(StringHelper.cssAttributeQuery('data-id', 'id with & \\\\ chars'))\n * ```\n *\n * @param {String} attr\n * @param {String|Number} value\n * @returns {String}\n */\n static encodeAttributeSelector(attr, value) {\n return `[${attr}=\"${String(value).replace(/[\"\\\\]/g, '\\\\$&')}\"]`;\n }\n //endregion\n //region UUID\n\n /**\n * Generates a UUID. Uses `Crypto.randomUUID()` if available, otherwise generates a random UUID using\n * `Crypto.getRandomValues()`.\n *\n * @returns {String}\n */\n static generateUUID() {\n var _globalThis$crypto;\n if (BrowserHelper.supportsRandomUUID) {\n return globalThis.crypto.randomUUID();\n }\n // Node does not have crypto built in\n if ((_globalThis$crypto = globalThis.crypto) !== null && _globalThis$crypto !== void 0 && _globalThis$crypto.getRandomValues) {\n // https://stackoverflow.com/questions/105034/how-do-i-create-a-guid-uuid\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ globalThis.crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));\n }\n // Node specific code, should never get here outside of node. Not actually a UUID, but should still be unique\n // enough for our purposes, as long as value is not serialized\n return `${Date.now()}-${++StringHelper.fakeNodeUUIDIndex}`;\n }\n //endregion\n}\n_defineProperty(StringHelper, \"fakeNodeUUIDIndex\", 0);\nStringHelper.initHtmlEntities();\nStringHelper._$name = 'StringHelper';\n\n// IMPORTANT - adding imports here can create problems for Base class\n/**\n * @module Core/helper/util/Objects\n */\nconst {\n hasOwnProperty: hasOwnProperty$6,\n toString: toString$3\n } = Object.prototype,\n {\n isFrozen\n } = Object,\n afterRe = /\\s*<\\s*/,\n beforeRe = /\\s*>\\s*/,\n blendOptions = {},\n typeCache = {},\n emptyObject$c = Object.freeze({});\n// Static methods are not displayed in derived class documentation. Therefore, since this is an internal class, the\n// workaround is to copy method documentation to ObjectHelper (the public interface). Also tried making ObjectHelper\n// a singleton.\n/**\n * Helper for low-level Object manipulation.\n *\n * While documented on {@link Core.helper.ObjectHelper}, the following static methods are implemented by this class:\n *\n * - `{@link Core.helper.ObjectHelper#function-assign-static}`\n * - `{@link Core.helper.ObjectHelper#function-assignIf-static}`\n * - `{@link Core.helper.ObjectHelper#function-clone-static}`\n * - `{@link Core.helper.ObjectHelper#function-createTruthyKeys-static}`\n * - `{@link Core.helper.ObjectHelper#function-getPath-static}`\n * - `{@link Core.helper.ObjectHelper#function-getTruthyKeys-static}`\n * - `{@link Core.helper.ObjectHelper#function-getTruthyValues-static}`\n * - `{@link Core.helper.ObjectHelper#function-isEmpty-static}`\n * - `{@link Core.helper.ObjectHelper#function-isObject-static}`\n * - `{@link Core.helper.ObjectHelper#function-merge-static}`\n * - `{@link Core.helper.ObjectHelper#function-setPath-static}`\n * - `{@link Core.helper.ObjectHelper#function-typeOf-static}`\n * @internal\n */\nclass Objects {\n static assign(dest, ...sources) {\n for (let source, key, i = 0; i < sources.length; i++) {\n source = sources[i];\n if (source) {\n for (key in source) {\n dest[key] = source[key];\n }\n }\n }\n return dest;\n }\n static assignIf(dest, ...sources) {\n for (let source, key, i = 0; i < sources.length; i++) {\n source = sources[i];\n if (source) {\n for (key in source) {\n if (!(key in dest) || dest[key] === undefined) {\n dest[key] = source[key];\n }\n }\n }\n }\n return dest;\n }\n static blend(dest, source, options) {\n options = options || blendOptions;\n dest = dest || {};\n const {\n clone = Objects.clone,\n merge = Objects.blend\n } = options;\n if (Array.isArray(source)) {\n if (source.length > 1) {\n source.forEach(s => {\n dest = Objects.blend(dest, s, options);\n });\n return dest;\n }\n source = source[0];\n }\n if (source) {\n let destValue, key, value;\n for (key in source) {\n value = source[key];\n if (value && Objects.isObject(value)) {\n destValue = dest[key];\n options.key = key;\n if (destValue && Objects.isObject(destValue)) {\n if (isFrozen(destValue)) {\n dest[key] = destValue = clone(destValue, options);\n }\n value = merge(destValue, value, options);\n } else {\n // We don't need to clone frozen objects, but we do clone mutable objects as they get\n // applied to the dest.\n value = isFrozen(value) ? value : clone(value, options);\n }\n }\n dest[key] = value;\n }\n }\n return dest;\n }\n static clone(value, handler) {\n let cloned = value,\n key;\n if (value && typeof value === 'object') {\n const options = handler && typeof handler === 'object' && handler;\n if (options) {\n // When using blend(), the 2nd argument is the options object, so ignore that case\n handler = null;\n }\n if (Objects.isObject(value)) {\n cloned = {};\n for (key in value) {\n cloned[key] = Objects.clone(value[key]);\n }\n } else if (Array.isArray(value)) {\n cloned = [];\n // Loop backwards to:\n // 1. read source.length once\n // 2. get result array sized on first pass (avoid growing)\n for (key = value.length; key-- > 0;) {\n cloned[key] = Objects.clone(value[key]);\n }\n } else if (Objects.isDate(value)) {\n cloned = new Date(value.getTime());\n } else if (handler) {\n // Allow other types to be handled (e.g., DOM nodes).\n cloned = handler(value);\n }\n }\n return cloned;\n }\n static createTruthyKeys(source) {\n const keys = StringHelper.split(source),\n result = keys && {};\n if (keys) {\n for (const key of keys) {\n // StringHelper.split won't return empty keys if passed a string, but we\n // could have been passed a String[]\n if (key) {\n result[key] = true;\n }\n }\n }\n return result;\n }\n /**\n * Returns value for a given path in the object\n * @param {Object} object Object to check path on\n * @param {String} path Dot-separated path, e.g. 'object.childObject.someKey'\n * @returns {*} Value associated with passed key\n */\n static getPath(object, path) {\n return path.split('.').reduce((result, key) => {\n return (result || emptyObject$c)[key];\n }, object);\n }\n /**\n * Returns value for a given path in the object, placing a passed default value in at the\n * leaf property and filling in undefined properties all the way down.\n * @param {Object} object Object to get path value for.\n * @param {String|Number|String[]|Number[]} path Dot-separated path, e.g. 'firstChild.childObject.someKey',\n * or the key path as an array, e.g. ['firstChild', 'childObject', 'someKey'].\n * @param {*} [defaultValue] Optionally the value to put in as the `someKey` property.\n * @returns {*} Value at the leaf position of the path.\n */\n static getPathDefault(object, path, defaultValue) {\n const keys = Array.isArray(path) ? path : typeof path === 'string' ? path.split('.') : [path],\n length = keys.length - 1;\n return keys.reduce((result, key, index) => {\n if (defaultValue && !(key in result)) {\n // Can't use emptyObject here, we are creating a node in the object tree\n result[key] = index === length ? defaultValue : {};\n }\n return (result || emptyObject$c)[key];\n }, object);\n }\n /**\n * Determines if the specified path exists\n * @param {Object} object Object to check path on\n * @param {String} path Dot-separated path, e.g. 'object.childObject.someKey'\n * @returns {Boolean}\n */\n static hasPath(object, path) {\n return path.split('.').every(key => {\n if (key in object) {\n object = object[key];\n return true;\n }\n return false;\n });\n }\n static getTruthyKeys(source) {\n const keys = [];\n for (const key in source) {\n if (source[key]) {\n keys.push(key);\n }\n }\n return keys;\n }\n static getTruthyValues(source) {\n const values = [];\n for (const key in source) {\n if (source[key]) {\n values.push(source[key]);\n }\n }\n return values;\n }\n static isClass(object) {\n var _object$prototype;\n if (typeof object === 'function' && ((_object$prototype = object.prototype) === null || _object$prototype === void 0 ? void 0 : _object$prototype.constructor) === object) {\n // TODO find a way to differentiate function(){} from class{}\n return true;\n }\n return false;\n }\n static isDate(object) {\n // A couple quick rejections but only sure way is typeOf:\n return Boolean(object === null || object === void 0 ? void 0 : object.getUTCDate) && Objects.typeOf(object) === 'date';\n }\n /**\n * Check if passed object is a Promise or contains `then` method.\n * Used to fix problems with detecting promises in code with `instance of Promise` when\n * Promise class is replaced with any other implementation like `ZoneAwarePromise` in Angular.\n * Related to these issues:\n * https://github.com/bryntum/support/issues/791\n * https://github.com/bryntum/support/issues/2990\n *\n * @param {Object} object object to check\n * @returns {Boolean} truthy value if object is a Promise\n * @internal\n */\n static isPromise(object) {\n if (Promise && Promise.resolve) {\n return Promise.resolve(object) === object || typeof (object === null || object === void 0 ? void 0 : object.then) === 'function';\n }\n throw new Error('Promise not supported in your environment');\n }\n static isEmpty(object) {\n if (object && typeof object === 'object') {\n // noinspection LoopStatementThatDoesntLoopJS\n for (const p in object) {\n // eslint-disable-line no-unused-vars,no-unreachable-loop\n return false;\n }\n }\n return true;\n }\n static isObject(value) {\n const C = value === null || value === void 0 ? void 0 : value.constructor;\n return Boolean(C\n // Most things have a .constructor property\n ?\n // An in-frame instance of Object\n C === Object ||\n // Detect cross-frame objects, but exclude instance of custom classes named Object. typeOf(value) is\n // \"object\" even for instances of a class and typeOf(C) is \"function\" for all constructors. We'll have\n // to settle for relying on the fact that getPrototypeOf(Object.prototype) === null.\n // NOTE: this issue does come up in Scheduler unit tests at least.\n C.getPrototypeOf && C.prototype && !Object.getPrototypeOf(C.prototype)\n\n // Since all classes have a constructor property, an object w/o one is likely from Object.create(null). Of\n // course, primitive types do not have \".constructor\"\n : value && typeof value === 'object');\n }\n static isInstantiated(object) {\n return object ? typeof object === 'object' && !Objects.isObject(object) : false;\n }\n static merge(dest, ...sources) {\n return Objects.blend(dest, sources);\n }\n /**\n * Merges two \"items\" objects. An items object is a simple object whose keys act as identifiers and whose values\n * are \"item\" objects. An item can be any object type. This method is used to merge such objects while maintaining\n * their property order. Special key syntax is used to allow a source object to insert a key before or after a key\n * in the `dest` object.\n *\n * For example:\n * ```javascript\n * let dest = {\n * foo : {},\n * bar : {},\n * fiz : {}\n * }\n *\n * console.log(Object.keys(dest));\n * > [\"foo\", \"bar\", \"fiz\"]\n *\n * dest = mergeItems(dest, {\n * 'zip > bar' : {} // insert \"zip\" before \"bar\"\n * 'bar < zap' : {} // insert \"zap\" after \"bar\"\n * });\n *\n * console.log(Object.keys(dest));\n * > [\"foo\", \"zip\", \"bar\", \"zap\", \"fiz\"]\n * ```\n *\n * @param {Object} dest The destination object.\n * @param {Object|Object[]} src The source object or array of source objects to merge into `dest`.\n * @param {Object} [options] The function to use to merge items.\n * @param {Function} [options.merge] The function to use to merge items.\n * @returns {Object} The merged object. This will be the `dest` object.\n * @internal\n */\n static mergeItems(dest, src, options) {\n options = options || blendOptions;\n let anchor, delta, index, indexMap, key, shuffle, srcVal;\n const {\n merge = Objects.blend\n } = options;\n dest = dest || {};\n if (Array.isArray(src)) {\n src.forEach(s => {\n dest = Objects.mergeItems(dest, s, options);\n });\n } else if (src) {\n // https://2ality.com/2015/10/property-traversal-order-es6.html\n // Bottom line: Object keys are iterated in declared/insertion order... unless the key is an integer or\n // Symbol, but we don't care about those generally.\n for (key in src) {\n srcVal = src[key];\n anchor = null;\n // Allow a key to be added before or after another:\n //\n // {\n // 'foo > bar' : {\n // ...\n // },\n // 'bar < derp' : {\n // ...\n // }\n // }\n //\n // The goal above is to add a 'foo' key before the existing 'bar' key while adding a 'derp' key after\n // 'bar'.\n if (key.includes('>')) {\n [key, anchor] = key.split(beforeRe);\n delta = 0;\n } else if (key.includes('<')) {\n [anchor, key] = key.split(afterRe);\n delta = 1;\n }\n if (key in dest) {\n // Changing the value of a key does not change its iteration order. Since \"key in dest\" we can do\n // what we need directly.\n if (srcVal && dest[key] && merge) {\n options.key = key;\n srcVal = merge(dest[key], srcVal, options);\n }\n dest[key] = srcVal;\n } else if (!anchor) {\n var _indexMap;\n dest[key] = srcVal;\n (_indexMap = indexMap) === null || _indexMap === void 0 ? void 0 : _indexMap.set(key, indexMap.size);\n } else {\n // Lazily sprout the item index map. When we first merge an item into an items object, we create this\n // Map to control the ordering. This is because any keys we add would necessarily be iterated after\n // the original properties.\n if (!indexMap) {\n indexMap = new Map();\n index = 0;\n for (const k in dest) {\n indexMap.set(k, index++);\n }\n }\n index = indexMap.get(anchor);\n dest[key] = srcVal;\n if (index == null && delta) {\n index = indexMap.size;\n } else {\n shuffle = shuffle || [];\n index = (index || 0) + delta;\n // Adjust all key indices >= index up by 1 to maintain integer indices (required by the above\n // use case).\n for (const item of indexMap) {\n const [k, v] = item;\n if (index <= v) {\n /*\n Consider object w/the following order:\n {\n foo : {}',\n bar : {},\n baz : {},\n zip : {},\n goo : {},\n fiz : {}\n }\n The indexMap is:\n foo : 0\n bar : 1\n baz : 2\n zip : 3\n goo : 4\n fiz : 5\n To insert before goo, we populate shuffle thusly (to set up for popping):\n +-----+-----+\n | fiz | goo |\n +-----+-----+\n 0 1\n =6-5-1 =6-4-1\n */\n shuffle && (shuffle[indexMap.size - v - 1] = k);\n indexMap.set(k, v + 1);\n }\n }\n // Delete and re-add the keys that should follow the new key to establish the iteration order\n // we need:\n if (shuffle) {\n while (shuffle.length) {\n const k = shuffle.pop(),\n v = dest[k];\n delete dest[k];\n dest[k] = v;\n }\n }\n }\n indexMap.set(key, index);\n }\n }\n }\n return dest;\n }\n /**\n * Sets value for a given path in the object\n * @param {Object} object Target object\n * @param {String} path Dot-separated path, e.g. 'object.childObject.someKey'\n * @param {*} value Value for a given path\n * @returns {Object} Returns passed object\n */\n static setPath(object, path, value) {\n path.split('.').reduce((result, key, index, array) => {\n const isLast = index === array.length - 1;\n if (isLast) {\n return result[key] = value;\n } else if (!(result[key] instanceof Object)) {\n result[key] = {};\n }\n return result[key];\n }, object);\n return object;\n }\n static typeOf(value) {\n let trueType, type;\n if (value === null) {\n type = 'null';\n }\n // NaN is the only value that is !== to itself\n else if (value !== value) {\n // eslint-disable-line no-self-compare\n type = 'nan';\n } else {\n type = typeof value;\n if (type === 'object') {\n if (value.isBase) {\n type = 'instance';\n } else if (Array.isArray(value)) {\n type = 'array';\n } else if (!(type = typeCache[trueType = toString$3.call(value)])) {\n typeCache[trueType] = type = trueType.slice(8, -1).toLowerCase(); // '[object Date]' => 'date'\n }\n } else if (type === 'function' && value.isBase) {\n type = 'class';\n }\n }\n return type;\n }\n}\n// TODO remove this once we have the polyfill or don't need it\n// https://caniuse.com/mdn-javascript_builtins_object_hasown\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn\nObject.defineProperty(Objects, 'hasOwn', {\n // When available, this avoids an extra layer of function call around it:\n value: Object.hasOwn || ((object, property) => hasOwnProperty$6.call(object, property))\n});\nObjects._$name = 'Objects';\n\n/**\n * @module Core/helper/VersionHelper\n */\nlet isSiesta = false;\ntry {\n var _globalThis$parent;\n isSiesta = Boolean(((_globalThis$parent = globalThis.parent) === null || _globalThis$parent === void 0 ? void 0 : _globalThis$parent.Siesta) || typeof process !== 'undefined' && (globalThis.StartTest || globalThis.Siesta));\n} catch (e) {}\n// Set Default to hoverable device for our tests to run reliably\nif (isSiesta) {\n BrowserHelper._isHoverableDevice = true;\n}\n/**\n * Helper for version handling\n * @private\n * @example\n *\n * VersionHelper.setVersion('grid', '1.5');\n *\n * if (VersionHelper.getVersion('grid').isNewerThan('1.0')) {\n * ...\n * }\n */\nclass VersionHelper {\n /**\n * Set version for specified product\n * @private\n * @param {String} product\n * @param {String} version\n */\n static setVersion(product, version) {\n product = product.toLowerCase();\n VH[product] = {\n version,\n isNewerThan(otherVersion) {\n return VersionHelper.semanticCompareVersion(otherVersion, version, '<');\n },\n isOlderThan(otherVersion) {\n return VersionHelper.semanticCompareVersion(otherVersion, version, '>');\n }\n };\n let bundleFor = '';\n // Var productName is only defined in bundles, it is internal to bundle so not available on window. Used to\n // tell importing combinations of grid/scheduler/gantt bundles apart from loading same bundle twice\n // eslint-disable-next-line no-undef\n if (typeof productName !== 'undefined') {\n // eslint-disable-next-line no-undef\n bundleFor = productName;\n }\n // Set \"global\" flag to detect bundle being loaded twice\n const globalKey = `${bundleFor}.${product}${version.replace(/\\./g, '-')}`;\n if (BrowserHelper.isBrowserEnv && !globalThis.bryntum.silenceBundleException) {\n if (globalThis.bryntum[globalKey] === true) {\n if (isSiesta) {\n globalThis.BUNDLE_EXCEPTION = true;\n } else {\n let errorProduct = bundleFor || product;\n if (errorProduct === 'core') {\n errorProduct = 'grid';\n }\n let capitalized = StringHelper.capitalize(errorProduct);\n if (errorProduct === 'schedulerpro') {\n capitalized = 'SchedulerPro';\n }\n throw new Error(`The Bryntum ${capitalized} bundle was loaded multiple times by the application.\\n\\n` + `Common reasons you are getting this error includes:\\n\\n` + `* Imports point to different types of the bundle (e.g. *.module.js and *.umd.js)\\n` + `* Imports point to both sources and bundle\\n` + `* Imports do not use the shortest relative path, JS treats them as different files\\n` + `* Cache busters differ between imports, JS treats ${errorProduct}.module.js?1 and ${errorProduct}.module.js?2 as different files\\n` + `* Imports missing file type, verify they all end in .js\\n\\n` + `See https://bryntum.com/docs/${errorProduct}/guide/${capitalized}/gettingstarted/es6bundle#troubleshooting for more information\\n\\n`);\n }\n } else {\n globalThis.bryntum[globalKey] = true;\n }\n }\n }\n /**\n * Get (previously set) version for specified product\n * @private\n * @param {String} product\n */\n static getVersion(product) {\n product = product.toLowerCase();\n if (!VH[product]) {\n throw new Error('No version specified! Please check that you import VersionHelper correctly into the class from where you call `deprecate` function.');\n }\n return VH[product].version;\n }\n /**\n * Checks the version1 against the passed version2 using the comparison operator.\n * Supports `rc`, `beta`, `alpha` release states. Eg. `1.2.3-alpha-1`.\n * State which is not listed above means some version below `alpha`.\n * @param {String} version1 The version to test against\n * @param {String} version2 The version to test against\n * @param {String} [comparison] The comparison operator, `<=`, `<`, `=`, `>` or `>=`.\n * @returns {Boolean} `true` if the test passes.\n * @internal\n */\n static semanticCompareVersion(version1, version2, comparison = '=') {\n version1 = version1 || '';\n version2 = version2 || '';\n const version1Arr = version1.split(/[-.]/),\n version2Arr = version2.split(/[-.]/),\n isLower = comparison.includes('<'),\n normalizeArr = (arr, maxLength) => {\n const states = ['rc', 'beta', 'alpha'],\n result = arr.map(v => {\n if (states.includes(v)) {\n return -states.indexOf(v) - 2;\n }\n const res = Number.parseInt(v);\n return Number.isNaN(res) ? -states.length : res;\n });\n while (result.length < maxLength) {\n result.push(-1);\n }\n return result;\n },\n compareArr = () => {\n const maxLength = Math.max(version1Arr.length, version2Arr.length),\n arr1 = normalizeArr(version1Arr, maxLength),\n arr2 = normalizeArr(version2Arr, maxLength);\n for (let i = 0; i < maxLength; i++) {\n if (arr1[i] !== arr2[i]) {\n return isLower ? arr1[i] < arr2[i] : arr1[i] > arr2[i];\n }\n }\n return true;\n };\n switch (comparison) {\n case '=':\n return version1 === version2;\n case '<=':\n case '>=':\n return version1 === version2 || compareArr();\n case '<':\n case '>':\n return version1 !== version2 && compareArr();\n }\n return false;\n }\n /**\n * Checks the passed product against the passed version using the passed test.\n * @param {String} product The name of the product to test the version of\n * @param {String} version The version to test against\n * @param {String} test The test operator, `<=`, `<`, `=`, `>` or `>=`.\n * @returns {Boolean} `true` if the test passes.\n * @internal\n */\n static checkVersion(product, version, test) {\n return VersionHelper.semanticCompareVersion(VH.getVersion(product), version, test);\n }\n /**\n * Based on a comparison of current product version and the passed version this method either outputs a console.warn\n * or throws an error.\n * @param {String} product The name of the product\n * @param {String} invalidAsOfVersion The version where the offending code is invalid (when any compatibility layer\n * is actually removed).\n * @param {String} message Required! A helpful warning message to show to the developer using a deprecated API.\n * @internal\n */\n static deprecate(product, invalidAsOfVersion, message) {\n const justWarn = VH.checkVersion(product, invalidAsOfVersion, '<');\n if (justWarn) {\n // During the grace period (until the next major release following the deprecated code), just show a console warning\n console.warn(`Deprecation warning: You are using a deprecated API which will change in v${invalidAsOfVersion}. ${message}`);\n } else {\n throw new Error(`Deprecated API use. ${message}`);\n }\n }\n /**\n * Returns truthy value if environment is in testing mode.\n * @returns {Boolean}\n * @internal\n **/\n static get isTestEnv() {\n return isSiesta;\n }\n static get isDebug() {\n let result = false;\n return result;\n }\n}\nconst VH = VersionHelper;\nif (BrowserHelper.isBrowserEnv) {\n (globalThis.bryntum || (globalThis.bryntum = {})).getVersion = VH.getVersion.bind(VH);\n globalThis.bryntum.checkVersion = VH.checkVersion.bind(VH);\n globalThis.bryntum.deprecate = VH.deprecate.bind(VH);\n globalThis.bryntum.isTestEnv = VH.isTestEnv;\n}\nVersionHelper._$name = 'VersionHelper';\n\n// We cannot import ObjectHelper because of the import cycle:\n// ObjectHelper -> DateHelper -> LocaleManager -> Base -> us\n/**\n * @module Core/Config\n */\nconst {\n defineProperty: defineProperty$8,\n getOwnPropertyDescriptor: getOwnPropertyDescriptor$1\n } = Reflect,\n {\n hasOwnProperty: hasOwnProperty$5,\n toString: toString$2\n } = Object.prototype,\n instancePropertiesSymbol$1 = Symbol('instanceProperties'),\n configuringSymbol$1 = Symbol('configuring'),\n lazyConfigValues = Symbol('lazyConfigValues'),\n DATE_TYPE$1 = toString$2.call(new Date()),\n whitespace = /\\s+/,\n createClsProps = (result, cls) => {\n result[cls] = 1;\n return result;\n };\n/**\n * This class holds the description of a config property. Only one instance of this class is needed for each config\n * name (e.g., \"text\"). If config options are supplied, however, they also contribute to the cached instance.\n *\n * Instances should always be retrieved by calling `Config.get()`.\n *\n * The **Configs** of this class correspond to `options` that can be supplied to the `get()` method. These affect the\n * behavior of the config property in some way, as descried by their respective documentation.\n *\n * This class is not used directly.\n *\n * ## The Setter\n * The primary functionality provided by `Config` is its standard setter. This setter function ensures consistent\n * behavior when modifying config properties.\n *\n * The standard setter algorithm is as follows (using the `'text'` config for illustration):\n *\n * - If the class defines a `changeText()` method, call it passing the new value and the current value:\n * `changeText(newText, oldText)`.
\n * Then:\n * * If `changeText()` exits without returning a value (i.e., `undefined`), exit and do nothing further. The\n * assumption is that the changer method has done all that is required.\n * * Otherwise, the return value of `changeText()` replaces the incoming value passed to the setter.\n * - If the new value (or the value returned by `changeText()`) is `!==` to the current value:\n * * Update the stored config value in `this._text`.\n * * If the class defines an `updateText()` method, call it passing the new value and the previous value.\n * `updateText(newText, oldText)`\n * * If the class defines an `onConfigChange()` method, call it passing an object with the following properties:\n * - `name` - The config's name\n * - `value` - The new value\n * - `was` - The previous value\n * - `config` - The `Config` instance.\n *\n * NOTE: unlike `changeText()` and `updateText()`, the name of the `onConfigChange()` method is unaffected by the\n * config's name.\n *\n * @internal\n */\nclass Config {\n /**\n * Returns the `Config` instance for the given `name` and `options`.\n * @param {String} name The name of the config (e.g., 'text' for the text config).\n * @param {Object} [options] Config behavior options.\n * @returns {Core.Config}\n * @internal\n */\n static get(name, options) {\n const {\n cache\n } = this,\n baseCfg = cache[name] || (cache[name] = new Config(name));\n let cfg = baseCfg,\n key;\n if (options) {\n key = Config.makeCacheKey(name, options);\n if (!(cfg = key && cache[key])) {\n cfg = baseCfg.extend(options);\n if (key) {\n cache[key] = cfg;\n }\n }\n }\n return cfg;\n }\n constructor(name) {\n const me = this,\n cap = name[0].toUpperCase() + name.substr(1);\n me.base = me; // so extend()ed configs have a link to the base definition\n me.name = name;\n me.field = '_' + name;\n me.capName = cap;\n me.changer = 'change' + cap;\n me.initializing = 'initializing' + cap;\n me.updater = 'update' + cap;\n }\n /**\n * The descriptor to use with `Reflect.defineProperty()` for defining this config's getter and setter.\n * @property {Object}\n * @private\n */\n get descriptor() {\n let descriptor = this._descriptor;\n if (!descriptor || !hasOwnProperty$5.call(this, '_descriptor')) {\n // lazily make the descriptor\n this._descriptor = descriptor = this.makeDescriptor();\n }\n return descriptor;\n }\n /**\n * The descriptor to use with `Reflect.defineProperty()` for defining this config's initter.\n * @property {Object}\n * @private\n */\n get initDescriptor() {\n let descriptor = this._initDescriptor;\n if (!descriptor || !hasOwnProperty$5.call(this, '_initDescriptor')) {\n // lazily make the descriptor\n this._initDescriptor = descriptor = this.makeInitter();\n }\n return descriptor;\n }\n /**\n * This method compares two values for semantic equality. By default, this is based on the `===` operator. This\n * is often overridden for configs that accept `Date` or array values.\n * @param {*} value1\n * @param {*} value2\n * @returns {Boolean}\n * @internal\n */\n equal(value1, value2) {\n return value1 === value2;\n }\n /**\n * Extends this config with a given additional set of options. These objects are just prototype extensions of this\n * instance.\n * @param {Object} options\n * @returns {Core.Config}\n * @internal\n */\n extend(options) {\n const cfg = Object.assign(Object.create(this), options),\n {\n equal,\n merge\n } = options,\n {\n equalityMethods\n } = Config;\n if (typeof equal === 'string') {\n if (equal.endsWith('[]')) {\n cfg.equal = Config.makeArrayEquals(equalityMethods[equal.substr(0, equal.length - 2)]);\n } else {\n cfg.equal = equalityMethods[equal];\n }\n }\n if (typeof merge === 'string') {\n // Base uses { merge : 'replace' } for defaultConfig properties\n cfg.merge = Config.mergeMethods[merge];\n }\n return cfg;\n }\n /**\n * Defines the property on a given target object via `Reflect.defineProperty()`. If the object has its own getter,\n * it will be preserved. It is invalid to define a setter.\n * @param {Object} target\n * @internal\n */\n define(target) {\n const existing = getOwnPropertyDescriptor$1(target, this.name);\n let descriptor = this.descriptor;\n if (existing && existing.get) {\n descriptor = Object.assign({}, descriptor);\n descriptor.get = existing.get;\n }\n defineProperty$8(target, this.name, descriptor);\n }\n /**\n * Defines the property initter on the `target`. This is a property getter/setter that propagates the configured\n * value when the property is read.\n * @param {Object} target\n * @param {*} value\n * @internal\n */\n defineInitter(target, value) {\n const {\n name\n } = this,\n properties = target[instancePropertiesSymbol$1];\n let lazyValues, prop;\n // If there is an existing property with a getter/setter, *not* a value\n // defined on the object for this config we must call it in our injected getter/setter.\n if (!properties[name] && ( /* assign */prop = getOwnPropertyDescriptor$1(target, name)) && !('value' in prop)) {\n properties[name] = prop;\n }\n // Set up a temporary instance property which will pull in the value from the initialConfig if the getter\n // is called first.\n defineProperty$8(target, name, this.initDescriptor);\n if (this.lazy) {\n lazyValues = target[lazyConfigValues] || (target[lazyConfigValues] = new Map());\n lazyValues.set(name, value);\n }\n }\n /**\n * Returns an equality function for arrays of a base type, for example `'date'`.\n * @param {Function} [fn] The function to use to compare array elements. By default, operator `===` is used.\n * @returns {Function}\n * @private\n */\n static makeArrayEquals(fn) {\n return (value1, value2) => {\n let i,\n equal = value1 && value2 && value1.length === (i = value2.length);\n if (equal && Array.isArray(value1) && Array.isArray(value2)) {\n if (fn) {\n while (equal && i-- > 0) {\n equal = fn(value1[i], value2[i]);\n }\n } else {\n while (equal && i-- > 0) {\n equal = value1[i] === value2[i];\n }\n }\n } else {\n equal = fn ? fn(value1, value2) : value1 === value2;\n }\n return equal;\n };\n }\n /**\n * Returns the key to use in the Config `cache`.\n * @param {String} name The name of the config property.\n * @param {Object} options The config property options.\n * @returns {String}\n * @private\n */\n static makeCacheKey(name, options) {\n const keys = Object.keys(options).sort();\n for (let key, type, value, i = keys.length; i-- > 0;) {\n value = options[key = keys[i]];\n if (value == null && value === false) {\n keys.splice(i, 1);\n } else {\n type = typeof value;\n if (type === 'function') {\n return null;\n }\n if (type === 'string') {\n keys[i] = `${key}:\"${value}\"`;\n } else if (type === 'number') {\n keys[i] = `${key}:${value}`;\n }\n // that leaves bool and object, but there are no (valid) config options that are objects... so ignore\n }\n }\n\n return keys.length ? `${name}>${keys.join('|')}` : name; // eg: 'text>render|merge:v => v|bar'\n }\n /**\n * Creates and returns a property descriptor for this config suitable to be passed to `Reflect.defineProperty()`.\n * @returns {Object}\n * @private\n */\n makeDescriptor() {\n const config = this,\n {\n base,\n field,\n changer,\n updater,\n name\n } = config;\n if (base !== config && base.equal === config.equal) {\n // At present only the equal option affects the setter, so all configs can share the\n // descriptor of the base-most config definition unless their equality test fns differ.\n return base.descriptor;\n }\n return {\n get() {\n var _this$configObserver;\n // Allow folks like Widget.compose() to monitor getter calls\n (_this$configObserver = this.configObserver) === null || _this$configObserver === void 0 ? void 0 : _this$configObserver.get(name, this);\n return this[field];\n },\n set(value) {\n const me = this;\n let was = me[field],\n applied,\n newValue;\n // Resolve values starting with 'up.' by traversing owners to find it\n if (typeof value === 'string') {\n let resolvedValue = value;\n if (value.startsWith('up.')) {\n var _me$owner;\n resolvedValue = (_me$owner = me.owner) === null || _me$owner === void 0 ? void 0 : _me$owner.resolveProperty(value.substr(3));\n } else if (value.startsWith('this.')) {\n resolvedValue = me.resolveProperty(value.substr(5));\n }\n // TODO: Ignoring functions for now, we need to handle scope to make those work\n if (resolvedValue !== undefined && typeof resolvedValue !== 'function') {\n value = resolvedValue;\n }\n }\n // If the \"changeTitle()\" fellow falls off the end, it must have changed all the needful things.\n // Otherwise, it returned the final config value (it may have changed it instead, for example, making\n // an instance from a config object).\n if (me[changer]) {\n applied = (newValue = me[changer](value, was)) === undefined;\n if (!applied) {\n value = newValue;\n was = me[field]; // in case it was modified by the changer fn...\n }\n }\n // inline the default equal() for better perf:\n if (!applied && !(config.equal === equal ? was === value : config.equal(was, value))) {\n me[field] = value;\n applied = true;\n // Check for a \"syncTitle()\" method and call it if present.\n if (me[updater]) {\n me[updater](value, was);\n }\n }\n if (applied && !me.onConfigChange.$nullFn) {\n me.onConfigChange({\n name,\n value,\n was,\n config\n });\n }\n }\n };\n }\n /**\n * Creates and returns a property descriptor for this config's initter suitable to pass to\n * `Reflect.defineProperty()`.\n * @returns {Object}\n * @private\n */\n makeInitter() {\n const config = this;\n if (config !== config.base) {\n if (config.lazy) {\n return config.makeLazyInitter();\n }\n // At present no other options affect the setter, so all configs can share the descriptor of the base-most\n // config definition.\n return config.base.initDescriptor;\n }\n return config.makeBasicInitter();\n }\n makeBasicInitter() {\n const config = this,\n {\n initializing,\n name\n } = config;\n return {\n configurable: true,\n get() {\n const me = this;\n config.removeInitter(me);\n // Set the value from the configuration.\n me[initializing] = true;\n me[name] = me[configuringSymbol$1][name];\n me[initializing] = false;\n // The property has been *pulled* from the configuration.\n // Prevent the setting loop in configure from setting it again.\n me.configDone[name] = true;\n // Finally, allow the prototype getter to return the value.\n return me[name];\n },\n set(value) {\n config.removeInitter(this);\n // The config has been set (some internal code may have called the setter)\n // so prevent it from being called again and overwritten with data from initialConfig.\n this.configDone[name] = true;\n // Set the property normally (Any prototype setter will be invoked)\n this[name] = value;\n }\n };\n }\n makeLazyInitter() {\n const config = this,\n {\n initializing,\n name\n } = config;\n return {\n configurable: true,\n get() {\n const me = this,\n value = me[lazyConfigValues].get(name);\n config.removeInitter(me);\n if (!me.isDestroying) {\n // Set the value from the lazy config object.\n me[initializing] = true;\n me[name] = value;\n me[initializing] = false;\n }\n // Finally, allow the prototype getter to return the value.\n return me[name];\n },\n set(value) {\n config.removeInitter(this);\n // Set the property normally (Any prototype setter will be invoked)\n this[name] = value;\n }\n };\n }\n /**\n * Removes the property initter and restores the instance to its original form.\n * @param {Object} instance\n * @private\n */\n removeInitter(instance) {\n const {\n name\n } = this,\n instanceProperty = instance[instancePropertiesSymbol$1][name],\n lazyValues = instance[lazyConfigValues];\n // If we took over from an instance property, replace it\n if (instanceProperty) {\n defineProperty$8(instance, name, instanceProperty);\n }\n // Otherwise just delete the instance property who's getter we are in.\n else {\n delete instance[name];\n }\n if (lazyValues !== null && lazyValues !== void 0 && lazyValues.delete(name) && !lazyValues.size) {\n // we delete the keys so that we can tell if this particular lazy config has been initialized\n delete instance[lazyConfigValues];\n }\n }\n setDefault(cls, value) {\n defineProperty$8(cls.prototype, this.field, {\n configurable: true,\n writable: true,\n // or else \"this._value = x\" will fail\n value\n });\n }\n /**\n * This method combines (merges) two config values. This is called in two cases:\n *\n * - When a derived class specifies the value of a config defined in a super class.\n * - When a value is specified in the instance config object.\n *\n * @param {*} newValue In the case of derived classes, this is the config value of the derived class. In the case\n * of the instance config, this is the instance config value.\n * @param {*} currentValue In the case of derived classes, this is the config value of the super class. In the case\n * of the instance config, this is the class config value.\n * @param {Object} meta The class meta object from which the `newValue` is coming. This parameter is `null` if the\n * `newValue` is from an instance configuration.\n * @returns {*}\n * @internal\n */\n merge(newValue, currentValue) {\n if (currentValue && newValue && Objects.isObject(newValue)) {\n // If existing value is a class instance, clone and merge won't work. Set the configs.\n if (currentValue.isBase) {\n return currentValue.setConfig(newValue);\n }\n if (Objects.isObject(currentValue)) {\n newValue = Objects.merge(Objects.clone(currentValue), newValue);\n }\n }\n return newValue;\n }\n}\nconst {\n prototype\n } = Config,\n {\n equal\n } = prototype;\nConfig.symbols = {\n configuring: configuringSymbol$1,\n instanceProperties: instancePropertiesSymbol$1,\n lazyConfigs: lazyConfigValues\n};\n/**\n * This object holds `Config` instances keyed by their name. For example:\n * ```\n * Config.cache = {\n * disabled : Config.get('disabled'),\n * text : Config.get('text'),\n * title : Config.get('title')\n * };\n * ```\n * @member {Object} cache\n * @static\n * @private\n */\nConfig.cache = Object.create(null); // object w/no properties not even inherited ones\n/**\n * This object holds config value equality methods. By default, the `===` operator is used to compare config values for\n * semantic equality. When an `equal` option is specified as a string, that string is used as a key into this object.\n *\n * All equality methods in this object have the same signature as the {@link #function-equal equal()} method.\n *\n * This object has the following equality methods:\n *\n * - `array` : Compares arrays of values using `===` on each element.\n * - `date` : Compares values of `Date` type.\n * - `strict` : The default equal algorithm based on `===` operator.\n * @member {Object} equalityMethods\n * @static\n * @private\n */\nConfig.equalityMethods = {\n array: Config.makeArrayEquals(),\n date(value1, value2) {\n if (value1 === value2) {\n return true;\n }\n // see DateHelper.isDate() but cannot import due to circularity\n if (value1 && value2 && toString$2.call(value1) === DATE_TYPE$1 && toString$2.call(value2) === DATE_TYPE$1) {\n // https://jsbench.me/ltkb3vk0ji/1 - getTime is >2x faster vs valueOf/Number/op+\n return value1.getTime() === value2.getTime();\n }\n return false;\n },\n strict: Config.equal = equal\n};\n/**\n * This object holds config value merge methods. By default, {@link Core.helper.ObjectHelper#function-merge-static} is\n * used to merge object's by their properties. Config merge methods are used to combine config values from derived\n * classes with config values from super classes, as well as instance config values with those of the class.\n *\n * All merge methods in this object have the same signature as the {@link #function-merge merge()} method.\n *\n * This object has the following merge methods:\n *\n * - `distinct` : Combines arrays of values ensuring that no value is duplicated. When given an object, its truthy\n * keys are included, while its falsy keys are removed from the result.\n * - `merge` : The default merge algorithm for `configurable()` properties, based on\n * {@link Core.helper.ObjectHelper#function-merge-static}.\n * - `items` : Similar to `merge`, but allows reordering (see `Objects.mergeItems`).\n * - `objects` : The same as to `merge` except this method promotes `true` to an empty object.\n * - 'classList' : Incoming strings are converted to an object where the string is a property name with a truthy value.\n * - `replace` : Always returns `newValue` to replace the super class value with the derived class value, or the\n * class value with the instance value.\n * @member {Object} mergeMethods\n * @static\n * @internal\n */\nConfig.mergeMethods = {\n distinct(newValue, oldValue) {\n let ret = oldValue ? oldValue.slice() : [];\n if (newValue != null) {\n if (Objects.isObject(newValue)) {\n if (oldValue === undefined) {\n ret = newValue;\n } else {\n let key, index;\n for (key in newValue) {\n index = ret.indexOf(key);\n if (newValue[key]) {\n if (index < 0) {\n ret.push(key);\n }\n } else if (index > -1) {\n ret.splice(index, 1);\n }\n }\n }\n } else if (Array.isArray(newValue)) {\n newValue.forEach(v => !ret.includes(v) && ret.push(v));\n } else if (!ret.includes(newValue)) {\n ret.push(newValue);\n }\n }\n return ret;\n },\n merge: Config.merge = prototype.merge,\n classList(newValue, oldValue) {\n // 'foo bar' -> { foo : 1, bar : 1 }\n if (typeof newValue === 'string') {\n if (!newValue.length) {\n return oldValue;\n }\n newValue = newValue.split(whitespace);\n }\n if (Array.isArray(newValue)) {\n newValue = newValue.reduce(createClsProps, {});\n }\n return Config.merge(newValue, oldValue);\n },\n objects(newValue, oldValue) {\n return newValue === true ? oldValue || {} : Config.merge(newValue, oldValue);\n },\n replace(newValue) {\n return newValue;\n },\n items(newValue, oldValue) {\n return Objects.mergeItems(oldValue, newValue, {\n merge: (oldValue, newValue) => prototype.merge(newValue, oldValue)\n });\n }\n};\nObject.assign(prototype, {\n _descriptor: null,\n _initDescriptor: null,\n /**\n * A function that compares values for equality. This test is used to determine if the `update` method should be\n * called when the setter is invoked.\n *\n * To handle `Date` values:\n * ```\n * class Foo extends Base {\n * static get configurable() {\n * return {\n * date : {\n * $config : {\n * equal : 'date'\n * },\n *\n * value : null\n * }\n * }\n * }\n *\n * updateDate(date) {\n * // date has changed\n * }\n * }\n * ```\n *\n * Also useful for some configs:\n * ```\n * class Foo extends Base {\n * static get configurable() {\n * return {\n * bar : {\n * $config : {\n * equal : ObjectHelper.isEqual\n * },\n *\n * value : null\n * }\n * }\n * }\n *\n * updateBar(value) {\n * // value has changed\n * }\n * }\n * ```\n * @config {Function} equal\n * @internal\n */\n /**\n * Indicates that this config property should not automatically initialize during construction. When this property\n * is set to `true`, initialization is triggered by the first use of the config property's getter.\n *\n * This property can alternatively be set to a string, in which case it can be initialized as a group using the\n * {@link Core.Base#function-triggerConfigs} method which will initialize all lazy configs with the same value for\n * this property. Note: the config will still initialize on first use if that occurs prior to the call to\n * `triggerConfigs`.\n * @config {Boolean|String}\n * @default\n * @internal\n */\n lazy: false,\n /**\n * Indicates that this config property should automatically be set to `null` on destroy.\n * @config {Boolean}\n * @default\n * @internal\n */\n nullify: false,\n /**\n * Indicates that this config participates in rendering. This has does not affect the behavior of the property\n * directly, but allows classes that perform rendering to detect which config changes will affect the rendered\n * result.\n * @config {Boolean}\n * @default\n * @internal\n */\n render: false\n // TODO FUTURES\n // clear (bool - set to null during cleanup)\n // destroy (bool - destroy value during cleanup)\n // evented (bool - fire event on change / after updater)\n});\n\nConfig._$name = 'Config';\n\nclass MetaClass {\n constructor(options) {\n options && Object.assign(this, options);\n }\n getInherited(name, create = true) {\n let ret = this[name];\n // We use \"in this\" to allow the object to be set to null\n if (!(name in this)) {\n var _this$super;\n // If there is no object on this metaclass, but there may be one on a super class. If create=false, the\n // idea is that a super class object will be \"properly\" inherited but otherwise no object will be created.\n ret = (_this$super = this.super) === null || _this$super === void 0 ? void 0 : _this$super.getInherited(name, create);\n if (ret || create) {\n this[name] = ret = Object.create(ret || null);\n }\n }\n return ret;\n }\n}\nconst // Using Object.getPrototypeOf instead of Reflect.getPrototypeOf because:\n // 1. They are almost the same, according to the MDN difference is handling getPrototypeOf('string')\n // 2. It allows us to pass security check in SalesForce environment\n {\n getPrototypeOf: getPrototypeOf$1\n } = Object,\n {\n hasOwn: hasOwn$3\n } = Objects,\n {\n defineProperty: defineProperty$7\n } = Reflect,\n metaSymbol = Symbol('classMetaData'),\n mixinTagSymbol = Symbol('mixinTag'),\n originalConfigSymbol = Symbol('originalConfig'),\n configuringSymbol = Config.symbols.configuring,\n instancePropertiesSymbol = Config.symbols.instanceProperties,\n lazyConfigsSymbol = Config.symbols.lazyConfigs,\n defaultConfigOptions = {\n merge: 'replace',\n simple: true\n },\n emptyFn$3 = () => {},\n newMeta = o => new MetaClass(o),\n setupNames = {/* foo : 'setupFoo' */},\n emptyObject$b = Object.freeze({}),\n emptyArray$a = Object.freeze([]);\n/**\n * Base class for all configurable classes.\n *\n * Subclasses do not have to implement a constructor with its restriction of having to call super()\n * before there is a `this` reference. Subclasses instead implement a `construct` method which is\n * called by the `Base` constructor. This may call its `super` implementation at any time.\n *\n * The `Base` constructor applies all configs to properties of the new instance. The instance\n * will have been configured after the `super.construct(config)` is called.\n *\n * See the Class System documentation in the guides for more information.\n *\n * @abstract\n */\nclass Base$1 {\n static get isBase() {\n return true;\n }\n get isBase() {\n return true;\n }\n // defaultConfig & properties made private to not spam all other classes\n /**\n * A class property getter to add additional, special class properties.\n *\n * For example, a class adds a `declarable` class property like so:\n * ```\n * class Something extends Base {\n * static get declarable() {\n * return ['extra'];\n * }\n *\n * static setupExtra(cls, meta) {\n * // use cls.extra\n * }\n * }\n * ```\n * A derived class can then specify this property like so:\n * ```\n * class Derived extends Something {\n * static get extra() {\n * // return extra information\n * }\n * }\n * ```\n * When the `Derived` class is initialized, the `setupExtra()` method is called and `Derived` is passed as the\n * argument. It is also the `this` pointer, but the parameter is minifiable. The second argument passed is the\n * `$meta` object for the class.\n *\n * Classes are initialized at the first occurrence of the following:\n *\n * - An instance is created\n * - The class `$meta` property is accessed\n *\n * @member {String[]} declarable\n * @static\n * @category Configuration\n * @internal\n */\n static get declarable() {\n return ['declarable',\n /**\n * A class property getter for the configuration properties of the class, which can be overridden by\n * configurations passed at construction time.\n *\n * Unlike a normal `static` property, this property is only ever used for the class that defines it (as in,\n * `hasOwnProperty`). It is retrieved for all classes in a class hierarchy, to gather their configs\n * individually and then combine them with those of derived classes.\n *\n * For example, a `Label` might declare a `text` config like so:\n * ```javascript\n * class Label extends Base {\n * static get configurable() {\n * return {\n * text : null\n * };\n * }\n * }\n * ```\n * The `text` config is automatically inherited by classes derived from Label. By implementing\n * `get configurable()`, derived classes can change the default value of inherited configs, or define new\n * configs, or both.\n *\n * When a config property is declared in this way, the class author can also implement either of two\n * special methods that will be called when the config property is assigned a new value:\n *\n * - `changeText()`\n * - `updateText()`\n *\n * In the example above, the `Label` class could implement a `changeText()` method, an `updateText()`\n * method, or both. The generated property setter ensures these methods will be called when the `text`\n * property is assigned.\n *\n * The generated setter (for `text` in this example) performs the following steps:\n *\n * - If the class defines a `changeText()` method, call it passing the new value and the current value:\n * `changeText(newText, oldText)`.
\n * Then:\n * * If `changeText()` exits without returning a value (i.e., `undefined`), exit and do nothing\n * further. The assumption is that the changer method has done all that is required.\n * * Otherwise, the return value of `changeText()` replaces the incoming value passed to the setter.\n * - If the new value (or the value returned by `changeText()`) is `!==` to the current value:\n * * Update the stored config value in `this._text`.\n * * If the class defines an `updateText()` method, call it passing the new value and the previous value.\n * `updateText(newText, oldText)`\n *\n * #### Resolving a value from an owner\n * By specifying a value starting with `'up.'` for a config, the config system will resolve that value by\n * examining the ownership hierarchy. It will walk up the hierarchy looking for a property matching the name\n * (or dot separated path) after 'up.'. If one is found, the value will be read and used as the initial\n * value.\n *\n * ```javascript\n * class Parent extends Base {\n * static get configurable() {\n * return [\n * 'importantValue'\n * ]\n * }\n * }\n *\n * class Child extends Base {\n * static get configurable() {\n * return [\n * 'value'\n * ]\n * }\n * }\n *\n * const parent = new Parent({\n * importantValue : 123\n * });\n *\n * const child = new Child({\n * owner : parent,\n * // Will be resolved from the owner\n * value : 'up.importantValue'\n * });\n *\n * console.log(child.value); // logs 123\n * ```\n * Please note that this is for now a one way one time binding, the value will only be read initially and\n * not kept up to date on later changes.\n *\n * #### Value Merging\n * When a config property value is an object, the value declared by the base class is merged with values\n * declared by derived classes and the value passed to the constructor.\n * ```javascript\n * class Example extends Base {\n * static get configurable() {\n * return {\n * config : {\n * foo : 1,\n * bar : 2\n * }\n * };\n * }\n * }\n *\n * class Example2 extends Example {\n * static get configurable() {\n * return {\n * config : {\n * bar : 42,\n * zip : 'abc'\n * }\n * };\n * }\n * }\n *\n * let ex = new Example2({\n * config : {\n * zip : 'xyz'\n * }\n * });\n * ```\n * The result of the merge would set `config` to:\n * ```javascript\n * ex.foo = {\n * foo : 1, // from Example\n * bar : 42, // from Example2\n * zip : 'xyz' // from constructor\n * }\n * ```\n *\n * #### Config Options\n * Some config properties require additional options such as declarative information about the config that\n * may be useful to automate some operation. Consider a `Button`. It could declare that its `text` config\n * affects the rendered HTML by applying a `render` property to the config definition. Its base class could\n * then examine the config definition to find this property.\n *\n * To support this, config options ca be declared like so:\n * ```javascript\n * class Button extends Widget {\n * static get configurable() {\n * return {\n * text : {\n * value : null,\n * $config : {\n * render : true\n * }\n * }\n * };\n * }\n * }\n * ```\n * The `$config` property can alternatively be just the names of the options that should be enabled (set\n * to `true`).\n *\n * For example, the following is equivalent to the above:\n * ```javascript\n * class Button extends Widget {\n * static get configurable() {\n * return {\n * text : {\n * value : null,\n * $config : 'render'\n * }\n * };\n * }\n * ```\n *\n * #### Default Value\n * It is common to set a config to a `null` value to take advantage of internal optimizations for `null`\n * values. In most cases the fact that this produces `undefined` as the actual initial value of the config\n * is acceptable. When this is not acceptable, a config can be declared like so:\n * ```javascript\n * class Widget {\n * static get configurable() {\n * return {\n * disabled : {\n * $config : null,\n * value : null,\n * default : false\n * }\n * };\n * }\n * ```\n * The `default` property above determines the value of the config while still gaining the benefits of\n * minimal processing due to the `null` value of the `value` property.\n * @member {Object} configurable\n * @static\n * @category Configuration\n * @internal\n */\n 'configurable',\n /**\n * A class property getter for the default configuration of the class, which can be overridden by\n * configurations passed at construction time.\n *\n * Unlike a normal `static` property, this property is only ever used for the class that defines it (as in,\n * `hasOwnProperty`). It is retrieved for all classes in a class hierarchy, to gather their configs\n * individually and then combine them with those of derived classes.\n *\n * For example, a `Store` might declare its `url` config like so:\n * ```\n * class Store extends Base {\n * static get defaultConfig() {\n * return {\n * url : null\n * };\n * }\n * }\n * ```\n * The `url` config is automatically inherited by classes derived from Store. By implementing\n * `get defaultConfig()`, derived classes can change the default value of inherited configs, or define new\n * configs, or both. When defining new configs, however, `configurable` is preferred.\n *\n * Config properties introduced to a class by this declaration do not participate in value merging and do\n * not get a generated setter. Config properties introduced by a base class using `configurable` can be\n * set to a different value using `defaultConfig` and in doing so, the values will be merged as appropriate\n * for `configurable`.\n *\n * @member {Object} defaultConfig\n * @static\n * @category Configuration\n * @internal\n */\n 'defaultConfig',\n /**\n * A class property getter for the default values of internal properties for this class.\n * @member {Object} properties\n * @static\n * @category Configuration\n * @internal\n */\n 'properties',\n /**\n * A class property getter for properties that will be applied to the class prototype.\n * @member {Object} prototypeProperties\n * @static\n * @category Configuration\n * @internal\n */\n 'prototypeProperties'];\n }\n /**\n * Base constructor, passes arguments to {@link #function-construct}.\n * @param {...Object} [args] Usually called with a config object, but accepts any params\n * @function constructor\n * @category Lifecycle\n */\n constructor(...args) {\n const me = this,\n C = me.constructor;\n if (me.$meta.class !== C) {\n // This will happen only once for each class. We need to call the C.$meta getter which puts $meta on our\n // prototype. Since that alone would be optimized away (and would generate IDE and lint warnings), we call\n // emptyFn and simply pass the value.\n emptyFn$3(C.$meta);\n }\n // Allow subclasses to have a pseudo constructor with \"this\" already set:\n me.construct(...args);\n me.afterConstruct();\n me.isConstructing = false;\n }\n /**\n * Factory version of the Base constructor. Merges all arguments to create a config object that is passed along to\n * the constructor.\n * @param {...Object} [configs] Allows passing multiple config objects\n * @returns {Core.Base} New instance\n * @private\n */\n static new(...configs) {\n return new this(Objects.merge({}, ...configs));\n }\n /**\n * Base implementation applies configuration.\n *\n * Subclasses need only implement this if they have to initialize instance specific\n * properties required by the class. Often a `construct` method is\n * unnecessary. All initialization of incoming configuration properties can be\n * done in a `set propName` implementation.\n * @param {...Object} [args] Usually called with a config object, but accepts any params\n * @category Lifecycle\n */\n construct(...args) {\n // Passing null to base construct means bypass the config system and stack creation (to gain performance)\n if (args[0] !== null) {\n this.configure(...args);\n }\n this.afterConfigure();\n }\n /**\n * Destroys the provided objects by calling their {@link #function-destroy} method.\n * Skips empty values or objects that are already destroyed.\n *\n * ```javascript\n * Base.destroy(myButton, toolbar1, helloWorldMessageBox);\n * ```\n * @param {...Object} [args] Objects to be destroyed\n * @category Lifecycle\n */\n static destroy(...args) {\n const shredder = object => {\n if (object !== null && object !== void 0 && object.destroy) {\n object.destroy();\n } else if (Array.isArray(object)) {\n object.forEach(shredder);\n }\n };\n shredder(args);\n }\n /**\n * Destroys this object. This is primarily accomplished by calling {@link #function-doDestroy}, however, prior to\n * calling `doDestroy`, {@link #property-isDestroying} is set to `true`. After {@link #function-doDestroy} returns,\n * {@link #property-isDestroyed} is set to `true`.\n *\n * Do not override this method in subclasses. To provide class-specific cleanup, implement {@link #function-doDestroy}\n * instead.\n * @category Lifecycle\n */\n destroy() {\n const me = this,\n {\n id\n } = me;\n // Let everyone know the object is going inert:\n me.isDestroying = true;\n // Make calling destroy() harmless:\n me.destroy = emptyFn$3;\n me.doDestroy();\n Object.setPrototypeOf(me, null);\n // Clear all remaining instance properties.\n for (const key in me) {\n if (key !== 'destroy' && key !== 'isDestroying') {\n delete me[key];\n }\n }\n delete me[originalConfigSymbol];\n // Let everyone know the object is inert:\n me.isDestroyed = true;\n me.id = id; // for diagnostic reasons\n }\n /**\n * This method is required to help `unused` getters to survive production build process. Some tools, like angular,\n * will remove `unused` code in production build, making our side-effected getters behind, breaking code heavily.\n * @internal\n * @param getter Getter to evaluate\n */\n _thisIsAUsedExpression(getter) {}\n static get $$name() {\n return hasOwn$3(this, '$name') && this.$name ||\n // _$name is filled by webpack for every class (cls._$name = '...')\n hasOwn$3(this, '_$name') && this._$name || this.name;\n }\n get $$name() {\n return this.constructor.$$name;\n }\n /**\n * Base implementation so that all subclasses and mixins may safely call super.startConfigure.\n *\n * This is called by the Base class before setting configuration properties, but after\n * the active initial getters have been set, so all configurations are available.\n *\n * This method allows all classes in the hierarchy to force some configs to be evaluated before others.\n * @internal\n * @category Lifecycle\n * @params {Object} config The configuration object use to set the initial state.\n */\n startConfigure(config) {}\n /**\n * Base implementation so that all subclasses and mixins may safely call super.finishConfigure.\n *\n * This is called by the Base class before exiting the {@link #function-configure} method.\n *\n * At this point, all configs have been applied, but the `isConfiguring` property is still set.\n *\n * This method allows all classes in the hierarchy to inject functionality\n * into the config phase.\n * @internal\n * @category Lifecycle\n * @params {Object} config The configuration object use to set the initial state.\n */\n finishConfigure(config) {}\n /**\n * Base implementation so that all subclasses and mixins may safely call `super.afterConfigure`. This is called by the Base class after the {@link #function-configure} method has been\n * called. At this point, all configs have been applied.\n *\n * This method allows all classes in the hierarchy to inject functionality\n * either before or after the super.afterConstruct();\n * @internal\n * @category Lifecycle\n */\n afterConfigure() {}\n /**\n * Base implementation so that all subclasses and mixins may safely call super.afterConstruct.\n *\n * This is called by the Base class after the {@link #function-construct} method has been\n * called.\n *\n * At this point, all configs have been applied.\n *\n * This method allows all classes in the hierarchy to inject functionality\n * either before or after the super.afterConstruct();\n * @internal\n * @function afterConstructor\n * @category Lifecycle\n */\n afterConstruct() {}\n /**\n * Provides a way of calling callbacks which may have been specified as the _name_ of a function\n * and optionally adds scope resolution.\n *\n * For example, if the callback is specified as a string, then if it is prefixed with `'this.'`\n * then the function is resolved in this object. This is useful when configuring listeners\n * at the class level.\n *\n * If the callback name is prefixed with `'up.'` then the ownership hierarchy is queried\n * using the `owner` property until an object with the named function is present, then the\n * named function is called upon that object.\n *\n * If a named function is not found, an error is thrown. If the function should be only called when present,\n * and may not be present, add a `?` as a suffix.\n *\n * @param {String|Function} fn The function to call, or the name of the function to call.\n * @param {Object} thisObject The `this` object of the function.\n * @param {Object[]} args The argument list to pass.\n * @category Misc\n */\n callback(fn, thisObject, args = emptyArray$a) {\n // Maintainer: do not make args ...args. This method may acquire more arguments\n const {\n handler,\n thisObj\n } = this.resolveCallback(fn, thisObject === 'this' ? this : thisObject) || emptyObject$b;\n return handler === null || handler === void 0 ? void 0 : handler.apply(thisObj, args);\n }\n resolveProperty(propertyPath) {\n let thisObj = this;\n while (thisObj) {\n if (Objects.hasPath(thisObj, propertyPath)) {\n return Objects.getPath(thisObj, propertyPath);\n }\n thisObj = thisObj.owner;\n }\n return undefined;\n }\n /**\n * Provides a way of locating callbacks which may have been specified as the _name_ of a function\n * and optionally adds scope resolution.\n *\n * For example, if the callback is specified as a string, then if it is prefixed with `'this.'`\n * then the function is resolved in this object. This is useful when configuring listeners\n * at the class level.\n *\n * If the callback name is prefixed with `'up.'` then the ownership hierarchy is queried\n * using the `owner` property until an object with the named function is present, then the\n * named function is called upon that object.\n * @param {String|Function} handler The function to call, or the name of the function to call.\n * @param {Object} thisObj The `this` object of the function.\n * @param {Boolean} [enforceCallability = true] Pass `false` if the function may not exist, and a null return value is acceptable.\n * @returns {Object} `{ handler, thisObj }`\n * @category Misc\n */\n resolveCallback(handler, thisObj = this, enforceCallability = true) {\n // It's a string, we find it in its own thisObj\n if (handler.substring) {\n if (handler.endsWith('?')) {\n enforceCallability = false;\n handler = handler.substring(0, handler.length - 1);\n }\n if (handler.startsWith('up.')) {\n handler = handler.substring(3);\n // Empty loop until we find the function owner\n for (thisObj = this.owner; thisObj && !thisObj[handler]; thisObj = thisObj.owner);\n if (!thisObj) {\n return;\n }\n } else if (handler.startsWith('this.')) {\n handler = handler.substring(5);\n thisObj = this;\n }\n if (!thisObj || !(thisObj instanceof Object)) {\n return;\n }\n if (typeof thisObj[handler] !== 'function') {\n return;\n }\n handler = thisObj[handler];\n }\n return {\n handler,\n thisObj\n };\n }\n bindCallback(inHandler, inThisObj = this) {\n if (inHandler) {\n const {\n handler,\n thisObj\n } = this.resolveCallback(inHandler, inThisObj);\n if (handler) {\n return handler.bind(thisObj);\n }\n }\n }\n /**\n * Delays the execution of the passed function by the passed time quantum, or if the time is omitted\n * or not a number, delays until the next animation frame. Note that this will use\n * {@link Core.mixin.Delayable#function-setTimeout} || {@link Core.mixin.Delayable#function-requestAnimationFrame}\n * if this class mixes in `Delayable`, otherwise it uses the global methods. The function will\n * be called using `this` object as its execution scope.\n * @param {Function} fn The function to call on a delay.\n * @param {Number} [delay] The number of milliseconds to delay.\n * @param {String} [name] The name of delay\n * @returns {Number} The created timeout id.\n * @private\n */\n delay(fn, delay, name = fn.name || fn) {\n // Force scope on the fn if we are not a Delayable\n fn = this.setTimeout ? fn : fn.bind(this);\n const invoker = this.setTimeout ? this : globalThis;\n return invoker[typeof delay === 'number' ? 'setTimeout' : 'requestAnimationFrame'](fn, delay, name);\n }\n /**\n * Classes implement this method to provide custom cleanup logic before calling `super.doDestroy()`. The general\n * pattern is as follows:\n *\n * ```javascript\n * class Foo extends Base {\n * doDestroy() {\n * // perform custom cleanup\n *\n * super.doDestroy();\n * }\n * }\n * ```\n *\n * This method is called by {@link #function-destroy} which also prevents multiple calls from reaching `doDestroy`.\n * Prior to calling `doDestroy`, {@link #property-isDestroying} is set to `true`. Upon return, the object is fully\n * destructed and {@link #property-isDestroyed} is set to `true`.\n *\n * Do not call this method directly. Instead call {@link #function-destroy}.\n * @category Lifecycle\n */\n doDestroy() {\n const me = this,\n {\n nullify\n } = me.$meta;\n if (nullify) {\n for (let i = 0; i < nullify.length; ++i) {\n if (me[nullify[i].field] != null) {\n // if backing property is null/undefined then skip\n me[nullify[i].name] = null; // else, call setter to run through change/update\n }\n }\n }\n }\n /**\n * Destroys the named properties if they have been initialized, and if they have a `destroy` method.\n * Deletes the property from this object. For example:\n *\n * this.destroyProperties('store', 'resourceStore', 'eventStore', 'dependencyStore', 'assignmentStore');\n *\n * @param {String} properties The names of the properties to destroy.\n * @internal\n * @category Lifecycle\n */\n destroyProperties(...properties) {\n const me = this;\n let key, propertyValue;\n for (key of properties) {\n // If the value has *not* been pulled in from the configuration object yet\n // we must not try to access it, as that will cause the property to be initialized.\n if (key in me && (!me[configuringSymbol] || !me[configuringSymbol][key])) {\n var _propertyValue;\n propertyValue = me[key];\n if ((_propertyValue = propertyValue) !== null && _propertyValue !== void 0 && _propertyValue.destroy) {\n propertyValue.destroy();\n }\n delete me[key];\n }\n }\n }\n /**\n * Called by the Base constructor to apply configs to this instance. This must not be called.\n * @param {Object} config The configuration object from which instance properties are initialized.\n * @private\n * @category Lifecycle\n */\n configure(config = {}) {\n const me = this,\n {\n beforeConfigure\n } = config,\n configs = me.$meta.configs,\n fullConfig = me.getDefaultConfiguration();\n let cfg, key, value;\n me.initialConfig = config;\n // Important flag for setters to know whether they are being called during\n // configuration when this object is not fully alive, or whether it's being reconfigured.\n me.isConfiguring = true;\n // Assign any instance properties declared by the class.\n Object.assign(me, me.getProperties());\n // Apply configuration to default from class definition. This is safe because it's either chained from or a\n // fork of the class values.\n for (key in config) {\n value = config[key];\n cfg = configs[key];\n fullConfig[key] = cfg ? cfg.merge(value, fullConfig[key], null) : value;\n }\n if (beforeConfigure) {\n delete fullConfig.beforeConfigure;\n // noinspection JSValidateTypes\n beforeConfigure(me, fullConfig);\n }\n // Cache me.config for use by get config.\n me.setConfig(me[originalConfigSymbol] = fullConfig, true);\n me.isConfiguring = false;\n }\n /**\n * Returns the value of the specified config property. This is a method to allow\n * property getters to be explicitly called in a way that does not get optimized out.\n *\n * The following triggers the getter call, but optimizers will remove it:\n *\n * inst.foo; // also raises \"expression has no side-effects\" warning\n *\n * Instead, do the following to trigger a getter:\n *\n * inst.getConfig('foo');\n *\n * @param {String} name\n * @internal\n * @category Configuration\n */\n getConfig(name) {\n return this[name];\n }\n /**\n * Sets configuration options this object with all the properties passed in the parameter object.\n * Timing is taken care of. If the setter of one config is called first, and references\n * the value of another config which has not yet been set, that config will be set just\n * in time, and the *new* value will be used.\n * @param {Object} config An object containing configurations to change.\n * @category Lifecycle\n */\n setConfig(config, isConstructing) {\n const me = this,\n wasConfiguring = me[configuringSymbol],\n configDone = wasConfiguring ? me.configDone : me.configDone = {},\n configs = me.$meta.configs;\n let cfg, key;\n me[instancePropertiesSymbol] = {};\n // Cache configuration for use by injected property initializers.\n me[configuringSymbol] = wasConfiguring ? Object.setPrototypeOf(Object.assign({}, config), wasConfiguring) : config;\n // For each incoming non-null configuration, create a temporary getter which will\n // pull the value in from the initialConfig so that it doesn't matter in\n // which order properties are set. You can access any property at any time.\n for (key in config) {\n // Don't default null configs in unless it's a direct property of the\n // the passed configuration. When used at construct time, defaultConfigs\n // will be prototype-chained onto the config.\n if (config[key] != null || hasOwn$3(config, key)) {\n cfg = configs[key] || Config.get(key);\n cfg.defineInitter(me, config[key]);\n if (!isConstructing) {\n configDone[key] = false;\n }\n // else if (cfg.lazy) {\n // // This was done originally to prevent our for-loop below from poking the value on the instance\n // // at this stage. It was removed since it confused triggerConfig, and it just isn't true that the\n // // lazy config is done...\n // configDone[key] = true;\n // }\n } else {\n configDone[key] = true;\n }\n }\n if (isConstructing) {\n me.startConfigure(config);\n }\n // Set all our properties from the config object.\n // If one of the properties needs to access a property that has not\n // yet been set, the above temporary property will pull it through.\n // Can't use Object.assign because that only uses own properties.\n // config value blocks are prototype chained subclass->superclass\n for (key in config) {\n var _configs$key;\n // Only push the value through if the property initializer is still present.\n // If it gets triggered to pull the configuration value in, it deleted itself.\n if (!configDone[key] && !((_configs$key = configs[key]) !== null && _configs$key !== void 0 && _configs$key.lazy)) {\n me[key] = config[key];\n }\n }\n if (wasConfiguring) {\n me[configuringSymbol] = wasConfiguring;\n } else {\n delete me[configuringSymbol];\n }\n if (isConstructing) {\n me.finishConfigure(config);\n }\n return me;\n }\n /**\n * Returns `true` if this instance has a non-null value for the specified config. This will not activate a lazy\n * config.\n *\n * @param {String} name The name of the config property.\n * @returns {Boolean}\n * @internal\n */\n hasConfig(name) {\n var _me$lazyConfigsSymbol;\n const me = this,\n config = me[configuringSymbol];\n return Boolean(me['_' + name] != null ||\n // value has been assigned to backing property\n ((_me$lazyConfigsSymbol = me[lazyConfigsSymbol]) === null || _me$lazyConfigsSymbol === void 0 ? void 0 : _me$lazyConfigsSymbol.get(name)) != null ||\n // a lazy value is pending\n\n // config value has not been assigned but will be\n !me.configDone[name] && config && (config[name] != null || hasOwn$3(config, name)));\n }\n /**\n * Returns the value of an uningested config *without* ingesting the config or transforming\n * it from its raw value using its `changeXxxxx` method.\n *\n * @param {String} name The name of the config property.\n * @returns {*} The raw incoming config value.\n * @internal\n */\n peekConfig(name) {\n const me = this,\n lazyConfig = me[lazyConfigsSymbol],\n config = me[configuringSymbol];\n // It's waiting in the lazy configs\n if (lazyConfig !== null && lazyConfig !== void 0 && lazyConfig.has(name)) {\n return lazyConfig.get(name);\n }\n // It's been read in, so use the current value\n if (me.configDone[name]) {\n return me[name];\n }\n if ((config === null || config === void 0 ? void 0 : config[name]) != null || hasOwn$3(config, name)) {\n return config[name];\n }\n }\n /**\n * Ensures that the specified config is initialized if it is needed. If there is a config value specified, and it\n * was initialized by this call, this method returns `true`. If there was a config value specified, and it was\n * already initialized, this method returns `false`. If there was no value specified for the given config, this\n * method returns `null`.\n *\n * This is not the same as just reading the property, because some property getters exist that do not actually just\n * read the config value back, but instead produce some result. Reading such properties to incidentally trigger a\n * possible config initializer can lead to incorrect results. For example, the Combo items config.\n *\n * @param {String} name The name of the config property.\n * @returns {Boolean}\n * @internal\n */\n triggerConfig(name) {\n const me = this,\n {\n configDone\n } = me,\n lazyConfig = me[lazyConfigsSymbol],\n config = me[configuringSymbol],\n triggered = lazyConfig !== null && lazyConfig !== void 0 && lazyConfig.has(name) || config && (config[name] != null || hasOwn$3(config, name)) ? !configDone[name] : null;\n if (triggered) {\n me.getConfig(name);\n }\n return triggered;\n }\n /**\n * This call will activate any pending {@link Core.Config#config-lazy} configs that were assigned a string value\n * equal to the `group` parameter.\n *\n * @param {String} group The config property group as defined by a matching {@link Core.Config#config-lazy} value.\n * @returns {String[]} The names of any configs triggered by this call or `null` if no configs were triggered.\n * @internal\n */\n triggerConfigs(group) {\n const me = this,\n configs = me.$meta.configs,\n lazyConfigs = me[lazyConfigsSymbol],\n triggered = lazyConfigs ? [...lazyConfigs.keys()].filter(k => configs[k].lazy === group) : emptyArray$a;\n for (const key of triggered) {\n me.triggerConfig(key);\n }\n return triggered.length ? triggered : null;\n }\n onConfigChange() {} // declared above because lint/IDE get angry about not declaring the args...\n /**\n * This method is called when any config changes.\n * @param {Object} info Object containing information regarding the config change.\n * @param {String} info.name The name of the config that changed.\n * @param {*} info.value The new value of the config.\n * @param {*} info.was The previous value of the config.\n * @param {Core.Config} info.config The `Config` object for the changed config property.\n * @method onConfigChange\n * @internal\n * @category Configuration\n */\n /**\n * Returns a *copy* of the full configuration which was used to configure this object.\n * @property {Object}\n * @category Lifecycle\n * @readonly\n */\n get config() {\n const result = {},\n myConfig = this[originalConfigSymbol];\n // The configuration was created as a prototype chain of the class hierarchy's\n // defaultConfig values hanging off a copy of the initialConfig object, so\n // we must loop and copy since Object.assign only copies own properties.\n for (const key in myConfig) {\n result[key] = myConfig[key];\n }\n return result;\n }\n // region Extract config\n static processConfigValue(currentValue, options) {\n if (currentValue === globalThis) {\n return globalThis;\n } else if (Array.isArray(currentValue)) {\n return currentValue.map(v => Base$1.processConfigValue(v, options));\n }\n // Not using isBase to avoid classes (modelClass for example)\n else if (currentValue instanceof Base$1) {\n if (options.visited.has(currentValue)) {\n return;\n }\n return currentValue.getCurrentConfig(options);\n }\n // appendTo, floatRoot etc\n else if (currentValue instanceof HTMLElement || currentValue instanceof DocumentFragment) {\n return null;\n }\n // Go deeply into objects, might have instances of our classes in them\n else if (Objects.isObject(currentValue)) {\n const result = {};\n for (const key in currentValue) {\n result[key] = Base$1.processConfigValue(currentValue[key], options);\n }\n return result;\n }\n return currentValue;\n }\n // Recursively get the value of a config. Only intended to be called by getCurrentConfig()\n getConfigValue(name, options) {\n var _me$$meta$configs$nam;\n const me = this,\n lazyConfigs = me[lazyConfigsSymbol];\n // Do not trigger lazy configs\n if (!((_me$$meta$configs$nam = me.$meta.configs[name]) !== null && _me$$meta$configs$nam !== void 0 && _me$$meta$configs$nam.lazy)) {\n return Base$1.processConfigValue(me[name], options);\n }\n // Instead pull their initial config in\n if (lazyConfigs !== null && lazyConfigs !== void 0 && lazyConfigs.has(name)) {\n return Base$1.processConfigValue(lazyConfigs.get(name), options);\n }\n }\n // Allows removing / adding configs before values are extracted\n preProcessCurrentConfigs() {}\n // Extract the current values for all initially used configs, in a format that can be used to create a new instance.\n // Not intended to be called by any other code than getConfigString()\n getCurrentConfig(options = {}) {\n const me = this,\n configs = options.configs === 'all' ? me.config : Objects.clone(me.initialConfig),\n visited = options.visited || (options.visited = new Set()),\n depth = options.depth || (options.depth = 0),\n result = {};\n if (visited.has(me)) {\n return undefined;\n }\n visited.add(me);\n this.preProcessCurrentConfigs(configs);\n for (const name in configs) {\n const value = me.getConfigValue(name, _objectSpread2(_objectSpread2({}, options), {}, {\n depth: depth + 1\n }));\n if (value !== undefined) {\n result[name] = value;\n }\n }\n return result;\n }\n // Extract the current values for all initially used configs and convert them to a JavaScript string\n getConfigString(options = {}) {\n return StringHelper.toJavaScriptString(this.getCurrentConfig(options));\n }\n // Experimental helper function, extracts the currently used configs and wraps them as an app, returning code as a\n // string.\n //\n // This function is intended to simplify creating test cases for issue reporting on Bryntum's support forum.\n //\n getTestCase(options = {}) {\n //\n const Product = this.isGantt ? 'Gantt' : this.isSchedulerPro ? 'SchedulerPro' : this.isCalendar ? 'Calendar' : this.isScheduler ? 'Scheduler' : this.isGrid ? 'Grid' : this.isTaskBoard ? 'TaskBoard' : null;\n if (Product) {\n const product = Product.toLowerCase(),\n // bundlePath = `https://bryntum.com/dist/${product}/build/${product}.module.js`,\n bundlePath = `../../build/${product}.module.js`;\n let preamble, postamble;\n if (options.import === 'static') {\n preamble = `import * as module from \"${bundlePath}\";` + 'Object.assign(window, module);'; // for (const c in module) window[c] = module[c];\n postamble = '';\n } else {\n preamble = `import(\"${bundlePath}\").then(module => { Object.assign(window, module);\\n`;\n postamble = '});';\n }\n const version = VersionHelper.getVersion(product);\n if (version) {\n preamble += `\\nconsole.log('${Product} ${version}');\\n`;\n }\n // De-indented on purpose\n return `${preamble} \nconst ${product} = new ${Product}(${this.getConfigString(options)});\n${postamble}`;\n }\n //\n }\n /**\n * Experimental helper function, extracts the currently used configs and wraps them as an app, downloading the\n * resulting JS file.\n *\n * This function is intended to simplify creating test cases for issue reporting on Bryntum's support forum.\n * @category Misc\n */\n downloadTestCase(options = {}) {\n options.output = 'return';\n const app = this.getTestCase(options);\n BrowserHelper.download(`app.js`, 'data:application/javascript;charset=utf-8,' + escape(app));\n }\n //endregion\n /**\n * Registers this class type with its Factory\n * @category Misc\n */\n static initClass() {\n return this.$meta.class;\n }\n /**\n * The class's {@link #property-$meta-static meta} object.\n * @member {Object} $meta\n * @internal\n * @category Misc\n */\n /**\n * An object owned by this class that does not share properties with its super class.\n *\n * This object may contain other properties which are added as needed and are not documented here.\n *\n * @property {Object} $meta The class meta object.\n * @property {Function} $meta.class The class constructor that owns the meta object.\n * @property {Object} $meta.super The `$meta` object for the super class. This is `null` for `Base`.\n * @property {Object} $meta.config The object holding the default configuration values for this class.\n * @property {Object} $meta.configs An object keyed by config name that holds the defined configs for the class.\n * The value of each property is a {@link Core/Config} instance.\n * @property {Boolean} $meta.forkConfigs This will be `true` if the default configuration values for this class\n * (in the `config` property of the meta object) must be forked to avoid object sharing, or if the object can be\n * passed to `Object.create()` for efficiency.\n * @property {Function[]} $meta.hierarchy The array of classes in the ancestry of this class. This will start with\n * `Base` at index 0 and ends with this class.\n * @property {Function[]} $meta.properties The array of classes that define a \"static get properties()\" getter.\n * @internal\n * @static\n * @category Misc\n */\n static get $meta() {\n const me = this;\n let meta = me[metaSymbol];\n if (!hasOwn$3(me, metaSymbol)) {\n me[metaSymbol] = meta = newMeta();\n meta.class = me;\n me.setupClass(meta);\n }\n return meta;\n }\n /**\n * This optional class method is called when a class is mixed in using the {@link #function-mixin-static mixin()}\n * method.\n * @internal\n */\n static onClassMixedIn() {\n // empty\n }\n /**\n * Returns the merge of the `baseConfig` and `config` config objects based on the configs defined by this class.\n * @param {Object} baseConfig The base config or defaults.\n * @param {...Object} configs One or more config objects that takes priority over `baseConfig`.\n * @returns {Object}\n * @internal\n */\n static mergeConfigs(baseConfig, ...configs) {\n const classConfigs = this.$meta.configs,\n result = Objects.clone(baseConfig) || {};\n let config, i, key, value;\n for (i = 0; i < configs.length; ++i) {\n config = configs[i];\n if (config) {\n for (key in config) {\n value = config[key];\n if (classConfigs[key]) {\n value = classConfigs[key].merge(value, result[key]);\n } else if (result[key] && value) {\n value = Config.merge(value, result[key]);\n }\n result[key] = value;\n }\n }\n }\n return result;\n }\n /**\n * Applies one or more `mixins` to this class and returns the produced class constructor.\n *\n * For example, instead of writing this:\n * ```\n * class A extends Delayable(Events(Localizable(Base))) {\n * // ...\n * }\n * ```\n *\n * Using this method, one would write this:\n * ```\n * class A extends Base.mixin(Localizable, Events, Delayable) {\n * // ...\n * }\n * ```\n * If one of the mixins specified has already been mixed into the class, it will be ignored and not mixed in a\n * second time.\n * @param {...Function} mixins\n * @returns {Function}\n * @category Misc\n */\n static mixin(...mixins) {\n // Starting w/the first class C = this\n let C = this,\n i;\n // wrap each class C using mixins[i] to produce the next class\n for (i = 0; i < mixins.length; ++i) {\n const mixin = mixins[i],\n // Grab or create a unique Symbol for this mixin so we can tell if we've already mixed it in\n tag = mixin[mixinTagSymbol] || (mixin[mixinTagSymbol] = Symbol('mixinTag'));\n if (C[tag]) {\n continue;\n }\n C = mixin(C);\n C[tag] = true; // properties on the constructor are inherited to subclass constructors...\n if (hasOwn$3(C, 'onClassMixedIn')) {\n C.onClassMixedIn();\n }\n }\n return C;\n }\n /**\n * This method is called only once for any class. This can occur when the first instance is created or when the\n * `$meta` object is first requested.\n * @param {Object} meta The `$meta` object for the class.\n * @internal\n * @category Misc\n */\n static setupClass(meta) {\n var _base$nullify;\n const cls = meta.class,\n // Trigger setupClass on the super class (if it has yet to happen):\n base = getPrototypeOf$1(cls).$meta,\n name = cls.$$name,\n names = base.names,\n proto = cls.prototype;\n defineProperty$7(proto, '$meta', {\n value: meta\n });\n Object.assign(meta, {\n super: base,\n config: Object.create(base.config),\n configs: Object.create(base.configs),\n declarables: base.declarables,\n forkConfigs: base.forkConfigs,\n hierarchy: Object.freeze([...base.hierarchy, cls]),\n names: names.includes(name) ? names : Object.freeze([...names, name]),\n properties: base.properties,\n nullify: (_base$nullify = base.nullify) === null || _base$nullify === void 0 ? void 0 : _base$nullify.slice()\n });\n if (names !== meta.names) {\n const isName = `is${name}`,\n defineIsProperty = obj => {\n if (!hasOwn$3(obj, isName)) {\n defineProperty$7(obj, isName, {\n get() {\n // This check is intended to verify correct class name for minified packages\n if (!hasOwn$3(typeof obj === 'object' ? obj.constructor : obj, '$name')) {\n console.warn(`$name static property or getter required for class ${name} to provide class name for minified sources.` + (VersionHelper.isTestEnv ? '' : '\\nhttps://bryntum.com/docs/grid/api/Core/widget/Widget#property-$name-static'));\n }\n return true;\n }\n });\n }\n };\n defineIsProperty(proto);\n defineIsProperty(cls);\n }\n // NOTE: we always use meta.declarables because setupDeclarable() can replace the array on the meta object\n // when new declarable properties are added...\n for (let decl, setupName, i = 0; i < meta.declarables.length; ++i) {\n decl = meta.declarables[i];\n if (hasOwn$3(cls, decl)) {\n setupName = setupNames[decl] || (setupNames[decl] = `setup${StringHelper.capitalize(decl)}`);\n cls[setupName](cls, meta);\n }\n }\n /* Add slash to the front of this line to enable the diagnostic block:\n /**/\n }\n /**\n * This method is called as part of `setupClass()`. It will process the `configurable()` return object and the\n * `defaultConfig` return object.\n * @param {Object} meta The `meta` object for this class.\n * @param {Object} configs The config definition object.\n * @param {Boolean} simple `true` when processing `defaultConfig` and `false` when processing `configurable`.\n * @private\n * @category Configuration\n */\n static setupConfigs(meta, configs, simple) {\n const classConfigValues = meta.config,\n classConfigs = meta.configs,\n cls = meta.class;\n let {\n nullify\n } = meta,\n cfg,\n defaultValue,\n options,\n setDefault,\n value,\n wasNullify;\n for (const name in configs) {\n value = configs[name];\n if (simple) {\n // Using \"defaultConfig\"\n if (!(cfg = classConfigs[name])) {\n cfg = Config.get(name, defaultConfigOptions);\n } else {\n // The property may be declared in a base class using configurable(), so it may have special\n // merge processing:\n value = cfg.merge(value, classConfigValues[name], meta);\n }\n /* Add slash to the front of this line to enable the diagnostic block:\n /**/\n } else {\n // Using \"configurable\"\n defaultValue = options = setDefault = undefined;\n if (value && typeof value === 'object' && '$config' in value) {\n options = value.$config;\n if (options && !Objects.isObject(options)) {\n options = Objects.createTruthyKeys(options);\n }\n setDefault = 'default' in value;\n defaultValue = setDefault ? value.default : defaultValue;\n value = value.value;\n }\n if (!(cfg = classConfigs[name])) {\n cfg = Config.get(name, options);\n cfg.define(cls.prototype);\n setDefault = !(cfg.field in cls.prototype); // reduce object shape changes (helps JIT)\n wasNullify = false;\n } else {\n wasNullify = cfg.nullify;\n if (options) {\n // Defined by a base class, but maybe being adjusted by derived.\n cfg = cfg.extend(options);\n // In the future, we may need to redefine the property here if options affect the descriptor (such\n // as event firing)\n }\n\n value = cfg.merge(value, classConfigValues[name], meta);\n }\n if (setDefault) {\n cfg.setDefault(cls, defaultValue);\n }\n if (cfg.nullify && !wasNullify) {\n (nullify || (nullify = meta.nullify || (meta.nullify = []))).push(cfg);\n }\n }\n // If any default properties are *mutable* Objects or Array we need to clone them.\n // so that instances do not share configured values.\n if (value && (Objects.isObject(value) || Array.isArray(value)) && !Object.isFrozen(value)) {\n meta.forkConfigs = true;\n }\n classConfigs[name] = cfg;\n classConfigValues[name] = value;\n }\n }\n static setupConfigurable(cls, meta) {\n cls.setupConfigs(meta, cls.configurable, false);\n }\n static setupDefaultConfig(cls, meta) {\n cls.setupConfigs(meta, cls.defaultConfig, true);\n }\n static setupDeclarable(cls, meta) {\n const declarable = cls.declarable;\n let all = meta.declarables,\n forked,\n i;\n for (i = 0; i < declarable.length; ++i) {\n if (!all.includes(declarable[i])) {\n if (!forked) {\n meta.declarables = forked = all = all.slice();\n }\n all.push(declarable[i]);\n }\n }\n }\n static setupProperties(cls, meta) {\n meta.properties = meta.super.properties.slice();\n meta.properties.push(cls);\n Object.freeze(meta.properties);\n }\n static setupPrototypeProperties(cls) {\n Object.assign(cls.prototype, cls.prototypeProperties);\n }\n /**\n * Gets the full {@link #property-defaultConfig-static} block for this object's entire inheritance chain\n * all the way up to but not including {@link Core.Base}\n * @returns {Object} All default config values for this class.\n * @private\n * @category Configuration\n */\n getDefaultConfiguration() {\n return this.constructor.getDefaultConfiguration();\n }\n /**\n * Gets the full {@link #property-defaultConfig-static} block for the entire inheritance chain for this class\n * all the way up to but not including {@link Core.Base}\n * @returns {Object} All default config values for this class.\n * @private\n * @category Configuration\n */\n static getDefaultConfiguration() {\n const meta = this.$meta,\n config = meta.forkConfigs ? Base$1.fork(meta.config) : Object.create(meta.config);\n if (VersionHelper.isTestEnv && BrowserHelper.isBrowserEnv && config.testConfig && globalThis.__applyTestConfigs) {\n for (const o in config.testConfig) {\n config[o] = config.testConfig[o];\n }\n }\n return config;\n }\n static fork(obj) {\n let ret = obj,\n key,\n value;\n if (obj && Objects.isObject(obj) && !Object.isFrozen(obj)) {\n ret = Object.create(obj);\n for (key in obj) {\n value = obj[key];\n if (value) {\n if (Objects.isObject(value)) {\n ret[key] = Base$1.fork(value);\n } else if (Array.isArray(value)) {\n ret[key] = value.slice();\n }\n }\n }\n }\n return ret;\n }\n /**\n * Gets the full {@link #property-properties-static} block for this class's entire inheritance chain\n * all the way up to but not including {@link Core.Base}\n * @returns {Object} All default config values for this class.\n * @private\n * @category Configuration\n */\n getProperties() {\n const\n // The meta.properties array is an array of classes that define \"static get properties()\"\n hierarchy = this.$meta.properties,\n result = {};\n // TODO: if properties block does not change this could be cached? would speed up loading of big data sets\n // into grid. The problem is that this call creates new (i.e., non-shared) instances of objects, arrays and\n // Map objects that apply to each instance. These would all need to be cloned so it may be better to just\n // call the properties getter each time and let it create new instances of whatever types.\n //for (cls of hierarchy) { // for-of transpiles badly and this is called a lot\n for (let i = 0; i < hierarchy.length; i++) {\n // Gather the class result in top-down order so that subclass properties override superclass properties\n Object.assign(result, hierarchy[i].properties);\n }\n return result;\n }\n static get superclass() {\n return getPrototypeOf$1(this);\n }\n /**\n * Used by the Widget and GridFeatureManager class internally. Returns the class hierarchy of this object\n * starting from the `topClass` class (which defaults to `Base`).\n *\n * For example `classHierarchy(Widget)` on a Combo would yield `[Widget, Field, TextField, PickerField, Combo]`\n * @param {Function} [topClass] The topmost class constructor to start from.\n * @returns {Function[]} The class hierarchy of this instance.\n * @private\n * @category Configuration\n */\n classHierarchy(topClass) {\n const hierarchy = this.$meta.hierarchy,\n index = topClass ? hierarchy.indexOf(topClass) : 0;\n return index > 0 ? hierarchy.slice(index) : hierarchy;\n }\n /**\n * Checks if an obj is of type using object's $$name property and doing string comparison of the property with the\n * type parameter.\n *\n * @param {String} type\n * @returns {Boolean}\n * @category Misc\n */\n static isOfTypeName(type) {\n return this.$meta.names.includes(type);\n }\n /**\n * Removes all event listeners that were registered with the given `name`.\n * @param {String} name The name of the event listeners to be removed.\n * @category Events\n */\n detachListeners(name) {\n var _detachers;\n let detachers = this.$detachers;\n detachers = (_detachers = detachers) === null || _detachers === void 0 ? void 0 : _detachers[name];\n if (detachers) {\n while (detachers.length) {\n detachers.pop()();\n }\n }\n }\n /**\n * Tracks a detacher function for the specified listener name.\n * @param {String} name The name assigned to the associated listeners.\n * @param {Function} detacher The detacher function.\n * @private\n */\n trackDetacher(name, detacher) {\n const detachers = this.$detachers || (this.$detachers = {}),\n bucket = detachers[name] || (detachers[name] = []);\n bucket.push(detacher);\n }\n /**\n * Removes all detacher functions for the specified `Events` object. This is called\n * by the `removeAllListeners` method on that object which is typically called by its\n * `destroy` invocation.\n * @param {Core.mixin.Events} eventer The `Events` instance to untrack.\n * @private\n */\n untrackDetachers(eventer) {\n const detachers = this.$detachers;\n if (detachers) {\n for (const name in detachers) {\n const bucket = detachers[name];\n for (let i = bucket.length; i-- > 0;) {\n if (bucket[i].eventer === eventer) {\n bucket.splice(i, 1);\n }\n }\n }\n }\n }\n}\nconst proto$2 = Base$1.prototype;\n// Informs the standard config setter there is no need to call this fn:\nproto$2.onConfigChange.$nullFn = emptyFn$3.$nullFn = true;\nBase$1[metaSymbol] = proto$2.$meta = newMeta({\n class: Base$1,\n config: Object.freeze({}),\n configs: Object.create(null),\n declarables: Base$1.declarable,\n forkConfigs: false,\n hierarchy: Object.freeze([Base$1]),\n names: Object.freeze(['Base']),\n nullify: null,\n properties: Object.freeze([]),\n super: null\n});\n// Avoid some object shape changes:\nObject.assign(proto$2, {\n $detachers: null,\n configObserver: null,\n /**\n * This property is set to `true` before the `constructor` returns.\n * @member {Boolean}\n * @readonly\n * @category Lifecycle\n */\n isConstructing: true,\n /**\n * This property is set to `true` by {@link #function-destroy} after the {@link #function-doDestroy} method returns.\n * It is also one of the few properties that remains on the object after returning from `destroy()`. This property\n * is often checked in code paths that may encounter a destroyed object (like some event handlers) or in the\n * destruction path during cleanup.\n * @member {Boolean}\n * @readonly\n * @category Lifecycle\n */\n isDestroyed: false,\n /**\n * This property is set to `true` on entry to the {@link #function-destroy} method. It remains on the objects after\n * returning from `destroy()`. If {@link #property-isDestroyed} is `true`, this property will also be `true`, so\n * there is no need to test for both (for example, `comp.isDestroying || comp.isDestroyed`).\n * @member {Boolean}\n * @readonly\n * @category Lifecycle\n */\n isDestroying: false\n});\nBase$1.emptyFn = emptyFn$3;\nVersionHelper.setVersion('core', '5.2.1');\nBase$1._$name = 'Base';\n\n/**\n * @module Core/helper/ArrayHelper\n */\n/**\n * Helper with useful functions for handling Arrays\n * @internal\n */\nclass ArrayHelper {\n static clean(array) {\n return array.reduce((res, item) => {\n if (item !== null && item !== undefined && !(Array.isArray(item) && item.length === 0) && item !== '') res.push(item);\n return res;\n }, []);\n }\n /**\n * Similar to [`Array.from()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from)\n * this method creates an array from an `iterable` object. Where `Array.from()` accepts a mapper function as the\n * second argument, this method accepts a `filter` function as its second argument. If a mapper function is also\n * needed, it can be passed as the third argument. Unlike `Array.from()`, if this method is passed `null`, it will\n * return an empty array.\n * @param {Array} iterable The iterable object to convert (must support `for-of` loop iteration).\n * @param {Function} [filter] A function to apply to each item of the `iterable` which must return a truthy value\n * to include that item in the resulting array.\n * @param {Function} [map] A function to apply to each item of the `iterable` that returns the actual value to put\n * into the returned array. If a `filter` is also supplied, this method is only called for those items that pass\n * the filter test.\n * @returns {Array}\n */\n static from(iterable, filter, map) {\n const array = [];\n if (iterable) {\n for (const it of iterable) {\n if (!filter || filter(it)) {\n array.push(map ? map(it) : it);\n }\n }\n }\n return array;\n }\n /**\n * Remove one or more items from an array\n * @param {Array} array Array to remove from\n * @param {Object} items One or more items to remove\n * @returns {Boolean} Returns true if any item was removed\n */\n static remove(array, ...items) {\n let index,\n item,\n removed = false;\n for (let i = 0; i < items.length; i++) {\n item = items[i];\n if ((index = array.indexOf(item)) !== -1) {\n array.splice(index, 1);\n removed = true;\n }\n }\n return removed;\n }\n /**\n * Calculates the insertion index of a passed object into the passed Array according\n * to the passed comparator function. Note that the passed Array *MUST* already be ordered.\n * @param {Object} item The item to calculate the insertion index for.\n * @param {Array} The array into which the item is to be inserted.\n * @param {Function} comparatorFn The comparison function. Must return -1 or 0 or 1.\n * @param {Object} comparatorFn.lhs The left object to compare.\n * @param {Object} comparatorFn.rhs The right object to compare.\n * @param {Number} index The possible correct index to try first before a binary\n * search is instigated.\n * @internal\n */\n static findInsertionIndex(item, array, comparatorFn = this.lexicalCompare, index) {\n const len = array.length;\n let beforeCheck, afterCheck;\n if (index < len) {\n beforeCheck = index > 0 ? comparatorFn(array[index - 1], item) : 0;\n afterCheck = index < len - 1 ? comparatorFn(item, array[index]) : 0;\n if (beforeCheck < 1 && afterCheck < 1) {\n return index;\n }\n }\n return this.binarySearch(array, item, comparatorFn);\n }\n /**\n * Similar to the native Array.find call, but this finds the *last* element in the array for which\n * the passed function returns a truthy value.\n * @param {Object[]} array The array to find in.\n * @param {Function} fn The testing function.\n * @param {Object} [thisObj] The scope (`this` reference) in which to call the function.\n */\n static findLast(array, fn, thisObj) {\n for (let {\n length\n } = array, i = length - 1; i >= 0; i--) {\n if (fn.call(thisObj, array[i], i, array)) {\n return array[i];\n }\n }\n }\n /**\n * This method returns the index that a given item would be inserted into the\n * given (sorted) `array`. Note that the given `item` may or may not be in the\n * array. This method will return the index of where the item *should* be.\n *\n * For example:\n *\n * var array = [ 'A', 'D', 'G', 'K', 'O', 'R', 'X' ];\n * var index = ArrayHelper.binarySearch(array, 'E');\n *\n * console.log('index: ' + index);\n * // logs \"index: 2\"\n *\n * array.splice(index, 0, 'E');\n *\n * console.log('array : ' + array.join(''));\n * // logs \"array: ADEGKORX\"\n *\n * @param {Object[]} array The array to search.\n * @param {Object} item The item that you want to insert into the `array`.\n * @param {Number} [begin=0] The first index in the `array` to consider.\n * @param {Number} [end=array.length] The index that marks the end of the range\n * to consider. The item at this index is *not* considered.\n * @param {Function} [compareFn] The comparison function that matches the sort\n * order of the `array`. The default `compareFn` compares items using less-than\n * and greater-than operators.\n * @returns {Number} The index for the given item in the given array based on\n * the passed `compareFn`.\n */\n static binarySearch(array, item, begin = 0, end = array.length, compareFn = this.lexicalCompare) {\n const length = array.length;\n let middle, comparison;\n if (begin instanceof Function) {\n compareFn = begin;\n begin = 0;\n } else if (end instanceof Function) {\n compareFn = end;\n end = length;\n }\n --end;\n while (begin <= end) {\n middle = begin + end >> 1;\n comparison = compareFn(item, array[middle]);\n if (comparison >= 0) {\n begin = middle + 1;\n } else if (comparison < 0) {\n end = middle - 1;\n }\n }\n return begin;\n }\n magnitudeCompare(lhs, rhs) {\n return lhs < rhs ? -1 : lhs > rhs ? 1 : 0;\n }\n lexicalCompare(lhs, rhs) {\n lhs = String(lhs);\n rhs = String(rhs);\n return lhs < rhs ? -1 : lhs > rhs ? 1 : 0;\n }\n /**\n * Similar to Array.prototype.fill(), but constructs a new array with the specified item count and fills it with\n * clones of the supplied item.\n * @param {Number} count Number of entries to create\n * @param {Object|Array} itemOrArray Item or array of items to clone (uses object spread to create shallow clone)\n * @param {Function} [fn] An optional function that is called for each item added, to allow processing\n * @returns {Array} A new populated array\n */\n static fill(count, itemOrArray = {}, fn = null) {\n const result = [],\n items = Array.isArray(itemOrArray) ? itemOrArray : [itemOrArray];\n for (let i = 0; i < count; i++) {\n for (const item of items) {\n // Using object spread here forces us to use more babel plugins and will make\n // react_typescript demo very difficult to setup\n const processedItem = Object.assign({}, item);\n if (fn) {\n fn(processedItem, i);\n }\n result.push(processedItem);\n }\n }\n return result;\n }\n /**\n * Populates an array with the return value from `fn`.\n * @param {Number} count Number of entries to create\n * @param {Function} fn A function that is called `count` times, return value is added to array\n * @param {Number} fn.index Current index in the array\n * @privateparam {Boolean} [oneBased] Add 1 to the index before calling the fn (making it 1 based)\n * @returns {Array} A new populated array\n */\n static populate(count, fn, oneBased = false) {\n const items = [];\n for (let i = 0; i < count; i++) {\n items.push(fn(i + (oneBased ? 1 : 0)));\n }\n return items;\n }\n /**\n * Pushes `item` on to the `array` if not already included\n * @param {Array} array Array to push to\n * @param {...Object} items Item(s) to push if not already included\n */\n static include(array, ...items) {\n for (const item of items) {\n if (!array.includes(item)) {\n array.push(item);\n }\n }\n }\n /**\n * Returns a new array with the unique items from the supplied array.\n * @param {Array} array Input array\n * @returns {Array} New array with unique items\n */\n static unique(array) {\n return [...new Set(array)];\n }\n // Kept for future reference : Wanted to create an indexer on Stores.\n static allowNegative(array) {\n // From https://github.com/sindresorhus/negative-array\n return new Proxy(array, {\n get(target, name, receiver) {\n if (typeof name !== 'string') {\n return Reflect.get(target, name, receiver);\n }\n const index = Number(name);\n if (Number.isNaN(index)) {\n return Reflect.get(target, name, receiver);\n }\n return target[index < 0 ? target.length + index : index];\n },\n set(target, name, value, receiver) {\n if (typeof name !== 'string') {\n return Reflect.set(target, name, value, receiver);\n }\n const index = Number(name);\n if (Number.isNaN(index)) {\n return Reflect.set(target, name, value, receiver);\n }\n target[index < 0 ? target.length + index : index] = value;\n return true;\n }\n });\n }\n static delta(a, b, useRelativeNaming = false) {\n // Nicer syntax but about 40% slower (an extra iteration)\n // const\n // onlyInA = a.filter(item => !b.includes(item)),\n // onlyInB = b.filter(item => !a.includes(item)),\n // inBoth = a.filter(item => b.includes(item));\n // Quick bailout for nonexisting target array\n if (!b) {\n return useRelativeNaming ? {\n toAdd: a,\n toRemove: [],\n toKeep: []\n } : {\n onlyInA: a,\n onlyInB: [],\n inBoth: []\n };\n }\n const onlyInA = [],\n onlyInB = [],\n inBoth = new Set(),\n bSet = new Set(b);\n for (let i = 0; i < a.length; i++) {\n const item = a[i];\n if (bSet.has(item)) {\n inBoth.add(item);\n } else {\n onlyInA.push(item);\n }\n }\n for (let i = 0; i < b.length; i++) {\n const item = b[i];\n if (!inBoth.has(item)) {\n onlyInB.push(item);\n }\n }\n if (useRelativeNaming) {\n return {\n toAdd: onlyInA,\n toRemove: onlyInB,\n toKeep: inBoth\n };\n }\n return {\n onlyInA,\n onlyInB,\n inBoth: [...inBoth]\n };\n }\n /**\n * Returns the passed object wrapped in an array. Special handling of the following cases:\n * * Passing an array returns it as is\n * * Passing a `Set` returns it converted to an Array\n * * Passing `null`/`undefined` returns the passed value\n *\n * ```javascript\n * const records = ArrayHelper.asArray(record);\n *\n * // { id : 1 } -> [{ id : 1 }]\n * // [{ id : 1 }] -> [{ id : 1 }]\n * ```\n *\n * @param {*} arrayOrObject\n * @returns {Array|null}\n * @internal\n */\n static asArray(arrayOrObject) {\n if (arrayOrObject == null) {\n return arrayOrObject;\n }\n if (arrayOrObject instanceof Set) {\n return Array.from(arrayOrObject);\n }\n return Array.isArray(arrayOrObject) ? arrayOrObject : [arrayOrObject];\n }\n /**\n * Identity function that returns its input.\n * @param {*} Any value\n * @returns {*} The input value\n * @internal\n */\n static identity(x) {\n return x;\n }\n /**\n * Transform an array into a key:value dictionary using the specified\n * key and value getters. Does not group values, so only one result will\n * appear in the output for a given key.\n *\n * ```javascript\n * const input = [{\n * id: '1',\n * other: 'one'\n * },{\n * id: '2',\n * other: 'two'\n * }];\n *\n * keyBy(input, rec => rec.id)\n *\n * // {\n * // '1': { id: '1', other: 'one' },\n * // '2': { id: '2', other: 'two' }\n * // }\n * ```\n *\n * @param {Object[]} array Array from which to build dictionary\n * @param {Function|String} getKey Function to produce the key for a given array entry, or a string property name to read\n * @param {Function} getValue Optional function to transform array elements. Defaults to returning the element itself\n * @returns {Object} A key->value dictionary with keys as returned by `getKey` and values returned by `getValue`\n * @internal\n */\n static keyBy(array, keyGetter, valueGetter = ArrayHelper.identity) {\n const getKey = typeof keyGetter === 'string' ? o => o === null || o === void 0 ? void 0 : o[keyGetter] : keyGetter,\n getValue = typeof valueGetter === 'string' ? o => o === null || o === void 0 ? void 0 : o[valueGetter] : valueGetter;\n return array.reduce((dict, next) => {\n dict[getKey(next)] = getValue(next);\n return dict;\n }, {});\n }\n}\nArrayHelper._$name = 'ArrayHelper';\n\n/**\n * @module Core/helper/FunctionHelper\n */\nconst commaSepRe = /,\\s*/,\n decompiledSym = Symbol('decompiled'),\n // [async] p => ...\n fnRe1 = /^\\s*(async\\s+)?([a-z_]\\w*)\\s*=>([\\s\\S]+)$/i,\n // [async] (p1?[, px]*) => ...\n fnRe2 = /^\\s*(async\\s*)?\\s*\\(((?:[a-z_]\\w*(?:, [a-z_]\\w*)*)?)\\)\\s+=>([\\s\\S]+)$/i,\n // [async] [function] [name] (p1?[, px]*) ...\n fnRe3 = /^(\\s*async)?(?:\\s*function)?(?:\\s*([a-z_]\\w*))?\\s*\\(((?:[a-z_]\\w*(?:, [a-z_]\\w*)*)?)\\)([\\s\\S]+)$/i,\n {\n hasOwnProperty: hasOwnProperty$4\n } = Object.prototype;\n/**\n * Provides functionality for working with functions\n * @internal\n */\nclass FunctionHelper {\n /**\n * Inserts a function after the specified `method` is called on an `object`. To remove this hook, invoke the\n * function returned by this method.\n * ```\n * class A {\n * method() {\n * console.log('method');\n * }\n * }\n *\n * let instance = new A();\n *\n * let detach = FunctionHelper.after(instance, 'method', () => { console.log('after') });\n *\n * instance.method();\n * > method\n * > after\n *\n * detach();\n * instance.method();\n * > method\n * ```\n * The value returned by the original method is passed as the first argument to `fn` followed by all the arguments\n * passed by the caller.\n *\n * If `fn` returns a value (not `undefined`), that value is returned from the method call instead of the value\n * returned by the original method.\n * ```\n * class A {\n * method(x) {\n * console.log('method', x);\n * return x * 2\n * }\n * }\n *\n * let instance = new A();\n *\n * let detach = FunctionHelper.after(instance, 'method', (ret, x) => {\n * console.log('after', ret, x);\n * return x / 2;\n * });\n *\n * console.log(instance.method(50));\n * > method 50\n * > after 100 50\n * > 25\n *\n * detach();\n * console.log(instance.method(50));\n * > method 50\n * > 100\n * ```\n *\n * @param {Object} object The object to hook.\n * @param {String} method The name of the method on `object` to hook.\n * @param {Function|String} fn The function or method name (on `thisObj`) to call after `method`.\n * @param {Object} [thisObj] The `this` pointer value for calling `fn`.\n * @param {Object} [options] Additional options\n * @param {Boolean} [options.return=true] Specify `false` to not include the return value of the hooked method as\n * the first argument to `fn`.\n * @returns {Function} The function to call to remove the hook.\n */\n static after(object, method, fn, thisObj, options) {\n const named = typeof fn === 'string',\n withReturn = (options === null || options === void 0 ? void 0 : options.return) !== false,\n hook = (...args) => {\n const\n // if object.destroy() occurs, our hook will be removed, so this fn won't be called in that case\n origResult = hook.$nextHook.call(object, ...args),\n hookResult = thisObj !== null && thisObj !== void 0 && thisObj.isDestroyed ? undefined : withReturn ? named ? thisObj[fn](origResult, ...args) : fn.call(thisObj, origResult, ...args) : named ? thisObj[fn](...args) : fn.call(thisObj, ...args);\n return hookResult === undefined ? origResult : hookResult;\n };\n return FunctionHelper.hookMethod(object, method, hook);\n }\n /**\n * Inserts a function before the specified `method` is called on an `object`. To remove this hook, invoke the\n * function returned by this method.\n * ```\n * class A {\n * method() {\n * console.log('method');\n * }\n * }\n *\n * let instance = new A();\n *\n * let detach = FunctionHelper.before(instance, 'method', () => { console.log('before') });\n *\n * instance.method();\n * > before\n * > method\n *\n * detach();\n * instance.method();\n * > method\n * ```\n * If `fn` returns `false`, the original method is not invoked and `false` is returned to the caller.\n * ```\n * class A {\n * method(x) {\n * console.log('method', x);\n * return x * 2;\n * }\n * }\n *\n * let instance = new A();\n *\n * let detach = FunctionHelper.before(instance, 'method', x => {\n * console.log('before', x);\n * return false;\n * });\n *\n * console.log(instance.method(50));\n * > before 50\n * > false\n *\n * detach();\n * console.log(instance.method(50));\n * > method 50\n * > 100\n * ```\n *\n * @param {Object} object The object to hook.\n * @param {String} method The name of the method on `object` to hook.\n * @param {Function|String} fn The function or method name (on `thisObj`) to call before `method`.\n * @param {Object} [thisObj] The `this` pointer value for calling `fn`.\n * @returns {Function} The function to call to remove the hook.\n */\n static before(object, method, fn, thisObj) {\n const named = typeof fn === 'string',\n hook = (...args) => {\n const ret = thisObj !== null && thisObj !== void 0 && thisObj.isDestroyed ? 0 : named ? thisObj[fn](...args) : fn.call(thisObj, ...args);\n return ret === false ? ret : hook.$nextHook.call(object, ...args);\n };\n return FunctionHelper.hookMethod(object, method, hook);\n }\n static curry(func) {\n return function curried(...args) {\n if (args.length >= func.length) {\n return func.apply(this, args);\n } else {\n return function (...args2) {\n return curried.apply(this, args.concat(args2));\n };\n }\n };\n }\n static bindAll(obj) {\n for (const key in obj) {\n if (typeof obj[key] === 'function') {\n obj[key] = obj[key].bind(obj);\n }\n }\n }\n /**\n * Returns a function which calls the passed `interceptor` function first, and the passed `original` after\n * as long as the `interceptor` does not return `false`.\n * @param {Function} original The function to call second.\n * @param {Function} interceptor The function to call first.\n * @param {Object} [thisObj] The `this` reference when the functions are called.\n * @returns {Function} A function which yields the return value from the `original` function **if it was called**, else `false`.\n */\n static createInterceptor(original, interceptor, thisObj) {\n return (...args) => {\n if (interceptor.call(thisObj, ...args) !== false) {\n return original.call(thisObj, ...args);\n }\n return false;\n };\n }\n /**\n * Returns a function which calls the passed `sequence` function after calling\n * the passed `original`.\n * @param {Function} original The function to call first.\n * @param {Function} sequence The function to call second.\n * @param {Object} [thisObj] The `this` reference when the functions are called.\n * @returns {Function} A function which yields the value returned from the sequence if it returned a value, else the return\n * value from the original function.\n */\n static createSequence(original, sequence, thisObj) {\n return (...args) => {\n const origResult = original.call(thisObj, ...args),\n sequenceResult = sequence.call(thisObj, ...args);\n return sequenceResult === undefined ? origResult : sequenceResult;\n };\n }\n /**\n * Create a \"debounced\" function which will call on the \"leading edge\" of a timer period.\n * When first invoked will call immediately, but invocations after that inside its buffer\n * period will be rejected, and *one* invocation will be made after the buffer period has expired.\n *\n * This is useful for responding immediately to a first mousemove, but from then on, only\n * calling the action function on a regular timer while the mouse continues to move.\n *\n * @param {Function} fn The function to call.\n * @param {Number} buffer The milliseconds to wait after each execution before another execution takes place.\n * @param {Object} [thisObj] `this` reference for the function.\n * @param {Array} [extraArgs] The argument list to append to those passed to the function.\n * @param {Function} [alt] A function to call when the invocation is rejected due to buffer time not having expired.\n * @returns {Function} A function which calls the passed `fn` only if at least the passed `buffer`\n * milliseconds has elapsed since its last invocation.\n */\n static createThrottled(fn, buffer, thisObj, extraArgs, alt) {\n let lastCallTime = -Number.MAX_VALUE,\n callArgs,\n timerId;\n const invoke = () => {\n timerId = 0;\n lastCallTime = performance.now();\n callArgs.push.apply(callArgs, extraArgs);\n fn.apply(thisObj, callArgs);\n },\n result = function (...args) {\n const elapsed = performance.now() - lastCallTime;\n callArgs = args;\n // If it's been more then the buffer period since we invoked, we can call it now\n if (elapsed >= buffer) {\n clearTimeout(timerId);\n invoke();\n }\n // Otherwise, kick off a timer for the requested period.\n else {\n if (!timerId) {\n timerId = setTimeout(invoke, buffer - elapsed);\n }\n if (alt) {\n callArgs.push.apply(callArgs, extraArgs);\n alt.apply(thisObj, callArgs);\n }\n }\n };\n result.cancel = () => clearTimeout(timerId);\n return result;\n }\n /**\n * Create a \"debounced\" function which will call on the \"trailing edge\" of a timer period.\n * When first invoked will wait until the buffer period has expired to call the function, and\n * more calls within that time will restart the timer.\n *\n * This is useful for responding to keystrokes, but deferring action until the user pauses typing.\n *\n * @param {Function} fn The function to call.\n * @param {Number} buffer The milliseconds to wait after each execution before another execution takes place.\n * @param {Object} [thisObj] `this` reference for the function.\n * @param {Array} [args] The argument list to append to those passed to the function.\n * @returns {Function} A function which calls the passed `fn` when at least the passed `buffer`\n * milliseconds has elapsed since its last invocation.\n */\n static createBuffered(fn, buffer, thisObj, args) {\n let callArgs, timerId;\n const invoke = () => {\n timerId = 0;\n result.isPending = false;\n callArgs.push.apply(callArgs, args);\n fn.apply(thisObj, callArgs);\n },\n result = function (...args) {\n callArgs = args;\n // Cancel any impending invocation. It's pushed out for ms from each call\n if (timerId) {\n clearTimeout(timerId);\n }\n result.isPending = true;\n timerId = setTimeout(invoke, buffer);\n };\n result.cancel = () => {\n result.isPending = false;\n clearTimeout(timerId);\n };\n return result;\n }\n static decompile(fn) {\n if (!(decompiledSym in fn)) {\n var _body, _body2;\n const code = fn.toString();\n let m = fnRe1.exec(code),\n args,\n body,\n name,\n decompiled,\n t;\n if (m) {\n // [async] p => ...\n // [1] [2] [3]\n args = [m[2]];\n body = m[3];\n } else if (m /* assignment */ = fnRe2.exec(code)) {\n // [async] (p1?[, px]*) => ...\n // [1] [2] [3]\n t = m[2].trim();\n args = t ? t.split(commaSepRe) : [];\n body = m[3];\n } else if (m /* assignment */ = fnRe3.exec(code)) {\n // [async] [function] [name] (p1?[, px]*) ...\n // [1] [2] [3] [4]\n name = m[2];\n t = m[3].trim();\n args = t ? t.split(commaSepRe) : [];\n body = m[4];\n }\n body = (_body = body) === null || _body === void 0 ? void 0 : _body.trim();\n fn[decompiledSym] = decompiled = m && {\n args,\n async: Boolean(m[1]),\n body: (_body2 = body) !== null && _body2 !== void 0 && _body2.startsWith('{') ? body.substring(1, body.length - 1).trim() : body\n };\n if (name) {\n decompiled.name = name;\n }\n }\n return fn[decompiledSym];\n }\n static hookMethod(object, method, hook) {\n hook.$nextHook = object[method];\n object[method] = hook;\n return () => {\n // Object will have no hooks on the instance if it is destroyed (perhaps other reasons too)\n if (hasOwnProperty$4.call(object, method)) {\n let f = object[method],\n next;\n if (f === hook) {\n var _Object$getPrototypeO;\n // When this is the outermost hook, we may be the last hook. If $nextHook is found on the object's\n // prototype, simply delete the slot to expose it. Otherwise, there's another hook, so make it the\n // outermost.\n if (((_Object$getPrototypeO = Object.getPrototypeOf(object)) === null || _Object$getPrototypeO === void 0 ? void 0 : _Object$getPrototypeO[method]) === hook.$nextHook) {\n delete object[method];\n } else {\n object[method] = hook.$nextHook;\n }\n } else {\n // Not being the outermost hook means we have outer hooks that should chain to the one we want to\n // remove. Be cautious because the object could be destroyed.\n for (; next = (_f = f) === null || _f === void 0 ? void 0 : _f.$nextHook; f = next) {\n var _f;\n if (next === hook) {\n f.$nextHook = hook.$nextHook;\n break;\n }\n }\n }\n }\n };\n }\n /**\n * Protects the specified `method` on a given `object` such that calling it will not throw exceptions.\n * @param {Object} object The object whose method is to be protected.\n * @param {String} method The name of the method to protect.\n * @param {Function} [handler] An optional function to call for any thrown exceptions.\n * @internal\n */\n static noThrow(object, method, handler) {\n const fn = object[method];\n object[method] = (...args) => {\n try {\n return fn.apply(object, args);\n } catch (e) {\n return handler === null || handler === void 0 ? void 0 : handler(e);\n }\n };\n }\n static returnTrue() {\n return true;\n }\n static animate(duration, fn, thisObj, easing = 'linear') {\n let cancel = false;\n const result = new Promise(resolve => {\n const start = performance.now(),\n iterate = () => {\n const progress = Math.min((performance.now() - start) / duration, 1),\n delayable = thisObj && thisObj.setTimeout ? thisObj : globalThis;\n if (!cancel) {\n if (fn.call(thisObj, this.easingFunctions[easing](progress)) === false) {\n resolve();\n }\n }\n if (cancel || progress === 1) {\n // Push resolution into the next animation frame so that\n // this frame completes before the resolution handler runs.\n delayable.requestAnimationFrame(() => resolve());\n } else {\n delayable.requestAnimationFrame(iterate);\n }\n };\n iterate();\n });\n result.cancel = () => {\n cancel = true;\n return false;\n };\n return result;\n }\n}\n/* eslint-disable */\nconst half = 0.5,\n e1 = 1.70158,\n e2 = 7.5625,\n e3 = 1.525,\n e4 = 2 / 2.75,\n e5 = 2.25 / 2.75,\n e6 = 1 / 2.75,\n e7 = 1.5 / 2.75,\n e8 = 2.5 / 2.75,\n e9 = 2.625 / 2.75,\n e10 = 0.75,\n e11 = 0.9375,\n e12 = 0.984375,\n s1 = 1.70158,\n s2 = 1.70158;\nFunctionHelper.easingFunctions = {\n linear: t => t,\n easeInQuad: t => Math.pow(t, 2),\n easeOutQuad: t => -(Math.pow(t - 1, 2) - 1),\n easeInOutQuad: t => (t /= half) < 1 ? half * Math.pow(t, 2) : -half * ((t -= 2) * t - 2),\n easeInCubic: t => Math.pow(t, 3),\n easeOutCubic: t => Math.pow(t - 1, 3) + 1,\n easeInOutCubic: t => (t /= half) < 1 ? half * Math.pow(t, 3) : half * (Math.pow(t - 2, 3) + 2),\n easeInQuart: t => Math.pow(t, 4),\n easeOutQuart: t => -(Math.pow(t - 1, 4) - 1),\n easeInOutQuart: t => (t /= half) < 1 ? half * Math.pow(t, 4) : -half * ((t -= 2) * Math.pow(t, 3) - 2),\n easeInQuint: t => Math.pow(t, 5),\n easeOutQuint: t => Math.pow(t - 1, 5) + 1,\n easeInOutQuint: t => (t /= half) < 1 ? half * Math.pow(t, 5) : half * (Math.pow(t - 2, 5) + 2),\n easeInSine: t => -Math.cos(t * (Math.PI / 2)) + 1,\n easeOutSine: t => Math.sin(t * (Math.PI / 2)),\n easeInOutSine: t => -half * (Math.cos(Math.PI * t) - 1),\n easeInExpo: t => t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => t === 0 ? 0 : t === 1 ? 1 : (t /= half) < 1 ? half * Math.pow(2, 10 * (t - 1)) : half * (-Math.pow(2, -10 * --t) + 2),\n easeInCirc: t => -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - Math.pow(t - 1, 2)),\n easeInOutCirc: t => (t /= half) < 1 ? -half * (Math.sqrt(1 - t * t) - 1) : half * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeOutBounce: t => t < e6 ? e2 * t * t : t < e4 ? e2 * (t -= e7) * t + e10 : t < e8 ? e2 * (t -= e5) * t + e11 : e2 * (t -= e9) * t + e12,\n easeInBack: t => t * t * ((e1 + 1) * t - e1),\n easeOutBack: t => (t = t - 1) * t * ((e1 + 1) * t + e1) + 1,\n easeInOutBack: t => {\n let v1 = s1;\n return (t /= half) < 1 ? half * (t * t * (((v1 *= e3) + 1) * t - v1)) : half * ((t -= 2) * t * (((v1 *= e3) + 1) * t + v1) + 2);\n },\n elastic: t => -1 * Math.pow(4, -8 * t) * Math.sin((t * 6 - 1) * (2 * Math.PI) / 2) + 1,\n swingFromTo: t => {\n let v2 = s2;\n return (t /= half) < 1 ? half * (t * t * (((v2 *= e3) + 1) * t - v2)) : half * ((t -= 2) * t * (((v2 *= e3) + 1) * t + v2) + 2);\n },\n swingFrom: t => t * t * ((e1 + 1) * t - e1),\n swingTo: t => (t -= 1) * t * ((e1 + 1) * t + e1) + 1,\n bounce: t => t < e6 ? e2 * t * t : t < e4 ? e2 * (t -= e7) * t + e10 : t < e8 ? e2 * (t -= e5) * t + e11 : e2 * (t -= e9) * t + e12,\n bouncePast: t => t < e6 ? e2 * t * t : t < e4 ? 2 - (e2 * (t -= e7) * t + e10) : t < e8 ? 2 - (e2 * (t -= e5) * t + e11) : 2 - (e2 * (t -= e9) * t + e12),\n easeFromTo: t => (t /= half) < 1 ? half * Math.pow(t, 4) : -half * ((t -= 2) * Math.pow(t, 3) - 2),\n easeFrom: t => Math.pow(t, 4),\n easeTo: t => Math.pow(t, 0.25)\n};\nFunctionHelper._$name = 'FunctionHelper';\n\n/**\n * @module Core/mixin/Events\n */\nconst\n // Used by the config system to flatten configs from the class hierarchy.\n // In this case, a pure merge is not wanted. Listener definitions from\n // every class level are collected up into an array.\n // addListener iterates any passed array, adding each element.\n {\n isArray: isArray$1\n } = Array,\n {\n hasOwnProperty: hasOwnProperty$3\n } = Object.prototype,\n // Used to distinguish event names from listener options in addListener object config.\n specialProperties = {\n thisObj: 1,\n detachable: 1,\n once: 1,\n detacher: 1,\n prio: 1,\n args: 1,\n expires: 1,\n buffer: 1,\n throttle: 1,\n name: 1\n },\n priorityComparator = (a, b) => b.prio - a.prio;\n/**\n * Mix this into another class to enable event handling.\n *\n * ## Basic usage\n * Listeners can be added either through config:\n *\n * ```javascript\n * let button = new Button({\n * listeners: {\n * click: () => {},\n * press: () => {},\n * ...\n * }\n * });\n * ```\n *\n * *NOTE*: Do not reuse listeners config object, use new every time:\n * ```javascript\n * // wrong\n * let config = { click : () => {} }\n * new Button({\n * listeners : config\n * })\n * new Button({\n * listeners : config\n * })\n * // right\n * new Button({\n * listeners : { click : () => {} }\n * })\n * new Button({\n * listeners : { click : () => {} }\n * })\n * ```\n *\n * Or by calling on()/addListener():\n *\n * ```javascript\n * let button = new Button();\n *\n * button.addListener('press', () => {});\n * // on is an alias for addListener\n * button.on('click', () => {});\n * ```\n *\n * This style also accepts multiple listeners in same way as when using config:\n *\n * ```javascript\n * button.on({\n * click: () => {},\n * press: () => {},\n * ...\n * });\n * ```\n *\n * ## Listener options\n * ### Once\n * Listeners can be configured to automatically deregister after first trigger by specifying config option `once`:\n *\n * ```javascript\n * button.on({\n * click: () => {},\n * once: true\n * });\n * ```\n *\n * ### Priority\n * Specifying priority affects the order in which listeners are called when triggering an event. Higher priorities will be\n * called before lower. Default value is 0.\n *\n * ```javascript\n * button.on({\n * click: this.onClick,\n * prio: 1\n * });\n * ```\n *\n * ### This reference\n * If desired, you can specify thisObj when configuring listeners. There is no need if you are using arrow functions as\n * listeners, but might be handy in other cases. Of course, you can also use bind to set `this` reference.\n *\n * ```javascript\n * button.on({\n * click: this.onClick,\n * thisObj: this\n * });\n *\n * // or\n *\n * button.on({\n * click: this.onClick.bind(this)\n * });\n * ```\n *\n * ### Buffering\n * By specifying a `buffer` events that fire frequently can be grouped together and delayed. A handler for the event will be called once only, when no new event has been fired during the specified buffer time:\n *\n * ```javascript\n * button.on({\n * click : this.onClick,\n * buffer : 200 // in milliseconds\n * });\n * ```\n * In this example, if a user clicked the button 6 times very fast (<200ms between each click),\n * the `this.onClick` handler would be called only once 200 milliseconds after the last click.\n *\n * ### Throttling\n * Create a \"debounced\" function which will call on the \"leading edge\" of a timer period.\n * When first invoked will call immediately, but invocations after that inside its buffer\n * period will be rejected, and *one* invocation will be made after the buffer period has expired.\n *\n * This is useful for responding immediately to a first mousemove, but from then on, only\n * calling the action function on a regular timer while the mouse continues to move.\n * ```javascript\n * button.on({\n * click : this.onClick,\n * throttle : 200 // in milliseconds\n * });\n * ```\n * In this example, if a user clicked the button 6 times very fast, the `this.onClick` handler would be called once immediately on the first click and a second time 200 milliseconds after the **first** click.\n * So in reality the `click` event handler will be called every 200ms independent of amount of click in a middle, if the event was triggered at least once during the `throttle` timeout.\n *\n * ### Detacher\n * A convenient way of unregistering events is to use a detacher, a function returned when adding listeners that you\n * call later to deregister them. As of version 1.0, detachable defaults to true.\n *\n * ```javascript\n * let detacher = button.on({\n * click: () => {},\n * press: () => {},\n * detachable: true\n * });\n *\n * // when you want to detach, for example in destroy()\n * detacher();\n * ```\n *\n * ### Auto detaching\n * When listeners are bound to a class instance using `thisObj`, the `thisObj`'s `doDestroy` method\n * is overridden to remove the listeners before calling the overridden doDestroy.\n *\n * ```javascript\n * class MyClass extends Base {\n * construct() {\n * let button = new Button({\n * listeners: {\n * click: () => {},\n * thisObj: this\n * }\n * });\n * }\n *\n * doDestroy() {\n * // clean up stuff\n * }\n * }\n *\n * let myObj = new MyClass();\n * // clean up, also removes listeners\n * myObj.destroy();\n * ```\n *\n * ### On-functions\n * When mixing Events into another class it can be configured to call on-functions when events are triggered.\n * On-functions are functions named 'onEventName', for example 'onClick', 'onPress' declared on the class triggering\n * the event.\n *\n * ```javascript\n * // mix Events in with on-functions activated\n * let button = new Button({\n * callOnFunctions: true,\n *\n * onClick: () => {}\n * });\n *\n * // or add a getter in class declaration\n * ```\n *\n * Returning `false` from an on-function will prevent triggering listeners for the event.\n *\n * ### Catching all events\n * By specifying a listener for {@link #event-catchAll catchAll} a function can be notified when any event is triggered:\n *\n * ```javascript\n * const button = new Button({\n * listeners : {\n * catchAll(event) {\n * // All events on the button will pass through here\n * }\n * }\n * });\n * ```\n *\n * ## Preventable events\n *\n * By returning `false` from a listener for an event documented as `preventable` the action that would otherwise be\n * executed after the event is prevented. These events are usually named `beforeXX`, for example `beforeRemove`,\n * `beforeDragStart` etc.\n *\n *
Note that Angular does not support return values from listeners. Instead, assign to\n * event.returnValue as shown in the Angular snippet below
\n *\n * {@frameworktabs}\n * {@js}\n * ```javascript\n * taskBoard.on({\n * beforeColumnDrag({ columnRecord }) {\n * if (columnRecord.locked) {\n * return false;\n * }\n * }\n * });\n * ```\n * {@endjs}\n * {@react}\n * ```jsx\n * const App = props => {\n * function onBeforeColumnDrag({ columnRecord }) {\n * if (columnRecord.locked) {\n * return false;\n * }\n * }\n *\n * return (\n * <>\n * \n * \n * )\n * }\n * ```\n * {@endreact}\n * {@vue}\n * ```html\n * \n * ```\n * ```javascript\n * export default {\n * methods : {\n * onBeforeColumnDrag({ columnRecord }) {\n * if (columnRecord.locked) {\n * return false;\n * }\n * }\n * }\n * }\n * ```\n * {@endvue}\n * {@angular}\n * ```html\n * \n * ```\n * ```typescript\n * export class AppComponent {\n * onBeforeColumnDrag({ event }: { event: any }): void {\n * event.returnValue = !event.columnRecord.locked;\n * }\n * }\n * ```\n * {@endangular}\n * {@endframeworktabs}\n *\n * @mixin\n */\nvar Events = (Target => class Events extends (Target || Base$1) {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"eventsSuspended\", null);\n }\n static get $name() {\n return 'Events';\n }\n //region Events\n /**\n * Fires before an object is destroyed.\n * @event beforeDestroy\n * @param {Object} source The Object that is being destroyed.\n */\n /**\n * Fires when an object is destroyed.\n * @event destroy\n * @param {Object} source The Object that is being destroyed.\n */\n /**\n * Fires when any other event is fired from the object.\n *\n * **Note**: `catchAll` is fired for both public and private events. Please rely on the public events only.\n * @event catchAll\n * @param {Object} event The Object that contains event details\n * @param {String} event.type The type of the event which is caught by the listener\n */\n //endregion\n static get declarable() {\n return [\n /**\n * The list of deprecated events as an object, where `key` is an event name which is deprecated and\n * `value` is an object which contains values for\n * {@link Core.helper.VersionHelper#function-deprecate-static VersionHelper}:\n * - product {String} The name of the product;\n * - invalidAsOfVersion {String} The version where the offending code is invalid (when any compatibility\n * layer is actually removed);\n * - message {String} Warning message to show to the developer using a deprecated API;\n *\n * For example:\n *\n * ```javascript\n * return {\n * click : {\n * product : 'Grid',\n * invalidAsOfVersion : '1.0.0',\n * message : 'click is deprecated!'\n * }\n * }\n * ```\n *\n * @name deprecatedEvents\n * @returns {Object}\n * @static\n * @internal\n */\n 'deprecatedEvents'];\n }\n static setupDeprecatedEvents(cls, meta) {\n const all = meta.getInherited('deprecatedEvents'),\n add = cls.deprecatedEvents;\n for (const eventName in add) {\n // Event names are case-insensitive so build our map using toLowerCased names (but keep true case too):\n all[eventName.toLowerCase()] = all[eventName] = add[eventName];\n }\n }\n //region Config\n static get configurable() {\n return {\n /**\n * Set to true to call onXXX method names (e.g. `onShow`, `onClick`), as an easy way to listen for events.\n *\n * ```javascript\n * const container = new Container({\n * callOnFunctions : true\n *\n * onHide() {\n * // Do something when the 'hide' event is fired\n * }\n * });\n * ```\n *\n * @config {Boolean} callOnFunctions\n * @category Misc\n * @default false\n */\n /**\n * The listener set for this object.\n *\n * Listeners can be specified in target class config and they will be merged with any listeners specified in\n * the instantiation config. Class listeners will be fired first:\n *\n * ```javascript\n * class MyStore extends Store({\n * static get configurable() {\n * return {\n * listeners : {\n * myCustomEvent() {\n * },\n * load : {\n * prio : 10000,\n * fn() { // this load listener handles things first }\n * }\n * }\n * }\n * }\n * });\n *\n * let store = new MyStore({\n * listeners: {\n * load: () => { // This load listener runs after the class's },\n * ...\n * }\n * });\n * ```\n *\n * @config {Object}\n * @category Common\n */\n listeners: {\n value: null,\n $config: {\n merge(newValue, currentValue) {\n if (newValue !== null) {\n if (!newValue) {\n return currentValue;\n }\n if (currentValue) {\n newValue = newValue ? [newValue] : [];\n newValue.push[isArray$1(currentValue) ? 'apply' : 'call'](newValue, currentValue);\n }\n }\n return newValue;\n }\n }\n },\n /**\n * An object where property names with a truthy value indicate which events should bubble up the ownership\n * hierarchy when triggered.\n *\n * ```javascript\n * const container = new Container({\n * items : [\n * { type : 'text', bubbleEvents : { change : true }}\n * ],\n *\n * listeners : {\n * change() {\n * // Will catch change event from the text field\n * }\n * }\n * });\n * ```\n *\n * @config {Object}\n * @category Misc\n */\n bubbleEvents: null\n };\n }\n destroy() {\n this.trigger('beforeDestroy');\n super.destroy();\n }\n //endregion\n //region Init\n construct(config, ...args) {\n var _config;\n // Configured listeners use this as the thisObj\n if (this.configuredListeners /* assignment */ = (_config = config) === null || _config === void 0 ? void 0 : _config.listeners) {\n // We have to copy in case listeners have been forked\n config = Objects.assign({}, config);\n delete config.listeners;\n }\n super.construct(config, ...args);\n // Apply configured listeners after construction.\n // Note that some classes invoke this during parts of their construction.\n // Store invokes this prior to setting data so that observers are notified of data load.\n this.processConfiguredListeners();\n }\n processConfiguredListeners() {\n // This can only happen once\n if (this.configuredListeners) {\n const me = this,\n {\n isConfiguring\n } = me;\n // If called from config ingestion during configuration, listeners must be added\n // so temporarily clear the isConfiguring flag.\n me.isConfiguring = false;\n me.listeners = me.configuredListeners;\n me.configuredListeners = null;\n me.isConfiguring = isConfiguring;\n }\n }\n /**\n * Auto detaches listeners registered from start, if set as detachable\n * @internal\n */\n doDestroy() {\n this.trigger('destroy');\n this.removeAllListeners();\n super.doDestroy();\n }\n static setupClass(meta) {\n super.setupClass(meta);\n Events.prototype.onListen.$nullFn = true;\n Events.prototype.onUnlisten.$nullFn = true;\n }\n //endregion\n //region Listeners\n /**\n * Adds an event listener. This method accepts parameters in the following format:\n *\n * ```javascript\n * myObject.addListener({\n * thisObj : this, // The this reference for the handlers\n * eventname2 : 'functionName' // Resolved at invocation time using the thisObj,\n * otherevent : {\n * fn : 'handlerFnName',\n * once : true // Just this handler is auto-removed on fire\n * },\n * yetanother : {\n * fn : 'yetAnotherHandler',\n * args : [ currentState1, currentState2 ] // Capture info to be passed to handler\n * },\n * prio : 100 // Higher prio listeners are called before lower\n * });\n * ```\n *\n * When listeners have a `thisObj` option, they are linked to the lifecycle of that object.\n * When it is destroyed, those listeners are removed.\n *\n * A simpler signature may be used when only adding a listener for one event and no extra options\n * (such as `once` or `delay`) are required:\n *\n * ```javascript\n * myObject.addListener('click', myController.handleClicks, myController);\n * ```\n *\n * The args in this simple case are `eventName`, `handler` and `thisObj`\n *\n * @param {Object|String} config An object containing listener definitions, or the event name to listen for\n * @param {Object} [config.thisObj] The `this` reference for all listeners.\n * (May be overridden if a handler is specified in object form)\n * @param {Boolean} [config.once] Specify as `true` to remove the listener as soon as it is invoked.\n * @param {Number|Object} [config.expires] The listener only waits for a specified time before\n * being removed. The value may be a number or an object containing an expiry handler.\n * @param {Number} [config.expires.delay] How long to wait for the event for.\n * @param {String|Function} [config.expires.alt] The function to call when the listener expires\n * **without having been triggered**.\n * @param {Object[]} [config.args] An array of arguments to be passed to the handler before the event object.\n * @param {Number} [config.prio] The priority for all listeners; higher priority listeners are called before lower.\n * @param {Number} [config.buffer] A buffer time in milliseconds to wait after last event trigger to call the handler, to reduce the amount of handler calls for frequent events.\n * @param {Number} [config.throttle] A millisecond timeout value to throttle event triggering. With it specified a handler\n * will be called once immediately and then all following calls during the timeout period will be grouped together into one call once per throttle period.\n * @param {Object|Function} [thisObj] Default `this` reference for all listeners in the config object, or the handler\n * function to call if providing a string as the first arg.\n * @param {Object} [oldThisObj] The `this` reference if the old signature starting with a string event name is used..\n * @returns {Function} Returns a detacher function unless configured with `detachable: false`. Call detacher to remove listeners\n */\n addListener(config, thisObj, oldThisObj) {\n if (isArray$1(config)) {\n for (let i = 0, {\n length\n } = config; i < length; i++) {\n this.addListener(config[i], thisObj);\n }\n return;\n }\n const me = this,\n deprecatedEvents = me.$meta.getInherited('deprecatedEvents');\n if (typeof config === 'string') {\n // arguments[2] is thisObj if (eventname, handler, thisObj) form called.\n // Note that the other side of the if compares to undefined, so this will work.\n return me.addListener({\n [config]: thisObj,\n detachable: thisObj.detachable !== false,\n thisObj: oldThisObj\n });\n } else {\n // Capture the default thisObj.\n thisObj = config.thisObj = config.thisObj !== undefined ? config.thisObj : thisObj;\n for (const key in config) {\n // Skip special properties or events without handlers (convenient syntax with optional handlers)\n if (!specialProperties[key] && config[key] != null) {\n // comparing should be case insensitive\n const\n // comparing should be case insensitive\n eventName = key.toLowerCase(),\n deprecatedEvent = deprecatedEvents === null || deprecatedEvents === void 0 ? void 0 : deprecatedEvents[eventName],\n events = me.eventListeners || (me.eventListeners = {}),\n listenerSpec = config[key],\n expires = listenerSpec.expires || config.expires,\n listener = {\n fn: typeof listenerSpec === 'object' ? listenerSpec.fn : listenerSpec,\n thisObj: listenerSpec.thisObj !== undefined ? listenerSpec.thisObj : thisObj,\n args: listenerSpec.args || config.args,\n prio: listenerSpec.prio !== undefined ? listenerSpec.prio : config.prio !== undefined ? config.prio : 0,\n once: listenerSpec.once !== undefined ? listenerSpec.once : config.once !== undefined ? config.once : false,\n buffer: listenerSpec.buffer || config.buffer,\n throttle: listenerSpec.throttle || config.throttle,\n catchAll: key === 'catchAll'\n };\n if (deprecatedEvent) {\n const {\n product,\n invalidAsOfVersion,\n message\n } = deprecatedEvent;\n VersionHelper.deprecate(product, invalidAsOfVersion, message);\n }\n if (expires) {\n // Extract expires : { delay : 100, alt : 'onExpireFn' }\n const {\n alt\n } = expires,\n delay = alt ? expires.delay : expires,\n name = config.name || key,\n fn = () => {\n me.un(eventName, listener);\n // If we make it here and the handler has not been called, invoke the alt handler\n if (alt && !listener.called) {\n me.callback(alt, thisObj);\n }\n };\n if (me.isDelayable) {\n me.setTimeout({\n fn,\n name,\n cancelOutstanding: true,\n delay\n });\n } else {\n globalThis.setTimeout(fn, delay);\n }\n }\n let listeners = events[eventName] || (events[eventName] = []);\n if (listeners.$firing) {\n events[eventName] = listeners = listeners.slice();\n }\n // Insert listener directly in prio order\n listeners.splice(ArrayHelper.findInsertionIndex(listener, listeners, priorityComparator, listeners.length), 0, listener);\n if (!me.onListen.$nullFn && listeners.length < 2) {\n me.onListen(eventName);\n }\n }\n }\n if (config.relayAll) {\n me.relayAll(config.relayAll);\n }\n // Hook into the thisObj's destruction sequence to remove these listeners.\n // Pass the default thisObj in for use when it comes to destruction time.\n if (thisObj && thisObj !== me) {\n me.attachAutoDetacher(config, thisObj);\n }\n const detachable = config.detachable !== false,\n name = config.name,\n destroy = config.expires || detachable || name ? () => {\n // drop listeners if not destroyed yet\n if (!me.isDestroyed) {\n me.removeListener(config, thisObj);\n }\n } : null;\n if (destroy) {\n var _thisObj;\n destroy.eventer = me;\n destroy.listenerName = name;\n if (name && (_thisObj = thisObj) !== null && _thisObj !== void 0 && _thisObj.trackDetacher) {\n thisObj.trackDetacher(name, destroy);\n }\n if (config.expires) {\n // handle expires : { alt : timeoutHandler, delay : 2000 }\n me.delay(destroy, isNaN(config.expires) ? config.expires.delay : config.expires, name);\n }\n if (detachable) {\n return destroy;\n }\n }\n }\n }\n /**\n * Alias for {@link #function-addListener}. Adds an event listener. This method accepts parameters in the following format:\n *\n * ```javascript\n * myObject.on({\n * thisObj : this, // The this reference for the handlers\n * eventname2 : 'functionName' // Resolved at invocation time using the thisObj,\n * otherevent : {\n * fn : 'handlerFnName',\n * once : true // Just this handler is auto-removed on fire\n * },\n * yetanother : {\n * fn : 'yetAnotherHandler',\n * args : [ currentState1, currentState2 ] // Capture info to be passed to handler\n * },\n * prio : 100 // Higher prio listeners are called before lower\n * });\n * ```\n *\n * When listeners have a `thisObj` option, they are linked to the lifecycle of that object.\n * When it is destroyed, those listeners are removed.\n *\n * A simpler signature may be used when only adding a listener for one event and no extra options\n * (such as `once` or `delay`) are required:\n *\n * ```javascript\n * myObject.on('click', myController.handleClicks, myController);\n * ```\n *\n * The args in this simple case are `eventName`, `handler` and `thisObj`\n *\n * @param {Object|String} config An object containing listener definitions.\n * @param {Object} [config.thisObj] The `this` reference for all listeners.\n * (May be overridden if a handler is specified in object form)\n * @param {Boolean} [config.once] Specify as `true` to remove the listener as soon as it is invoked.\n * @param {Number|Object} [config.expires] The listener only waits for a specified time before\n * being removed. The value may be a number or an object containing an expiry handler.\n * @param {Number} [config.expires.delay] How long to wait for the event for.\n * @param {String|Function} [config.expires.alt] The function to call when the listener expires\n * **without having been triggered**.\n * @param {Object[]} [config.args] An array of arguments to be passed to the handler before the event object.\n * @param {Object|Function} [thisObj] Default `this` reference for all listeners in the config object.\n * @param {Object} [oldThisObj] The `this` reference if the old signature starting with a string event name is used..\n * @returns {Function} Returns a detacher function unless configured with `detachable: false`. Call detacher to remove listeners\n */\n on(...args) {\n return this.addListener(...args);\n }\n /**\n * Shorthand for {@link #function-removeListener}\n * @param {Object|String} config A config object or the event name\n * @param {Object|Function} [thisObj] `this` reference for all listeners, or the listener function\n * @param {Object} [oldThisObj] `this` The this object for the legacy way of adding listeners\n */\n un(...args) {\n this.removeListener(...args);\n }\n get listeners() {\n return this.eventListeners;\n }\n changeListeners(listeners) {\n // If we are receiving class listeners, add them early, and they do not become\n // the configured listeners, and are not removed by setting listeners during the lifecycle.\n if (this.isConfiguring) {\n if (listeners) {\n this.on(listeners, this);\n }\n }\n // Setting listeners after config time clears the old set and adds the new.\n // This will initially happen at the tail end of the constructor when config\n // listeners are set.\n else {\n // Configured listeners use this as the thisObj by default.\n // Flatten using Objects.assign because it may have been part of\n // a prototype chained default configuration of another object.\n // eg: the tooltip config of a Widget.\n // listener object blocks from multiple configuration levels are pushed\n // onto an array (see listeners merge function in configurable block above).\n // If this has happened, each entry must be processed like this.\n if (Array.isArray(listeners)) {\n for (let i = 0, l = listeners[0], {\n length\n } = listeners; i < length; l = listeners[++i]) {\n if (!('thisObj' in l)) {\n listeners[i] = Objects.assign({\n thisObj: this\n }, l);\n }\n }\n } else if (listeners && !('thisObj' in listeners)) {\n listeners = Objects.assign({\n thisObj: this\n }, listeners);\n }\n return listeners;\n }\n }\n updateListeners(listeners, oldListeners) {\n // Only configured listeners get here. Class listeners are added by changeListeners.\n oldListeners && this.un(oldListeners);\n listeners && this.on(listeners);\n }\n /**\n * Removes an event listener. Same API signature as {@link #function-addListener}\n * @param {Object|String} config A config object or the event name\n * @param {Object|Function} thisObj `this` reference for all listeners, or the listener function\n * @param {Object} oldThisObj `this` The this object for the legacy way of adding listeners\n */\n removeListener(config, thisObj = config.thisObj, oldThisObj) {\n const me = this;\n if (typeof config === 'string') {\n return me.removeListener({\n [config]: thisObj\n }, oldThisObj);\n }\n Object.entries(config).forEach(([eventName, listenerToRemove]) => {\n if (!specialProperties[eventName] && listenerToRemove != null) {\n eventName = eventName.toLowerCase();\n const eventListeners = me.eventListeners,\n index = me.findListener(eventName, listenerToRemove, thisObj);\n if (index >= 0) {\n let listeners = eventListeners[eventName];\n if (listeners.length > 1) {\n if (listeners.$firing) {\n eventListeners[eventName] = listeners = listeners.slice();\n }\n // NOTE: we cannot untrack any detachers here because we may only be\n // removing some of its listeners\n listeners.splice(index, 1);\n } else {\n delete eventListeners[eventName];\n if (!me.onUnlisten.$nullFn) {\n me.onUnlisten(eventName);\n }\n }\n }\n }\n });\n if (config.thisObj && !config.thisObj.isDestroyed) {\n me.detachAutoDetacher(config);\n }\n }\n /**\n * Finds the index of a particular listener to the named event. Returns `-1` if the passed\n * function/thisObj listener is not present.\n * @param {String} eventName The name of an event to find a listener for.\n * @param {String|Function} listenerToFind The handler function to find.\n * @param {Object} defaultThisObj The `thisObj` for the required listener.\n * @internal\n */\n findListener(eventName, listenerToFind, defaultThisObj) {\n var _this$eventListeners;\n const eventListeners = (_this$eventListeners = this.eventListeners) === null || _this$eventListeners === void 0 ? void 0 : _this$eventListeners[eventName],\n fn = listenerToFind.fn || listenerToFind,\n thisObj = listenerToFind.thisObj || defaultThisObj;\n if (eventListeners) {\n for (let listenerEntry, i = 0, {\n length\n } = eventListeners; i < length; i++) {\n listenerEntry = eventListeners[i];\n if (listenerEntry.fn === fn && listenerEntry.thisObj === thisObj) {\n return i;\n }\n }\n }\n return -1;\n }\n /**\n * Check if any listener is registered for the specified eventName\n * @param {String} eventName\n * @returns {Boolean} `true` if listener is registered, otherwise `false`\n */\n hasListener(eventName) {\n var _this$eventListeners2;\n return Boolean((_this$eventListeners2 = this.eventListeners) === null || _this$eventListeners2 === void 0 ? void 0 : _this$eventListeners2[eventName === null || eventName === void 0 ? void 0 : eventName.toLowerCase()]);\n }\n /**\n * Relays all events through another object that also implements Events mixin. Adds a prefix to the event name\n * before relaying, for example add -> storeAdd\n * ```\n * // Relay all events from store through grid, will make it possible to listen for store events prefixed on grid:\n * 'storeLoad', 'storeChange', 'storeRemoveAll' etc.\n * store.relayAll(grid, 'store');\n *\n * grid.on('storeLoad', () => console.log('Store loaded');\n * ```\n * @param {Core.mixin.Events} through Object to relay the events through, needs to mix Events mixin in\n * @param {String} prefix Prefix to add to event name\n * @param {Boolean} [transformCase] Specify false to prevent making first letter of event name uppercase\n */\n relayAll(through, prefix, transformCase = true) {\n if (!this.relayAllTargets) {\n this.relayAllTargets = [];\n }\n const relayAllTargets = this.relayAllTargets;\n through.on('beforeDestroy', ({\n source\n }) => {\n if (source === through) {\n const configs = relayAllTargets.filter(r => r.through === through);\n configs.forEach(config => ArrayHelper.remove(relayAllTargets, config));\n }\n });\n relayAllTargets.push({\n through,\n prefix,\n transformCase\n });\n }\n /**\n * Removes all listeners registered to this object\n */\n removeAllListeners() {\n const listeners = this.eventListeners;\n let i, thisObj;\n for (const event in listeners) {\n const bucket = listeners[event];\n // We iterate backwards since we call removeListener which will splice out of\n // this array as we go...\n for (i = bucket.length; i-- > 0;) {\n var _thisObj2;\n const cfg = bucket[i];\n this.removeListener(event, cfg);\n thisObj = cfg.thisObj;\n if ((_thisObj2 = thisObj) !== null && _thisObj2 !== void 0 && _thisObj2.untrackDetachers) {\n thisObj.untrackDetachers(this);\n }\n }\n }\n }\n relayEvents(source, eventNames, prefix = '') {\n const listenerConfig = {\n detachable: true,\n thisObj: this\n };\n eventNames.forEach(eventName => {\n listenerConfig[eventName] = (event, ...params) => {\n return this.trigger(prefix + eventName, event, ...params);\n };\n });\n return source.on(listenerConfig);\n }\n /**\n * This method is called when the first listener for an event is added.\n * @param {String} eventName\n * @internal\n */\n onListen() {}\n /**\n * This method is called when the last listener for an event is removed.\n * @param {String} eventName\n * @internal\n */\n onUnlisten() {}\n destructorInterceptor() {\n const {\n autoDetachers,\n target,\n oldDestructor\n } = this;\n // Remove listeners first, so that they do not fire during destruction.\n // The observable being listened to by the thisObj may already have\n // been destroyed in a clean up sequence\n for (let i = 0; i < autoDetachers.length; i++) {\n const {\n dispatcher,\n config\n } = autoDetachers[i];\n if (!dispatcher.isDestroyed) {\n dispatcher.removeListener(config, target);\n }\n }\n oldDestructor.call(target);\n }\n /**\n * Internal function used to hook destroy() calls when using thisObj\n * @private\n */\n attachAutoDetacher(config, thisObj) {\n const target = config.thisObj || thisObj,\n // If it's a Bryntum Base subclass, hook doDestroy, otherwise, destroy\n destructorName = 'doDestroy' in target ? 'doDestroy' : 'destroy';\n if (destructorName in target) {\n let {\n $autoDetachers\n } = target;\n if (!$autoDetachers) {\n target.$autoDetachers = $autoDetachers = [];\n }\n if (!target.$oldDestructor) {\n target.$oldDestructor = target[destructorName];\n // Binding instead of using closure (used to use FunctionHelper.createInterceptor) to not retain target\n // when detaching manually\n target[destructorName] = this.destructorInterceptor.bind({\n autoDetachers: $autoDetachers,\n oldDestructor: target.$oldDestructor,\n target\n });\n }\n $autoDetachers.push({\n config,\n dispatcher: this\n });\n } else {\n target[destructorName] = () => {\n this.removeListener(config);\n };\n }\n }\n /**\n * Internal function used restore hooked destroy() calls when using thisObj\n * @private\n */\n detachAutoDetacher(config) {\n const target = config.thisObj;\n // Restore old destructor and remove from auto detachers only if we are not called as part of destruction.\n // (Altering $autoDetachers affects destruction iterating over them, breaking it. It is pointless to clean up\n // during destruction anyway, since everything gets removed)\n if (target.$oldDestructor && !target.isDestroying) {\n ArrayHelper.remove(target.$autoDetachers, target.$autoDetachers.find(detacher => detacher.config === config && detacher.dispatcher === this));\n if (!target.$autoDetachers.length) {\n target['doDestroy' in target ? 'doDestroy' : 'destroy'] = target.$oldDestructor;\n target.$oldDestructor = null;\n }\n }\n }\n //endregion\n //region Promise based workflow\n // experimental, used in tests to support async/await workflow\n await(eventName, options = {\n checkLog: true,\n resetLog: true,\n args: null\n }) {\n const me = this;\n if (options === false) {\n options = {\n checkLog: false\n };\n }\n const {\n args\n } = options;\n return new Promise(resolve => {\n var _me$_triggered;\n // check if previously triggered?\n if (options.checkLog && (_me$_triggered = me._triggered) !== null && _me$_triggered !== void 0 && _me$_triggered[eventName]) {\n // resolve immediately, no params though...\n resolve();\n // reset log to be able to await again\n if (options.resetLog) {\n me.clearLog(eventName);\n }\n }\n // This branch will listen for events until catches one with specific arguments\n if (args) {\n const detacher = me.on({\n [eventName]: (...params) => {\n const argsOk = Object.keys(args).every(key => {\n return key in params[0] && params[0][key] === args[key];\n });\n if (argsOk) {\n // resolve when event is fired with required arguments\n resolve(...params);\n // reset log to be able to await again\n if (options.resetLog) {\n me.clearLog(eventName);\n }\n detacher();\n }\n },\n prio: -10000 // Let others do their stuff first\n });\n } else {\n me.on({\n [eventName]: (...params) => {\n // resolve when event is caught\n resolve(...params);\n // reset log to be able to await again\n if (options.resetLog) {\n me.clearLog(eventName);\n }\n },\n prio: -10000,\n // Let others do their stuff first\n once: true // promises can only be resolved once anyway\n });\n }\n });\n }\n\n clearLog(eventName) {\n if (this._triggered) {\n if (eventName) {\n delete this._triggered[eventName];\n } else {\n this._triggered = {};\n }\n }\n }\n //endregion\n //region Trigger\n /**\n * Triggers an event, calling all registered listeners with the supplied arguments. Returning false from any listener\n * makes function return false.\n * @param {String} eventName Event name for which to trigger listeners\n * @param {Object} [param] Single parameter passed on to listeners, source property will be added to it (this)\n * @param {Boolean} [param.bubbles] Pass as `true` to indicate that the event will bubble up the widget\n * ownership hierarchy. For example up a Menu->parent Menu tree, or a Field->Container tree.\n * @returns {Boolean|Promise} Returns false if any listener returned false, or a Promise yielding\n * true / false based on what is returned from the async listener functions, otherwise true\n */\n trigger(eventName, param) {\n var _me$eventListeners, _me$eventListeners2, _me$bubbleEvents, _handlerPromises;\n // TODO: should returning false from a listener really prevent other listeners from executing?\n const me = this,\n name = eventName.toLowerCase(),\n {\n eventsSuspended,\n relayAllTargets,\n callOnFunctions\n } = me;\n let listeners = (_me$eventListeners = me.eventListeners) === null || _me$eventListeners === void 0 ? void 0 : _me$eventListeners[name],\n handlerPromises;\n // log trigger, used by experimental promise support to resolve immediately when needed\n if (!me._triggered) {\n me._triggered = {};\n }\n me._triggered[eventName] = true;\n if (eventsSuspended) {\n if (eventsSuspended.shouldQueue) {\n eventsSuspended.queue.push(arguments);\n }\n return true;\n }\n // Include catchall listener for all events.\n // Do not push the catchAll listeners onto the events own listener array.\n if ((_me$eventListeners2 = me.eventListeners) !== null && _me$eventListeners2 !== void 0 && _me$eventListeners2.catchall) {\n (listeners = listeners ? listeners.slice() : []).push(...me.eventListeners.catchall);\n // The catchAll listeners must honour their prio settings.\n listeners.sort(priorityComparator);\n }\n if (!listeners && !relayAllTargets && !callOnFunctions) {\n return true;\n }\n // default to include source : this in param\n if (param) {\n if (!('source' in param)) {\n if (Object.isExtensible(param)) {\n param.source = me;\n } else {\n param = Object.setPrototypeOf({\n source: me\n }, param);\n }\n }\n } else {\n param = {\n source: me\n };\n }\n // Lowercased event name should be the \"type\" property in keeping with DOM events.\n if (param.type !== name) {\n // Create instance property because \"type\" is read only\n if (param.constructor !== Object) {\n Reflect.defineProperty(param, 'type', {\n get: () => name\n });\n } else {\n param.type = name;\n }\n }\n // Bubble according to `bubbleEvents` config if `bubbles` is not explicitly set\n if (!('bubbles' in param) && (_me$bubbleEvents = me.bubbleEvents) !== null && _me$bubbleEvents !== void 0 && _me$bubbleEvents[eventName]) {\n param.bubbles = me.bubbleEvents[eventName];\n }\n if (callOnFunctions) {\n const fnName = 'on' + StringHelper.capitalize(eventName);\n if (fnName in me) {\n var _me$pluginFunctionCha;\n // Return true if the on[fnName] is not set to keep default behavior\n const result = me[fnName] ? me.callback(me[fnName], me, [param]) : true;\n let inhibit;\n if (Objects.isPromise(result)) {\n (handlerPromises || (handlerPromises = [])).push(result);\n } else {\n inhibit = result === false || inhibit;\n }\n // See if the called function was injected into the instance\n // masking an implementation in the prototype.\n // we must call the class's implementation after the injected one.\n // unless it's an injected chained function, in which case it will have been called above.\n // Note: The handler may have resulted in destruction.\n if (!me.isDestroyed && hasOwnProperty$3.call(me, fnName) && !((_me$pluginFunctionCha = me.pluginFunctionChain) !== null && _me$pluginFunctionCha !== void 0 && _me$pluginFunctionCha[fnName])) {\n const myProto = Object.getPrototypeOf(me);\n if (fnName in myProto) {\n const result = myProto[fnName].call(me, param);\n if (Objects.isPromise(result)) {\n (handlerPromises || (handlerPromises = [])).push(result);\n } else {\n inhibit = result === false || inhibit;\n }\n // A handler may have resulted in destruction.\n if (me.isDestroyed) {\n return;\n }\n }\n }\n // Returning false from an on-function prevents further triggering\n if (inhibit) {\n return false;\n }\n }\n }\n if (listeners) {\n let i = 0,\n ret;\n // Let add/removeListener know that we're using the array to protect against a situation where an event\n // listener changes the listeners when triggering the event.\n listeners.$firing = true;\n // If any listener resulted in our destruction, abort.\n for (i; i < listeners.length && !me.isDestroyed && ret !== false; i++) {\n const listener = listeners[i];\n let handler,\n thisObj = listener.thisObj;\n // Listeners that have thisObj are auto removed when thisObj is destroyed. If thisObj is destroyed from\n // a listener we might still end up here, since listeners are sliced and not affected by the removal\n if (!thisObj || !thisObj.isDestroyed) {\n // Flag for the expiry timer\n listener.called = true;\n if (listener.once) {\n me.removeListener(name, listener);\n }\n // prepare handler function\n if (typeof listener.fn === 'string') {\n if (thisObj) {\n handler = thisObj[listener.fn];\n }\n // keep looking for the callback in the hierarchy\n if (!handler) {\n const result = me.resolveCallback(listener.fn);\n handler = result.handler;\n thisObj = result.thisObj;\n }\n } else {\n handler = listener.fn;\n }\n // if `buffer` option is provided, the handler will be wrapped into buffer function,\n // but only once on the first call\n if (listener.buffer) {\n if (!listener.bufferFn) {\n const buffer = Number(listener.buffer);\n if (typeof buffer !== 'number' || isNaN(buffer)) {\n throw new Error(`Incorrect type for buffer, got \"${buffer}\" (expected a Number)`);\n }\n listener.bufferFn = FunctionHelper.createBuffered(handler, buffer, thisObj, listener.args);\n }\n handler = listener.bufferFn;\n }\n // if `throttle` option is provided, the handler will be called immediately, but all the rest calls\n // that happened during time specified in `throttle`, will be delayed and glued into 1 call\n if (listener.throttle) {\n const throttle = Number(listener.throttle);\n if (typeof throttle !== 'number' || isNaN(throttle)) {\n throw new Error(`Incorrect type for throttle, got \"${throttle}\" (expected a Number)`);\n }\n if (!listener.throttledFn) {\n listener.throttledFn = FunctionHelper.createThrottled(handler, throttle, thisObj, listener.args);\n }\n handler = listener.throttledFn;\n }\n ret = handler.call(thisObj || me, ...(listener.args || []), param);\n if (Objects.isPromise(ret)) {\n // If a handler is async (returns a Promise), then collect all Promises.\n // At the end we return a Promise which encapsulates all returned Promises\n // or, if only one handler was async, *the* Promise.\n // Don't allocate an Array until we have to.\n (handlerPromises || (handlerPromises = [])).push(ret);\n }\n }\n }\n listeners.$firing = false;\n if (ret === false) {\n return ret;\n }\n }\n // relay all?\n if (relayAllTargets) {\n relayAllTargets.forEach(config => {\n let name = eventName;\n if (config.transformCase) name = StringHelper.capitalize(name);\n if (config.prefix) name = config.prefix + name;\n if (config.through.trigger(name, param) === false) return false;\n });\n }\n // Use DOM standard event property name to indicate that the event\n // bubbles up the owner axis.\n // False from any handler cancels the bubble.\n // Must also avoid owner if any handlers destroyed the owner.\n if (param.bubbles && me.owner && !me.owner.isDestroyed) {\n return me.owner.trigger(eventName, param);\n }\n // If any handlers were async functions (returned a Promise), then return a Promise\n // which resolves when they all resolve.\n if ((_handlerPromises = handlerPromises) !== null && _handlerPromises !== void 0 && _handlerPromises.length) {\n return new Promise(resolve => {\n Promise.all(handlerPromises).then(promiseResults => {\n const finalResult = !promiseResults.some(result => result === false);\n resolve(finalResult);\n });\n });\n }\n return true;\n }\n /**\n * Prevents events from being triggered until {@link #function-resumeEvents()} is called. Optionally queues events that are triggered while\n * suspended. Multiple calls stack to require matching calls to `resumeEvents()` before actually resuming.\n * @param {Boolean} queue Specify true to queue events triggered while suspended\n */\n suspendEvents(queue = false) {\n const eventsSuspended = this.eventsSuspended || (this.eventsSuspended = {\n shouldQueue: queue,\n queue: [],\n count: 0\n });\n eventsSuspended.count++;\n }\n /**\n * Resume event triggering after a call to {@link #function-suspendEvents()}. If any triggered events were queued they will be triggered.\n * @returns {Boolean} `true` if events have been resumed (multiple calls to suspend require an equal number of resume calls to resume).\n */\n resumeEvents() {\n const suspended = this.eventsSuspended;\n if (suspended) {\n if (--suspended.count === 0) {\n this.eventsSuspended = null;\n if (suspended.shouldQueue) {\n for (const queued of suspended.queue) {\n this.trigger(...queued);\n }\n }\n }\n }\n return !Boolean(this.eventsSuspended);\n }\n //endregion\n});\n\n/**\n * @module Core/helper/AsyncHelper\n */\n/**\n * A helper class to make asynchronous tasks `await` friendly.\n */\nclass AsyncHelper {\n /**\n * Returns a promise that resolves on next animation frame.\n * ```\n * async method() {\n * // do work\n * await AsyncHelper.animationFrame();\n * // do more work\n * }\n * ```\n * @async\n */\n static animationFrame() {\n return new Promise(resolve => {\n requestAnimationFrame(resolve);\n });\n }\n /**\n * Returns a promise that resolves after a specified number of milliseconds.\n * ```\n * async method() {\n * await AsyncHelper.sleep(10);\n * // ...\n * }\n * ```\n * @param {Number} millis The number of milliseconds to sleep.\n * @async\n */\n static sleep(millis) {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve();\n }, millis);\n });\n }\n /**\n * Returns a promise that resolves as soon as possible, allowing the browser to minimally process other messages.\n * This is the shortest possible delay the browser offers, so be aware that it does not necessarily allow the\n * browser to paint or reflow if used in a long loop. It does, however, allow other async methods to execute.\n * ```\n * async method() {\n * await AsyncHelper.yield();\n * // ...\n * }\n * ```\n * @async\n */\n static yield() {\n return Promise.resolve();\n }\n}\nAsyncHelper._$name = 'AsyncHelper';\n\nvar _BrowserHelper$queryS;\n/**\n * @module Core/helper/AjaxHelper\n */\n/**\n * Options for the `fetch` API. Please see\n * [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch) for details\n * @typedef {Object} FetchOptions\n * @property {'GET'|'POST'|'PUT'|'PATCH'|'DELETE'} [method] The request method, e.g., GET, POST\n * @property {Object} [queryParams] A key-value pair Object containing the params to add to the query string\n * @property {Object} [headers] Any headers you want to add to your request, contained within a `Headers object or an\n * object literal with ByteString values\n * @property {Object} [body] Any body that you want to add to your request: this can be a Blob, BufferSource, FormData,\n * URLSearchParams, or USVString object. Note that a request using the GET or HEAD method cannot have a body.\n * @property {Object} [mode] The mode you want to use for the request, e.g., cors, no-cors, or same-origin.\n * @property {Object} [credentials] The request credentials you want to use for the request: omit, same-origin, or\n * include. To automatically send cookies for the current domain, this option must be provided\n * @property {Object} [parseJson] Specify `true` to parses the response and attach the resulting object to the\n * `Response` object as `parsedJson`\n */\nconst paramValueRegExp = /^(\\w+)=(.*)$/,\n // For CodePens in docs, adjust URLs to be absolute\n resourceRoot = globalThis.DocsBrowserInstance && ((_BrowserHelper$queryS = BrowserHelper.queryString) === null || _BrowserHelper$queryS === void 0 ? void 0 : _BrowserHelper$queryS.__resourceRoot) || '',\n parseParams = function (paramString) {\n const result = {},\n params = paramString.split('&');\n // loop through each 'filter={\"field\":\"name\",\"operator\":\"=\",\"value\":\"Sweden\",\"caseSensitive\":true}' string\n // So we cannot use .split('=')\n for (const nameValuePair of params) {\n const [match, name, value] = paramValueRegExp.exec(nameValuePair),\n decodedName = decodeURIComponent(name),\n decodedValue = decodeURIComponent(value);\n if (match) {\n let paramValue = result[decodedName];\n if (paramValue) {\n if (!Array.isArray(paramValue)) {\n paramValue = result[decodedName] = [paramValue];\n }\n paramValue.push(decodedValue);\n } else {\n result[decodedName] = decodedValue;\n }\n }\n }\n return result;\n };\n/**\n * Simplifies Ajax requests. Uses fetch & promises.\n *\n * ```javascript\n * AjaxHelper.get('some-url').then(response => {\n * // process request response here\n * });\n * ```\n *\n * Uploading file to server via FormData interface.\n * Please visit [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) for details.\n *\n * ```javascript\n * const formData = new FormData();\n * formData.append('file', 'fileNameToUpload');\n * AjaxHelper.post('file-upload-url', formData).then(response => {\n * // process request response here\n * });\n * ```\n *\n */\nclass AjaxHelper {\n /**\n * Make a request (using GET) to the specified url.\n * @param {String} url URL to `GET` from\n * @param {FetchOptions} [options] The options for the `fetch` API\n * @returns {Promise} The fetch Promise, which can be aborted by calling a special `abort` method\n * @async\n */\n static get(url, options) {\n return this.fetch(url, options);\n }\n /**\n * POST data to the specified URL.\n * @param {String} url URL to `POST` to\n * @param {String|Object|FormData} payload The data to post. If an object is supplied, it will be stringified\n * @param {FetchOptions} [options] The options for the `fetch` API\n * @returns {Promise} The fetch Promise, which can be aborted by calling a special `abort` method\n * @async\n */\n static post(url, payload, options = {}) {\n if (!(payload instanceof FormData) && !(typeof payload === 'string')) {\n payload = JSON.stringify(payload);\n options.headers = options.headers || {};\n options.headers['Content-Type'] = options.headers['Content-Type'] || 'application/json';\n }\n return this.fetch(url, Object.assign({\n method: 'POST',\n body: payload\n }, options));\n }\n /**\n * Fetch the specified resource using the `fetch` API.\n * @param {String} url URL to fetch from\n * @param {FetchOptions} [options] The options for the `fetch` API\n * @returns {Promise} The fetch Promise, which can be aborted by calling a special `abort` method\n * @async\n */\n static fetch(url, options = {}) {\n let controller;\n // AbortController is not supported by LockerService\n // https://github.com/bryntum/support/issues/3689\n if (typeof AbortController !== 'undefined') {\n controller = options.abortController = new AbortController();\n options.signal = controller.signal;\n }\n if (!('credentials' in options)) {\n options.credentials = 'include';\n }\n if (options.queryParams) {\n const params = Object.entries(options.queryParams);\n if (params.length) {\n url += (url.includes('?') ? '&' : '?') + params.map(([param, value]) => `${param}=${encodeURIComponent(value)}`).join('&');\n }\n }\n // Promise that will be resolved either when network request is finished or when json is parsed\n const promise = new Promise((resolve, reject) => {\n fetch(resourceRoot + url, options).then(response => {\n if (options.parseJson) {\n response.json().then(json => {\n response.parsedJson = json;\n resolve(response);\n }).catch(error => {\n response.parsedJson = null;\n response.error = error;\n reject(response);\n });\n } else {\n resolve(response);\n }\n }).catch(error => {\n error.stack = promise.stack;\n reject(error);\n });\n });\n promise.stack = new Error().stack;\n promise.abort = function () {\n var _controller;\n (_controller = controller) === null || _controller === void 0 ? void 0 : _controller.abort();\n };\n return promise;\n }\n /**\n * Registers the passed URL to return the passed mocked up Fetch Response object to the\n * AjaxHelper's promise resolve function.\n * @param {String} url The url to return mock data for\n * @param {Object|Function} response A mocked up Fetch Response object which must contain\n * at least a `responseText` property, or a function to which the `url` and a `params` object\n * and the `Fetch` `options` object is passed which returns that.\n * @param {String} response.responseText The data to return.\n * @param {Boolean} [response.synchronous] resolve the Promise immediately\n * @param {Number} [response.delay=100] resolve the Promise after this number of milliseconds.\n */\n static mockUrl(url, response) {\n const me = this;\n (me.mockAjaxMap || (me.mockAjaxMap = {}))[url] = response;\n // Inject the override into the AjaxHelper instance\n if (!AjaxHelper.originalFetch) {\n AjaxHelper.originalFetch = AjaxHelper.fetch;\n AjaxHelper.fetch = me.mockAjaxFetch.bind(me);\n }\n }\n static mockAjaxFetch(url, options) {\n const urlAndParams = url.split('?');\n let result = this.mockAjaxMap[urlAndParams[0]],\n parsedJson = null;\n if (result) {\n if (typeof result === 'function') {\n result = result(urlAndParams[0], urlAndParams[1] && parseParams(urlAndParams[1]), options);\n }\n try {\n parsedJson = options.parseJson && JSON.parse(result.responseText);\n } catch (error) {\n parsedJson = null;\n result.error = error;\n }\n result = Object.assign({\n status: 200,\n ok: true,\n headers: new Headers(),\n statusText: 'OK',\n url: url,\n parsedJson: parsedJson,\n text: () => new Promise(resolve => {\n resolve(result.responseText);\n }),\n json: () => new Promise(resolve => {\n resolve(parsedJson);\n })\n }, result);\n return new Promise(function (resolve, reject) {\n if (result.synchronous) {\n resolve(result);\n } else {\n setTimeout(function () {\n resolve(result);\n }, 'delay' in result ? result.delay : 100);\n }\n });\n } else {\n return AjaxHelper.originalFetch(url, options);\n }\n }\n}\nAjaxHelper._$name = 'AjaxHelper';\n\n/**\n * @module Core/localization/LocaleHelper\n */\n/**\n * Provides locale management methods.\n */\nclass LocaleHelper {\n /**\n * Merges all properties of provided locales into new locale.\n * Locales are merged in order they provided and locales which go later replace same properties of previous locales.\n * @param {...Object} locales Locales to merge\n * @returns {Object} Merged locale\n */\n static mergeLocales(...locales) {\n const result = {};\n locales.forEach(locale => {\n Object.keys(locale).forEach(key => {\n if (typeof locale[key] === 'object') {\n result[key] = _objectSpread2(_objectSpread2({}, result[key]), locale[key]);\n } else {\n result[key] = locale[key];\n }\n });\n });\n return result;\n }\n /**\n * Removes all properties from `locale` that are present in the provided `toTrim`.\n * @param {Object} locale Locale to process\n * @param {Object} toTrim Object enumerating properties that should be removed\n * @param {boolean} [silent=true] When `true` ignores missing properties that should be removed (default).\n * When `false` throws exceptions in such cases.\n */\n static trimLocale(locale, toTrim, silent = true) {\n const remove = (key, subKey) => {\n if (locale[key]) {\n if (subKey) {\n if (locale[key][subKey]) {\n delete locale[key][subKey];\n }\n } else {\n delete locale[key];\n }\n }\n };\n Object.keys(toTrim).forEach(key => {\n if (Object.keys(toTrim[key]).length > 0) {\n Object.keys(toTrim[key]).forEach(subKey => remove(key, subKey));\n } else {\n remove(key);\n }\n });\n }\n /**\n * Put the locale under `globalThis.bryntum.locales` to make sure it can be discovered automatically\n * @param {String} localeName Locale name\n * @param {Object} config Locale config\n */\n static publishLocale(localeName, config) {\n const bryntum = globalThis.bryntum = globalThis.bryntum || {},\n locales = bryntum.locales = bryntum.locales || {};\n // Avoid registering locales twice\n locales[localeName] = !locales[localeName] ? config : this.mergeLocales(locales[localeName], config);\n }\n}\nLocaleHelper._$name = 'LocaleHelper';\n\n/**\n * @module Core/localization/LocaleManager\n */\n// Documented at the export below, to work for singleton\nclass LocaleManager extends Events(Base$1) {\n static get defaultConfig() {\n return {\n locales: {},\n // Enable strict locale checking by default for tests\n throwOnMissingLocale: VersionHelper.isTestEnv\n };\n }\n construct(...args) {\n const me = this;\n super.construct(...args);\n if (BrowserHelper.isBrowserEnv) {\n const scriptTag = document.querySelector('script[data-default-locale]'),\n {\n locales\n } = globalThis.bryntum || {};\n if (scriptTag) {\n me.defaultLocaleName = scriptTag.dataset.defaultLocale;\n }\n if (locales) {\n Object.keys(locales).forEach(localeName => {\n // keeping this check in case some client tries to use an old locale\n if (!localeName.startsWith('moment')) {\n const locale = locales[localeName];\n if (locale.extends) {\n me.extendLocale(locale.extends, locale);\n } else if (locale.localeName) {\n me.registerLocale(locale.localeName, {\n desc: locale.localeDesc,\n locale\n });\n }\n }\n });\n if (!me.locale) {\n // English locale is built in, no need to apply it here since it will be applied anyway\n if (me.defaultLocaleName !== 'En') {\n // No locale applied, use default or first found\n me.applyLocale(me.defaultLocaleName || Object.keys(me.locales)[0]);\n }\n }\n }\n }\n }\n set locales(localeConfigs) {\n this._locales = localeConfigs;\n }\n /**\n * Get currently registered locales.\n * Returns an object with locale names (`localeName`) as properties.\n *\n * Example:\n * ```\n * const englishLocale = LocaleManager.locales.En;\n * ```\n *\n * this returns registered English locale object.\n * ```\n * {\n * \"desc\": \"English\",\n * \"locale\": {\n * \"localeName\": \"En\",\n * \"localeDesc\": \"English\",\n *\n * ... (localization goes here)\n *\n * }\n * }\n * ```\n * @readonly\n * @member {Object} locales\n */\n get locales() {\n return this._locales;\n }\n /**\n * Get/set currently used locale. Set a name of a locale to have it applied, or give a locale configuration to\n * have it registered and then applied\n * @member {Object} locale\n * @accepts {String|Object}\n */\n set locale(locale) {\n if (typeof locale === 'string') {\n this.applyLocale(locale);\n } else {\n if (!locale.locale) {\n locale = {\n locale,\n localeName: locale.localeName || 'custom'\n };\n }\n this.registerLocale(locale.localeName, locale);\n this.applyLocale(locale.localeName);\n }\n }\n get locale() {\n return this._locale;\n }\n /**\n * Register a locale to make it available for applying.\n * Registered locales are available in {@link Core.localization.LocaleManager#property-locales}.\n * @param {String} name Name of locale (for example `En` or `SvSE`)\n * @param {Object} config Object with localized properties\n * @function registerLocale\n */\n registerLocale(name, config) {\n var _me$locale;\n const me = this,\n isDefault = me.defaultLocaleName === name,\n isCurrent = ((_me$locale = me.locale) === null || _me$locale === void 0 ? void 0 : _me$locale.localeName) === name,\n isFirst = Object.keys(me.locales).length === 0;\n let currentLocale = me.locales[name];\n // Avoid registering the same locale twice and merge configs\n if (!currentLocale) {\n me.locales[name] = config;\n currentLocale = me.locales[name];\n } else {\n if (config.exclude) {\n currentLocale.exclude = LocaleHelper.mergeLocales(currentLocale.exclude || {}, config.exclude);\n }\n currentLocale.locale = LocaleHelper.mergeLocales(currentLocale.locale, config.locale);\n }\n // If we have exclude in locale config we remove excluded on registering locale to avoid merging unwanted locale keys\n if (currentLocale.exclude) {\n LocaleHelper.trimLocale(currentLocale.locale, currentLocale.exclude);\n }\n // If no default locale specified, use the first one. otherwise apply the default when it is registered\n // also reapply if current locale is registered again (first grid, then scheduler etc).\n if (isDefault || !me.defaultLocaleName && (isFirst || isCurrent)) {\n me.internalApplyLocale(currentLocale);\n }\n }\n /**\n * Extend an already loaded locale to add additional translations.\n * @param {String} name Name of locale (for example `En` or `SvSE`)\n * @param {Object} config Object with localized properties\n * @function extendLocale\n */\n extendLocale(name, config) {\n var _this$locale;\n const locale = this.locales[name];\n if (!locale) {\n return false;\n }\n locale.locale = LocaleHelper.mergeLocales(locale.locale, config);\n delete locale.locale.extends;\n // If current loaded locale is the same then apply to reflect changes\n if (((_this$locale = this.locale) === null || _this$locale === void 0 ? void 0 : _this$locale.localeName) === name) {\n this.applyLocale(name);\n }\n return true;\n }\n internalApplyLocale(localeConfig) {\n this._locale = localeConfig.locale;\n /**\n * Fires when a locale is applied\n * @event locale\n * @param {Core.localization.LocaleManager} source The Locale manager instance.\n * @param {Object} locale Locale configuration\n */\n this.trigger('locale', localeConfig);\n }\n /**\n * Apply a locale. Locale must be defined in {@link Core.localization.LocaleManager#property-locales}.\n * If it is not loaded it will be loaded using AjaxHelper {@link Core.helper.AjaxHelper#function-get-static} request and then applied.\n * @param {String} name Name of locale to apply (for example `En` or `SvSE`)\n * @returns {Boolean|Promise}\n * @fires locale\n * @function applyLocale\n */\n applyLocale(name, forceApply = false, ignoreError = false) {\n const me = this,\n localeConfig = me.locales[name];\n if (localeConfig !== null && localeConfig !== void 0 && localeConfig.locale && me._locale === localeConfig.locale && !forceApply) {\n // no need to apply same locale again\n return true;\n }\n // ignoreError is used in examples where one example might have defined a locale not available in another\n if (!localeConfig) {\n if (ignoreError) {\n return true;\n }\n throw new Error(`Locale ${name} not registered`);\n }\n function internalApply() {\n me.internalApplyLocale(localeConfig);\n }\n if (!localeConfig.locale) {\n return new Promise((resolve, reject) => {\n me.loadLocale(localeConfig.path).then(response => {\n response.text().then(text => {\n // eslint-disable-next-line no-new-func\n const parseLocale = new Function(text);\n parseLocale();\n if (BrowserHelper.isBrowserEnv) {\n localeConfig.locale = globalThis.bryntum.locales[name];\n }\n internalApply();\n resolve(localeConfig);\n });\n }).catch(response => reject(response));\n });\n }\n internalApply();\n return true;\n }\n /**\n * Loads a locale using AjaxHelper {@link Core.helper.AjaxHelper#function-get-static} request.\n * @private\n * @param {String} path Path to locale file\n * @async\n */\n loadLocale(path) {\n return AjaxHelper.get(path);\n }\n /**\n * Specifies if {@link Core.localization.Localizable#function-L-static Localizable.L()} function would throw error if no localization found in runtime\n * @member {Boolean} throwOnMissingLocale\n * @default false\n */\n set throwOnMissingLocale(value) {\n this._throwOnMissingLocale = value;\n }\n get throwOnMissingLocale() {\n return this._throwOnMissingLocale;\n }\n}\nconst LocaleManagerSingleton = new LocaleManager();\n\n/**\n * @module Core/localization/Localizable\n */\nconst ObjectProto = Object.getPrototypeOf(Object),\n localeRe = /L{.*?}/g,\n capturelocaleRe = /L{(.*?)}/g,\n classMatchRe = /((.*?)\\.)?(.+)/g,\n escape$1 = txt => txt.replace(/{(\\d+)}/gm, '[[$1]]'),\n unescape = txt => txt.replace(/\\[\\[(\\d+)]]/gm, '{$1}'),\n emptyObject$a = Object.freeze(Object.create(null));\n/**\n * Mixin that provides localization functionality to a class.\n *\n * ```\n * // Get localized string\n * grid.L('foo');\n * grid.L('L{foo}');\n * ```\n *\n * @mixin\n */\nvar Localizable = (Target => class Localizable extends (Target || Base$1) {\n static get $name() {\n return 'Localizable';\n }\n static get configurable() {\n return {\n /**\n * A class translations of which are used for translating this entity.\n * This is often used when translations of an item are defined on its container class.\n * For example:\n *\n * ```js\n * // Toolbar class that has some predefined items\n * class MyToolbar extends Toolbar {\n *\n * static get $name() {\n * return 'MyToolbar';\n * }\n *\n * static get defaultConfig() {\n * return {\n * // this specifies default configs for the items\n * defaults : {\n * // will tell items to use the toolbar locale\n * localeClass : this\n * },\n *\n * items : [\n * // The toolbar has 2 buttons and translation for their texts will be searched in\n * // the toolbar locales\n * { text : 'Agree' },\n * { text : 'Disagree' }\n * ]\n * };\n * }\n *\n * ...\n * }\n * ```\n * So if one makes a locale for the `MyToolbar` class that will include `Agree` and `Disagree` string translations:\n * ```js\n * ...\n * MyToolbar : {\n * Agree : 'Yes, I agree',\n * Disagree : 'No, I do not agree'\n * }\n * ```\n * They will be used for the toolbar buttons and the button captions will say `Yes, I agree` and `No, I do not agree`.\n *\n * @config {Core.Base}\n * @typings {typeof Base}\n * @category Misc\n */\n localeClass: null,\n /**\n * Set to `false` to disable localization of this object.\n * @config {Boolean}\n * @default true\n */\n localizable: null,\n /**\n * List of properties which values should be translated automatically upon a locale applying.\n * In case there is a need to localize not typical value (not a String value or a field with re-defined setter/getter),\n * you could use 'localeKey' meta configuration.\n * Example:\n * ```js\n * static get configurable() {\n * return {\n * localizableProperties : ['width'],\n *\n * width : {\n * value : '54em', // default value here\n * $config : {\n * localeKey : 'L{editorWidth}' // name of the property that will be used in localization file\n * }\n * }\n * };\n * }\n * ```\n * @config {String[]}\n * @category Misc\n */\n localizableProperties: {\n value: [],\n $config: {\n merge: 'distinct'\n }\n }\n };\n }\n static clsName(cls) {\n var _cls$prototype, _cls$prototype2;\n return typeof cls === 'string' ? cls : cls === ObjectProto ? 'Object' : cls.$$name || cls.name || ((_cls$prototype = cls.prototype) === null || _cls$prototype === void 0 ? void 0 : _cls$prototype.$$name) || ((_cls$prototype2 = cls.prototype) === null || _cls$prototype2 === void 0 ? void 0 : _cls$prototype2.name);\n }\n static parseLocaleString(text) {\n var _text;\n const matches = [];\n let m;\n // Parse locale text in case it's wrapped with L{foo}\n if ((_text = text) !== null && _text !== void 0 && _text.includes('L{')) {\n // Escape fix for {1}, {2} etc. in locale str\n text = escape$1(text);\n capturelocaleRe.lastIndex = 0;\n while ((m = capturelocaleRe.exec(text)) != null) {\n classMatchRe.lastIndex = 0;\n // Support for parsing class namespace L{Class.foo}\n const classMatch = classMatchRe.exec(m[1]);\n matches.push({\n match: unescape(m[0]),\n localeKey: unescape(classMatch[3]),\n localeClass: classMatch[2]\n });\n }\n }\n return matches.length > 0 ? matches : [{\n match: text,\n localeKey: text,\n localeClass: undefined\n }];\n }\n construct(config = {}, ...args) {\n // Base class applies configs.\n super.construct(config, ...args);\n LocaleManagerSingleton.on('locale', this.updateLocalization, this);\n this.updateLocalization();\n }\n get localeClass() {\n return this._localeClass || null;\n }\n localizeProperty(property) {\n var _me$$meta$configs$pro, _me$fieldMap, _me$fieldMap$property;\n const me = this,\n currentValue = Objects.getPath(me, property),\n // Grid.column.Column is Localizable too. It uses fields, not configs\n localeKey = ((_me$$meta$configs$pro = me.$meta.configs[property]) === null || _me$$meta$configs$pro === void 0 ? void 0 : _me$$meta$configs$pro.localeKey) || ((_me$fieldMap = me.fieldMap) === null || _me$fieldMap === void 0 ? void 0 : (_me$fieldMap$property = _me$fieldMap[property]) === null || _me$fieldMap$property === void 0 ? void 0 : _me$fieldMap$property.defaultValue);\n let localizedValue;\n // check if localeKey is defined and try to translate it\n if (localeKey) {\n localizedValue = Localizable.localize(localeKey, me, me.localeClass || me);\n // if a user set value directly in class definition, his value has a prio\n if (localizedValue && !(property in (me.initialConfig || emptyObject$a))) {\n Objects.setPath(me.isColumn ? me.data : me, property, localizedValue);\n }\n } else if (typeof currentValue === 'string') {\n me.originalLocales = me.originalLocales || {};\n localizedValue = Objects.getPath(me.originalLocales, property);\n // If we haven't saved original values yet let's do that\n if (localizedValue === undefined) {\n Objects.setPath(me.originalLocales, property, currentValue);\n localizedValue = currentValue;\n }\n // Doing localization from the original values\n if (localizedValue) {\n Objects.setPath(me, property, localizedValue = me.optionalL(localizedValue, me));\n }\n }\n return localizedValue || currentValue;\n }\n /**\n * Method that is triggered when applying a locale to the instance\n * (happens on the instance construction steps and when switching to another locale).\n *\n * The method can be overridden to dynamically translate the instance when locale is switched.\n * When overriding the method please make sure you call `super.updateLocalization()`.\n * @category Misc\n */\n updateLocalization() {\n if (this.localizable !== false) {\n var _this$localizableProp, _this$trigger;\n (_this$localizableProp = this.localizableProperties) === null || _this$localizableProp === void 0 ? void 0 : _this$localizableProp.forEach(this.localizeProperty, this);\n (_this$trigger = this.trigger) === null || _this$trigger === void 0 ? void 0 : _this$trigger.call(this, 'localized');\n }\n }\n static getTranslation(text, templateData, localeCls) {\n const {\n locale\n } = LocaleManagerSingleton;\n let result = null,\n clsName,\n cls;\n if (locale) {\n // Iterate over all found localization entries\n for (const {\n match,\n localeKey,\n localeClass\n } of this.parseLocaleString(text)) {\n const translate = clsName => {\n var _locale$clsName;\n const translation = (_locale$clsName = locale[clsName]) === null || _locale$clsName === void 0 ? void 0 : _locale$clsName[localeKey];\n if (translation) {\n if (typeof translation === 'function') {\n result = templateData != null ? translation(templateData) : translation;\n } else if (typeof translation === 'object' || text === match) {\n result = translation;\n }\n // Likely string\n else {\n result = (result || text).replace(match, translation);\n }\n // Might have nested L{, recurse\n if (typeof translation === 'string' && translation.includes('L{')) {\n result = this.getTranslation(translation, templateData, localeCls);\n }\n }\n return translation;\n };\n // Translate order\n // 1. Try to translate for current class\n // 2. Try to translate by Class hierarchy traversing prototypes\n // 3. Try to translate if Class is in {Class.foo} format\n let success = false;\n for (cls = localeCls; cls && (clsName = Localizable.clsName(cls)); cls = Object.getPrototypeOf(cls)) {\n if (success = translate(clsName)) {\n break;\n } else if (typeof cls === 'string') {\n break;\n }\n }\n if (!success && localeClass) {\n translate(localeClass);\n }\n }\n }\n return result;\n }\n /**\n * Get localized string, returns `null` if no localized string found.\n * @param {String} text String key\n * @param {Object} [templateData] Data to supply to template if localized string is a function\n * @returns {String}\n * @internal\n */\n static localize(text, templateData = undefined, ...localeClasses) {\n var _localeClasses;\n // In case this static method is called directly third argument is not provided\n // just fallback to searching locales for the class itself\n if (((_localeClasses = localeClasses) === null || _localeClasses === void 0 ? void 0 : _localeClasses.length) === 0) {\n localeClasses = [this];\n }\n let translation = null;\n localeClasses.some(cls => {\n translation = Localizable.getTranslation(text, templateData, cls);\n return translation != null;\n });\n return translation;\n }\n /**\n * Get localized string, returns value of `text` if no localized string found.\n *\n * If {@link Core.localization.LocaleManager#property-throwOnMissingLocale LocaleManager.throwOnMissingLocale}\n * is `true` then calls to `L()` will throw `Localization is not found for 'text' in 'ClassName'` exception when no\n * localization is found.\n *\n * @param {String} text String key\n * @param {Object} [templateData] Data to supply to template if localized string is a function\n * @static\n * @returns {String}\n */\n static L(text, templateData = undefined, ...localeClasses) {\n var _localeClasses2;\n // In case this static method is called directly third argument is not provided\n // just fallback to searching locales for the class itself\n if (((_localeClasses2 = localeClasses) === null || _localeClasses2 === void 0 ? void 0 : _localeClasses2.length) === 0) {\n localeClasses = [this];\n }\n const translation = this.localize(text, templateData, ...localeClasses);\n // Throw error if not localized and text matches `L{foo}`\n if (translation == null && LocaleManagerSingleton.throwOnMissingLocale && LocaleManagerSingleton.locale && text.includes('L{')) {\n throw new Error(`Localization is not found for '${text}' in '${localeClasses.map(cls => Localizable.clsName(cls)).join(', ')}'. ${LocaleManagerSingleton.locale.localeName ? `Locale : ${LocaleManagerSingleton.locale.localeName}` : ''}`);\n }\n return translation !== null && translation !== void 0 ? translation : text;\n }\n /**\n * Convenience function that can be called directly on the class that mixes Localizable in\n *\n * ```javascript\n * button.text = grid.L('L{group}');\n * ```\n *\n * @param {String} text String key\n * @param {Object} [templateData] Data to supply to template if localized string is a function\n * @returns {String}\n * @category Misc\n */\n L(text, templateData) {\n const {\n localeClass,\n constructor\n } = this;\n // If we have a different class set as translations provider\n // pass it first and use the class being translated as a fallback provider\n if (localeClass && Localizable.clsName(localeClass) !== Localizable.clsName(constructor)) {\n return Localizable.L(text, templateData, localeClass, constructor);\n } else {\n return Localizable.L(text, templateData, constructor);\n }\n }\n /**\n * Convenience function to get an optional translation. The difference compared to `L()` is that it wont throw\n * an error when the translation is missing even if configured with `throwOnMissingLocale`\n *\n * ```javascript\n * button.text = grid.optionalL('L{group}');\n * ```\n *\n * @param {String} text String key\n * @param {Object} [templateData] Data to supply to template if localized string is a function\n * @returns {String}\n * @static\n * @category Misc\n */\n static optionalL(text, templateData = undefined, ...localeClasses) {\n var _localeClasses3;\n const shouldThrow = LocaleManagerSingleton.throwOnMissingLocale;\n LocaleManagerSingleton.throwOnMissingLocale = shouldThrow && localeRe.test(text);\n // In case this static method is called directly third argument is not provided\n // just fallback to searching locales for the class itself\n if (((_localeClasses3 = localeClasses) === null || _localeClasses3 === void 0 ? void 0 : _localeClasses3.length) === 0) {\n localeClasses = [this];\n }\n const result = Localizable.L(text, templateData, ...localeClasses);\n LocaleManagerSingleton.throwOnMissingLocale = shouldThrow;\n return result;\n }\n /**\n * Convenience function to get an optional translation. The difference compared to `L()` is that it won't throw\n * an error when the translation is missing even if configured with `throwOnMissingLocale`\n *\n * ```javascript\n * button.text = grid.optionalL('L{group}');\n * ```\n *\n * @param {String} text String key\n * @param {Object} [templateData] Data to supply to template if localized string is a function\n * @param {Boolean} [preventThrow] Prevent throwing error even if localized text matches `L{foo}`\n * @returns {String}\n * @category Misc\n * @internal\n */\n optionalL(text, templateData = this, preventThrow = false) {\n const shouldThrow = LocaleManagerSingleton.throwOnMissingLocale;\n // Optional locale text should not include L{}\n LocaleManagerSingleton.throwOnMissingLocale = shouldThrow && localeRe.test(text) && !preventThrow;\n const result = this.L(text, templateData);\n LocaleManagerSingleton.throwOnMissingLocale = shouldThrow;\n return result;\n }\n /**\n * Get the global LocaleManager\n * @property {Core.localization.LocaleManager}\n * @typings { typeof LocaleManager }\n * @category Misc\n * @readonly\n */\n get localeManager() {\n return LocaleManagerSingleton;\n }\n});\n\nconst {\n toString: toString$1\n } = Object.prototype,\n DATE_TYPE = toString$1.call(new Date()),\n tempDate$1 = new Date(),\n MS_PER_HOUR = 1000 * 60 * 60,\n defaultValue = (value, defValue) => isNaN(value) || value == null ? defValue : value,\n rangeFormatPartRe = /([ES]){([^}]+)}/g,\n enOrdinalSuffix = number => {\n const hasSpecialCase = ['11', '12', '13'].find(n => number.endsWith(n));\n let suffix = 'th';\n if (!hasSpecialCase) {\n const lastDigit = number[number.length - 1];\n suffix = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd'\n }[lastDigit] || 'th';\n }\n return number + suffix;\n },\n useIntlFormat = (name, options, date) => {\n const formatter = intlFormatterCache[name] || (intlFormatterCache[name] = new Intl.DateTimeFormat(locale$5, options));\n return formatter.format(date);\n },\n formatTime = (name, options, date, isShort = false) => {\n let strTime = useIntlFormat(name, options, date);\n // remove \"0\" from time when has AM/PM (from 01:00 PM to 1:00 PM): https://github.com/bryntum/support/issues/1483\n if (/am|pm/i.test(strTime)) {\n // remove first character only if is 0\n strTime = strTime.replace(/^0/, '');\n // if isShort is true, remove minutes if is :00\n if (isShort) {\n strTime = strTime.replace(/:00/, '');\n }\n }\n return strTime;\n },\n getDayDiff = (end, start) => Math.floor((end.getTime() - start.getTime() - (end.getTimezoneOffset() - start.getTimezoneOffset()) * validConversions.minute.millisecond) / validConversions.day.millisecond) + 1,\n normalizeDay = day => day >= 0 ? day : day + 7,\n msRegExp = /([^\\w])(S+)/gm,\n msReplacer = (match, g1, g2) => g1 + 'SSS';\n// These vars are set when changing locale\nlet locale$5 = 'en-US',\n ordinalSuffix = enOrdinalSuffix,\n // Used to cache used formats, to not have to parse format string each time\n formatCache = {},\n intlFormatterCache = {},\n parserCache = {};\nconst DEFAULT_YEAR = 2020,\n // 2020 is the year that has no issues in Safari, see: https://github.com/bryntum/support/issues/554\n DEFAULT_MONTH = 0,\n DEFAULT_DAY = 1,\n formats = {\n // 1, 2, ... 11, 12\n M: date => date.getMonth() + 1,\n //date.toLocaleDateString(locale, { month : 'numeric' }),\n // 1st, 2nd, 3rd, 4th, ... 11th, 12th\n Mo: date => ordinalSuffix(formats.M(date).toString()),\n // 01, 02, ...\n MM: date => (date.getMonth() + 1).toString().padStart(2, '0'),\n //date.toLocaleDateString(locale, { month : '2-digit' }),\n // Jan, Feb, ...\n MMM: date => useIntlFormat('MMM', {\n month: 'short'\n }, date),\n // January, February, ...\n MMMM: date => useIntlFormat('MMMM', {\n month: 'long'\n }, date),\n // 1, 2, ...\n Q: date => Math.ceil((date.getMonth() + 1) / 3),\n // 1st, 2nd, ...\n Qo: date => ordinalSuffix(formats.Q(date).toString()),\n // 1, 2, ...\n D: date => date.getDate(),\n //date.toLocaleDateString(locale, { day : 'numeric' }),\n // 1st, 2nd, ...\n Do: date => ordinalSuffix(formats.D(date).toString()),\n // 01, 02, ...\n DD: date => date.getDate().toString().padStart(2, '0'),\n //date.toLocaleDateString(locale, { day : '2-digit' }),\n // 1, 2, ..., 365, 365\n DDD: date => Math.ceil((new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12, 0, 0) - new Date(date.getFullYear(), 0, 0, 12, 0, 0)) / validConversions.day.millisecond),\n // 1st, 2nd, ...\n DDDo: date => ordinalSuffix(formats.DDD(date).toString()),\n // 001, 002, ...\n DDDD: date => formats.DDD(date).toString().padStart(3, '0'),\n // 0, 1, ..., 6\n d: date => date.getDay(),\n // 0th, 1st, ...\n do: date => ordinalSuffix(date.getDay().toString()),\n // S, M, ...\n d1: date => useIntlFormat('d1', {\n weekday: 'narrow'\n }, date).substr(0, 1),\n // Su, Mo, ...\n dd: date => formats.ddd(date).substring(0, 2),\n // Sun, Mon, ...\n ddd: date => useIntlFormat('ddd', {\n weekday: 'short'\n }, date),\n // Sunday, Monday, ...\n dddd: date => useIntlFormat('dddd', {\n weekday: 'long'\n }, date),\n e: date => date.getDay(),\n E: date => date.getDay() + 1,\n // ISO week, 1, 2, ...\n W: date => DateHelper.getWeekNumber(date)[1],\n Wo: date => ordinalSuffix(formats.W(date).toString()),\n WW: date => formats.W(date).toString().padStart(2, '0'),\n // ISO week, 1, 2, ... with localized \"Week \" prefix\n Wp: date => `${DateHelper.localize('L{Week}')} ${formats.W(date)}`,\n WWp: date => `${DateHelper.localize('L{Week}')} ${formats.WW(date)}`,\n Wp0: date => `${DateHelper.localize('L{Week}')[0]}${formats.W(date)}`,\n WWp0: date => `${DateHelper.localize('L{Week}')[0]}${formats.WW(date)}`,\n // 1979, 2018\n Y: date => date.getFullYear(),\n //date.toLocaleDateString(locale, { year : 'numeric' }),\n // 79, 18\n YY: date => date.getFullYear() % 100,\n //date.toLocaleDateString(locale, { year : '2-digit' }),\n // 1979, 2018\n YYYY: date => date.getFullYear(),\n //date.toLocaleDateString(locale, { year : 'numeric' }),\n // AM, PM\n A: date => date.getHours() < 12 ? 'AM' : 'PM',\n a: date => date.getHours() < 12 ? 'am' : 'pm',\n // 0, 1, ... 23\n H: date => date.getHours(),\n // 00, 01, ...\n HH: date => date.getHours().toString().padStart(2, '0'),\n // 1, 2, ... 12\n h: date => date.getHours() % 12 || 12,\n // 01, 02, ...\n hh: date => formats.h(date).toString().padStart(2, '0'),\n // 1, 2, ... 24\n k: date => date.getHours() || 24,\n // 01, 02, ...\n kk: date => formats.k(date).toString().padStart(2, '0'),\n // Locale specific (0 -> 24 or 1 AM -> 12 PM)\n K: date => formatTime('K', {\n hour: 'numeric'\n }, date),\n // Locale specific (00 -> 24 or 1 AM -> 12 PM)\n KK: date => formatTime('KK', {\n hour: '2-digit'\n }, date),\n // 0, 1, ... 59\n m: date => date.getMinutes(),\n //date.toLocaleTimeString(locale, { minute : 'numeric' }),\n // 00, 01, ...\n mm: date => formats.m(date).toString().padStart(2, '0'),\n // 0, 1, ... 59\n s: date => date.getSeconds(),\n //date.toLocaleTimeString(locale, { second : 'numeric' }),\n // 00, 01, ...\n ss: date => formats.s(date).toString().padStart(2, '0'),\n // 0, 1, ... 9 which are 000, 100, 200 ... 900 in milliseconds\n S: date => Math.floor(date.getMilliseconds() / 100).toString(),\n // 00, 01, ... 99 which are 000, 010, 020 ... 990 in milliseconds\n SS: date => Math.floor(date.getMilliseconds() / 10).toString().padStart(2, '0'),\n // 000, 001, ... 999 in milliseconds\n SSS: date => date.getMilliseconds().toString().padStart(3, '0'),\n z: date => useIntlFormat('z', {\n timeZoneName: 'short'\n }, date),\n zz: date => useIntlFormat('zz', {\n timeZoneName: 'long'\n }, date),\n Z: date => DH$2.getGMTOffset(date),\n LT: date => formatTime('LT', {\n hour: '2-digit',\n minute: '2-digit'\n }, date),\n // if minutes is 0, doesn't show it\n LST: date => formatTime('LST', {\n hour: 'numeric',\n minute: '2-digit'\n }, date, true),\n LTS: date => formatTime('LTS', {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n }, date),\n L: date => useIntlFormat('L', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n }, date),\n l: date => useIntlFormat('l', {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n }, date),\n LL: date => useIntlFormat('LL', {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n }, date),\n ll: date => useIntlFormat('ll', {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n }, date),\n LLL: date => useIntlFormat('LLL', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit'\n }, date),\n lll: date => useIntlFormat('lll', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit'\n }, date),\n LLLL: date => useIntlFormat('LLLL', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n weekday: 'long'\n }, date),\n llll: date => useIntlFormat('llll', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n weekday: 'short'\n }, date)\n },\n // Want longest keys first, to not stop match at L of LTS etc.\n formatKeys = Object.keys(formats).sort((a, b) => b.length - a.length),\n formatRegexp = `^(?:${formatKeys.join('|')})`,\n // return empty object, meaning value cannot be processed to a valuable date part\n emptyFn$2 = () => ({}),\n isNumber = str => numberRegex.test(str),\n parseMilliseconds = str => isNumber(str) && {\n milliseconds: parseInt(str.padEnd(3, '0').substring(0, 3))\n },\n parsers = {\n YYYY: str => ({\n year: parseInt(str)\n }),\n Y: str => ({\n year: parseInt(str)\n }),\n YY: str => {\n const year = parseInt(str);\n return {\n year: year + (year > 1968 ? 1900 : 2000)\n };\n },\n MM: str => ({\n month: parseInt(str) - 1\n }),\n Mo: str => ({\n month: parseInt(str) - 1\n }),\n DD: str => ({\n date: parseInt(str)\n }),\n M: str => ({\n month: parseInt(str) - 1\n }),\n D: str => ({\n date: parseInt(str)\n }),\n Do: str => ({\n date: parseInt(str)\n }),\n DDD: emptyFn$2,\n MMM: emptyFn$2,\n MMMM: emptyFn$2,\n DDDo: emptyFn$2,\n DDDD: emptyFn$2,\n d: emptyFn$2,\n do: emptyFn$2,\n d1: emptyFn$2,\n dd: emptyFn$2,\n ddd: emptyFn$2,\n dddd: emptyFn$2,\n Q: emptyFn$2,\n Qo: emptyFn$2,\n W: emptyFn$2,\n Wo: emptyFn$2,\n WW: emptyFn$2,\n e: emptyFn$2,\n E: emptyFn$2,\n HH: str => ({\n hours: parseInt(str)\n }),\n hh: str => ({\n hours: parseInt(str)\n }),\n mm: str => ({\n minutes: parseInt(str)\n }),\n H: str => ({\n hours: parseInt(str)\n }),\n m: str => ({\n minutes: parseInt(str)\n }),\n ss: str => ({\n seconds: parseInt(str)\n }),\n s: str => ({\n seconds: parseInt(str)\n }),\n S: parseMilliseconds,\n SS: parseMilliseconds,\n SSS: parseMilliseconds,\n A: str => ({\n amPm: str.toLowerCase()\n }),\n a: str => ({\n amPm: str.toLowerCase()\n }),\n L: 'MM/DD/YYYY',\n LT: 'HH:mm A',\n LTS: 'HH:mm:ss A',\n // Can either be Z (=UTC, 0) or +-HH:MM\n Z: str => {\n if (!str || !timeZoneRegEx.test(str) && str !== 'Z') {\n return null;\n }\n let timeZone = 0;\n // If string being parsed is more \"detailed\" than the format specified we can have more chars left,\n // thus check the last (for example HH:mmZ with input HH:mm:ssZ -> ssZ)\n if (str !== 'Z') {\n const matches = timeZoneRegEx.exec(str);\n // If timezone regexp matches, sting has time zone offset like '+02:00'\n if (matches) {\n const sign = matches[1] === '+' ? 1 : -1,\n hours = parseInt(matches[2]) || 0,\n minutes = parseInt(matches[3]) || 0;\n timeZone = sign * (hours * 60 + minutes);\n }\n // otherwise we just return current time zone, because there's a Z key in the input\n else {\n timeZone = -1 * new Date().getTimezoneOffset();\n }\n }\n return {\n timeZone\n };\n }\n },\n parserKeys = Object.keys(parsers).sort((a, b) => b.length - a.length),\n parserRegexp = new RegExp(`(${parserKeys.join('|')})`),\n // Following regexp includes all formats that should be handled by Date class\n localeStrRegExp = new RegExp('(l|LL|ll|LLL|lll|LLLL|llll)'),\n // ISODateRegExp = new RegExp('YYYY-MM-DD[T ]HH:mm:ss(.s+)?Z'),\n // Some validConversions are negative to show that it's not an exact conversion, just an estimate.\n validConversions = {\n // The units below assume:\n // 30 days in a month, 91 days for a quarter and 365 for a year\n // 52 weeks per year, 4 per month, 13 per quarter\n // 3652 days per decade (assuming two of the years will be leap with 366 days)\n decade: {\n decade: 1,\n year: 10,\n quarter: 40,\n month: 120,\n week: 520,\n day: 3652,\n hour: 24 * 3652,\n minute: 1440 * 3652,\n second: 86400 * 3652,\n millisecond: 86400000 * 3652\n },\n year: {\n decade: 0.1,\n year: 1,\n quarter: 4,\n month: 12,\n week: 52,\n day: 365,\n hour: 24 * 365,\n minute: 1440 * 365,\n second: 86400 * 365,\n millisecond: 86400000 * 365\n },\n quarter: {\n decade: 1 / 40,\n year: 1 / 4,\n quarter: 1,\n month: 3,\n week: 4,\n day: 91,\n hour: 24 * 91,\n minute: 1440 * 91,\n second: 86400 * 91,\n millisecond: 86400000 * 91\n },\n month: {\n decade: 1 / 120,\n year: 1 / 12,\n quarter: 1 / 3,\n month: 1,\n week: 4,\n day: -30,\n hour: -24 * 30,\n minute: -1440 * 30,\n second: -86400 * 30,\n millisecond: -86400000 * 30\n },\n week: {\n decade: -1 / 520,\n year: -1 / 52,\n quarter: -1 / 13,\n month: -1 / 4,\n day: 7,\n hour: 168,\n minute: 10080,\n second: 604800,\n millisecond: 604800000\n },\n day: {\n decade: -1 / 3652,\n year: -1 / 365,\n quarter: -1 / 91,\n month: -1 / 30,\n week: 1 / 7,\n hour: 24,\n minute: 1440,\n second: 86400,\n millisecond: 86400000\n },\n hour: {\n decade: -1 / (3652 * 24),\n year: -1 / (365 * 24),\n quarter: -1 / (91 * 24),\n month: -1 / (30 * 24),\n week: 1 / 168,\n day: 1 / 24,\n minute: 60,\n second: 3600,\n millisecond: 3600000\n },\n minute: {\n decade: -1 / (3652 * 1440),\n year: -1 / (365 * 1440),\n quarter: -1 / (91 * 1440),\n month: -1 / (30 * 1440),\n week: 1 / 10080,\n day: 1 / 1440,\n hour: 1 / 60,\n second: 60,\n millisecond: 60000\n },\n second: {\n decade: -1 / (3652 * 86400),\n year: -1 / (365 * 86400),\n quarter: -1 / (91 * 86400),\n month: -1 / (30 * 86400),\n week: 1 / 604800,\n day: 1 / 86400,\n hour: 1 / 3600,\n minute: 1 / 60,\n millisecond: 1000\n },\n millisecond: {\n decade: -1 / (3652 * 86400000),\n year: -1 / (365 * 86400000),\n quarter: -1 / (91 * 86400000),\n month: -1 / (30 * 86400000),\n week: 1 / 604800000,\n day: 1 / 86400000,\n hour: 1 / 3600000,\n minute: 1 / 60000,\n second: 1 / 1000\n }\n },\n normalizedUnits = {\n ms: 'millisecond',\n milliseconds: 'millisecond',\n s: 'second',\n seconds: 'second',\n m: 'minute',\n mi: 'minute',\n min: 'minute',\n minutes: 'minute',\n h: 'hour',\n hours: 'hour',\n d: 'day',\n days: 'day',\n w: 'week',\n weeks: 'week',\n M: 'month',\n mo: 'month',\n mon: 'month',\n months: 'month',\n q: 'quarter',\n quarters: 'quarter',\n y: 'year',\n years: 'year',\n dec: 'decade',\n decades: 'decade'\n },\n withDecimalsDurationRegex = /^\\s*([-+]?\\d+(?:[.,]\\d*)?|[-+]?(?:[.,]\\d+))\\s*([^\\s]+)?/i,\n noDecimalsDurationRegex = /^\\s*([-+]?\\d+)(?![.,])\\s*([^\\s]+)?/i,\n canonicalUnitNames = ['millisecond', 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year', 'decade'],\n canonicalUnitAbbreviations = [['mil'], ['s', 'sec'], ['m', 'min'], ['h', 'hr'], ['d'], ['w', 'wk'], ['mo', 'mon', 'mnt'], ['q', 'quar', 'qrt'], ['y', 'yr'], ['dec']],\n deltaUnits = ['decade', 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'],\n // Used when creating a date from an object, to fill in any blanks\n dateProperties = ['milliseconds', 'seconds', 'minutes', 'hours', 'date', 'month', 'year'],\n // TODO: Should we provide special number parsing?\n parseNumber = n => {\n const result = parseFloat(n);\n return isNaN(result) ? null : result;\n },\n numberRegex = /^[0-9]+$/,\n timeZoneRegEx = /([+-])(\\d\\d):*(\\d\\d)*$/,\n unitMagnitudes = {\n millisecond: 0,\n second: 1,\n minute: 2,\n hour: 3,\n day: 4,\n week: 5,\n month: 6,\n quarter: 7,\n year: 8,\n decade: 9\n },\n snapFns = {\n round(number, step = 1) {\n return Math.round(number / step) * step;\n },\n floor(number, step = 1) {\n return Math.floor(number / step) * step;\n },\n ceil(number, step = 1) {\n return Math.ceil(number / step) * step;\n }\n },\n keyCache = {};\n/**\n * @module Core/helper/DateHelper\n */\n/**\n * Helps with date manipulation, comparison, parsing, formatting etc.\n *\n * ## Parsing strings\n * Use `DateHelper.parse()` to parse strings into dates. It accepts a date string and a format specifier.\n * The format specifier is string built up using the following tokens:\n *\n * | Unit | Token | Description |\n * |-------------|-------|-----------------------------------|\n * | Year | YYYY | 2018 |\n * | | YY | < 68 -> 2000, > 68 -> 1900 |\n * | Month | MM | 01 - 12 |\n * | Date | DD | 01 - 31 |\n * | Hour | HH | 00 - 23 or 1 - 12 |\n * | Minute | mm | 00 - 59 |\n * | Second | ss | 00 - 59 |\n * | Millisecond | S | 0 - 9 [000, 100, 200 .. 900 ] |\n * | | SS | 00 - 99 [000, 010, 020 .. 990 ] |\n * | | SSS | 000 - 999 [000, 001, 002 .. 999 ] |\n * | AM/PM | A | AM or PM |\n * | | a | am or pm |\n * | TimeZone | Z | Z for UTC or +-HH:mm |\n * | Predefined | L | Long date, MM/DD/YYYY |\n * | | LT | Long time, HH:mm A |\n *\n * Default parse format is: `'YYYY-MM-DDTHH:mm:ss.SSSZ'` see {@link #property-defaultParseFormat-static}\n *\n * For example:\n * ```\n * DateHelper.parse('2018-11-06', 'YYYY-MM-DD');\n * DateHelper.parse('13:14', 'HH:mm');\n * DateHelper.parse('6/11/18', 'DD/MM/YY');\n * ```\n *\n * ## Formatting dates\n * Use `DateHelper.format()` to create a string from a date using a format specifier. The format specifier is similar to\n * that used when parsing strings. It can use the following tokens (input used for output below is\n * `new Date(2018,8,9,18,7,8,145)`):\n *\n * | Unit | Token | Description & output |\n * |-----------------------|-------|---------------------------------------|\n * | Year | YYYY | 2018 |\n * | | YY | 18 |\n * | | Y | 2018 |\n * | Quarter | Q | 3 |\n * | | Qo | 3rd |\n * | Month | MMMM | September |\n * | | MMM | Sep |\n * | | MM | 09 |\n * | | Mo | 9th |\n * | | M | 9 |\n * | Week (iso) | WW | 37 (2 digit, zero padded) |\n * | | Wo | 37th |\n * | | W | 37 |\n * | | WWp | Week 37 (localized prefix, zero pad) |\n * | | Wp | Week 37 (localized prefix) |\n * | | WWp0 | W37 (localized prefix) |\n * | | Wp0 | W37 (localized prefix) |\n * | Date | DDDD | Day of year, 3 digits |\n * | | DDDo | Day of year, ordinal |\n * | | DDD | Day of year |\n * | | DD | 09 |\n * | | Do | 9th |\n * | | D | 9 |\n * | Weekday | dddd | Sunday |\n * | | ddd | Sun |\n * | | dd | Su |\n * | | d1 | S |\n * | | do | 0th |\n * | | d | 0 |\n * | Hour | HH | 18 (00 - 23) |\n * | | H | 18 (0 - 23) |\n * | | hh | 06 (00 - 12) |\n * | | h | 6 (0 - 12) |\n * | | KK | 19 (01 - 24) |\n * | | K | 19 (1 - 24) |\n * | | kk | 06 or 18, locale determines |\n * | | k | 6 or 18, locale determines |\n * | Minute | mm | 07 |\n * | | m | 7 |\n * | Second | ss | 08 |\n * | | s | 8 |\n * | Millisecond | S | 1 (100ms) |\n * | | SS | 14 (140ms) |\n * | | SSS | 145 (145ms) |\n * | AM/PM | A | AM or PM |\n * | | a | am or pm |\n * | Predefined | LT | H: 2-digit (2d), m: 2d |\n * | (uses browser locale) | LTS | H: 2d, m: 2d, s : 2d |\n * | | LST | Depends on 12 or 24 hour clock |\n * | | | 12h, H : 1d, m : 0 or 2d |\n * | | | 24h, H : 2d, m : 2d |\n * | | L | Y: numeric (n), M : 2d, D : 2d |\n * | | l | Y: n, M : n, D : n |\n * | | LL | Y: n, M : long (l), D : n |\n * | | ll | Y: n, M : short (s), D : n |\n * | | LLL | Y: n, M : l, D : n, H: n, m: 2d |\n * | | lll | Y: n, M : s, D : n, H: n, m: 2d |\n * | | LLLL | Y: n, M : l, D : n, H: n, m: 2d, d: l |\n * | | llll | Y: n, M : s, D : n, H: n, m: 2d, d: s |\n *\n *\n * Default format is: `'YYYY-MM-DDTHH:mm:ssZ'` see {@link #property-defaultFormat-static}\n *\n * For example:\n *\n * ```javascript\n * DateHelper.format(new Date(2018,10,6), 'YYYY-MM-DD'); // 2018-11-06\n * DateHelper.format(new Date(2018,10,6), 'M/D/YY'); // 11/6/18\n * ```\n *\n * Arbitrary text can be embedded in the format string by wrapping it with {}:\n *\n * ```javascript\n * DateHelper.format(new Date(2019, 7, 16), '{It is }dddd{, yay!}') -> It is Friday, yay!\n * ```\n *\n * ## Unit names\n * Many DateHelper functions (for example add, as, set) accepts a unit among their params. The following units are\n * available:\n *\n * | Unit | Aliases |\n * |-------------|-------------------------------|\n * | millisecond | millisecond, milliseconds, ms |\n * | second | second, seconds, s |\n * | minute | minute, minutes, m |\n * | hour | hour, hours, h |\n * | day | day, days, d |\n * | week | week, weeks, w |\n * | month | month, months, mon, mo, M |\n * | quarter | quarter, quarters, q |\n * | year | year, years, y |\n * | decade | decade, decades, dec |\n *\n * For example:\n * ```javascript\n * DateHelper.add(date, 2, 'days');\n * DateHelper.as('hour', 7200, 'seconds');\n * ```\n */\nclass DateHelper extends Localizable() {\n static get $name() {\n return 'DateHelper';\n }\n // Do not remove. Assertion strings for Localization sanity check.\n // 'L{Object.Week}'\n //region Parse & format\n /**\n * Get/set the default format used by `format()` and `parse()`. Defaults to `'YYYY-MM-DDTHH:mm:ssZ'`\n * (~ISO 8601 Date and time, `'1962-06-17T09:21:34Z'`).\n * @member {String}\n */\n static set defaultFormat(format) {\n DH$2._defaultFormat = format;\n }\n static get defaultFormat() {\n return DH$2._defaultFormat || 'YYYY-MM-DDTHH:mm:ssZ';\n }\n /**\n * Get/set the default format used by `parse()`. Defaults to `'YYYY-MM-DDTHH:mm:ss.SSSZ'` or {@link #property-defaultFormat-static}\n * (~ISO 8601 Date and time, `'1962-06-17T09:21:34.123Z'`).\n * @member {String}\n */\n static set defaultParseFormat(parseFormat) {\n this._defaultParseFormat = parseFormat;\n }\n static get defaultParseFormat() {\n return this._defaultParseFormat || this._defaultFormat || 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n }\n static buildParser(format) {\n // Split input format by regexp, which includes predefined patterns. Normally format would have some\n // splitters, like 'YYYY-MM-DD' or 'D/M YYYY' so output will contain matched patterns as well as splitters\n // which would serve as anchors. E.g. provided format is 'D/M!YYYY' and input is `11/6!2019` algorithm would work like:\n // 1. split format by regexp // ['', 'D', '/', 'M', '!', 'YYYY', '']\n // 2. find splitters // ['/', '!']\n // 3. split input by seps, step by step // ['11', ['6', ['2019']]]\n // Inputs like 'YYYYY' (5*Y) means 'YYYY' + 'Y', because it matches patterns from longer to shorter,\n // but if few patterns describe same unit the last one is applied, for example\n // DH.parse('20182015', 'YYYYY') equals to new Date(2015, 0, 0)\n const parts = format.split(parserRegexp),\n parser = [];\n // if length of the parts array is 1 - there are no regexps in the input string. thus - no parsers\n // do same if there are patterns matching locale strings (l, ll, LLLL etc.)\n // returning empty array to use new Date() as parser\n if (parts.length === 1 || localeStrRegExp.test(format)) {\n return [];\n } else {\n parts.reduce((prev, curr, index, array) => {\n // ignore first and last empty string\n if (index !== 0 || curr !== '') {\n // if current element matches parser regexp store it as a parser\n if (parserRegexp.test(curr)) {\n const localeParsers = this.localize('L{parsers}') || {},\n fn = localeParsers[curr] || parsers[curr];\n // Z should be last element in the string that matches regexp. Last array element is always either\n // an empty string (if format ends with Z) or splitter (everything that doesn't match regexp after Z)\n // If there is a pattern after Z, then Z index will be lower than length - 2\n if (curr === 'Z' && index < array.length - 2) {\n throw new Error(`Invalid format ${format} TimeZone (Z) must be last token`);\n }\n // If fn is a string, we found an alias (L, LLL, l etc.).\n // Need to build parsers from mapped format and merge with existing\n if (typeof fn === 'string') {\n // we are going to merge nested parsers with current, some cleanup required:\n // 1. last element is no longer last\n // 2. need to pass last parser to the next step\n const nestedParsers = DH$2.buildParser(fn),\n lastItem = nestedParsers.pop();\n delete lastItem.last;\n // elevate nested parsers\n parser.push(...nestedParsers);\n prev = lastItem;\n } else {\n prev.pattern = curr;\n prev.fn = parsers[curr];\n }\n }\n // if it doesn't match - we've found a splitter\n else {\n prev.splitter = curr;\n parser.push(prev);\n prev = {};\n }\n } else if (Object.prototype.hasOwnProperty.call(prev, 'pattern')) {\n parser.push(prev);\n }\n return prev;\n }, {});\n }\n parser[parser.length - 1].last = true;\n return parser;\n }\n /**\n * A utility function to create a sortable string key for the passed date or ms timestamp using the `'YYYY-MM-DD'`\n * format.\n * @param {Number|Date} ms The Date instance or ms timestamp to generate a key for\n * @returns {String} Date/timestamp as a string with `'YYYY-M-D'` format\n * @internal\n */\n static makeKey(ms) {\n // Convert Date to ms timestamp\n if (ms.getTime) {\n ms = ms.getTime();\n }\n // Cache holds ms -> YYYY-MM-DD\n const cached = keyCache[Math.trunc(ms / MS_PER_HOUR)];\n if (cached) {\n return cached;\n }\n tempDate$1.setTime(ms);\n const month = tempDate$1.getMonth() + 1,\n date = tempDate$1.getDate();\n // Not using DateHelper.format to save some cycles, hit a lot\n return keyCache[Math.trunc(ms / MS_PER_HOUR)] = `${tempDate$1.getFullYear()}-${month < 10 ? '0' + month : month}-${date < 10 ? '0' + date : date}`;\n }\n /**\n * A utility function to parse a sortable string to a date using the `'YYYY-MM-DD'` format.\n * @param {String} key The string to return a date for.\n * @returns {Date} new Date instance\n * @internal\n */\n static parseKey(key) {\n return DH$2.parse(key, 'YYYY-MM-DD');\n }\n /**\n * Returns a date created from the supplied string using the specified format. Will try to create even if format\n * is left out, by first using the default format (see {@link #property-defaultFormat-static}, by default\n * `YYYY-MM-DDTHH:mm:ssZ`) and then using `new Date(dateString)`.\n * Supported tokens:\n *\n * | Unit | Token | Description |\n * |-------------|-------|-----------------------------------|\n * | Year | YYYY | 2018 |\n * | | YY | < 68 -> 2000, > 68 -> 1900 |\n * | Month | MM | 01 - 12 |\n * | Date | DD | 01 - 31 |\n * | Hour | HH | 00 - 23 or 1 - 12 |\n * | Minute | mm | 00 - 59 |\n * | Second | ss | 00 - 59 |\n * | Millisecond | S | 0 - 9 [000, 100, 200 .. 900 ] |\n * | | SS | 00 - 99 [000, 010, 020 .. 990 ] |\n * | | SSS | 000 - 999 [000, 001, 002 .. 999 ] |\n * | AM/PM | A | AM or PM |\n * | | a | am or pm |\n * | TimeZone | Z | Z for UTC or +-HH:mm |\n * | Predefined | L | Long date, MM/DD/YYYY |\n * | | LT | Long time, HH:mm A |\n *\n * Predefined formats and functions used to parse tokens can be localized, see for example the swedish locale SvSE.js\n *\n * NOTE: If no date parameters are provided then `Jan 01 2020` is used as a default date\n *\n * @param {String} dateString Date string\n * @param {String} format Date format (or {@link #property-defaultParseFormat-static} if left out)\n * @returns {Date} new Date instance parsed from the string\n * @category Parse & format\n */\n static parse(dateString, format = DH$2.defaultParseFormat) {\n if (dateString instanceof Date) {\n return dateString;\n }\n if (typeof dateString !== 'string' || !dateString) {\n return null;\n }\n // // For ISO 8601 native is faster, but not very forgiving\n // if (format === defaultFormat) {\n // const dt = new Date(dateString);\n // if (!isNaN(dt)) {\n // return dt;\n // }\n // }\n const config = {\n year: null,\n month: null,\n date: null,\n hours: null,\n minutes: null,\n seconds: null,\n milliseconds: null\n };\n // Milliseconds parser is the same for S, SS, SSS\n // We search for a string of \"S\" characters *not* preceded by an alpha character.\n // So that the formats such as \"LTS\" do not get corrupted\n format = format.replace(msRegExp, msReplacer);\n let parser = parserCache[format],\n result;\n if (!parser) {\n parser = parserCache[format] = DH$2.buildParser(format);\n }\n // Each parser knows its pattern and splitter. It looks for splitter in the\n // input string, takes first substring and tries to process it. Remaining string\n // is passed to the next parser.\n parser.reduce((dateString, parser) => {\n if (parser.last) {\n Object.assign(config, parser.fn(dateString));\n } else {\n let splitAt;\n // ISO 8601 says that T symbol can be replaced with a space\n if (parser.splitter === 'T' && dateString.indexOf('T') === -1) {\n splitAt = dateString.indexOf(' ');\n } else {\n // If splitter specified find its position, otherwise try to determine pattern length\n splitAt = parser.splitter !== '' ? dateString.indexOf(parser.splitter) : parser.pattern && parser.pattern.length || -1;\n }\n let part, rest;\n // If splitter is not found in the current string we may be dealing with\n // 1. partial input - in that case we just feed all string to current parser and move on\n // 2. time zone (ssZ - splitter is empty string) and pattern is not specified, see comment below\n // 3. parse milliseconds before Z\n if (splitAt === -1 || parser.pattern === 'SSS' && dateString.match(/^\\d+Z$/)) {\n // NOTE: parentheses are required here as + and - signs hold valuable information\n // with parentheses we get array like ['00','+','01:00'], omitting them we won't get\n // regexp match in result, loosing information\n const chunks = dateString.split(/([Z\\-+])/);\n // If splitter is not found in the string, we may be dealing with string that contains info about TZ.\n // For instance, if format contains Z as last arg which is not separated (normally it is not indeed),\n // like 'YYYY-MM-DD HH:mm:ssZ', then second to last parser will have string that it cannot just parse, like\n // '2010-01-01 10:00:00' -> '00'\n // '2010-01-01 10:00:00Z' -> '00Z'\n // '2010-01-01 10:00:00-01' -> '00-01'\n // '2010-01-01 10:00:00+01:30' -> '00+01:30'\n // this cannot be processed by date parsers, so we need to process that additionally. So we\n // split string by symbols that can be found around timezone info: Z,-,+\n if (chunks.length === 1) {\n part = dateString;\n rest = '';\n } else {\n part = chunks[0];\n rest = `${chunks[1]}${chunks[2]}`;\n }\n } else {\n part = dateString.substring(0, splitAt) || dateString;\n rest = dateString.substring(splitAt + parser.splitter.length);\n }\n if (parser.fn) {\n // Run parser and add result to config on successful parse otherwise continue parsing\n const res = parser.fn(part);\n if (res) {\n Object.assign(config, res);\n } else {\n rest = part + rest;\n }\n }\n return rest;\n }\n }, dateString);\n // If year is specified date has to be greater than 0\n if (config.year && !config.date) {\n config.date = 1;\n }\n const date = DH$2.create(config);\n if (date) {\n result = date;\n } else {\n // Last resort, try if native passing can do it\n result = new Date(dateString);\n }\n return result;\n }\n /**\n * Creates a date from a date definition object. The object can have the following properties:\n * - year\n * - month\n * - date (day in month)\n * - hours\n * - minutes\n * - seconds\n * - milliseconds\n * - amPm : 'am' or 'pm', implies 12-hour clock\n * - timeZone : offset from UTC in minutes\n * @param {Object} definition\n * @param {Number} definition.year\n * @param {Number} [definition.month]\n * @param {Number} [definition.date]\n * @param {Number} [definition.hours]\n * @param {Number} [definition.minutes]\n * @param {Number} [definition.seconds]\n * @param {Number} [definition.milliseconds]\n * @param {Number} [definition.amPm]\n * @param {Number} [definition.timeZone]\n * @returns {Date} new Date instance\n * @category Parse & format\n */\n static create(definition) {\n // Shallow clone to not alter input\n const def = _objectSpread2({}, definition);\n let invalid = isNaN(def.year),\n useUTC = false;\n // Not much validation yet, only considered invalid if all properties are null\n if (!invalid) {\n let allNull = true;\n dateProperties.forEach(property => {\n if (!(property in def) || isNaN(def[property])) {\n def[property] = 0;\n }\n allNull = allNull && def[property] === null;\n });\n invalid = allNull;\n }\n if (def.amPm === 'am') {\n def.hours = def.hours % 12;\n } else if (def.amPm === 'pm') {\n def.hours = def.hours % 12 + 12;\n }\n if ('timeZone' in def) {\n useUTC = true;\n def.minutes -= def.timeZone;\n }\n if (invalid) {\n return null;\n }\n const args = [defaultValue(def.year, DEFAULT_YEAR), defaultValue(def.month, DEFAULT_MONTH), defaultValue(def.date, DEFAULT_DAY), def.hours, def.minutes, def.seconds, def.milliseconds];\n return useUTC ? new Date(Date.UTC(...args)) : new Date(...args);\n }\n static toUTC(date) {\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds()));\n }\n /**\n * Converts a date to string with the specified format. Formats heavily inspired by https://momentjs.com.\n * Available formats (input used for output below is `new Date(2018,8,9,18,7,8,145)`):\n *\n * | Unit | Token | Description & output |\n * |-----------------------|-------|---------------------------------------|\n * | Year | YYYY | 2018 |\n * | | YY | 18 |\n * | | Y | 2018 |\n * | Quarter | Q | 3 |\n * | | Qo | 3rd |\n * | Month | MMMM | September |\n * | | MMM | Sep |\n * | | MM | 09 |\n * | | Mo | 9th |\n * | | M | 9 |\n * | Week (iso) | WW | 37 (2 digit, zero padded) |\n * | | Wo | 37th |\n * | | W | 37 |\n * | | WWp | Week 37 (localized prefix, zero pad) |\n * | | Wp | Week 37 (localized prefix) |\n * | | WWp0 | W37 (localized prefix) |\n * | | Wp0 | W37 (localized prefix) |\n * | Date | DDDD | Day of year, 3 digits |\n * | | DDDo | Day of year, ordinal |\n * | | DDD | Day of year |\n * | | DD | 09 |\n * | | Do | 9th |\n * | | D | 9 |\n * | Weekday | dddd | Sunday |\n * | | ddd | Sun |\n * | | dd | Su |\n * | | d1 | S |\n * | | do | 0th |\n * | | d | 0 |\n * | Hour | HH | 18 (00 - 23) |\n * | | H | 18 (0 - 23) |\n * | | hh | 06 (00 - 12) |\n * | | h | 6 (0 - 12) |\n * | | KK | 19 (01 - 24) |\n * | | K | 19 (1 - 24) |\n * | | kk | 06 or 18, locale determines |\n * | | k | 6 or 18, locale determines |\n * | Minute | mm | 07 |\n * | | m | 7 |\n * | Second | ss | 08 |\n * | | s | 8 |\n * | Millisecond | S | 1 (100ms) |\n * | | SS | 14 (140ms) |\n * | | SSS | 145 (145ms) |\n * | AM/PM | A | AM or PM |\n * | | a | am or pm |\n * | Predefined | LT | H: 2-digit (2d), m: 2d |\n * | (uses browser locale) | LTS | H: 2d, m: 2d, s : 2d |\n * | | LST | Depends on 12 or 24 hour clock |\n * | | | 12h, H : 1d, m : 0 or 2d |\n * | | | 24h, H : 2d, m : 2d |\n * | | L | Y: numeric (n), M : 2d, D : 2d |\n * | | l | Y: n, M : n, D : n |\n * | | LL | Y: n, M : long (l), D : n |\n * | | ll | Y: n, M : short (s), D : n |\n * | | LLL | Y: n, M : l, D : n, H: n, m: 2d |\n * | | lll | Y: n, M : s, D : n, H: n, m: 2d |\n * | | LLLL | Y: n, M : l, D : n, H: n, m: 2d, d: l |\n * | | llll | Y: n, M : s, D : n, H: n, m: 2d, d: s |\n *\n * Some examples:\n *\n * ```\n * DateHelper.format(new Date(2019, 7, 16), 'dddd') -> Friday\n * DateHelper.format(new Date(2019, 7, 16, 14, 27), 'HH:mm') --> 14:27\n * DateHelper.format(new Date(2019, 7, 16, 14, 27), 'L HH') --> 2019-07-16 14\n * ```\n *\n * Arbitrary text can be embedded in the format string by wrapping it with {}:\n *\n * ```\n * DateHelper.format(new Date(2019, 7, 16), '{It is }dddd{, yay!}') -> It is Friday, yay!\n * ```\n *\n * @param {Date} date Date\n * @param {String} format Desired format (uses `defaultFormat` if left out)\n * @returns {String} Formatted string\n * @category Parse & format\n */\n static format(date, format = DH$2.defaultFormat) {\n // Bail out if no date or invalid date\n if (!date || isNaN(date)) {\n return null;\n }\n let formatter = formatCache[format],\n output = '';\n if (!formatter) {\n formatter = formatCache[format] = [];\n // Build formatter array with the steps needed to format the date\n for (let i = 0; i < format.length; i++) {\n // Matches a predefined format?\n const formatMatch = format.slice(i).match(formatRegexp),\n predefined = formatMatch === null || formatMatch === void 0 ? void 0 : formatMatch[0];\n if (predefined) {\n const localeFormats = this.localize('L{formats}') || {},\n fn = localeFormats[predefined] || formats[predefined];\n formatter.push(fn);\n i += predefined.length - 1;\n }\n // Start of text block? Append it\n else if (format[i] === '{') {\n // Find closing brace\n const index = format.indexOf('}', i + 1);\n // No closing brace, grab rest of string\n if (index === -1) {\n formatter.push(format.substr(i + 1));\n i = format.length;\n }\n // Closing brace found\n else {\n formatter.push(format.substring(i + 1, index));\n // Carry on after closing brace\n i = index;\n }\n }\n // Otherwise append to output (for example - / : etc)\n else {\n formatter.push(format[i]);\n }\n }\n }\n formatter.forEach(step => {\n if (typeof step === 'string') {\n output += step;\n } else {\n output += step(date);\n }\n });\n return output;\n }\n /**\n * Formats a range of `dates` using the specified `format`. Because two dates are involved, the `format` specifier\n * uses the tokens `S{}` and `E{}`. The text contained between the `{}` is the {@link #function-format-static format}\n * for the start date or end date, respectively. Text not inside these tokens is retained verbatim.\n *\n * For example:\n *\n * ```javascript\n * DateHelper.formatRange(dates, 'S{DD MMM YYYY} - E{DD MMM YYYY}');\n * ```\n * The above will format `dates[0]` based on the `S{DD MMM YYYY}` segment and `dates[1] using `E{DD MMM YYYY}`. The\n * `' - '` between these will remain between the two formatted dates.\n *\n * @param {Date[]} dates An array of start date and end date (`[startDate, endDate]`).\n * @param {String} format The format specifier\n * @returns {String}\n */\n static formatRange(dates, format) {\n return format.replace(rangeFormatPartRe, (s, which, fmt) => DateHelper.format(dates[which === 'S' ? 0 : 1], fmt));\n }\n /**\n * Converts the specified amount of desired unit into milliseconds. Can be called by only specifying a unit as the\n * first argument, it then uses amount = 1. For example: asMilliseconds('hour') == asMilliseconds(1, 'hour')\n * @param {Number|String} amount Amount, what of is decided by specifying unit (also takes a unit which implies an amount of 1)\n * @param {String} unit Time unit (s, hour, months etc.)\n * @returns {Number}\n * @category Parse & format\n */\n static asMilliseconds(amount, unit = null) {\n if (typeof amount === 'string') {\n unit = amount;\n amount = 1;\n }\n return DH$2.as('millisecond', amount, unit);\n }\n /**\n * Converts the passed Date to an accurate number of months passed since the epoch start.\n * @param {Date} time The Date to find the month value of.\n * @returns {Number} The number of months since the system time epoch start. May be a fractional value.\n */\n static asMonths(time) {\n const monthLength = DH$2.as('ms', DH$2.daysInMonth(time), 'day'),\n fraction = (time.valueOf() - DH$2.startOf(time, 'month').valueOf()) / monthLength;\n return time.getYear() * 12 + time.getMonth() + fraction;\n }\n static monthsToDate(months) {\n const intMonths = Math.floor(months),\n fraction = months - intMonths,\n result = new Date(0, intMonths),\n msInMonth = DH$2.as('ms', DH$2.daysInMonth(result), 'days');\n result.setTime(result.getTime() + fraction * msInMonth);\n return result;\n }\n /**\n * Converts a millisecond time delta to a human-readable form. For example `1000 * 60 * 60 * 50`\n * milliseconds would be rendered as \"2 days, 2 hours\"\n * @param {Number} delta The millisecond delta value.\n * @param {Object} [options] Formatting options.\n * @param {Boolean} [options.abbrev] Pass `true` to use abbreviated unit names, eg \"2d, 2h\" for the above example.\n * @param {String} [options.precision] The minimum precision unit.\n * @param {String} [options.separator] The separator to use\n * @param {Boolean} [options.asString] Pass `false` to return the result as an array, eg ['2d', '2h'] for the above example.\n * @returns {String} Formatted string\n * @category Parse & format\n */\n static formatDelta(delta, options) {\n let abbrev, unitName;\n if (typeof options === 'boolean') {\n abbrev = options;\n } else if (options) {\n abbrev = options.abbrev;\n }\n const deltaObj = this.getDelta(delta, options),\n result = [],\n sep = (options === null || options === void 0 ? void 0 : options.separator) || (abbrev ? '' : ' ');\n for (unitName in deltaObj) {\n result.push(`${deltaObj[unitName]}${sep}${unitName}`);\n }\n return (options === null || options === void 0 ? void 0 : options.asString) === false ? result : result.join(', ');\n }\n /**\n * Converts a millisecond time delta to an object structure. For example `1000 * 60 * 60 * 50`\n * milliseconds the result would be as:\n * {\n * day: 2,\n * hour: 2\n * }\n *\n * @param {Number} delta The millisecond delta value.\n * @param {Object} [options] Formatting options.\n * @param {Boolean} [options.abbrev] Pass `true` to use abbreviated unit names, eg \"{ d: 2, h: 2 }\" for the above example.\n * @param {String} [options.precision] The minimum precision unit.\n * @param {Boolean} [options.ignoreLocale] Pass true to return unlocalized unit name. Requries `abbrev` to be false.\n * @param {String} [options.maxUnit] Name of the maximum unit in the output. e.g. if you pass `day` then you'll get\n * `{ h: 25 }` instead of `{ d: 1, h: 1 }`.\n * @returns {Object} The object with the values for each unit.\n */\n static getDelta(delta, options) {\n let abbrev, d, done, precision, unitName, maxUnit, ignoreLocale;\n if (typeof options === 'boolean') {\n abbrev = options;\n } else if (options) {\n abbrev = options.abbrev;\n precision = DH$2.normalizeUnit(options.precision);\n maxUnit = options.maxUnit;\n ignoreLocale = !abbrev && options.ignoreLocale;\n }\n const result = {},\n getUnit = abbrev ? DH$2.getShortNameOfUnit : DH$2.getLocalizedNameOfUnit;\n const units = maxUnit ? deltaUnits.slice(deltaUnits.indexOf(maxUnit)) : deltaUnits;\n // Loop downwards through the magnitude of units from year -> ms\n for (unitName of units) {\n d = DH$2.as(unitName, delta);\n done = precision === unitName;\n d = Math[done ? 'round' : 'floor'](d);\n // If there's a non-zero integer quantity of this unit, add it to result\n // and subtract from the delta, then go round to next unit down.\n if (d || done && !result.length) {\n result[ignoreLocale ? unitName : getUnit.call(DH$2, unitName, d !== 1)] = d; // TODO 0 is plural in EN but...?\n delta -= DH$2.as('ms', d, unitName);\n }\n if (done || !delta) {\n break;\n }\n }\n return result;\n }\n /**\n * Converts the specified amount of one unit (fromUnit) into an amount of another unit (toUnit)\n * @param {String} toUnit The name of units to convert to, eg: `'ms'`\n * @param {Number|String} amount The time to convert. Either the magnitude number form\n * or a duration string such as '2d'.\n * @param {String} [fromUnit] If the amount was passed as a number, the units to use to convert from.\n * @returns {Number}\n * @category Parse & format\n */\n static as(toUnit, amount, fromUnit = 'ms') {\n // Allow DH.as('ms', '2d')\n if (typeof amount === 'string') {\n amount = DH$2.parseDuration(amount);\n }\n // Allow DH.as('ms', myDurationObject)\n if (typeof amount === 'object') {\n fromUnit = amount.unit;\n amount = amount.magnitude;\n }\n if (toUnit === fromUnit) {\n return amount;\n }\n toUnit = DH$2.normalizeUnit(toUnit);\n fromUnit = DH$2.normalizeUnit(fromUnit);\n if (toUnit === fromUnit) {\n return amount;\n }\n // validConversions[][] can be negative to signal that conversion is not exact, ignore sign here\n else if (unitMagnitudes[fromUnit] > unitMagnitudes[toUnit]) {\n return amount * Math.abs(validConversions[fromUnit][toUnit]);\n } else {\n return amount / Math.abs(validConversions[toUnit][fromUnit]);\n }\n }\n static formatContainsHourInfo(format) {\n const stripEscapeRe = /(\\\\.)/g,\n hourInfoRe = /([HhKkmSsAa]|LT|L{3,}|l{3,})/;\n return hourInfoRe.test(format.replace(stripEscapeRe, ''));\n }\n /**\n * Returns true for 24-hour format.\n * @param {String} format Date format\n * @returns {Boolean}\n * @category Parse & format\n */\n static is24HourFormat(format) {\n return DH$2.format(DH$2.getTime(13, 0, 0), format).includes('13');\n }\n //endregion\n //region Manipulate\n /**\n * Add days, hours etc. to a date. Always clones the date, original will be left unaffected.\n * @param {Date|String} date Original date\n * @param {Number|String|Core.data.Duration|Object} amount Amount of days, hours etc. or a string representation of a duration\n * as accepted by {@link #function-parseDuration-static} or an object with { magnitude, unit } properties.\n * @param {String} [unit] Unit for amount\n * @privateparam {Boolean} [clone] Affect the original\n * @returns {Date} New calculated date\n * @category Manipulate\n */\n static add(date, amount, unit = 'ms', clone = true) {\n let d;\n if (typeof date === 'string') {\n d = DH$2.parse(date);\n } else if (clone) {\n d = new Date(date.getTime());\n } else {\n d = date;\n }\n if (typeof amount === 'string') {\n const duration = DateHelper.parseDuration(amount);\n amount = duration.magnitude;\n unit = duration.unit;\n } else if (amount && typeof amount === 'object') {\n unit = amount.unit;\n amount = amount.magnitude;\n }\n if (!unit || amount === 0) {\n return d;\n }\n unit = DH$2.normalizeUnit(unit);\n switch (unit) {\n case 'millisecond':\n d.setTime(d.getTime() + amount);\n break;\n case 'second':\n d.setTime(d.getTime() + amount * 1000);\n break;\n case 'minute':\n d.setTime(d.getTime() + amount * 60000);\n break;\n case 'hour':\n d.setTime(d.getTime() + amount * 3600000);\n break;\n case 'day':\n // Integer value added, do calendar calculation to correctly handle DST etc.\n if (amount % 1 === 0) {\n d.setDate(d.getDate() + amount);\n }\n // No browsers support fractional values for dates any longer, do time based calculation\n else {\n d.setTime(d.getTime() + amount * 86400000);\n }\n // When crossing DST in Brazil, we expect hours to end up the same\n if (d.getHours() === 23 && date.getHours() === 0) {\n d.setHours(d.getHours() + 1);\n }\n break;\n case 'week':\n d.setDate(d.getDate() + amount * 7);\n break;\n case 'month':\n {\n let day = d.getDate();\n if (day > 28) {\n day = Math.min(day, DH$2.getLastDateOfMonth(DH$2.add(DH$2.getFirstDateOfMonth(d), amount, 'month')).getDate());\n }\n d.setDate(day);\n d.setMonth(d.getMonth() + amount);\n break;\n }\n case 'quarter':\n DH$2.add(d, amount * 3, 'month', false);\n break;\n case 'year':\n d.setFullYear(d.getFullYear() + amount);\n break;\n case 'decade':\n d.setFullYear(d.getFullYear() + amount * 10);\n break;\n }\n return d;\n }\n /**\n * Calculates the difference between two dates, in the specified unit.\n * @param {Date} start First date\n * @param {Date} end Second date\n * @param {String} unit Unit to calculate difference in\n * @param {Boolean} fractional Specify false to round result\n * @returns {Number} Difference in the specified unit\n * @category Manipulate\n */\n static diff(start, end, unit = 'ms', fractional = true) {\n unit = DH$2.normalizeUnit(unit);\n if (!start || !end) return 0;\n let amount;\n switch (unit) {\n case 'year':\n amount = DH$2.diff(start, end, 'month') / 12;\n break;\n case 'quarter':\n amount = DH$2.diff(start, end, 'month') / 3;\n break;\n case 'month':\n amount = (end.getFullYear() - start.getFullYear()) * 12 + (end.getMonth() - start.getMonth());\n break;\n case 'week':\n amount = DH$2.diff(start, end, 'day') / 7;\n break;\n case 'day':\n {\n const dstDiff = start.getTimezoneOffset() - end.getTimezoneOffset();\n amount = (end - start + dstDiff * 60 * 1000) / 86400000;\n break;\n }\n case 'hour':\n amount = (end - start) / 3600000;\n break;\n case 'minute':\n amount = (end - start) / 60000;\n break;\n case 'second':\n amount = (end - start) / 1000;\n break;\n case 'millisecond':\n amount = end - start;\n break;\n }\n return fractional ? amount : Math.round(amount);\n }\n /**\n * Sets the date to the start of the specified unit, by default returning a clone of the date instead of changing it\n * in place.\n * @param {Date} date Original date\n * @param {String} [unit] Start of this unit, 'day', 'month' etc.\n * @param {Boolean} [clone] Manipulate a copy of the date\n * @param {Number} [weekStartDay] The first day of week, 0-6 (Sunday-Saturday). Defaults to the\n * {@link #property-weekStartDay-static}.\n * @returns {Date} Manipulated date\n * @category Manipulate\n */\n static startOf(date, unit = 'day', clone = true, weekStartDay = DH$2.weekStartDay) {\n if (!date) {\n return null;\n }\n unit = DH$2.normalizeUnit(unit);\n if (clone) {\n date = DH$2.clone(date);\n }\n switch (unit) {\n case 'year':\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n case 'quarter':\n date.setMonth((DH$2.get(date, 'quarter') - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n case 'month':\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n case 'week':\n {\n const delta = date.getDay() - weekStartDay;\n date.setDate(date.getDate() - delta);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n case 'day':\n date.setHours(0, 0, 0, 0);\n return date;\n // Cant use setMinutes(0, 0, 0) etc for DST transitions\n case 'hour':\n date.getMinutes() > 0 && date.setMinutes(0);\n // eslint-disable-next-line no-fallthrough\n case 'minute':\n date.getSeconds() > 0 && date.setSeconds(0);\n // eslint-disable-next-line no-fallthrough\n case 'second':\n date.getMilliseconds() > 0 && date.setMilliseconds(0);\n // eslint-disable-next-line no-fallthrough\n case 'millisecond':\n return date;\n }\n }\n /**\n * Returns the end point of the passed date, that is 00:00:00 of the day after the passed date.\n * @param {Date} date The date to return the end point of.\n */\n static endOf(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);\n }\n /**\n * Creates a clone of the specified date\n * @param {Date} date Original date\n * @returns {Date} Cloned date\n * @category Manipulate\n */\n static clone(date) {\n return new Date(date.getTime());\n }\n /**\n * Removes time from a date (same as calling #startOf(date, 'day'))\n * @param {Date} date Date to remove time from\n * @param {Boolean} [clone=true] Manipulate a copy of the date\n * @returns {Date} Manipulated date\n * @category Manipulate\n */\n static clearTime(date, clone = true) {\n if (!date) {\n return null;\n }\n if (clone) {\n date = new Date(date.getTime());\n }\n date.setHours(0, 0, 0, 0);\n return date;\n }\n static midnight(date, inclusive) {\n let ret = DH$2.clearTime(date);\n if (inclusive && ret < date) {\n ret = DH$2.add(ret, 1, 'd');\n }\n return ret;\n }\n /**\n * Returns the elapsed milliseconds from the start of the specified date.\n * @param {Date} date Date to remove date from.\n * @param {String} [as] The time unit to return.\n * @returns {Number} The elapsed milliseconds from the start of the specified date\n * @category Manipulate\n */\n static getTimeOfDay(date, as = 'ms') {\n const t = date.getHours() * validConversions.hour.millisecond + date.getMinutes() * validConversions.minute.millisecond + date.getSeconds() * validConversions.second.millisecond + date.getMilliseconds();\n return as === 'ms' ? t : DH$2.as(as, t, 'ms');\n }\n /**\n * Sets a part of a date (in place)\n * @param {Date} date Date to manipulate\n * @param {String|Object} unit Part of date to set, for example 'minute'. Or an object like { second: 1, minute: 1 }\n * @param {Number} amount Value to set\n * @returns {Date} Passed date instance modified according to the arguments\n * @category Manipulate\n */\n static set(date, unit, amount) {\n if (!unit) {\n return date;\n }\n if (typeof unit === 'string') {\n switch (DH$2.normalizeUnit(unit)) {\n case 'millisecond':\n // Setting value to 0 when it is 0 at DST crossing messes it up\n if (amount !== 0 || date.getMilliseconds() > 0) {\n date.setMilliseconds(amount);\n }\n break;\n case 'second':\n // Setting value to 0 when it is 0 at DST crossing messes it up\n if (amount !== 0 || date.getSeconds() > 0) {\n date.setSeconds(amount);\n }\n break;\n case 'minute':\n // Setting value to 0 when it is 0 at DST crossing messes it up\n if (amount !== 0 || date.getMinutes() > 0) {\n date.setMinutes(amount);\n }\n break;\n case 'hour':\n date.setHours(amount);\n break;\n case 'day':\n case 'date':\n date.setDate(amount);\n break;\n case 'week':\n throw new Error('week not implemented');\n case 'month':\n date.setMonth(amount);\n break;\n case 'quarter':\n // Setting quarter = first day of first month of that quarter\n date.setDate(1);\n date.setMonth((amount - 1) * 3);\n break;\n case 'year':\n date.setFullYear(amount);\n break;\n }\n } else {\n Object.entries(unit)\n // Make sure smallest unit goes first, to not change month before changing day\n .sort((a, b) => unitMagnitudes[a[0]] - unitMagnitudes[b[0]]).forEach(([unit, amount]) => {\n DH$2.set(date, unit, amount);\n });\n }\n return date;\n }\n static setDateToMidday(date, clone = true) {\n return DH$2.set(DH$2.clearTime(date, clone), 'hour', 12);\n }\n /**\n * Constrains the date within a min and a max date\n * @param {Date} date The date to constrain\n * @param {Date} [min] Min date\n * @param {Date} [max] Max date\n * @returns {Date} The constrained date\n * @category Manipulate\n */\n static constrain(date, min, max) {\n if (min != null) {\n date = DH$2.max(date, min);\n }\n return max == null ? date : DH$2.min(date, max);\n }\n /**\n * Returns time with default year, month, and day (Jan 1, 2020)\n * @param {Number|Date} hours Hours value or the full date to extract the time of.\n * @param {Number} minutes Minutes value\n * @param {Number} seconds Seconds value\n * @param {Number} ms Milliseconds value\n * @returns {Date} A new default date with the time extracted from the given date or from the time values provided individually.\n * @category Manipulate\n */\n static getTime(hours, minutes = 0, seconds = 0, ms = 0) {\n if (hours instanceof Date) {\n ms = hours.getMilliseconds();\n seconds = hours.getSeconds();\n minutes = hours.getMinutes();\n hours = hours.getHours();\n }\n return new Date(DEFAULT_YEAR, DEFAULT_MONTH, DEFAULT_DAY, hours, minutes, seconds, ms);\n }\n /**\n * Copies hours, minutes, seconds, milliseconds from one date to another\n *\n * @param {Date} targetDate The target date\n * @param {Date} sourceDate The source date\n * @returns {Date} The adjusted target date\n * @category Manipulate\n * @static\n */\n static copyTimeValues(targetDate, sourceDate) {\n targetDate.setHours(sourceDate.getHours());\n targetDate.setMinutes(sourceDate.getMinutes());\n targetDate.setSeconds(sourceDate.getSeconds());\n targetDate.setMilliseconds(sourceDate.getMilliseconds());\n return targetDate;\n }\n //endregion\n //region Comparison\n static isDST(date) {\n const year = date.getFullYear(),\n jan = new Date(year, 0, 1),\n jul = new Date(year, 6, 1);\n return date.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n }\n /**\n * Determines if a date precedes another.\n * @param {Date} first First date\n * @param {Date} second Second date\n * @returns {Boolean} true if first precedes second, otherwise false\n * @category Comparison\n */\n static isBefore(first, second) {\n return first < second;\n }\n /**\n * Determines if a date succeeds another.\n * @param {Date} first First date\n * @param {Date} second Second date\n * @returns {Boolean} true if first succeeds second, otherwise false\n * @category Comparison\n */\n static isAfter(first, second) {\n return first > second;\n }\n /**\n * Checks if two dates are equal.\n * @param {Date} first First date\n * @param {Date} second Second date\n * @param {String} unit If not given, the comparison will be done up to a millisecond\n * @returns {Boolean} true if the dates are equal\n * @category Comparison\n */\n static isEqual(first, second, unit = null) {\n if (unit === null) {\n // https://jsbench.me/3jk2bom2r3/1\n // https://jsbench.me/ltkb3vk0ji/1 (more flavors) - getTime is >2x faster vs valueOf/Number/op+\n return first && second && first.getTime() === second.getTime();\n }\n return DH$2.startOf(first, unit) - DH$2.startOf(second, unit) === 0;\n }\n /**\n * Compares two dates using the specified precision\n * @param {Date} first\n * @param {Date} second\n * @param {String} unit\n * @returns {Number} 0 = equal, -1 first before second, 1 first after second\n * @category Comparison\n */\n static compare(first, second, unit = null) {\n // Unit specified, cut the rest out\n if (unit) {\n first = DH$2.startOf(first, unit);\n second = DH$2.startOf(second, unit);\n }\n // Comparison on ms level\n if (first < second) return -1;\n if (first > second) return 1;\n return 0;\n }\n /**\n * Coerces the passed Date between the passed minimum and maximum values.\n * @param {Date} date The date to clamp between the `min` and `max`.\n * @param {Date} min The minimum Date.\n * @param {Date} max The maximum Date.\n * @returns If the passed `date` is valid, a *new* Date object which is clamped between the `min` and `max`.\n */\n static clamp(date, min, max) {\n if (!isNaN(date)) {\n if (min != null) {\n date = Math.max(date, min);\n }\n if (max != null) {\n date = Math.min(date, max);\n }\n return new Date(date);\n }\n }\n static isSameDate(first, second) {\n return DH$2.compare(first, second, 'd') === 0;\n }\n static isSameTime(first, second) {\n return first.getHours() === second.getHours() && first.getMinutes() === second.getMinutes() && first.getSeconds() === second.getSeconds() && first.getMilliseconds() === second.getMilliseconds();\n }\n /**\n * Checks if date is the start of specified unit\n * @param {Date} date\n * @param {String} unit\n * @returns {Boolean}\n * @category Comparison\n */\n static isStartOf(date, unit) {\n return DH$2.isEqual(date, DH$2.startOf(date, unit));\n }\n /**\n * Checks if this date is >= start and < end.\n * @param {Date} date The source date\n * @param {Date} start Start date\n * @param {Date} end End date\n * @returns {Boolean} true if this date falls on or between the given start and end dates.\n * @category Comparison\n */\n static betweenLesser(date, start, end) {\n //return start <= date && date < end;\n return start.getTime() <= date.getTime() && date.getTime() < end.getTime();\n }\n /**\n * Checks if this date is >= start and <= end.\n * @param {Date} date The source date\n * @param {Date} start Start date\n * @param {Date} end End date\n * @returns {Boolean} true if this date falls on or between the given start and end dates.\n * @category Comparison\n */\n static betweenLesserEqual(date, start, end) {\n return start.getTime() <= date.getTime() && date.getTime() <= end.getTime();\n }\n /**\n * Returns true if dates intersect\n * @param {Date} date1Start\n * @param {Date} date1End\n * @param {Date} date2Start\n * @param {Date} date2End\n * @returns {Boolean} Returns true if dates intersect\n * @category Comparison\n */\n static intersectSpans(date1Start, date1End, date2Start, date2End) {\n return DH$2.betweenLesser(date1Start, date2Start, date2End) || DH$2.betweenLesser(date2Start, date1Start, date1End);\n }\n /**\n * Compare two units. Returns 1 if first param is a greater unit than second param, -1 if the opposite is true or 0 if they're equal\n * @param {String} unit1 The 1st unit\n * @param {String} unit2 The 2nd unit\n * @returns {Number} Returns 1 if first param is a greater unit than second param, -1 if the opposite is true or 0 if they're equal\n * @category Comparison\n */\n static compareUnits(unit1, unit2) {\n return Math.sign(unitMagnitudes[DH$2.normalizeUnit(unit1)] - unitMagnitudes[DH$2.normalizeUnit(unit2)]);\n }\n /**\n * Returns true if the first time span completely 'covers' the second time span.\n * @example\n * DateHelper.timeSpanContains(new Date(2010, 1, 2), new Date(2010, 1, 5), new Date(2010, 1, 3), new Date(2010, 1, 4)) ==> true\n * DateHelper.timeSpanContains(new Date(2010, 1, 2), new Date(2010, 1, 5), new Date(2010, 1, 3), new Date(2010, 1, 6)) ==> false\n * @param {Date} spanStart The start date for initial time span\n * @param {Date} spanEnd The end date for initial time span\n * @param {Date} otherSpanStart The start date for the 2nd time span\n * @param {Date} otherSpanEnd The end date for the 2nd time span\n * @returns {Boolean}\n * @category Comparison\n */\n static timeSpanContains(spanStart, spanEnd, otherSpanStart, otherSpanEnd) {\n return otherSpanStart - spanStart >= 0 && spanEnd - otherSpanEnd >= 0;\n }\n //endregion\n //region Query\n /**\n * Get the first day of week, 0-6 (Sunday-Saturday).\n * This is determined by the current locale's `DateHelper.weekStartDay` parameter.\n * @property {Number}\n * @readonly\n */\n static get weekStartDay() {\n // Cache is reset in applyLocale\n if (DH$2._weekStartDay == null) {\n // Defaults to 0, should not need to happen in real world scenarios when a locale is always loaded\n DH$2._weekStartDay = this.localize('L{weekStartDay}') || 0;\n }\n return DH$2._weekStartDay;\n }\n /**\n * Get non-working days as an object where keys are day indices, 0-6 (Sunday-Saturday), and the value is `true`.\n * This is determined by the current locale's `DateHelper.nonWorkingDays` parameter.\n *\n * For example:\n * ```\n * {\n * 0 : true, // Sunday\n * 6 : true // Saturday\n * }\n * ```\n * @property {Object}\n * @readonly\n */\n static get nonWorkingDays() {\n return _objectSpread2({}, this.localize('L{nonWorkingDays}'));\n }\n /**\n * Get non-working days as an array of day indices, 0-6 (Sunday-Saturday).\n * This is determined by the current locale's `DateHelper.nonWorkingDays` parameter.\n *\n * For example:\n * ```\n * [ 0, 6 ] // Sunday & Saturday\n * ```\n * @property {Number[]}\n * @readonly\n * @internal\n */\n static get nonWorkingDaysAsArray() {\n // transform string keys to integers\n return Object.keys(this.nonWorkingDays).map(Number);\n }\n /**\n * Get weekend days as an object where keys are day indices, 0-6 (Sunday-Saturday), and the value is `true`.\n * Weekends are days which are declared as weekend days by the selected country and defined by the current locale's `DateHelper.weekends` parameter.\n * To get non-working days see {@link #property-nonWorkingDays-static}.\n *\n * For example:\n * ```\n * {\n * 0 : true, // Sunday\n * 6 : true // Saturday\n * }\n * ```\n * @property {Object}\n * @readonly\n * @internal\n */\n static get weekends() {\n return _objectSpread2({}, this.localize('L{weekends}'));\n }\n /**\n * Get the specified part of a date\n * @param {Date} date\n * @param {String} unit Part of date, hour, minute etc.\n * @returns {Number} The requested part of the specified date\n * @category Query\n */\n static get(date, unit) {\n switch (DH$2.normalizeUnit(unit)) {\n case 'millisecond':\n return date.getMilliseconds();\n case 'second':\n return date.getSeconds();\n case 'minute':\n return date.getMinutes();\n case 'hour':\n return date.getHours();\n case 'date':\n case 'day':\n // Scheduler has a lot of calculations expecting this to work\n return date.getDate();\n case 'week':\n return formats.W(date);\n case 'month':\n return date.getMonth();\n case 'quarter':\n return Math.floor(date.getMonth() / 3) + 1;\n case 'year':\n return date.getFullYear();\n }\n return null;\n }\n /**\n * Get number of days in the current year for the supplied date.\n * @param {Date} date Date to check\n * @returns {Number} Days in year\n * @category Query\n * @internal\n */\n static daysInYear(date) {\n const fullYear = date.getFullYear(),\n duration = new Date(fullYear + 1, 0, 1) - new Date(fullYear, 0, 1);\n return this.as('day', duration);\n }\n /**\n * Get number of days in the current month for the supplied date\n * @param {Date} date Date which month should be checked\n * @returns {Number} Days in month\n * @category Query\n */\n static daysInMonth(date) {\n return 32 - new Date(date.getFullYear(), date.getMonth(), 32).getDate();\n }\n /**\n * Get number of hours in the current day for the supplied date.\n * @param {Date} date Date to check\n * @returns {Number} Hours in day\n * @category Query\n * @internal\n */\n static hoursInDay(date) {\n const fullYear = date.getFullYear(),\n month = date.getMonth(),\n day = date.getDate(),\n duration = new Date(fullYear, month, day + 1) - new Date(fullYear, month, day);\n return this.as('hour', duration);\n }\n /**\n * Converts unit related to the date to actual amount of milliseconds in it. Takes into account leap years and\n * different duration of months.\n * @param {Date} date\n * @param {String} unit\n * @returns {Number} Returns amount of milliseconds\n * @internal\n */\n static getNormalizedUnitDuration(date, unit) {\n let result;\n switch (unit) {\n case 'month':\n result = DH$2.asMilliseconds(DH$2.daysInMonth(date), 'day');\n break;\n case 'year':\n result = DH$2.asMilliseconds(DH$2.daysInYear(date), 'day');\n break;\n case 'day':\n result = DH$2.asMilliseconds(DH$2.hoursInDay(date), 'hour');\n break;\n default:\n result = DH$2.asMilliseconds(unit);\n }\n return result;\n }\n /**\n * Get the first date of the month for the supplied date\n * @param {Date} date\n * @returns {Date} New Date instance\n * @category Query\n */\n static getFirstDateOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n }\n /**\n * Get the last date of the month for the supplied date\n * @param {Date} date\n * @returns {Date} New Date instance\n * @category Query\n */\n static getLastDateOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n }\n /**\n * Get the earliest of two dates\n * @param {Date} first\n * @param {Date} second\n * @returns {Date} Earliest date\n * @category Query\n */\n static min(first, second) {\n return first.getTime() < second.getTime() ? first : second;\n }\n /**\n * Get the latest of two dates\n * @param {Date} first\n * @param {Date} second\n * @returns {Date} Latest date\n * @category Query\n */\n static max(first, second) {\n return first.getTime() > second.getTime() ? first : second;\n }\n /**\n * Get an incremented date. Incrementation based on specified unit and optional amount\n * @param {Date} date\n * @param {String} unit\n * @param {Number} [increment]\n * @param {Number} [weekStartDay] Will default to what is set in locale\n * @returns {Date} New Date instance\n * @category Query\n */\n static getNext(date, unit, increment = 1, weekStartDay = DH$2.weekStartDay) {\n if (unit === 'week') {\n const dt = DH$2.clone(date),\n day = dt.getDay();\n DH$2.startOf(dt, 'day', false);\n DH$2.add(dt, weekStartDay - day + 7 * (increment - (weekStartDay <= day ? 0 : 1)), 'day', false);\n // For south american timezones, midnight does not exist on DST transitions, adjust...\n if (dt.getDay() !== weekStartDay) {\n DH$2.add(dt, 1, 'hour');\n }\n return dt;\n }\n return DH$2.startOf(DH$2.add(date, increment, unit), unit, false);\n }\n /**\n * Checks if date object is valid.\n *\n * For example:\n *\n * ```javascript\n * date = new Date('foo')\n * date instanceof Date // true\n * date.toString() // \"Invalid Date\"\n * isNaN(date) // true\n * DateHelper.isValidDate(date) // false\n *\n * date = new Date()\n * date instanceof Date // true\n * date.toString() // \"Mon Jan 13 2020 18:27:38 GMT+0300 (GMT+03:00)\"\n * isNaN(date) // false\n * DateHelper.isValidDate(date) // true\n * ```\n *\n * @param {Date} date\n * @returns {Boolean}\n */\n static isValidDate(date) {\n return DH$2.isDate(date) && !isNaN(date);\n }\n /**\n * Checks if value is a date object. Allows to recognize date object even from another context,\n * like the top frame when used in an iframe.\n *\n * @param {*} value\n * @returns {Boolean}\n */\n static isDate(value) {\n // see https://jsbench.me/s7kb49w83j/1 (cannot use instanceof cross-frame):\n return value && toString$1.call(value) === DATE_TYPE;\n }\n /**\n * Get the start of the next day\n * @param {Date} date\n * @param {Boolean} [clone]\n * @param {Boolean} [noNeedToClearTime=false]\n * @returns {Date} Passed Date or new Date instance, depending on the `clone` flag\n * @category Query\n */\n static getStartOfNextDay(date, clone, noNeedToClearTime) {\n let nextDay = DH$2.add(noNeedToClearTime ? date : DH$2.clearTime(date, clone), 1, 'day');\n // DST case\n if (nextDay.getDate() === date.getDate()) {\n const offsetNextDay = DH$2.add(DH$2.clearTime(date, clone), 2, 'day').getTimezoneOffset(),\n offsetDate = date.getTimezoneOffset();\n nextDay = DH$2.add(nextDay, offsetDate - offsetNextDay, 'minute');\n }\n return nextDay;\n }\n /**\n * Get the end of previous day\n * @param {Date} date\n * @param {Boolean} noNeedToClearTime\n * @returns {Date} New Date instance\n * @category Query\n */\n static getEndOfPreviousDay(date, noNeedToClearTime) {\n const dateOnly = noNeedToClearTime ? date : DH$2.clearTime(date, true);\n // dates are different\n if (dateOnly - date) {\n return dateOnly;\n } else {\n return DH$2.add(dateOnly, -1, 'day');\n }\n }\n /**\n * Returns a string describing the specified week. For example, \"39, September 2020\" or \"40, Sep - Oct 2020\".\n * @param {Date} startDate\n * @param {Date} [endDate]\n * @returns {String}\n * @internal\n */\n static getWeekDescription(startDate, endDate = startDate) {\n const monthDesc = startDate.getMonth() === endDate.getMonth() ? DateHelper.format(startDate, 'MMMM') : `${DateHelper.format(startDate, 'MMM')} - ${DateHelper.format(endDate, 'MMM')}`,\n week = DateHelper.getWeekNumber(startDate);\n return `${week[1]}, ${monthDesc} ${week[0]}`;\n }\n /**\n * Get week number for the date.\n * @param {Date} date The date\n * @param {Number} [weekStartDay] The first day of week, 0-6 (Sunday-Saturday). Defaults to the {@link #property-weekStartDay-static}.\n * @returns {Number[]} year and week number\n * @category Query\n */\n static getWeekNumber(date, weekStartDay = DateHelper.weekStartDay) {\n const jan01 = new Date(date.getFullYear(), 0, 1),\n dec31 = new Date(date.getFullYear(), 11, 31),\n firstDay = normalizeDay(jan01.getDay() - weekStartDay),\n lastDay = normalizeDay(dec31.getDay() - weekStartDay),\n dayNumber = getDayDiff(date, jan01);\n let weekNumber;\n // Check if the year starts before the middle of a week\n if (firstDay < 4) {\n weekNumber = Math.floor((dayNumber + firstDay - 1) / 7) + 1;\n } else {\n weekNumber = Math.floor((dayNumber + firstDay - 1) / 7);\n }\n if (weekNumber) {\n let year = date.getFullYear();\n // Might be week 1 of next year if the year ends before day 3 (0 based)\n if (weekNumber === 53 && lastDay < 3) {\n year++;\n weekNumber = 1;\n }\n return [year, weekNumber];\n }\n // We're in week zero which is the last week of the previous year, so ask what\n // week encapsulates 31 Dec in the previous year.\n const lastWeekOfLastYear = DateHelper.getWeekNumber(new Date(date.getFullYear() - 1, 11, 31))[1];\n return [date.getFullYear() - 1, lastWeekOfLastYear];\n }\n //endregion\n //region Unit helpers\n /**\n * Turns (10, 'day') into '10 days' etc.\n * @param {Number} count Amount of unit\n * @param {String} unit Unit, will be normalized (days, d -> day etc.)\n * @returns {String}\n * @category Unit helpers\n */\n static formatCount(count, unit) {\n unit = DH$2.normalizeUnit(unit);\n if (count !== 1) unit += 's';\n return count + ' ' + unit;\n }\n /**\n * Get the ratio between two units ( year, month -> 1/12 )\n * @param {String} baseUnit\n * @param {String} unit\n * @param {Boolean} acceptEstimate If true, process negative values of validConversions. Defaults to false.\n * @returns {Number} Ratio\n * @category Unit helpers\n */\n static getUnitToBaseUnitRatio(baseUnit, unit, acceptEstimate = false) {\n baseUnit = DH$2.normalizeUnit(baseUnit);\n unit = DH$2.normalizeUnit(unit);\n if (baseUnit === unit) return 1;\n // Some validConversions have negative sign to signal that it is not an exact conversion.\n // Ignore those here unless acceptEstimate is provided.\n if (validConversions[baseUnit] && validConversions[baseUnit][unit] && (acceptEstimate || validConversions[baseUnit][unit] > 0)) {\n return 1 / DH$2.as(unit, 1, baseUnit);\n }\n if (validConversions[unit] && validConversions[unit][baseUnit] && (acceptEstimate || validConversions[unit][baseUnit] > 0)) {\n return DH$2.as(baseUnit, 1, unit);\n }\n return -1;\n }\n /**\n * Returns a localized abbreviated form of the name of the duration unit.\n * For example in the `EN` locale, for `\"qrt\"` it will return `\"q\"`.\n * @param {String} unit Duration unit\n * @returns {String}\n * @category Unit helpers\n */\n static getShortNameOfUnit(unit) {\n // Convert abbreviations to the canonical name.\n // See locale file and the applyLocale method below.\n unit = DH$2.parseTimeUnit(unit);\n // unitLookup is keyed by eg 'DAY', 'day', 'MILLISECOND', 'millisecond' etc\n return DH$2.unitLookup[unit].abbrev;\n }\n /**\n * Returns a localized full name of the duration unit.\n *\n * For example in the `EN` locale, for `\"d\"` it will return either\n * `\"day\"` or `\"days\"`, depending on the `plural` argument\n *\n * Preserves casing of first letter.\n *\n * @static\n * @param {String} unit Time unit\n * @param {Boolean} [plural] Whether to return a plural name or singular\n * @returns {String}\n * @category Unit helpers\n */\n static getLocalizedNameOfUnit(unit, plural = false) {\n const capitalize = unit.charAt(0) === unit.charAt(0).toUpperCase();\n // Normalize to not have to have translations for each variation used in code\n unit = DH$2.normalizeUnit(unit);\n // Convert abbreviations to the canonical name.\n // See locale file and the applyLocale method below.\n unit = DH$2.parseTimeUnit(unit);\n // Translate\n // unitLookup is keyed by eg 'DAY', 'day', 'MILLISECOND', 'millisecond' etc\n unit = DH$2.unitLookup[unit][plural ? 'plural' : 'single'];\n // Preserve casing of first letter\n if (capitalize) {\n unit = StringHelper.capitalize(unit);\n }\n return unit;\n }\n /**\n * Normalizes a unit for easier usage in conditionals. For example year, years, y -> year\n * @param {String} unit\n * @returns {String}\n * @category Unit helpers\n */\n static normalizeUnit(unit) {\n if (!unit) {\n return null;\n }\n const unitLower = unit.toLowerCase();\n if (unitLower === 'date') {\n return unitLower;\n }\n return canonicalUnitNames.includes(unitLower)\n // Already valid\n ? unitLower\n // Trying specified case first, since we have both \"M\" for month and \"m\" for minute\n : normalizedUnits[unit] || normalizedUnits[unitLower];\n }\n static getUnitByName(name) {\n // Allow either a canonical name to be passed, or, if that fails, parse it as a localized name or abbreviation.\n return DH$2.normalizeUnit(name) || DH$2.normalizeUnit(DH$2.parseTimeUnit(name));\n }\n /**\n * Returns a duration of the timeframe in the given unit.\n * @param {Date} start The start date of the timeframe\n * @param {Date} end The end date of the timeframe\n * @param {String} unit Duration unit\n * @privateparam {Boolean} [doNotRound]\n * @returns {Number} The duration in the units\n * @category Unit helpers\n * @ignore\n */\n static getDurationInUnit(start, end, unit, doNotRound) {\n return DH$2.diff(start, end, unit, doNotRound);\n }\n /**\n * Checks if two date units align\n * @private\n * @param {String} majorUnit\n * @param {String} minorUnit\n * @returns {Boolean}\n * @category Unit helpers\n */\n static doesUnitsAlign(majorUnit, minorUnit) {\n // TODO: probably needs some fleshing out to be generally useful, otherwise move to TimeAxisViewModel?\n // Maybe also use getUnitToBaseUnitRatio() for assertion?\n return !(majorUnit !== minorUnit && minorUnit === 'week');\n }\n static getSmallerUnit(unit) {\n return canonicalUnitNames[unitMagnitudes[DH$2.normalizeUnit(unit)] - 1] || null;\n }\n static getLargerUnit(unit) {\n return canonicalUnitNames[unitMagnitudes[DH$2.normalizeUnit(unit)] + 1] || null;\n }\n /**\n *\n * Rounds the passed Date value to the nearest `increment` value.\n *\n * Optionally may round relative to a certain base time point.\n *\n * For example `DH.round(new Date('2020-01-01T09:35'), '30 min', new Date('2020-01-01T09:15'))`\n * would round to 9:45 because that's the nearest integer number of 30 minute increments\n * from the base.\n *\n * Note that `base` is ignored when rounding to weeks. The configured {@link #property-weekStartDay-static}\n * dictates what the base of a week is.\n *\n * @param {Date} time The time to round\n * @param {String|Number} increment A millisecond value by which to round the time.\n * May be specified in string form eg: `'15 minutes'`\n * @param {Date} [base] The \"start\" from which to apply the rounding.\n * @param {Number} [weekStartDay] Will default to what is set in locale\n * @returns {Date} New Date instance\n */\n static round(time, increment, base, weekStartDay) {\n return DH$2.snap('round', time, increment, base, weekStartDay);\n }\n /**\n *\n * Floor the passed Date value to the nearest `increment` value.\n *\n * Optionally may floor relative to a certain base time point.\n *\n * For example `DH.floor(new Date('2020-01-01T09:35'), '30 min', new Date('2020-01-01T09:15'))`\n * would floor to 9:15 because that's the closest lower integer number of 30 minute increments\n * from the base.\n *\n * Note that `base` is ignored when flooring to weeks. The configured {@link #property-weekStartDay-static}\n * dictates what the base of a week is.\n *\n * @param {Date} time The time to floor\n * @param {String|Number|Object} increment A numeric millisecond value by which to floor the time.\n * or a duration in string form eg `'30 min'` or object form : `{unit: \"minute\", magnitude: 30}`\n * or `{unit: \"minute\", increment: 30}`\n * @param {Date} [base] The \"start\" from which to apply the flooring.\n * @param {Number} [weekStartDay] Will default to what is set in locale\n * @returns {Date} New Date instance\n */\n static floor(time, increment, base, weekStartDay) {\n return DH$2.snap('floor', time, increment, base, weekStartDay);\n }\n /**\n *\n * Ceils the passed Date value to the nearest `increment` value.\n *\n * Optionally may ceil relative to a certain base time point.\n *\n * For example `DH.ceil(new Date('2020-01-01T09:35'), '30 min', new Date('2020-01-01T09:15'))`\n * would ceil to 9:45 because that's the closest higher integer number of 30 minute increments\n * from the base.\n *\n * Note that `base` is ignored when ceiling to weeks. Use weekStartDay argument which default to the configured\n * {@link #property-weekStartDay-static} dictates what the base of a week is\n *\n * @param {Date} time The time to ceil\n * @param {String|Number|Object} increment A numeric millisecond value by which to ceil the time.\n * or a duration in string form eg `'30 min'` or object form : `{unit: \"minute\", magnitude: 30}`\n * or `{unit: \"minute\", increment: 30}`\n * @param {Date} [base] The \"start\" from which to apply the ceiling.\n * @param {Number} [weekStartDay] Will default to what is set in locale\n * @returns {Date} New Date instance\n */\n static ceil(time, increment, base, weekStartDay) {\n return DH$2.snap('ceil', time, increment, base, weekStartDay);\n }\n /**\n * Implementation for round, floor and ceil.\n * @internal\n */\n static snap(operation, time, increment, base, weekStartDay = DH$2.weekStartDay) {\n const snapFn = snapFns[operation];\n if (typeof increment === 'string') {\n increment = DH$2.parseDuration(increment);\n }\n if (Objects.isObject(increment)) {\n // Allow {unit: \"minute\", increment: 30} or {unit: \"minute\", magnitude: 30}\n // parseDuration produces \"magnitude\". The Scheduler's TimeAxis uses \"increment\"\n // in its resolution object, so we allow that too.\n const magnitude = increment.magnitude || increment.increment;\n // increment is in weeks, months, quarters or years, then it can't be handled\n // using millisecond arithmetic.\n switch (increment.unit) {\n case 'week':\n {\n const weekDay = time.getDay();\n // weekStartDay gives our base\n // Our base is the start of the week\n base = DH$2.add(DH$2.clearTime(time), weekDay >= weekStartDay ? weekStartDay - weekDay : -(weekDay - weekStartDay + 7), 'day');\n return DH$2[operation](time, `${magnitude * 7} days`, base);\n }\n case 'month':\n {\n // Express the time as a number of months from epoch start.\n // May be a fraction, eg the 15th will be 0.5 through a month.\n time = DH$2.asMonths(time);\n let resultMonths;\n // Snap the month count in the way requested\n if (base) {\n base = DH$2.asMonths(base);\n resultMonths = time + snapFn(time - base, magnitude);\n } else {\n resultMonths = snapFn(time, magnitude);\n }\n // Convert resulting month value back to a date\n return DH$2.monthsToDate(resultMonths);\n }\n case 'quarter':\n return DH$2[operation](time, `${magnitude * 3} months`, base);\n case 'year':\n return DH$2[operation](time, `${magnitude * 12} months`, base);\n case 'decade':\n // We assume that decades begin with a year divisible by 10\n return DH$2[operation](time, `${magnitude * 10} years`, base);\n }\n // Convert to a millisecond value\n increment = DH$2.as('ms', magnitude, increment.unit);\n }\n // It's a simple round to milliseconds\n if (base) {\n const tzChange = DH$2.as('ms', base.getTimezoneOffset() - time.getTimezoneOffset(), 'ms');\n return new Date(base.valueOf() + snapFn(DH$2.diff(base, time, 'ms') + tzChange, increment));\n } else {\n const offset = time.getTimezoneOffset() * 60 * 1000;\n // Assuming current TZ is GMT+3\n // new Date(2000, 0, 1) / 86400000 -> 10956.875\n // new Date(2000, 0, 1, 3) / 86400000 -> 10957\n // Before calculation we need to align time value of the current timezone to GMT+0\n // And after calculate we need to adjust time back\n return new Date(snapFn(time.valueOf() - offset, increment) + offset);\n }\n }\n //endregion\n //region Date picker format\n /**\n * Parses a typed duration value according to locale rules.\n *\n * The value is taken to be a string consisting of the numeric magnitude and the units:\n * - The numeric magnitude can be either an integer or a float value. Both \",\" and \".\" are valid decimal separators.\n * - The units may be a recognised unit abbreviation of this locale or the full local unit name.\n *\n * For example:\n * \"2d\", \"2 d\", \"2 day\", \"2 days\" will be turned into `{ magnitude : 2, unit : \"day\" }`\n * \"2.5d\", \"2,5 d\", \"2.5 day\", \"2,5 days\" will be turned into `{ magnitude : 2.5, unit : \"day\" }`\n *\n * **NOTE:** Doesn't work with complex values like \"2 days, 2 hours\"\n *\n * @param {String} value The value to parse.\n * @param {Boolean} [allowDecimals=true] Decimals are allowed in the magnitude.\n * @param {String} [defaultUnit] Default unit to use if only magnitude passed.\n * @returns {Object} If successfully parsed, the result contains two properties, `magnitude` being a number, and\n * `unit` being the canonical unit name, *NOT* a localized name. If parsing was unsuccessful, `null` is returned.\n * @category Parse & format\n */\n static parseDuration(value, allowDecimals = true, defaultUnit) {\n var _match$;\n const durationRegEx = allowDecimals ? withDecimalsDurationRegex : noDecimalsDurationRegex,\n match = durationRegEx.exec(value);\n if (value == null || !match) {\n return null;\n }\n const magnitude = parseNumber((_match$ = match[1]) === null || _match$ === void 0 ? void 0 : _match$.replace(',', '.')),\n unit = DH$2.parseTimeUnit(match[2]) || defaultUnit;\n if (!unit) {\n return null;\n }\n return {\n magnitude,\n unit\n };\n }\n /**\n * Parses a typed unit name, for example `\"ms\"` or `\"hr\"` or `\"yr\"` into the\n * canonical form of the unit name which may be passed to {@link #function-add-static}\n * or {@link #function-diff-static}\n * @param {*} unitName\n * @category Parse & format\n */\n static parseTimeUnit(unitName) {\n // NOTE: In case you get a crash here when running tests, it is caused by missing locale. Build locales\n // using `scripts/build.js locales` to resolve.\n const unitMatch = unitName == null ? null : DH$2.durationRegEx.exec(unitName.toLowerCase());\n if (!unitMatch) {\n return null;\n }\n // See which group in the unitAbbrRegEx matched match[2]\n for (let unitOrdinal = 0; unitOrdinal < canonicalUnitNames.length; unitOrdinal++) {\n if (unitMatch[unitOrdinal + 1]) {\n return canonicalUnitNames[unitOrdinal];\n }\n }\n }\n //endregion\n //region Internal\n static getGMTOffset(date = new Date()) {\n if (!date) {\n return;\n }\n const offsetInMinutes = date.getTimezoneOffset();\n // return 'Z' for UTC\n if (!offsetInMinutes) return 'Z';\n return (offsetInMinutes > 0 ? '-' : '+') + Math.abs(Math.trunc(offsetInMinutes / 60)).toString().padStart(2, '0') + ':' + Math.abs(offsetInMinutes % 60).toString().padStart(2, '0');\n }\n static fillDayNames() {\n const tempDate = new Date('2000-01-01T12:00:00'),\n dayNames = DH$2._dayNames || [],\n dayShortNames = DH$2._dayShortNames || [];\n dayNames.length = 0;\n dayShortNames.length = 0;\n for (let day = 2; day < 9; day++) {\n tempDate.setDate(day);\n dayNames.push(DH$2.format(tempDate, 'dddd'));\n dayShortNames.push(DH$2.format(tempDate, 'ddd'));\n }\n DH$2._dayNames = dayNames;\n DH$2._dayShortNames = dayShortNames;\n }\n static getDayNames() {\n return DH$2._dayNames;\n }\n static getDayName(day) {\n return DH$2._dayNames[day];\n }\n static getDayShortNames() {\n return DH$2._dayShortNames;\n }\n static getDayShortName(day) {\n return DH$2._dayShortNames[day];\n }\n static fillMonthNames() {\n const tempDate = new Date('2000-01-15T12:00:00'),\n monthNames = DH$2._monthNames || [],\n monthShortNames = DH$2._monthShortNames || [];\n monthNames.length = 0;\n monthShortNames.length = 0;\n for (let month = 0; month < 12; month++) {\n tempDate.setMonth(month);\n monthNames.push(DH$2.format(tempDate, 'MMMM'));\n monthShortNames.push(DH$2.format(tempDate, 'MMM'));\n }\n DH$2._monthNames = monthNames;\n DH$2._monthShortNames = monthShortNames;\n }\n static getMonthShortNames() {\n return DH$2._monthShortNames;\n }\n static getMonthShortName(month) {\n return DH$2._monthShortNames[month];\n }\n static getMonthNames() {\n return DH$2._monthNames;\n }\n static getMonthName(month) {\n return DH$2._monthNames[month];\n }\n static set locale(name) {\n locale$5 = name;\n intlFormatterCache = {};\n formatCache = {};\n }\n static get locale() {\n return locale$5;\n }\n static setupDurationRegEx(unitNames = [], unitAbbreviations = []) {\n const me = this,\n unitLookup = {};\n let unitAbbrRegEx = '';\n for (let i = 0; i < unitAbbreviations.length; i++) {\n const\n // for example ['s', 'sec']\n abbreviations = unitAbbreviations[i],\n // for example { single : 'second', plural : 'seconds', abbrev : 's' }\n unitNamesCfg = unitNames[i];\n unitNamesCfg.canonicalUnitName = canonicalUnitNames[i];\n // Create a unitLookup object keyed by unit full names\n // both lower and upper case to be able to look up plurals or abbreviations\n // also always include english names, since those are used in sources\n unitLookup[unitNamesCfg.single] = unitLookup[unitNamesCfg.single.toUpperCase()] = unitLookup[unitNamesCfg.canonicalUnitName] = unitLookup[unitNamesCfg.canonicalUnitName.toUpperCase()] = unitNamesCfg;\n unitAbbrRegEx += `${i ? '|' : ''}(`;\n for (let j = 0; j < abbreviations.length; j++) {\n unitAbbrRegEx += `${abbreviations[j]}|`;\n }\n locale$5 = me.localize('L{locale}') || 'en-US';\n if (locale$5 !== 'en-US') {\n // Add canonical values to be able to parse durations specified in configs\n const canonicalAbbreviations = canonicalUnitAbbreviations[i];\n for (let j = 0; j < canonicalAbbreviations.length; j++) {\n unitAbbrRegEx += `${canonicalAbbreviations[j]}|`;\n }\n }\n unitAbbrRegEx += `${unitNamesCfg.single}|${unitNamesCfg.plural}|${unitNamesCfg.canonicalUnitName}|${unitNamesCfg.canonicalUnitName}s)`;\n }\n me.unitLookup = unitLookup;\n me.durationRegEx = new RegExp(`^(?:${unitAbbrRegEx})$`);\n }\n static applyLocale() {\n const me = this,\n unitAbbreviations = me.localize('L{unitAbbreviations}') || [],\n unitNames = me.unitNames = me.localize('L{unitNames}');\n // This happens when applying an incomplete locale, as done in Localizable.t.js.\n // Invalid usecase, but return to prevent a crash in that test.\n if (unitNames === 'unitNames') {\n return;\n }\n locale$5 = me.localize('L{locale}') || 'en-US';\n if (locale$5 === 'en-US') {\n // TODO: Include in En locale instead?\n ordinalSuffix = enOrdinalSuffix;\n } else {\n ordinalSuffix = me.localize('L{ordinalSuffix}') || ordinalSuffix;\n }\n formatCache = {};\n parserCache = {};\n intlFormatterCache = {};\n DH$2._weekStartDay = null;\n DH$2.setupDurationRegEx(unitNames, unitAbbreviations);\n // rebuild day/month names cache\n DH$2.fillDayNames();\n DH$2.fillMonthNames();\n }\n //endregion\n}\n_defineProperty(DateHelper, \"MS_PER_DAY\", MS_PER_HOUR * 24);\nconst DH$2 = DateHelper;\nDH$2.useIntlFormat = useIntlFormat; // to use on tests\n// Update when changing locale\nLocaleManagerSingleton.on({\n locale: 'applyLocale',\n prio: 1000,\n thisObj: DH$2\n});\n// Apply default locale\nif (LocaleManagerSingleton.locale) {\n DH$2.applyLocale();\n}\nDateHelper._$name = 'DateHelper';\n\n/**\n * @module Core/helper/ObjectHelper\n */\n// Detect if browser has bad implementation of toFixed()\nconst {\n hasOwn: hasOwn$2\n } = Objects,\n toFixedFix = 1.005.toFixed(2) === '1.01' ? null : function (number, fractionDigits) {\n const split = number.toString().split('.'),\n newNumber = +(!split[1] ? split[0] : split.join('.') + '1');\n return number.toFixed.call(newNumber, fractionDigits);\n };\n/**\n * Helper for Object manipulation.\n */\nclass ObjectHelper extends Objects {\n // These methods are inherited from Objects (an internal class) but need to be documented here for public use.\n // This is primarily because static methods, while inherited by JavaScript classes, are not displayed in derived\n // classes in the docs.\n /**\n * Copies all enumerable properties from the supplied source objects to `dest`. Unlike `Object.assign`, this copy\n * also includes inherited properties.\n * @param {Object} dest The destination object.\n * @param {...Object} sources The source objects.\n * @returns {Object} The `dest` object.\n * @method assign\n * @static\n */\n /**\n * Copies all enumerable properties from the supplied source objects to `dest`, only including properties that does\n * not already exist on `dest`. Unlike `Object.assign`, this copy also includes inherited properties.\n * @param {Object} dest The destination object.\n * @param {...Object} sources The source objects.\n * @returns {Object} The `dest` object.\n * @method assignIf\n * @static\n */\n /**\n * Creates a deep copy of the `value`. Simple objects ({@link #function-isObject-static}, arrays and `Date` objects\n * are cloned. The enumerable properties of simple objects and the elements of arrays are cloned recursively.\n * @param {*} value The value to clone.\n * @param {Function} [handler] An optional function to call for values of types other than simple object, array or\n * `Date`. This function should return the clone of the `value` passed to it. It is only called for truthy values\n * whose `typeof` equals `'object'`.\n * @param {*} handler.value The value to clone.\n * @returns {*} The cloned value.\n * @method clone\n * @static\n */\n /**\n * Converts a list of names (either a space separated string or an array), into an object with those properties\n * assigned truthy values. The converse of {@link #function-getTruthyKeys-static}.\n * @param {String|String[]} source The list of names to convert to object form.\n * @method createTruthyKeys\n * @static\n */\n /**\n * Gathers the names of properties which have truthy values into an array.\n *\n * This is useful when gathering CSS class names for complex element production.\n * Instead of appending to an array or string which may already contain the\n * name, and instead of contending with space separation and concatenation\n * and conditional execution, just set the properties of an object:\n *\n * cls = {\n * [this.selectedCls] : this.isSelected(thing),\n * [this.dirtyCls] : this.isDirty(thing)\n * };\n *\n * @param {Object} source Source of keys to gather into an array.\n * @returns {String[]} The keys which had a truthy value.\n * @method getTruthyKeys\n * @static\n */\n /**\n * Gathers the values of properties which are truthy into an array.\n * @param {Object} source Source of values to gather into an array.\n * @returns {String[]} The truthy values from the passed object.\n * @method getTruthyValues\n * @static\n */\n /**\n * Tests whether a passed object has any enumerable properties.\n * @param {Object} object\n * @returns {Boolean} `true` if the passed object has no enumerable properties.\n * @method isEmpty\n * @static\n */\n /**\n * Returns `true` if the `value` is a simple `Object`.\n * @param {Object} value\n * @returns {Boolean} `true` if the `value` is a simple `Object`.\n * @method isObject\n * @static\n */\n /**\n * Copies all enumerable properties from the supplied source objects to `dest`, recursing when the properties of\n * both the source and `dest` are objects.\n * ```\n * const o = {\n * a : 1,\n * b : {\n * c : 2\n * }\n * };\n * const o2 = {\n * b : {\n * d : 3\n * }\n * }\n *\n * console.log(merge(o, o2));\n *\n * > { a : 1, b : { c : 2, d : 3 } }\n * ```\n * @param {Object} dest The destination object.\n * @param {...Object} sources The source objects.\n * @returns {Object} The `dest` object.\n * @method merge\n * @static\n */\n /**\n * Returns the specific type of the given `value`. Unlike the `typeof` operator, this function returns the text\n * from the `Object.prototype.toString` result allowing `Date`, `Array`, `RegExp`, and others to be differentiated.\n * ```\n * console.log(typeOf(null));\n * > null\n *\n * console.log(typeOf({}));\n * > object\n *\n * console.log(typeOf([]));\n * > array\n *\n * console.log(typeOf(new Date()));\n * > date\n *\n * console.log(typeOf(NaN));\n * > nan\n *\n * console.log(typeOf(/a/));\n * > regexp\n * ```\n * @param {*} value\n * @returns {String}\n * @method typeOf\n * @static\n */\n /**\n * Returns value for a given path in the object\n * @param {Object} object Object to check path on\n * @param {String} path Dot-separated path, e.g. 'object.childObject.someKey'\n * @returns {*} Value associated with passed key\n * @method getPath\n * @static\n */\n /**\n * Sets value for a given path in the object\n * @param {Object} object Target object\n * @param {String} path Dot-separated path, e.g. 'object.childObject.someKey'\n * @param {*} value Value for a given path\n * @returns {Object} Returns passed object\n * @method setPath\n * @static\n */\n /**\n * Creates a new object where key is a property in array item (`ref` by default) or index in the array and value is array item.\n *\n * From:\n * ```\n * [\n * {\n * text : 'foo',\n * ref : 'fooItem'\n * },\n * {\n * text : 'bar'\n * }\n * ]\n * ```\n *\n * To:\n * ```\n * {\n * fooItem : {\n * text : 'foo',\n * ref : 'fooItem'\n * },\n * 1 : {\n * text : 'bar'\n * }\n * }\n * ```\n *\n * @param {Object[]} arrayOfItems Array to transform.\n * @param {String} [prop] Property to read the key from. `ref` by default.\n * @returns {Object} namedItems\n */\n static transformArrayToNamedObject(arrayOfItems, prop = 'ref') {\n const namedItems = {};\n arrayOfItems.forEach((item, index) => {\n const\n // 0 is valid value, but empty string in not valid\n key = item[prop] != null && item[prop].toString().length ? item[prop] : index;\n namedItems[key] = item;\n });\n return namedItems;\n }\n /**\n * Creates a new array from object values and saves key in a property (`ref` by default) of each item.\n *\n * From:\n * ```\n * {\n * fooItem : {\n * text : 'foo'\n * },\n * 1 : {\n * text : 'bar'\n * },\n * barItem : false // will be ignored\n * }\n * ```\n *\n * To:\n * ```\n * [\n * {\n * text : 'foo',\n * ref : 'fooItem'\n * },\n * {\n * text : 'bar',\n * ref : 1\n * }\n * ]\n * ```\n *\n * @param {Object} namedItems Object to transform.\n * @param {String} [prop] Property to save the key to. `ref` by default.\n * @returns {Object[]} arrayOfItems\n */\n static transformNamedObjectToArray(namedItems, prop = 'ref') {\n return Object.keys(namedItems).filter(key => namedItems[key]).map(key => {\n const item = namedItems[key];\n item[prop] = key;\n return item;\n });\n }\n /**\n * Checks if two values are equal. Basically === but special handling of dates.\n * @param {*} a First value\n * @param {*} b Second value\n * @returns {*} true if values are equal, otherwise false\n */\n static isEqual(a, b, useIsDeeply = false) {\n // Eliminate null vs undefined mismatch\n if (a === null && b !== null || a === undefined && b !== undefined || b === null && a !== null || b === undefined && a !== undefined) {\n return false;\n }\n // Covers undefined === undefined and null === null, since mismatches are eliminated above\n if (a == null && b == null) {\n return true;\n }\n // The same instance should equal itself.\n if (a === b) {\n return true;\n }\n const typeA = typeof a,\n typeB = typeof b;\n if (typeA === typeB) {\n switch (typeA) {\n case 'number':\n case 'string':\n case 'boolean':\n return a === b;\n }\n switch (true) {\n case a instanceof Date && b instanceof Date:\n // faster than calling DateHelper.isEqual\n // https://jsbench.me/3jk2bom2r3/1\n return a.getTime() === b.getTime();\n case Array.isArray(a) && Array.isArray(b):\n return a.length === b.length ? a.every((v, idx) => OH.isEqual(v, b[idx], useIsDeeply)) : false;\n case typeA === 'object' && a.constructor.prototype === b.constructor.prototype:\n return useIsDeeply ? OH.isDeeplyEqual(a, b, useIsDeeply) : JSON.stringify(a) === JSON.stringify(b);\n }\n }\n return String(a) === String(b);\n }\n /**\n * Checks if two objects are deeply equal\n * @param {Object} a\n * @param {Object} b\n * @param {Object} [options] Additional comparison options\n * @param {Object} [options.ignore] Map of property names to ignore when comparing\n * @param {Function} [options.shouldEvaluate] Function used to evaluate if a property should be compared or not.\n * Return false to prevent comparison\n * @param {Function} [options.evaluate] Function used to evaluate equality. Return `true`/`false` as evaluation\n * result or anything else to let `isEqual` handle the comparison\n * @returns {Boolean}\n */\n static isDeeplyEqual(a, b, options = {}) {\n // Same object, equal :)\n if (a === b) {\n return true;\n }\n // Nothing to compare, not equal\n if (!a || !b) {\n return false;\n }\n // Property names excluding ignored\n const aKeys = OH.keys(a, options.ignore),\n bKeys = OH.keys(b, options.ignore);\n // Property count differs, not equal\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n for (let i = 0; i < aKeys.length; i++) {\n const aKey = aKeys[i],\n bKey = bKeys[i];\n // Property name differs, not equal\n if (aKey !== bKey) {\n return false;\n }\n const aVal = a[aKey],\n bVal = b[bKey];\n // Allow caller to determine if property values should be evaluated or not\n // TODO: Not currently used\n if (options.shouldEvaluate) {\n if (options.shouldEvaluate(aKey, {\n value: aVal,\n object: a\n }, {\n value: bVal,\n object: b\n }) === false) {\n continue;\n }\n }\n // Allow caller to determine equality of properties\n if (options.evaluate) {\n const result = options.evaluate(aKey, {\n value: aVal,\n object: a\n }, {\n value: bVal,\n object: b\n });\n // Not equal\n if (result === false) {\n return false;\n }\n // Equal, skip isEqual call below\n if (result === true) {\n continue;\n }\n }\n // Values differ, not equal (also digs deeper)\n if (!OH.isEqual(aVal, bVal, options)) {\n return false;\n }\n }\n // Found to be equal\n return true;\n }\n /**\n * Checks if value B is partially equal to value A.\n * @param {*} a First value\n * @param {*} b Second value\n * @returns {Boolean} true if values are partially equal, false otherwise\n */\n static isPartial(a, b) {\n a = String(a).toLowerCase();\n b = String(b).toLowerCase();\n return a.indexOf(b) !== -1;\n }\n /**\n * Checks if value a is smaller than value b.\n * @param {*} a First value\n * @param {*} b Second value\n * @returns {Boolean} true if a < b\n */\n static isLessThan(a, b) {\n if (a instanceof Date && b instanceof Date) {\n return DateHelper.isBefore(a, b);\n }\n return a < b;\n }\n /**\n * Checks if value a is bigger than value b.\n * @param {*} a First value\n * @param {*} b Second value\n * @returns {Boolean} true if a > b\n */\n static isMoreThan(a, b) {\n if (a instanceof Date && b instanceof Date) {\n return DateHelper.isAfter(a, b);\n }\n return a > b;\n }\n /**\n * Used by the Base class to make deep copies of defaultConfig blocks\n * @private\n */\n static fork(obj) {\n let ret, key, value;\n if (obj && obj.constructor === Object) {\n ret = Object.setPrototypeOf({}, obj);\n for (key in obj) {\n value = obj[key];\n if (value) {\n if (value.constructor === Object) {\n ret[key] = OH.fork(value);\n } else if (value instanceof Array) {\n ret[key] = value.slice();\n }\n }\n }\n } else {\n ret = obj;\n }\n return ret;\n }\n /**\n * Copies the named properties from the `source` parameter into the `dest` parameter.\n * @param {Object} dest The destination into which properties are copied.\n * @param {Object} source The source from which properties are copied.\n * @param {String[]} props The list of property names.\n * @returns {Object} The `dest` object.\n */\n static copyProperties(dest, source, props) {\n let prop, i;\n for (i = 0; i < props.length; i++) {\n prop = props[i];\n if (prop in source) {\n dest[prop] = source[prop];\n }\n }\n return dest;\n }\n /**\n * Copies the named properties from the `source` parameter into the `dest` parameter\n * unless the property already exists in the `dest`.\n * @param {Object} dest The destination into which properties are copied.\n * @param {Object} source The source from which properties are copied.\n * @param {String[]} props The list of property names.\n * @returns {Object} The `dest` object.\n */\n static copyPropertiesIf(dest, source, props) {\n if (source) {\n for (const prop of props) {\n if (!(prop in dest)) {\n dest[prop] = source[prop];\n }\n }\n }\n return dest;\n }\n /**\n * Returns an array containing the keys and values of all enumerable properties from every prototype level for the\n * object. If `object` is `null`, this method returns an empty array.\n * @param {Object} object Object from which to retrieve entries.\n * @param {Object|Function} [ignore] Optional object of names to ignore or a function accepting the name and value\n * which returns `true` to ignore the item.\n * @returns {Array}\n * @internal\n */\n static entries(object, ignore) {\n const result = [],\n call = typeof ignore === 'function';\n if (object) {\n for (const p in object) {\n if (call ? !ignore(p, object[p]) : !(ignore !== null && ignore !== void 0 && ignore[p])) {\n result.push([p, object[p]]);\n }\n }\n }\n return result;\n }\n /**\n * Populates an `object` with the provided `entries`.\n * @param {Array} entries The key/value pairs (2-element arrays).\n * @param {Object} [object={}] The object onto which to add `entries`.\n * @returns {Object} The passed `object` (by default, a newly created object).\n * @internal\n */\n static fromEntries(entries, object) {\n object = object || {};\n if (entries) {\n for (let i = 0; i < entries.length; ++i) {\n object[entries[i][0]] = entries[i][1];\n }\n }\n return object;\n }\n /**\n * Returns an array containing all enumerable property names from every prototype level for the object. If `object`\n * is `null`, this method returns an empty array.\n * @param {Object} object Object from which to retrieve property names.\n * @param {Object|Function} [ignore] Optional object of names to ignore or a function accepting the name and value\n * which returns `true` to ignore the item.\n * @param {Function} [mapper] Optional function to call for each non-ignored item. If provided, the result of this\n * function is stored in the returned array. It is called with the array element as the first parameter, and the\n * index in the result array as the second argument (0 for the first, non-ignored element, 1 for the second and so\n * on).\n * @returns {String[]}\n */\n static keys(object, ignore, mapper) {\n const result = [],\n call = typeof ignore === 'function';\n if (object) {\n let index = 0;\n for (const p in object) {\n if (call ? !ignore(p, object[p]) : !(ignore !== null && ignore !== void 0 && ignore[p])) {\n result.push(mapper ? mapper(p, index) : p);\n ++index;\n }\n }\n }\n return result;\n }\n /**\n * Returns an array containing the values of all enumerable properties from every prototype level for the object.\n * If `object` is `null`, this method returns an empty array.\n * @param {Object} object Object from which to retrieve values.\n * @param {Object|Function} [ignore] Optional object of names to ignore or a function accepting the name and value\n * which returns `true` to ignore the item.\n * @param {Function} [mapper] Optional function to call for each non-ignored item. If provided, the result of this\n * function is stored in the returned array. It is called with the array element as the first parameter, and the\n * index in the result array as the second argument (0 for the first, non-ignored element, 1 for the second and so\n * on).\n * @returns {Array}\n * @internal\n */\n static values(object, ignore, mapper) {\n const result = [],\n call = typeof ignore === 'function';\n if (object) {\n let index = 0;\n for (const p in object) {\n if (call ? !ignore(p, object[p]) : !(ignore !== null && ignore !== void 0 && ignore[p])) {\n result.push(mapper ? mapper(object[p], index) : object[p]);\n ++index;\n }\n }\n }\n return result;\n }\n //region Path\n /**\n * Checks if a given path exists in an object\n * @param {Object} object Object to check path on\n * @param {String} path Dot-separated path, e.g. 'object.childObject.someKey'\n * @returns {Boolean} Returns `true` if path exists or `false` if it does not\n */\n static pathExists(object, path) {\n const properties = path.split('.');\n return properties.every(property => {\n if (!object || !(property in object)) {\n return false;\n }\n object = object[property];\n return true;\n });\n }\n /**\n * Creates a simple single level key-value object from complex deep object.\n * @param {Object} object Object to extract path and values from\n * @returns {Object} Key-value object where key is a path to the corresponding value\n * @internal\n *\n * ```javascript\n * // converts deep object\n * {\n * foo : {\n * bar : {\n * test : 1\n * }\n * }\n * }\n * // into a single level object\n * {\n * 'foo.bar.test' : 1\n * }\n * ```\n */\n static pathifyKeys(object) {\n const result = {};\n for (const key in object) {\n if (hasOwn$2(object, key)) {\n if (object[key] instanceof Object) {\n const paths = this.pathifyKeys(object[key]);\n for (const path in paths) {\n result[`${key}.${path}`] = paths[path];\n }\n } else {\n result[key] = object[key];\n }\n }\n }\n return result;\n }\n /**\n * Removes value for a given path in the object. Doesn't cleanup empty objects.\n * @param {Object} object\n * @param {String} path Dot-separated path, e.g. `obj.child.someKey`\n * @internal\n */\n static deletePath(object, path) {\n path.split('.').reduce((result, key, index, array) => {\n if (result == null) {\n return null;\n }\n if (hasOwn$2(result, key)) {\n if (index === array.length - 1) {\n delete result[key];\n } else {\n return result[key];\n }\n }\n }, object);\n }\n //endregion\n static coerce(from, to) {\n const fromType = Objects.typeOf(from),\n toType = Objects.typeOf(to),\n isString = typeof from === 'string';\n if (fromType !== toType) {\n switch (toType) {\n case 'string':\n return String(from);\n case 'number':\n return Number(from);\n case 'boolean':\n // See http://ecma262-5.com/ELS5_HTML.htm#Section_11.9.3 as to why '0'.\n // TL;DR => ('0' == 0), so if given string '0', we must return boolean false.\n return isString && (!from || from === 'false' || from === '0') ? false : Boolean(from);\n case 'null':\n return isString && (!from || from === 'null') ? null : false;\n case 'undefined':\n return isString && (!from || from === 'undefined') ? undefined : false;\n case 'date':\n return isString && isNaN(from) ? DateHelper.parse(from) : Date(Number(from));\n }\n }\n return from;\n }\n static wrapProperty(object, propertyName, newGetter, newSetter, deep = true) {\n const newProperty = {};\n let proto = Object.getPrototypeOf(object),\n existingProperty = Object.getOwnPropertyDescriptor(proto, propertyName);\n while (!existingProperty && proto && deep) {\n proto = Object.getPrototypeOf(proto);\n if (proto) {\n existingProperty = Object.getOwnPropertyDescriptor(proto, propertyName);\n }\n }\n if (existingProperty) {\n if (existingProperty.set) {\n newProperty.set = v => {\n existingProperty.set.call(object, v);\n // Must invoke the getter in case \"v\" has been transformed.\n newSetter && newSetter.call(object, existingProperty.get.call(object));\n };\n } else {\n newProperty.set = newSetter;\n }\n if (existingProperty.get) {\n newProperty.get = () => {\n let result = existingProperty.get.call(object);\n if (newGetter) {\n result = newGetter.call(object, result);\n }\n return result;\n };\n } else {\n newProperty.get = newGetter;\n }\n } else {\n newProperty.set = v => {\n object[`_${propertyName}`] = v;\n newSetter && newSetter.call(object, v);\n };\n newProperty.get = () => {\n let result = object[`_${propertyName}`];\n if (newGetter) {\n result = newGetter.call(object, result);\n }\n return result;\n };\n }\n Object.defineProperty(object, propertyName, newProperty);\n }\n /**\n * Intercepts access to a `property` of a given `object`.\n *\n * ```javascript\n * ObjectHelper.hookProperty(object, 'prop', class {\n * get value() {\n * return super.value;\n * }\n * set value(v) {\n * super.value = v;\n * }\n * });\n * ```\n * The use of `super` allows the hook's getter and setter to invoke the object's existing get/set.\n *\n * @param {Object} object\n * @param {String} property\n * @param {Function} hook A `class` defining a `value` property getter and/or setter.\n * @returns {Function} A function that removes the hook when called.\n * @internal\n */\n static hookProperty(object, property, hook) {\n const desc = ObjectHelper.getPropertyDescriptor(hook.prototype, 'value'),\n existingDesc = ObjectHelper.getPropertyDescriptor(object, property),\n fieldName = `_${property}`,\n base = class {\n get value() {\n return existingDesc ? existingDesc.get.call(this) : this[fieldName];\n }\n set value(v) {\n if (existingDesc) {\n existingDesc.set.call(this, v);\n } else {\n this[fieldName] = v;\n }\n }\n },\n baseDesc = ObjectHelper.getPropertyDescriptor(base.prototype, 'value');\n Object.setPrototypeOf(hook.prototype, base.prototype); // direct super calls to our \"base\" implementation\n Object.defineProperty(object, property, {\n configurable: true,\n get: desc.get || baseDesc.get,\n set: desc.set || baseDesc.set\n });\n return () => delete object[property];\n }\n /**\n * Finds a property descriptor for the passed object from all inheritance levels.\n * @param {Object} object The Object whose property to find.\n * @param {String} propertyName The name of the property to find.\n * @returns {Object} An ECMA property descriptor is the property was found, otherwise `null`\n */\n static getPropertyDescriptor(object, propertyName) {\n let result = null;\n for (let o = object; o && !result && !hasOwn$2(o, 'isBase'); o = Object.getPrototypeOf(o)) {\n result = Object.getOwnPropertyDescriptor(o, propertyName);\n }\n return result;\n }\n /**\n * Changes the passed object and removes all null and undefined properties from it\n * @param {Object} object Target object\n * @param {Boolean} [keepNull] Pass true to only remove undefined properties\n * @returns {Object} Passed object\n */\n static cleanupProperties(object, keepNull = false) {\n Object.entries(object).forEach(([key, value]) => {\n if (keepNull) {\n value === undefined && delete object[key];\n } else {\n value == null && delete object[key];\n }\n });\n return object;\n }\n /**\n * Changes the passed object and removes all properties from it.\n * Used while mutating when need to keep reference to the object but replace its properties.\n * @param {Object} object Target object\n * @returns {Object} Passed object\n */\n static removeAllProperties(obj) {\n Object.keys(obj).forEach(key => delete obj[key]);\n return obj;\n }\n //region Assert type\n /**\n * Checks that the supplied value is of the specified type.Throws if it is not\n * @param {Object} value Value to check type of\n * @param {String} type Expected type\n * @param {String} name Name of the value, used in error message\n * @param {Boolean} [allowNull] Accept `null` without throwing\n */\n static assertType(value, type, name) {\n const valueType = Objects.typeOf(value);\n if (value != null && valueType !== type) {\n throw new Error(`Incorrect type \"${valueType}\" for ${name}, expected \"${type}\"`);\n }\n }\n /**\n * Checks that the supplied value is a plain object. Throws if it is not\n * @param {Object} value Value to check type of\n * @param {String} name Name of the value, used in error message\n */\n static assertObject(value, name) {\n OH.assertType(value, 'object', name);\n }\n /**\n * Checks that the supplied value is an instance of a Bryntum class. Throws if it is not\n * @param {Object} value Value to check type of\n * @param {String} name Name of the value, used in error message\n */\n static assertInstance(value, name) {\n OH.assertType(value, 'instance', name);\n }\n /**\n * Checks that the supplied value is a Bryntum class. Throws if it is not\n * @param {Object} value Value to check type of\n * @param {String} name Name of the value, used in error message\n */\n static assertClass(value, name) {\n OH.assertType(value, 'class', name);\n }\n /**\n * Checks that the supplied value is a function. Throws if it is not\n * @param {Object} value Value to check type of\n * @param {String} name Name of the value, used in error message\n */\n static assertFunction(value, name) {\n if (typeof value !== 'function' || value.isBase || value.$$name) {\n throw new Error(`Incorrect type for ${name}, got \"${value}\" (expected a function)`);\n }\n }\n /**\n * Checks that the supplied value is a number. Throws if it is not\n * @param {Object} value Value to check type of\n * @param {String} name Name of the value, used in error message\n */\n static assertNumber(value, name) {\n const asNumber = Number(value);\n if (typeof value !== 'number' || isNaN(asNumber)) {\n throw new Error(`Incorrect type for ${name}, got \"${value}\" (expected a Number)`);\n }\n }\n /**\n * Checks that the supplied value is a boolean. Throws if it is not\n * @param {Object} value Value to check type of\n * @param {String} name Name of the value, used in error message\n */\n static assertBoolean(value, name) {\n OH.assertType(value, 'boolean', name);\n }\n /**\n * Checks that the supplied value is a string. Throws if it is not\n * @param {Object} value Value to check type of\n * @param {String} name Name of the value, used in error message\n */\n static assertString(value, name) {\n OH.assertType(value, 'string', name);\n }\n /**\n * Checks that the supplied value is an array. Throws if it is not\n * @param {Object} value Value to check type of\n * @param {String} name Name of the value, used in error message\n */\n static assertArray(value, name) {\n OH.assertType(value, 'array', name);\n }\n //endregion\n /**\n * Number.toFixed(), with polyfill for browsers that needs it\n * @param {Number} number\n * @param {Number} digits\n * @returns {String} A fixed point string representation of the passed number.\n */\n static toFixed(number, digits) {\n if (toFixedFix) {\n return toFixedFix(number, digits);\n }\n return number.toFixed(digits);\n }\n /**\n * Round the passed number to closest passed step value.\n * @param {Number} number The number to round.\n * @param {Number} [step] The step value to round to.\n * @returns {Number} The number rounded to the closest step.\n */\n static roundTo(number, step = 1) {\n return Math.round(number / step) * step;\n }\n /**\n * Round the passed number to the passed number of decimals.\n * @param {Number} number The number to round.\n * @param {Number} digits The number of decimal places to round to.\n * @returns {Number} The number rounded to the passed number of decimal places.\n */\n static round(number, digits) {\n // Undefined or null means do not round. NOT round to no decimals.\n if (digits == null) {\n return number;\n }\n const factor = 10 ** digits;\n return Math.round(number * factor) / factor;\n }\n /**\n * Returns a non-null entry from a Map for a given key path. This enables a specified defaultValue to be added \"just\n * in time\" which is returned if the key is not already present.\n * @param {Map} map The Map to find the key in (and potentially add to).\n * @param {String|Number|String[]|Number[]} path Dot-separated path, e.g. 'firstChild.childObject.someKey',\n * or the key path as an array, e.g. ['firstChild', 'childObject', 'someKey'].\n * @param {Object} [defaultValue] Optionally the value to insert if the key is not found.\n */\n static getMapPath(map, path, defaultValue) {\n const keyPath = Array.isArray(path) ? path : typeof path === 'string' ? path.split('.') : [path],\n simpleKey = keyPath.length === 1,\n topKey = keyPath[0],\n topValue = map.has(topKey) ? map.get(topKey) : map.set(topKey, simpleKey ? defaultValue : {}).get(topKey);\n // If it was a simple key, we are done.\n if (simpleKey) {\n return topValue;\n }\n // Go down the property path on the top Object, filling entries in until the leaf.\n return OH.getPathDefault(topValue, keyPath.slice(1), defaultValue);\n }\n}\nconst OH = ObjectHelper;\nObjectHelper._$name = 'ObjectHelper';\n\nconst allBorders = ['border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width'],\n allMargins = ['margin-top', 'margin-right', 'margin-bottom', 'margin-left'],\n allPaddings = ['padding-top', 'padding-right', 'padding-bottom', 'padding-left'],\n borderNames = {\n t: 'border-top-width',\n r: 'border-right-width',\n b: 'border-bottom-width',\n l: 'border-left-width'\n },\n paddingNames = {\n t: 'padding-top',\n r: 'padding-right',\n b: 'padding-bottom',\n l: 'padding-left'\n },\n zeroBased = Object.freeze({\n x: 0,\n y: 0\n }),\n alignSpecRe$1 = /^([trblc])(\\d*)-([trblc])(\\d*)$/i,\n alignPointRe = /^([trblc])(\\d*)$/i,\n edgeNames = ['top', 'right', 'bottom', 'left'],\n edgeIndices = {\n t: 0,\n r: 1,\n b: 2,\n l: 3\n },\n defaultAlignments = ['b-t', 'l-r', 't-b', 'r-l'],\n edgeAligments = {\n bt: 1,\n tb: 1,\n lr: 1,\n rl: 1\n },\n zeroOffsets = Object.freeze([0, 0]),\n matchDimensions = ['width', 'height'],\n parseEdges = (top, right = top, bottom = top, left = right) => {\n return Array.isArray(top) ? parseEdges.apply(null, top) : [top, right, bottom, left];\n };\n// Parse a l0-r0 (That's how Menus align to their owning MenuItem) align spec.\n// If we are in an RTL env, then reverse the percentage values if we are\n// aligning horizontal edges.\nfunction parseAlign(alignSpec, rtl) {\n const parts = alignSpecRe$1.exec(alignSpec),\n myEdge = parts[1],\n targetEdge = parts[3],\n mO = parseInt(parts[2] || 50),\n tO = parseInt(parts[4] || 50),\n myOffset = rtl && !(edgeIndices[myEdge] & 1) ? 100 - mO : mO,\n targetOffset = rtl && !(edgeIndices[targetEdge] & 1) ? 100 - tO : tO,\n edgeAligned = edgeAligments[myEdge + targetEdge];\n // Comments assume the Menu's alignSpec of l0-r0 is used.\n return {\n myAlignmentPoint: myEdge + myOffset,\n // l0\n myEdge,\n // l\n myOffset,\n // 0\n targetAlignmentPoint: targetEdge + targetOffset,\n // r0\n targetEdge,\n // r\n targetOffset,\n // 0\n startZone: edgeIndices[targetEdge],\n // 1 - start trying zone 1 in TRBL order\n edgeAligned // Edge-to-edge align requested\n };\n}\n// Takes a result from the above function and flips edges for the axisLock config\nfunction flipAlign(align) {\n return `${edgeNames[(edgeIndices[align.myEdge] + 2) % 4][0]}${align.myOffset}-${edgeNames[(edgeIndices[align.targetEdge] + 2) % 4][0]}${align.targetOffset}`;\n}\nfunction createOffsets(offset) {\n if (offset == null) {\n return zeroOffsets;\n } else if (typeof offset === 'number') {\n return [offset, offset];\n }\n return offset;\n}\n/**\n * Encapsulates rectangular areas for comparison, intersection etc.\n *\n * Note that the `right` and `bottom` properties are *exclusive*.\n *\n */\nclass Rectangle {\n // Class does not extend Base, so we need to define this\n get isRectangle() {\n return true;\n }\n /**\n * Returns the Rectangle in document based coordinates of the passed element.\n *\n * *Note:* If the element passed is the `document` or `window` the `window`'s\n * rectangle is returned which is always at `[0, 0]` and encompasses the\n * browser's entire document viewport.\n * @param {HTMLElement|Core.widget.Widget|Core.widget.Mask} element The element to calculate the Rectangle for.\n * @param {HTMLElement} [relativeTo] Optionally, a parent element in whose space to calculate the Rectangle.\n * @param {Boolean} [ignorePageScroll=false] Use browser viewport based coordinates.\n * @returns {Core.helper.util.Rectangle} The Rectangle in document based (or, optionally viewport based) coordinates. Relative to the _relativeTo_ parameter if passed.\n */\n static from(element, relativeTo, ignorePageScroll) {\n var _relativeTo;\n // Convenient in tests\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n // If a shadowRoot or other type of document fragment passed, get closest Element\n else if (element.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n element = element.host || element.ownerDocument;\n }\n if (typeof relativeTo === 'string') {\n relativeTo = document.querySelector(relativeTo);\n }\n if (element.isRectangle) {\n return element;\n }\n element = element.element || element; // works for Widget and Mask\n if (ignorePageScroll === undefined && typeof relativeTo === 'boolean') {\n ignorePageScroll = relativeTo;\n relativeTo = null;\n }\n if (!((_relativeTo = relativeTo) !== null && _relativeTo !== void 0 && _relativeTo.isRectangle)) {\n if (relativeTo) {\n // TODO: nige should figure out if there is a better solution\n let {\n scrollLeft,\n scrollTop\n } = relativeTo;\n if (BrowserHelper.isSafari && relativeTo === document.body) {\n scrollLeft = scrollTop = 0;\n }\n relativeTo = Rectangle.from(relativeTo).translate(-scrollLeft, -scrollTop);\n } else {\n relativeTo = zeroBased;\n }\n }\n // Viewport is denoted by requesting window or document.\n // document.body may overflow the viewport, so this must not be evaluated as the viewport.\n const\n // If body is 0 height we should treat this case as a viewport\n isViewport = element === document || element === globalThis,\n isSFViewport = element === document.body && document.body.offsetHeight === 0,\n sfElRect = isSFViewport && element.getBoundingClientRect(),\n viewRect = isSFViewport\n // In Salesforce body and html have 0 height so to get correct viewport vertical size we have to use\n // scrollHeight on html element.\n ? new Rectangle(sfElRect.left, sfElRect.top, sfElRect.width, document.body.parentElement.scrollHeight) : isViewport ? new Rectangle(0, 0, globalThis.innerWidth, globalThis.innerHeight) : element.getBoundingClientRect(),\n scrollOffset = ignorePageScroll || isViewport ? [0, 0] : [globalThis.pageXOffset, globalThis.pageYOffset];\n return new Rectangle(viewRect.left + scrollOffset[0] - relativeTo.x, viewRect.top + scrollOffset[1] - relativeTo.y, viewRect.width, viewRect.height);\n }\n /**\n * Returns the Rectangle in viewport coordinates of the passed element.\n *\n * *Note:* If the element passed is the `document` or `window` the `window`'s rectangle is returned which is always\n * at `[0, 0]` and encompasses the browser's entire document viewport.\n * @param {HTMLElement} element The element to calculate the Rectangle for.\n * @param {HTMLElement} [relativeTo] Optionally, a parent element in whose space to calculate the Rectangle.\n * @returns {Core.helper.util.Rectangle} The Rectangle in viewport based coordinates. Relative to the _relativeTo_\n * parameter if provided.\n */\n static fromScreen(element, relativeTo) {\n return Rectangle.from(element, relativeTo, /* ignorePageScroll = */true);\n }\n /**\n * Returns the inner Rectangle (within border) in document based coordinates of the passed element.\n * @param {HTMLElement} element The element to calculate the Rectangle for.\n * @param {HTMLElement} [relativeTo] Optionally, a parent element in whose space to calculate the Rectangle.\n * @param {Boolean} [ignorePageScroll] Use browser viewport based coordinates.\n * @returns {Core.helper.util.Rectangle} The Rectangle in document based (or, optionally viewport based) coordinates. Relative to the _relativeTo_ parameter if passed.\n */\n static inner(element, relativeTo, ignorePageScroll = false) {\n const result = this.from(element, relativeTo, ignorePageScroll);\n // Can only ask for the following styles if element is in the document.\n if (document.body.contains(element)) {\n const borders = DomHelper.getStyleValue(element, allBorders);\n result.x += parseFloat(borders[borderNames.l]);\n result.y += parseFloat(borders[borderNames.t]);\n result.right -= parseFloat(borders[borderNames.r]);\n result.bottom -= parseFloat(borders[borderNames.b]);\n }\n return result;\n }\n /**\n * Returns the content Rectangle (within border and padding) in document based coordinates of the passed element.\n * @param {HTMLElement} element The element to calculate the Rectangle for.\n * @param {HTMLElement} [relativeTo] Optionally, a parent element in whose space to calculate the Rectangle.\n * @param {Boolean} [ignorePageScroll] Use browser viewport based coordinates.\n * @returns {Core.helper.util.Rectangle} The Rectangle in document based (or, optionally viewport based) coordinates. Relative to the _relativeTo_ parameter if passed.\n */\n static content(element, relativeTo, ignorePageScroll = false) {\n const result = this.from(element, relativeTo, ignorePageScroll);\n // Can only ask for the following styles if element is in the document.\n if (document.body.contains(element)) {\n const borders = DomHelper.getStyleValue(element, allBorders),\n padding = DomHelper.getStyleValue(element, allPaddings);\n result.x += parseFloat(borders[borderNames.l]) + parseFloat(padding[paddingNames.l]);\n result.y += parseFloat(borders[borderNames.t]) + parseFloat(padding[paddingNames.t]);\n result.right -= parseFloat(borders[borderNames.r]) + parseFloat(padding[paddingNames.r]);\n result.bottom -= parseFloat(borders[borderNames.b]) + parseFloat(padding[paddingNames.b]);\n }\n return result;\n }\n /**\n * Returns the client Rectangle (within border and padding and scrollbars) in document based coordinates of the\n * passed element.\n * @param {HTMLElement} element The element to calculate the Rectangle for.\n * @param {HTMLElement} [relativeTo] Optionally, a parent element in whose space to calculate the Rectangle.\n * @param {Boolean} [ignorePageScroll] Use browser viewport based coordinates.\n * @returns {Core.helper.util.Rectangle} The Rectangle in document based (or, optionally viewport based) coordinates. Relative to the _relativeTo_ parameter if passed.\n */\n static client(element, relativeTo, ignorePageScroll = false) {\n const result = this.content(element, relativeTo, ignorePageScroll),\n scrollbarWidth = DomHelper.scrollBarWidth;\n let padding;\n if (scrollbarWidth) {\n // Capture width taken by any vertical scrollbar.\n // If there is a vertical scrollbar, shrink the box.\n // TODO: We may have to shrink from the left in RTL mode.\n if (element.scrollHeight > element.clientHeight && DomHelper.getStyleValue(element, 'overflow-y') !== 'hidden') {\n padding = parseFloat(DomHelper.getStyleValue(element, 'padding-right'));\n result.right += padding - Math.max(padding, scrollbarWidth);\n }\n // Capture height taken by any horizontal scrollbar.\n // If there is a horizontal scrollbar, shrink the box.\n if (element.scrollWidth > element.clientWidth && DomHelper.getStyleValue(element, 'overflow-x') !== 'hidden') {\n padding = parseFloat(DomHelper.getStyleValue(element, 'padding-bottom'));\n result.bottom += padding - Math.max(padding, scrollbarWidth);\n }\n }\n // The client region excluding any scrollbars.\n return result;\n }\n /**\n * Returns the outer Rectangle (including margin) in document based coordinates of the passed element.\n * @param {HTMLElement} element The element to calculate the Rectangle for.\n * @param {HTMLElement} [relativeTo] Optionally, a parent element in whose space to calculate the Rectangle.\n * @param {Boolean} [ignorePageScroll] Use browser viewport based coordinates.\n * @returns {Core.helper.util.Rectangle} The Rectangle in document based (or, optionally viewport based) coordinates.\n * Relative to the _relativeTo_ parameter if passed.\n * @internal\n */\n static outer(element, relativeTo, ignorePageScroll = false) {\n const result = this.from(element, relativeTo, ignorePageScroll);\n // Can only ask for the following styles if element is in the document.\n if (document.body.contains(element)) {\n const margin = DomHelper.getStyleValue(element, allMargins);\n result.x -= parseFloat(margin['margin-left']);\n result.y -= parseFloat(margin['margin-top']);\n result.right += parseFloat(margin['margin-right']);\n result.bottom += parseFloat(margin['margin-bottom']);\n }\n return result;\n }\n /**\n * Returns a new rectangle created as the union of all supplied rectangles.\n * @param {Core.helper.util.Rectangle[]} rectangles\n * @returns {Core.helper.util.Rectangle}\n */\n static union(...rectangles) {\n let {\n x,\n y,\n right,\n bottom\n } = rectangles[0],\n current;\n if (rectangles.length > 1) {\n for (let i = 1; i < rectangles.length; i++) {\n current = rectangles[i];\n if (current.x < x) {\n x = current.x;\n }\n if (current.y < y) {\n y = current.y;\n }\n if (current.right > right) {\n right = current.right;\n }\n if (current.bottom > bottom) {\n bottom = current.bottom;\n }\n }\n }\n return new Rectangle(x, y, right - x, bottom - y);\n }\n /**\n * Rounds this Rectangle to the pixel resolution of the current display or to the nearest\n * passed unit which defaults to the current display's [`devicePixelRatio`](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio).\n * @param {Number} [devicePixelRatio] device pixel ratio which defaults to `window.devicePixelRatio`\n */\n roundPx(devicePixelRatio = globalThis.devicePixelRatio || 1) {\n const me = this;\n me._x = DomHelper.roundPx(me._x, devicePixelRatio);\n me._y = DomHelper.roundPx(me._y, devicePixelRatio);\n me._width = DomHelper.roundPx(me._width, devicePixelRatio);\n me._height = DomHelper.roundPx(me._height, devicePixelRatio);\n return me;\n }\n // This class doesn't extend Base and extending doesn't seem to be\n // the way to go. Instead we duplicate smallest piece of logic here\n static get $$name() {\n return hasOwnProperty.call(this, '$name') && this.$name ||\n // _$name is filled by webpack for every class (cls._$name = '...')\n hasOwnProperty.call(this, '_$name') && this._$name || this.name;\n }\n get $$name() {\n return this.constructor.$$name;\n }\n /**\n * Constructs a Rectangle\n * @param {Number} x The X coordinate\n * @param {Number} y The Y coordinate\n * @param {Number} width The width\n * @param {Number} height The height\n */\n constructor(x, y, width, height) {\n ObjectHelper.assertNumber(x, 'Rectangle.x');\n ObjectHelper.assertNumber(y, 'Rectangle.y');\n ObjectHelper.assertNumber(width, 'Rectangle.width');\n ObjectHelper.assertNumber(height, 'Rectangle.height');\n const me = this;\n // Normalize rectangle definitions with -ve offsets from their origin\n if (width < 0) {\n x += width;\n width = -width;\n }\n if (height < 0) {\n y += height;\n height = -height;\n }\n me._x = x;\n me._y = y;\n me._width = width;\n me._height = height;\n }\n /**\n * Creates a copy of this Rectangle.\n */\n clone() {\n const me = this,\n result = new Rectangle(me.x, me.y, me.width, me.height);\n result.isAlignRectangle = me.isAlignRectangle;\n result.minHeight = me.minHeight;\n result.minWidth = me.minWidth;\n return result;\n }\n /**\n * Returns `true` if this Rectangle wholly contains the passed rectangle.\n *\n * Note that a {@link Core.helper.util.Point} may be passed.\n * @param {Core.helper.util.Rectangle} other The Rectangle to test for containment within this Rectangle\n * @returns {Boolean} `true` if the other Rectangle is wholly contained within this Rectangle\n */\n contains(other) {\n const me = this;\n if (other.isRectangle) {\n return other._x >= me._x && other._y >= me._y && other.right <= me.right && other.bottom <= me.bottom;\n } else {\n return false;\n }\n }\n /**\n * Checks if this Rectangle intersects the passed Rectangle\n * @param {Core.helper.util.Rectangle} other The Rectangle to intersect with this.\n * @param {Boolean} [useBoolean] Specify `true` to return a boolean value instead of constructing a new Rectangle\n * @param {Boolean} [allowZeroDimensions] `true` to consider zero-width or zero-hight rectangles as intersecting if coordinates indicate the intersection\n * @returns {Core.helper.util.Rectangle|Boolean} Returns the intersection Rectangle or `false` if there is no intersection.\n */\n intersect(other, useBoolean = false, allowZeroDimensions = false) {\n const me = this,\n y = Math.max(me.y, other.y),\n r = Math.min(me.right, other.right),\n b = Math.min(me.bottom, other.bottom),\n x = Math.max(me.x, other.x),\n intersect = allowZeroDimensions ? b >= y && r >= x : b > y && r > x;\n if (intersect) {\n return useBoolean ? true : new Rectangle(x, y, r - x, b - y);\n } else {\n return false;\n }\n }\n equals(other, round = false) {\n const processor = round ? x => Math.round(x) : x => x;\n return other.isRectangle && processor(other.x) === processor(this.x) && processor(other.y) === processor(this.y) && processor(other.width) === processor(this.width) && processor(other.height) === processor(this.height);\n }\n /**\n * Translates this Rectangle by the passed vector. Size is maintained.\n * @param {Number} x The X translation vector.\n * @param {Number} y The Y translation vector.\n * @returns {Core.helper.util.Rectangle} This Rectangle;\n */\n translate(x, y) {\n this._x += x || 0;\n this._y += y || 0;\n return this;\n }\n /**\n * Moves this Rectangle to the passed `x`, `y` position. Size is maintained.\n * @param {Number} x The new X position.\n * @param {Number} y The new Y position.\n * @returns {Core.helper.util.Rectangle} This Rectangle;\n */\n moveTo(x, y) {\n if (x != null) {\n this._x = x;\n }\n if (y != null) {\n this._y = y;\n }\n return this;\n }\n /**\n * Returns the vector which would translate this Rectangle (or Point) to the same position as the other Rectangle (or point)\n * @param {Core.helper.util.Rectangle|Core.helper.util.Point} other The Rectangle or Point to calculate the delta to.\n * @returns {Array} Returns a vector using format `[deltaX, deltaY]`\n * @internal\n */\n getDelta(other) {\n return [other.x - this.x, other.y - this.y];\n }\n /**\n * The center point of this rectangle.\n * @property {Core.helper.util.Point}\n */\n get center() {\n return new Rectangle.Point(this.x + this.width / 2, this.y + this.height / 2);\n }\n /**\n * Get/sets the X coordinate of the Rectangle. Note that this does *not* translate the\n * Rectangle. The requested {@link #property-width} will change.\n * @property {Number}\n */\n set x(x) {\n const xDelta = x - this._x;\n this._x = x;\n this._width -= xDelta;\n }\n get x() {\n return this._x;\n }\n get start() {\n return this.left;\n }\n /**\n * Alias for x. To match DOMRect.\n * @property {Number}\n */\n set left(x) {\n this.x = x;\n }\n get left() {\n return this.x;\n }\n /**\n * Alias for y. To match DOMRect.\n * @property {Number}\n */\n set top(y) {\n this.y = y;\n }\n get top() {\n return this.y;\n }\n /**\n * Get/sets the Y coordinate of the Rectangle. Note that this does *not* translate the\n * Rectangle. The requested {@link #property-height} will change.\n * @property {Number}\n */\n set y(y) {\n const yDelta = y - this._y;\n this._y = y;\n this._height -= yDelta;\n }\n get y() {\n return this._y;\n }\n /**\n * Get/sets the width of the Rectangle. Note that the requested {@link #property-right} will change.\n * @property {Number}\n */\n set width(width) {\n this._width = width;\n }\n get width() {\n return this._width;\n }\n /**\n * Get/sets the height of the Rectangle. Note that the requested {@link #property-bottom} will change.\n * @property {Number}\n */\n set height(height) {\n this._height = height;\n }\n get height() {\n return this._height;\n }\n /**\n * Get/sets the right edge of the Rectangle. Note that the requested {@link #property-width} will change.\n *\n * The right edge value is exclusive of the calculated rectangle width. So x=0 and right=10\n * means a width of 10.\n * @property {Number}\n */\n set right(right) {\n this._width = right - this._x;\n }\n get right() {\n return this._x + this._width;\n }\n get end() {\n return this.right;\n }\n /**\n * Get/sets the bottom edge of the Rectangle. Note that the requested {@link #property-height} will change.\n *\n * The bottom edge value is exclusive of the calculated rectangle height. So y=0 and bottom=10\n * means a height of 10.\n * @property {Number}\n */\n set bottom(bottom) {\n this._height = bottom - this._y;\n }\n get bottom() {\n return this._y + this._height;\n }\n getStart(rtl, horizontal = true) {\n if (horizontal) {\n return rtl ? this.right : this.left;\n }\n return this.top;\n }\n getEnd(rtl, horizontal = true) {\n if (horizontal) {\n return rtl ? this.left : this.right;\n }\n return this.bottom;\n }\n get area() {\n return this.width * this.height;\n }\n set minWidth(minWidth) {\n const me = this;\n if (isNaN(minWidth)) {\n me._minWidth = null;\n } else {\n me._minWidth = Number(minWidth);\n // If this is being used as an alignment calculation rectangle, minWidth has a different meaning.\n // It does not mean that the width has to be at least this value. It means that under constraint,\n // it is willing to shrink down to that value before falling back to another align position.\n if (!me.isAlignRectangle) {\n me.width = Math.max(me.width, me._minWidth);\n }\n }\n }\n get minWidth() {\n return this._minWidth;\n }\n set minHeight(minHeight) {\n const me = this;\n if (isNaN(minHeight)) {\n me._minHeight = null;\n } else {\n me._minHeight = Number(minHeight);\n // If this is being used as an alignment calculation rectangle, minHeight has a different meaning.\n // It does not mean that the height has to be at least this value. It means that under constraint,\n // it is willing to shrink down to that value before falling back to another align position.\n if (!me.isAlignRectangle) {\n me.height = Math.max(me.height, me._minHeight);\n }\n }\n }\n get minHeight() {\n return this._minHeight;\n }\n /**\n * Modifies the bounds of this Rectangle by the specified deltas.\n * @param {Number} x How much to *add* to the x position.\n * @param {Number} y How much to *add* to the y position.\n * @param {Number} width How much to add to the width.\n * @param {Number} height How much to add to the height.\n * @returns {Core.helper.util.Rectangle} This Rectangle\n */\n adjust(x, y, width, height) {\n const me = this;\n me.x += x;\n me.y += y;\n me.width += width;\n me.height += height;\n return me;\n }\n /**\n * Modifies the bounds of this rectangle by expanding them by the specified amount in all directions.\n * The parameters are read the same way as CSS margin values.\n *\n * - If one value is passed, all edges are inflated by that value.\n * - If two values are passed they are top/bottom inflation and left/right inflation.\n * - If four values are passed, that's top, right, bottom, left.\n * @param {Number} amount How much to inflate, or the top value if more than one values passed.\n * @param {Number} right How much to inflate the right side, or both left and right is only two values passed.\n * @param {Number} bottom How much to inflate the bottom side.\n * @param {Number} left How much to inflate the left side.\n * @returns {Core.helper.util.Rectangle} This Rectangle\n * @internal\n */\n inflate(top, right = top, bottom = top, left = right) {\n if (Array.isArray(top)) {\n [top, right, bottom, left] = parseEdges(top);\n }\n return this.adjust(-left, -top, right, bottom);\n }\n /**\n * Modifies the bounds of this rectangle by reducing them by the specified amount in all directions.\n * The parameters are read the same way as CSS margin values.\n *\n * - If one value is passed, all edges are deflated by that value.\n * - If two values are passed they are top/bottom deflation and left/right deflation.\n * - If four values are passed, that's top, right, bottom, left.\n * @param {Number} amount How much to deflate, or the top value if more than one values passed.\n * @param {Number} right How much to deflate the right side, or both left and right is only two values passed.\n * @param {Number} bottom How much to deflate the bottom side.\n * @param {Number} left How much to deflate the left side.\n * @returns {Core.helper.util.Rectangle} This Rectangle\n * @internal\n */\n deflate(top, right = top, bottom = top, left = right) {\n if (Array.isArray(top)) {\n [top, right, bottom, left] = parseEdges(top);\n }\n return this.adjust(left, top, -right, -bottom);\n }\n /**\n * Attempts constrain this Rectangle into the passed Rectangle. If the `strict` parameter is `true`\n * then this method will return `false` if constraint could not be achieved.\n *\n * If this Rectangle has a `minHeight` or `minWidth` property, size will be adjusted while attempting to constrain.\n *\n * Right and bottom are adjusted first leaving the top and bottom sides to \"win\" in the case that this Rectangle overflows\n * the constrainTo Rectangle.\n * @param {Core.helper.util.Rectangle} constrainTo The Rectangle to constrain this Rectangle into if possible.\n * @param {Boolean} strict Pass `true` to return false, and leave this Rectangle unchanged if constraint\n * could not be achieved.\n * @returns {Core.helper.util.Rectangle|Boolean} This Rectangle. If `strict` is true, and constraining was not successful, `false`.\n */\n constrainTo(constrainTo, strict) {\n const me = this,\n originalHeight = me.height,\n originalY = me.y,\n minWidth = me.minWidth || me.width,\n minHeight = me.minHeight || me.height;\n if (me.height >= constrainTo.height) {\n // If we're strict, fail if we could *never* fit into available height.\n if (strict && minHeight > constrainTo.height) {\n return false;\n }\n // If we are >= constrain height, we will have to be at top edge of constrainTo\n me._y = constrainTo.y;\n me.height = constrainTo.height;\n }\n if (me.width >= constrainTo.width) {\n // If we're strict, fail if we could *never* fit into available width.\n if (strict && minWidth > constrainTo.width) {\n // Could not be constrained; undo any previous attempt with height\n me.y = originalY;\n me.height = originalHeight;\n return false;\n }\n // If we are >= constrain width, we will have to be at left edge of constrainTo\n me._x = constrainTo.x;\n me.width = constrainTo.width;\n }\n let overflow = me.bottom - constrainTo.bottom;\n // Overflowing the bottom side, translate upwards.\n if (overflow > 0) {\n me.translate(0, -overflow);\n }\n overflow = me.right - constrainTo.right;\n // Overflowing the right side, translate leftwards.\n if (overflow > 0) {\n me.translate(-overflow);\n }\n overflow = constrainTo.y - me.y;\n // Now, after possible translation upwards, we overflow the top, translate downwards.\n if (overflow > 0) {\n me.translate(0, overflow);\n }\n overflow = constrainTo.x - me.x;\n // Now, after possible translation leftwards, we overflow the left, translate rightwards.\n if (overflow > 0) {\n me.translate(overflow);\n }\n return me;\n }\n /**\n * Returns a cloned version of this Rectangle aligned to a target Rectangle, or element or {@link Core.widget.Widget}.\n * @param {Object} spec Alignment specification.\n * @param {HTMLElement|Core.widget.Widget|Core.helper.util.Rectangle} spec.target The Widget or element or Rectangle to align to.\n * @param {Number[]} [spec.anchorSize] The `[width, height]` of the anchor pointer when in `top` position. The\n * width is the baseline length, and the height is the height of the arrow. If passed, the anchor position\n * will be calculated to be at the centre of the overlap of the two aligned edges and returned in the `anchor`\n * property of the resulting Rectangle:\n *\n * {\n * edge: 'top', // or 'right' or 'bottom' or 'left'\n * x/y: offset // dimension to translate and value to translate by.\n * }\n *\n * @param {Object} [spec.anchorPosition] an `{ x: n, y: n }` anchor translation to be used *if the requested alignment\n * succeeds without violating constraints*. If a fallback alignment is used, the anchor will be centered in the\n * overlap of the aligned edges as usual.\n * @param {Boolean} [spec.overlap] True to allow this to overlap the target.\n * @param {String} spec.align The edge alignment specification string, specifying two points to bring together.\n *\n * Each point is described by an edge initial (`t` for top edge, `b` for bottom edge etc) followed\n * by a percentage along that edge.\n *\n * So the the form would be `[trblc][n]-[trblc][n].` The `n` is the percentage offset along that edge\n * which defines the alignment point. This is not valid for alignment point `c` which means the center point.\n *\n * For example `t0-b0' would align this Rectangle's top left corner with the bottom left corner of the `target`.\n * @param {HTMLElement|Core.widget.Widget|Core.helper.util.Rectangle} [spec.constrainTo] The Widget or Element or Rectangle to constrain to.\n * If the requested alignment cannot be constrained (it will first shrink the resulting Rectangle according\n * to the `minWidth` and `minHeight` properties of this rectangle), then it will try aligning at other edges\n * (honouring the `axisLock` option), and pick the fallback alignment which results in the shortest translation.\n * @param {Boolean} [spec.axisLock] Specify as a truthy value to fall back to aligning against the opposite\n * edge first if the requested alignment cannot be constrained into the `constrainTo` option. If specified\n * as `'flexible'`, then fallback will continue searching for solutions on the remaining two sides.\n * @param {Boolean} [spec.matchSize] When aligning edge-to-edge, match the length of the aligned-to\n * edge of the target. This is only honored when `axisLock` is enabled and alignment succeeds on the requested axis.\n * If __not__ aligning edge-to-edge, `matchSize` matches both dimensions of the target.\n * @param {Number|Number[]} [spec.offset] The 'x' and 'y' offset values to create an extra margin round the target\n * to offset the aligned widget further from the target. May be configured as -ve to move the aligned widget\n * towards the target - for example producing the effect of the anchor pointer piercing the target.\n * @param {Number|Number[]} [spec.constrainPadding] The amount of pixels to pad from the `constrainTo` target,\n * either a single value, or an array of values in CSS edge order.\n * @param {Boolean} [spec.rtl] Pass as true if this is being used in an RTL environment, and aligning 0% to\n * 100% along a horizontal edge must proceed from right to left.\n * @returns {Core.helper.util.Rectangle} A new Rectangle aligned as requested if possible, but if the requested position violates\n * the `constrainTo` Rectangle, the shortest translation from the requested position which obeys constraints will be used.\n */\n alignTo(spec) {\n // The target and constrainTo may be passed as HtmlElements or Widgets.\n // If so, extract the Rectangles without mutating the incoming spec.\n let result = this.clone(),\n {\n target,\n constrainTo,\n constrainPadding,\n matchSize,\n rtl\n } = spec,\n calculatedAnchorPosition,\n zone,\n resultZone,\n constrainingToViewport;\n if (target && !target.isRectangle) {\n target = Rectangle.from(target.element ? target.element : target);\n }\n if (constrainTo) {\n if (!constrainTo.isRectangle) {\n // Viewport is denoted by requesting window or document.\n // document.body may overflow the viewport, so this must not be evaluated as the viewport.\n constrainingToViewport = constrainTo === globalThis || constrainTo === document;\n // When rectangle is constrained to some element on the page other than window/document, page scroll\n // should not be taken into account\n const ignorePageScroll = 'ignorePageScroll' in spec ? spec.ignorePageScroll : !constrainingToViewport;\n constrainTo = Rectangle.from(constrainTo.element ? constrainTo.element : constrainTo, null, ignorePageScroll);\n }\n // Shrink the constrainTo Rectangle to account for the constrainPadding\n if (constrainPadding) {\n // An array may be used to specify sides in the CSS standard order.\n // One value means all sides reduce by the same amount.\n constrainPadding = parseEdges(constrainPadding);\n // If we are aligning to an element which is closer to an edge than the\n // constrainPadding value for that edge, override the constrainPadding so that\n // the visual alignment is maintained.\n constrainPadding[0] = Math.min(constrainPadding[0], target.top);\n constrainPadding[1] = Math.min(constrainPadding[1], constrainTo.right - target.right);\n constrainPadding[2] = Math.min(constrainPadding[0], constrainTo.bottom - target.bottom);\n constrainPadding[3] = Math.min(constrainPadding[0], target.left);\n // Must clone a passed Rectangle so as not to mutate objects passed in.\n constrainTo = constrainTo.deflate.apply(constrainTo.clone(), constrainPadding);\n }\n }\n const me = this,\n targetOffsets = createOffsets(spec.offset),\n {\n align,\n axisLock,\n anchorSize,\n anchorPosition\n } = spec,\n alignSpec = parseAlign(align, rtl),\n position = spec.position || (target && target.$$name === 'Point' ? target : null),\n targetConstrainRect = constrainTo && constrainTo.clone(),\n constraintZones = [],\n zoneOrder = [{\n zone: zone = alignSpec.startZone,\n align\n }],\n matchDimension = matchSize && matchDimensions[alignSpec.startZone & 1],\n originalSize = me[matchDimension];\n // Match the size of the edge we are aligning against\n if (matchDimension && axisLock) {\n result[matchDimension] = target[matchDimension];\n }\n // If we are not aligning to an edge, match both diensions.\n else if (!alignSpec.edgeAligned && matchSize) {\n result.width = target.width;\n result.height = target.height;\n }\n // Ensure we will fit before trying\n if (constrainTo) {\n result.constrainTo(constrainTo);\n }\n // If we are aligning edge-to-edge, then plan our fallback strategy when we are constrained.\n if (constrainTo && alignSpec.startZone != null) {\n // Create the list of zone numbers and alignments to try in the preferred order.\n //\n // In the case of axisLock, go through the zones by each axis.\n // So if they asked for t-b, which is zone 2,\n // the array will be [2, 0, 3, 1] (t-b, b-t, r-l, l-r)\n if (axisLock) {\n // First axis flip has to maintain the offset along that axis.\n // so align: l0-r0 has to flip to align: r0-l0. See submenu flipping when\n // constrained to the edge. It flips sides but maintains vertical position.\n zoneOrder.push({\n zone: zone = (zone + 2) % 4,\n align: flipAlign(alignSpec)\n });\n // Only try the other axis is axisLock is 'flexible'\n if (axisLock === 'flexible') {\n zoneOrder.push({\n zone: zone = (alignSpec.startZone + 1) % 4,\n align: defaultAlignments[zone]\n });\n zoneOrder.push({\n zone: zone = (zone + 2) % 4,\n align: defaultAlignments[zone]\n });\n }\n }\n // Go through the zones in order from the requested start.\n // So if they asked for t-b, which is zone 2,\n // the array will be [2, 3, 0, 1] (t-b, r-l, b-t, l-r)\n else {\n for (let i = 1; i < 4; i++) {\n zoneOrder.push({\n zone: zone = (zone + 1) % 4,\n align: defaultAlignments[zone]\n });\n }\n }\n }\n // Allow them to pass anchorPosition: {x: 10} to indicate that after a fully successful,\n // unconstrained align, the anchor should be 10px from the start.\n if (anchorPosition) {\n const pos = alignSpec.startZone & 1 ? 'y' : 'x';\n calculatedAnchorPosition = {\n [pos]: anchorPosition[pos],\n edge: edgeNames[(alignSpec.startZone + 2) % 4]\n };\n }\n // Keep the target within reach. If it's way outside, pull it back so that it's only just outside);\n if (targetConstrainRect && target) {\n targetConstrainRect.adjust(-target.width, -target.height, target.width, target.height);\n target.constrainTo(targetConstrainRect);\n }\n // As part of fallback process when fitting within constraints, result may shrink to our minima\n result.minWidth = me.minWidth;\n result.minHeight = me.minHeight;\n // We're being commanded to try to align at a position\n if (position) {\n result.moveTo(position.x, position.y);\n if (constrainTo) {\n result.constrainTo(constrainTo);\n }\n }\n // We're aligning to a Target Rectangle within a ConstrainTo Rectangle, taking into account\n // a possible anchor pointer, or x/y offsets. Here's the situation:\n //\n // <-- ConstrainTo Rectangle -->\n // +-----------------------------------+--------------------+-------------------------+\n // | | | |\n // | | | |\n // | | | |\n // |-----------------------------------+--------------------+-------------------------+\n // | | ▼ | |\n // | | +----------------+ | |\n // | | | | | |\n // | | | | | |\n // | |▶| Target |◀| |\n // | | | | | |\n // | | | | | |\n // | | +----------------+ | |\n // | | ▲ | |\n // +-----------------------------------+--------------------+-------------------------|\n // | | | |\n // | | | |\n // | | | |\n // +-----------------------------------+--------------------+-------------------------+\n //\n // Which results in the four possible constraint zones above, which we index in standard CSS order.\n //\n // Top = 0\n // Right = 1\n // Bottom = 2\n // Left = 3\n //\n // If the initially requested alignment is not within the constrainTo rectangle\n // then, calculate these four, and then loop through them, beginning at the requested one,\n // quitting when we find a position which does not violate constraints. This includes\n // shrinking the aligning Rectangle towards its minima to attempt a fit.\n //\n // The final fallback, if there is no position which does not violate constraints\n // is to position in whichever of the four rectangles has the largest area shrinking overflowing\n // dimensions down to minima if specified.\n //\n else {\n // Offsets: If we are using an anchor to move away from the target, use anchor height in both dimensions.\n // It's rotated so that \"height\" always has the same meaning. It's the height of the arrow.\n const centerAligned = alignSpec.myEdge === 'c' || alignSpec.targetEdge === 'c',\n offsets = anchorSize && !centerAligned ? [anchorSize[1] + targetOffsets[0], anchorSize[1] + targetOffsets[1]] : targetOffsets,\n targetPoint = target.getAlignmentPoint(alignSpec.targetAlignmentPoint, offsets),\n myPoint = result.getAlignmentPoint(alignSpec.myAlignmentPoint);\n result.translate(targetPoint[0] - myPoint[0], targetPoint[1] - myPoint[1]);\n // If an overlapping position was requested, then we are *not* trying out those four zones.\n // We just respect constraint, and that's it.\n let overlap = result.intersect(target, true);\n // If we are aligned over our target, we just obey that within any constraint.\n // No complex edge alignment attempts to fall back to.\n if (overlap) {\n if (constrainTo) {\n result.constrainTo(constrainTo);\n }\n resultZone = alignSpec.startZone;\n result.translate(...offsets);\n }\n // Aligned to outside of our target, and we need to be constrained\n else if (constrainTo && !constrainTo.contains(result)) {\n const requestedResult = result.clone(),\n solutions = [];\n let zone, largestZone;\n // Any configured anchorPosition becomes invalid now that we're having to move the resulting zone\n // to some unpredictable new place where it fits. It will have to be calculated based upon where\n // we end up aligning.\n calculatedAnchorPosition = null;\n // Calculate the four constraint zones illustrated above.\n // Top\n constraintZones[0] = zone = constrainTo.clone();\n zone.bottom = target.y - offsets[1];\n // Right\n constraintZones[1] = zone = constrainTo.clone();\n zone.x = target.right + offsets[0];\n // Bottom\n constraintZones[2] = zone = constrainTo.clone();\n zone.y = target.bottom + offsets[1];\n // Left\n constraintZones[3] = zone = constrainTo.clone();\n zone.right = target.x - offsets[0];\n // Start from the preferred edge and see if we are able to constrain to within each rectangle\n for (let i = 0; i < zoneOrder.length; i++) {\n // Revert to incoming dimension for fallback out of axisLock\n if (matchDimension && i == 2) {\n result[matchDimension] = originalSize;\n }\n zone = constraintZones[resultZone = zoneOrder[i].zone];\n // Perform unconstrained alignment at the calculated alignment for the zone\n result = result.alignTo({\n target: target,\n offsets: offsets,\n align: zoneOrder[i].align\n });\n // If we are able to strictly constrain into this area, then it's one of the possible solutions.\n // We choose the solution which result in the shortest translation from the initial position.\n if (result.constrainTo(zone, true)) {\n solutions.push({\n result: result,\n zone: resultZone\n });\n // If this successful constraint is at the requested alignment, or at a fallback\n // alignment which has used min size constraints, then that's the correct solution.\n // If there's no size compromising, we have to pick the shortest translation.\n if (!largestZone || result.width < me.width || result.height < me.height) {\n result.align = zoneOrder[i].align;\n break;\n }\n }\n // Cache the largest zone we find in case we need the final fallback.\n if (!largestZone || zone.area > largestZone.area) {\n const r = result.clone();\n // And just move the result clone into the edge zone\n switch (resultZone) {\n // Top\n case 0:\n r.moveTo(null, zone.bottom - r.height);\n break;\n // Right\n case 1:\n r.moveTo(zone.left);\n break;\n // Bottom\n case 2:\n r.moveTo(null, zone.top);\n break;\n // Left\n case 3:\n r.moveTo(zone.right - r.width);\n break;\n }\n largestZone = {\n area: zone.area,\n result: r,\n zone: resultZone\n };\n }\n }\n // The loop found at least one solution\n if (solutions.length) {\n // Multiple fallbacks with no axisLock.\n // Use the solution which resulted in the shortest translation distance from the requested alignment.\n if (solutions.length > 1 && !axisLock) {\n solutions.sort((s1, s2) => {\n const s1TranslationDistance = Math.sqrt((requestedResult.x - s1.result.x) ** 2 + (requestedResult.y - s1.result.y) ** 2),\n s2TranslationDistance = Math.sqrt((requestedResult.x - s2.result.x) ** 2 + (requestedResult.y - s2.result.y) ** 2);\n return s1TranslationDistance - s2TranslationDistance;\n });\n }\n // Initial success, or axisLock. Use first successful solution.\n result = solutions[0].result;\n resultZone = solutions[0].zone;\n }\n // No solutions found - use the largest rectangle.\n else {\n result = largestZone.result;\n resultZone = largestZone.zone;\n // When we are constraining to the viewport, we must still must be constrained,\n // even after we've given up making it align *and* constrain.\n if (constrainingToViewport) {\n result.constrainTo(constrainTo);\n }\n }\n } else {\n resultZone = alignSpec.startZone;\n }\n result.zone = resultZone;\n result.overlap = overlap = result.intersect(target, true);\n // If they included an anchor, calculate its position along its edge.\n // TODO: Handle the edge overlap being less than anchor width.\n if (anchorSize && !overlap) {\n // If we were passed an anchorPosition, and it has remained valid (meaning the requested\n // alignment succeeded with no constraint), then anchorPosition will be set. If not,\n // we have to calculate it based upon the aligned edge.\n if (!calculatedAnchorPosition) {\n const isLeftOrRight = resultZone & 1,\n start = isLeftOrRight ? 'y' : 'x',\n end = isLeftOrRight ? 'bottom' : 'right',\n startValue = Math.max(target[start], result[start]),\n endValue = Math.min(target[end], result[end]);\n let anchorStart = startValue + (endValue - startValue) / 2 - anchorSize[0] / 2;\n const anchorEnd = anchorStart + anchorSize[0];\n if (anchorEnd > result[end]) {\n anchorStart -= anchorEnd - result[end];\n }\n if (anchorStart < result[start]) {\n anchorStart += result[start] - anchorStart;\n }\n // Return an anchor property which will have an x or y property and an edge name onto which the\n // arrow should be aligned.\n calculatedAnchorPosition = {\n [start]: anchorStart - result[start],\n edge: edgeNames[(resultZone + 2) % 4]\n };\n }\n result.anchor = calculatedAnchorPosition;\n }\n }\n return result;\n }\n /**\n * Returns the `[x, y]` position of the specified anchor point of this Rectangle in format.\n * for example passing \"t50\" will return the centre point of the top edge, passing \"r0\" will return the start\n * position of the right edge (the top right corner).\n *\n * Note that the offset defaults to 50, so \"t\" means the centre of the top edge.\n * @param {String} alignmentPoint The alignment point to calculate. Must match the RegExp `[trbl]\\d*`\n * @param {Number[]} margins The `[x, y]` margins to add from the left/right, top/bottom edge.\n * @internal\n */\n getAlignmentPoint(alignmentPoint, margins = zeroOffsets) {\n const me = this,\n parts = alignPointRe.exec(alignmentPoint),\n edge = parts[1].toLowerCase(),\n edgeOffset = Math.min(Math.max(parseInt(parts[2] || 50), 0), 100) / 100;\n switch (edge) {\n case 't':\n return [me.x + me.width * edgeOffset, me.y - margins[1]];\n case 'r':\n return [me.right + margins[0], me.y + me.height * edgeOffset];\n case 'b':\n return [me.x + me.width * edgeOffset, me.bottom + margins[1]];\n case 'l':\n return [me.x - margins[0], me.y + me.height * edgeOffset];\n case 'c':\n {\n return [me.x + me.width / 2, me.y + me.height / 2];\n }\n }\n }\n /**\n * Highlights this Rectangle using the highlighting effect of {@link Core.helper.DomHelper}\n * on a transient element which encapsulates the region's area.\n */\n highlight() {\n const me = this,\n highlightElement = DomHelper.createElement({\n parent: document.body,\n style: `position:absolute;z-index:9999999;pointer-events:none;\n left:${me.x}px;top:${me.y}px;width:${me.width}px;height:${me.height}px`\n });\n return DomHelper.highlight(highlightElement).then(() => highlightElement.remove());\n }\n /**\n * Visualizes this Rectangle by adding a DOM element which encapsulates the region's area into the provided parent element.\n * @param {DomConfig} config Element config object\n * @returns {Element} The highlight element\n * @internal\n */\n visualize(config, asDomConfig) {\n const me = this,\n domConfig = _objectSpread2({\n style: _objectSpread2({\n left: `${me.x}px`,\n top: `${me.y}px`,\n width: `${me.width}px`,\n height: `${me.height}px`\n }, config.class ? {} : {\n position: 'absolute',\n 'z-index': 9999999\n })\n }, config);\n return asDomConfig ? domConfig : DomHelper.createElement(domConfig);\n }\n toString(delimiter = ',') {\n return [`${this.top}px`, `${this.right}px`, `${this.bottom}px`, `${this.left}px`].join(delimiter);\n }\n}\nRectangle._$name = 'Rectangle';\n\n/**\n * @module Core/helper/util/DomClassList\n */\nconst valueSymbol = Symbol('value'),\n lengthSymbol = Symbol('length');\n/**\n * This class encapsulates a list of CSS classes which can be set as the `className`\n * on an `HTMLElement`.\n *\n * Properties names set on this class equate to *adding* a class if the property's value\n * is _truthy_, or removing a class if the value is _falsy_.\n *\n * ```javascript\n * const myClassList = new DomClassList('b-test-button');\n *\n * myClassList.add('test-class');\n * myClassList.important = 1;\n *\n * myHtmlElement.className = myClassList; // Sets it to \"b-test-button test-class important\"\n * ```\n */\nclass DomClassList {\n static change(cls, add, remove, as = 'string') {\n remove = DomClassList.normalize(remove, 'object');\n const after = DomClassList.normalize(cls, 'array').filter(c => !remove[c]);\n if (add) {\n add = DomClassList.normalize(add, 'array');\n for (let i = 0; i < add.length; ++i) {\n if (!after.includes(add[i])) {\n after.push(add[i]);\n }\n }\n }\n return DomClassList.normalize(after, as);\n }\n static from(classes, returnEmpty) {\n if (classes) {\n if (classes.isDomClassList) {\n var _returnEmpty;\n returnEmpty = (_returnEmpty = returnEmpty) !== null && _returnEmpty !== void 0 ? _returnEmpty : true;\n } else {\n var _returnEmpty2;\n returnEmpty = (_returnEmpty2 = returnEmpty) !== null && _returnEmpty2 !== void 0 ? _returnEmpty2 : Objects.isObject(classes) && !Objects.isEmpty(classes);\n classes = new DomClassList(classes);\n }\n if (!classes.value && !returnEmpty) {\n classes = null;\n }\n }\n return classes || (returnEmpty ? new DomClassList() : null);\n }\n /**\n * Converts a class name of any understood type to a desired form.\n * @param {String|String[]|Object|Set|Map|HTMLElement} cls\n * @param {String} as Pass `'object'` to return an object with the class names as its keys (all keys will have a\n * value of `true`), or pass `'array'` to return an array of class names, or pass `'string'` (the default) to\n * return a space-separated string of class names.\n * @returns {String|String[]|Object}\n * @internal\n */\n static normalize(cls, as = 'string') {\n cls = cls || ''; // promote null to '' to avoid typeof snag\n const type = typeof cls,\n asArray = as === 'array',\n asObject = as === 'object',\n asString = !asArray && !asObject;\n let isString = type === 'string',\n c,\n i,\n ret;\n if (type === 'object') {\n var _cls;\n if (cls.nodeType === Element.ELEMENT_NODE && typeof cls.getAttribute === 'function') {\n cls = cls.getAttribute('class') || ''; // cannot use className for SVG el's\n isString = true;\n } else if ((_cls = cls) !== null && _cls !== void 0 && _cls.isDomClassList) {\n cls = cls.values;\n } else if (cls instanceof DOMTokenList) {\n cls = Array.from(cls);\n } else if (cls instanceof Map) {\n cls = Array.from(cls.keys()).filter(k => cls.get(k));\n } else if (cls instanceof Set) {\n cls = Array.from(cls);\n } else if (!Array.isArray(cls)) {\n cls = Objects.getTruthyKeys(cls);\n }\n }\n if (isString) {\n // Pass through Set to ensure only unique class names\n cls = [...new Set(StringHelper.split(cls))];\n }\n // cls is now an array\n for (i = cls.length; i-- > 0;) {\n c = cls[i];\n if (!c.length) {\n cls.splice(i, 1);\n } else if (c.includes(' ')) {\n cls.splice(i, 1, ...StringHelper.split(c));\n }\n }\n if (asArray) {\n ret = cls;\n } else if (asString) {\n ret = cls.join(' ');\n } else {\n ret = Object.create(null);\n for (i = 0; i < cls.length; ++i) {\n ret[cls[i]] = true;\n }\n }\n return ret;\n }\n /**\n * Initializes a new DomClassList.\n * @param {...String|Object} classes The CSS classes as strings or objects.\n * @function constructor\n */\n constructor(...classes) {\n this.process(1, classes);\n }\n /**\n * Clears all class names from this DomClassList instance.\n * @returns {Core.helper.util.DomClassList} this DomClassList.\n */\n clear() {\n // Keep internal class same shape. Do not delete members.\n for (const key in this) {\n this[key] = false;\n }\n return this;\n }\n /**\n * Sets this DomClassList instance to represent the classes passed as either strings or objects.\n * @returns {Core.helper.util.DomClassList} this DomClassList.\n */\n set(...classes) {\n return this.clear().process(1, classes);\n }\n // To gain some speed in DomHelper.sync(), faster than instanceof etc\n get isDomClassList() {\n return true;\n }\n /**\n * Returns a clone of this DomClassList with all the same keys set.\n * @returns {Core.helper.util.DomClassList} A clone of this DomClassList.\n */\n clone() {\n return new DomClassList(this);\n }\n /**\n * Returns a Boolean value, indicating whether this ClassList has the specified CSS class name.\n * @param {String} className CSS class name to check\n * @returns {Boolean} true if this ClassList contains the passed CSS class name, false otherwise\n */\n contains(className) {\n if (typeof className === 'string' && className) {\n return Boolean(this[className]);\n }\n return false;\n }\n // An instance of this class may be assigned directly to an element's className\n // it will be coerced to a string value using this method.\n toString() {\n // Adding space at the end if there is content to make concatenation code simpler in renderers.\n return this.length ? `${this.value} ` : '';\n }\n toJSON() {\n return this.toString();\n }\n /**\n * Analogous to string.trim, returns the string value of this `DomClassList` with no trailing space.\n * @returns {String} A concatenated string value of all the class names in this `DomClassList`\n * separated by spaces.\n */\n trim() {\n return this.value;\n }\n /**\n * Compares this DomClassList to another DomClassList (or class name string of space separated classes).\n * If the same class names (regardless of order) are present, the two are considered equal.\n *\n * So `new DomClassList('foo bar bletch').isEqual('bletch bar foo')` would return `true`\n * @param {Core.helper.util.DomClassList|String} other The `DomClassList` or string of classes to compare to.\n * @returns {Boolean} `true` if the two contain the same class names.\n */\n isEqual(other) {\n const otherClasses = DomClassList.normalize(other, 'array'),\n len = otherClasses.length;\n if (this.length === len) {\n for (let i = 0; i < len; i++) {\n if (!this[otherClasses[i]]) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n /**\n * Get/set string value.\n * Class names separated with space.\n * @property {String}\n */\n get value() {\n let value = this[valueSymbol],\n keys;\n if (value == null) {\n keys = Objects.getTruthyKeys(this);\n this[lengthSymbol] = keys.length;\n this[valueSymbol] = value = keys.join(' ');\n }\n return value;\n }\n set value(value) {\n const me = this,\n keys = Object.keys(me),\n len = keys.length;\n for (let i = 0; i < len; i++) {\n delete me[keys[i]];\n }\n if (value) {\n me.process(1, [value]);\n } else {\n // String value needs recalculating\n delete me[valueSymbol];\n }\n }\n /**\n * Returns string values as an array.\n * @readonly\n * @property {String[]}\n */\n get values() {\n return Objects.getTruthyKeys(this);\n }\n get length() {\n // Maintainer: We MUST access the value getter to force\n // the value to be calculated if it's currently dirty.\n return this.value ? this[lengthSymbol] : 0;\n }\n process(value, classes) {\n for (let cls, k, i = 0; i < classes.length; i++) {\n if (classes[i]) {\n cls = classes[i];\n if (cls.isDomClassList || Objects.isObject(cls)) {\n // preserve all keys, even falsy ones\n for (k in cls) {\n this[k] = value ? cls[k] : !cls[k];\n }\n } else {\n cls = DomClassList.normalize(classes[i], 'array');\n for (k = 0; k < cls.length; ++k) {\n this[cls[k]] = value;\n }\n }\n }\n }\n // String value needs recalculating\n delete this[valueSymbol];\n return this;\n }\n /**\n * Adds/removes class names according to the passed object's properties.\n *\n * Properties with truthy values are added.\n * Properties with falsy values are removed.\n * @param {Object} classList Object containing properties to set/clear\n */\n assign(classList) {\n for (const cls in classList) {\n if (!this[cls] !== !classList[cls]) {\n this[cls] = classList[cls];\n // String value needs recalculating\n delete this[valueSymbol];\n }\n }\n return this;\n }\n /**\n * Adds/removes this objects classes to the passed `classList` or element.\n *\n * Properties with truthy values are added.\n * Properties with falsy values are removed.\n * @param {HTMLElement|DOMTokenList} element The element or the element's `classList` to be updated.\n */\n assignTo(element) {\n const classList = element.nodeType === Element.ELEMENT_NODE ? element.classList : element,\n temp = DomClassList.from(classList);\n temp.add(this);\n classList.value = temp.value;\n }\n /**\n * Add CSS class(es)\n * ```\n * myClassList.add('bold', 'small');\n * ```javascript\n * @param {String|String[]|Object} classes CSS classes to add\n */\n add(...classes) {\n return this.process(1, classes);\n }\n /**\n * Remove CSS class(es)\n * ```javascript\n * myClassList.remove('bold', 'small');\n * ```\n * @param {String} classes CSS classes to remove\n */\n remove(...classes) {\n return this.process(0, classes);\n }\n /**\n * Toggles the passed CSS class name.\n *\n * If the `force` parameter is passed, `true` means add the class name, `false` means remove it.\n *\n * ```javascript\n * myClassList.toggle('bold', isImportant);\n * ```\n * @param {String} className CSS class to toggle\n * @param {Boolean} [force] `true` to add the class, `false` to remove it.\n * @returns {Boolean} `true` if the operation changed the value.\n */\n toggle(className, flag = Boolean(!this[className])) {\n flag = Boolean(flag);\n // Only disturb the set classwes if we need to.\n if (Boolean(this[className]) !== flag) {\n this[className] = flag;\n // String value needs recalculating\n delete this[valueSymbol];\n return true;\n }\n }\n /**\n * Analogous to the `String#split` method, but with no delimiter\n * parameter. This method returns an array containing the individual\n * CSS class names set.\n * @returns {String[]} The individual class names in this `DomClassList`\n */\n split() {\n return Objects.getTruthyKeys(this);\n }\n forEach(fn) {\n return Objects.getTruthyKeys(this).forEach(fn);\n }\n}\n// We put this on the prototype and delete it from instances to mark dirty state. This maintains the same shape for\n// the instance to help the JIT\nDomClassList.prototype[valueSymbol] = null;\nDomClassList._$name = 'DomClassList';\n\n/**\n * @module Core/helper/util/Point\n */\n/**\n * Encapsulates an X,Y coordinate point.\n * @extends Core/helper/util/Rectangle\n */\nclass Point extends Rectangle {\n /**\n * Creates a new Point encapsulating the event's page position.\n * @param {Event} event\n * @returns {Core.helper.util.Point}\n * @typings ignore\n */\n static from(event) {\n const touchPoints = event.changedTouches;\n return new Point(touchPoints ? touchPoints[0].screenX : event.screenX, touchPoints ? touchPoints[0].screenY : event.pageY);\n }\n /**\n * Constructs a Point\n * @param x The X coordinate\n * @param y The Y coordinate\n */\n constructor(x, y) {\n super(x, y, 0, 0);\n }\n /**\n * Coerces this Point to be within the passed Rectangle. Translates it into the bounds.\n * @param {Core.helper.util.Rectangle} into The Rectangle into which to coerce this Point.\n */\n constrain(into) {\n this.x = Math.min(Math.max(this.x, into.x), into.right - 1);\n this.y = Math.min(Math.max(this.y, into.y), into.bottom - 1);\n return this;\n }\n toArray() {\n return [this.x, this.y];\n }\n}\n// The Rectangle class uses the Point class, but cannot import it.\n// TODO: find a better way of getting a reference to the Point class in Rectangle.\n// #8224 - Gantt angular demo doesn't work in production\nObject.getPrototypeOf(Point).Point = Point;\nPoint._$name = 'Point';\n\n/**\n * @module Core/helper/EventHelper\n */\nconst touchProperties = ['clientX', 'clientY', 'pageX', 'pageY', 'screenX', 'screenY'],\n isOption = {\n element: 1,\n thisObj: 1,\n once: 1,\n delegate: 1,\n delay: 1,\n capture: 1,\n passive: 1,\n throttled: 1,\n autoDetach: 1,\n expires: 1,\n block: 1\n },\n configurable = true,\n returnTrueProp = {\n configurable,\n value: true\n },\n normalizedKeyNames = {\n Spacebar: 'Space',\n Del: 'Delete',\n Esc: 'Escape',\n Left: 'ArrowLeft',\n Up: 'ArrowUp',\n Right: 'ArrowRight',\n Down: 'ArrowDown'\n },\n ignoreModifierKeys = {\n Meta: 1,\n Control: 1,\n Alt: 1\n },\n // Allow an unsteady finger to jiggle by this much\n longpressMoveThreshold = 5,\n specialKeyRe = /^(ctrl|shift|alt|meta)$/;\nfunction getAccessorFromPrototype(target, property) {\n let descriptor, accessor;\n while ((target = Object.getPrototypeOf(target)) && !accessor) {\n var _descriptor;\n descriptor = Object.getOwnPropertyDescriptor(target, property);\n accessor = (_descriptor = descriptor) === null || _descriptor === void 0 ? void 0 : _descriptor.get;\n }\n return accessor;\n}\n/**\n * Utility methods for dealing with Events, normalizing Touch/Pointer/Mouse events.\n */\nclass EventHelper {\n /**\n * DOM event to trigger name mapping.\n * @internal\n */\n\n static normalizeEvent(event) {\n return ObjectHelper.copyPropertiesIf(event, event.changedTouches[0] || event.touches[0], touchProperties);\n }\n /**\n * Returns the `[x, y]` coordinates of the event in the viewport coordinate system.\n * @param {Event} event The event\n * @returns {Number[]} The coordinate.\n */\n static getXY(event) {\n if (event.touches) {\n event = event.touches[0];\n }\n return [event.clientX, event.clientY];\n }\n /**\n * Returns the pixel distance between two mouse/touch/pointer events.\n * @param {Event} event1 The first event.\n * @param {Event} event2 The second event.\n * @returns {Number} The distance in pixels between the two events.\n */\n static getDistanceBetween(event1, event2) {\n const xy1 = EH.getXY(event1),\n xy2 = EH.getXY(event2);\n // No point in moving this to Point. We are dealing only with number values here.\n return Math.sqrt(Math.pow(xy1[0] - xy2[0], 2) + Math.pow(xy1[1] - xy2[1], 2));\n }\n /**\n * Returns a {@link Core.helper.util.Point} which encapsulates the `pageX/Y` position of the event.\n * May be used in {@link Core.helper.util.Rectangle} events.\n * @param {Event} event A browser mouse/touch/pointer event.\n * @returns {Core.helper.util.Point} The page point.\n */\n static getPagePoint(event) {\n return new Rectangle.Point(event.pageX, event.pageY);\n }\n /**\n * Returns a {@link Core.helper.util.Point} which encapsulates the `clientX/Y` position of the event.\n * May be used in {@link Core.helper.util.Rectangle} events.\n * @param {Event} event A browser mouse/touch/pointer event.\n * @returns {Core.helper.util.Point} The page point.\n */\n static getClientPoint(event) {\n return new Rectangle.Point(event.clientX, event.clientY);\n }\n /**\n * Add a listener or listeners to an element\n * @param {HTMLElement} element The element to add a listener/listeners to.\n * @param {String|Object} eventName Either a string, being the name of the event to listen for,\n * or an options object containing event names and options as keys. See the options parameter\n * for details, or the {@link #function-on-static} method for details.\n * @param {Function} [handler] If the second parameter is a string event name, this is the handler function.\n * @param {Object} [options] If the second parameter is a string event name, this is the options.\n * @param {HTMLElement} options.element The element to add the listener to.\n * @param {Object} options.thisObj The default `this` reference for all handlers added in this call.\n * @param {Boolean} [options.autoDetach=true] The listeners are automatically removed when the `thisObj` is destroyed.\n * @param {String} [options.delegate] A CSS selector string which only fires the handler when the event takes place in a matching element.\n * @param {Boolean} [options.once] Specify as `true` to have the listener(s) removed upon first invocation.\n * @param {Number} [options.delay] The number of milliseconds to delay the handler call after the event fires:\n * @param {Number|Object} [options.expires] The listener only waits for a specified time before\n * being removed. The value may be a number or an object containing an expiry handler.\n * @param {Number} [options.expires.delay] How long to wait for the event for.\n * @param {String|Function} [options.expires.alt] The function to call when the listener expires\n * **without having been triggered**.\n * @returns {Function} A detacher function which removes all the listeners when called.\n */\n static addListener(element, eventName, handler, options) {\n if (element.nodeType) {\n // All separate params, element, eventName and handler\n if (typeof eventName === 'string') {\n options = Object.assign({\n element,\n [eventName]: handler\n }, options);\n }\n // element, options\n else {\n options = Object.assign({\n element\n }, eventName);\n }\n }\n // Just an options object passed\n else {\n options = element;\n }\n return EH.on(options);\n }\n /**\n * Adds a listener or listeners to an element.\n * all property names other than the options listed below are taken to be event names,\n * and the values as handler specs.\n *\n * A handler spec is usually a function reference or the name of a function in the `thisObj`\n * option.\n *\n * But a handler spec may also be an options object containing a `handler` property which is\n * the function or function name, and local options, including `element` and `thisObj`\n * which override the top level options.\n *\n * Usage example\n *\n * ```javascript\n * construct(config) {\n * super.construct(config);\n *\n * // Add auto detaching event handlers to this Widget's reference elements\n * EventHelper.on({\n * element : this.iconElement,\n * click : '_handleIconClick',\n * thisObj : this,\n * contextmenu : {\n * element : document,\n * handler : '_handleDocumentContextMenu'\n * }\n * });\n * }\n *```\n *\n * The `click` handler on the `iconElement` calls `this._handleIconClick`.\n *\n * The `contextmenu` handler is added to the `document` element, but the `thisObj`\n * is defaulted in from the top `options` and calls `this._handleDocumentContextMenu`.\n *\n * Note that on touch devices, `dblclick` and `contextmenu` events are synthesized.\n * Synthesized events contain a `browserEvent` property containing the final triggering\n * event of the gesture. For example a synthesized `dblclick` event would contain a\n * `browserEvent` property which is the last `touchend` event. A synthetic `contextmenu`\n * event will contain a `browserEvent` property which the longstanding `touchstart` event.\n *\n * @param {Object} options The full listener specification.\n * @param {HTMLElement} options.element The element to add the listener to.\n * @param {Object} options.thisObj The default `this` reference for all handlers added in this call.\n * @param {Boolean} [options.autoDetach=true] The listeners are automatically removed when the `thisObj` is destroyed.\n * @param {String} [options.delegate] A CSS selector string which only fires the handler when the event takes place in a matching element.\n * @param {Boolean} [options.once] Specify as `true` to have the listener(s) removed upon first invocation.\n * @param {Number} [options.delay] The number of milliseconds to delay the handler call after the event fires.\n * @param {Number} [options.throttled] For rapidly repeating events (Such as `wheel` or `scroll` or `mousemove`)\n * this is the number of milliseconds to delay subsequent handler calls after first invocation which happens immediately.\n * @param {Number|Object} [options.expires] The listener only waits for a specified time before\n * being removed. The value may be a number or an object containing an expiry handler.\n * @param {Number} [options.expires.delay] How long to wait for the event for.\n * @param {String|Function} [options.expires.alt] The function to call when the listener expires\n * **without having been triggered**.\n * @returns {Function} A detacher function which removes all the listeners when called.\n */\n static on(options) {\n const element = options.element,\n thisObj = options.thisObj,\n handlerDetails = [];\n for (const eventName in options) {\n // Only treat it as an event name if it's not a supported option\n if (!isOption[eventName]) {\n let handlerSpec = options[eventName];\n if (typeof handlerSpec !== 'object') {\n handlerSpec = {\n handler: handlerSpec\n };\n }\n const targetElement = handlerSpec.element || element;\n // If we need to convert taphold to an emulated contextmenu, add a wrapping function\n // in addition to the contextmenu listener. Platforms may support mouse *and* touch.\n if (BrowserHelper.isTouchDevice && !BrowserHelper.isAndroid) {\n if (eventName === 'contextmenu') {\n handlerDetails.push(EH.addElementListener(targetElement, 'touchstart', {\n handler: EH.createContextMenuWrapper(handlerSpec.handler, handlerSpec.thisObj || thisObj)\n }, options));\n }\n }\n // Keep track of the real handlers added.\n // addElementLister returns [ element, eventName, addedFunction, capture ]\n handlerDetails.push(EH.addElementListener(targetElement, eventName, handlerSpec, options));\n }\n }\n const detacher = () => {\n for (let handlerSpec, i = 0; i < handlerDetails.length; i++) {\n handlerSpec = handlerDetails[i];\n EH.removeEventListener(handlerSpec[0], handlerSpec[1], handlerSpec[2]);\n }\n handlerDetails.length = 0;\n };\n // { autoDetach : true, thisObj : scheduler } means remove all listeners when the scheduler dies.\n if (thisObj && options.autoDetach !== false) {\n thisObj.doDestroy = FunctionHelper.createInterceptor(thisObj.doDestroy, detacher, thisObj);\n }\n return detacher;\n }\n /**\n * Used internally to add a single event handler to an element.\n * @param {HTMLElement} element The element to add the handler to.\n * @param {String} eventName The name of the event to add a handler for.\n * @param {Function|String|Object} handlerSpec Either a function to call, or\n * the name of a function to call in the `thisObj`, or an object containing\n * the handler local options.\n * @param {Function|String} [handlerSpec.handler] Either a function to call, or\n * the name of a function to call in the `thisObj`.\n * @param {HTMLElement} [handlerSpec.element] Optionally a local element for the listener.\n * @param {Object} [handlerSpec.thisObj] A local `this` specification for the handler.\n * @param {Object} defaults The `options` parameter from the {@link #function-addListener-static} call.\n * @private\n */\n static addElementListener(element, eventName, handlerSpec, defaults) {\n const handler = EH.createHandler(element, eventName, handlerSpec, defaults),\n {\n spec\n } = handler,\n expires = handlerSpec.expires || defaults.expires,\n options = spec.capture != null || spec.passive != null ? {\n capture: spec.capture,\n passive: spec.passive\n } : undefined;\n element.addEventListener(eventName, handler, options);\n if (expires) {\n // Extract expires : { delay : 100, alt : 'onExpireFn' }\n const thisObj = handlerSpec.thisObj || defaults.thisObj,\n delayable = thisObj !== null && thisObj !== void 0 && thisObj.isDelayable ? thisObj : globalThis,\n {\n alt\n } = expires,\n delay = alt ? expires.delay : expires,\n {\n spec\n } = handler;\n // expires is not applied with other options in createHandler(), store it here\n spec.expires = expires;\n spec.timerId = delayable[typeof delay === 'number' ? 'setTimeout' : 'requestAnimationFrame'](() => {\n spec.timerId = null;\n EH.removeEventListener(element, eventName, handler);\n // If we make it here and the handler has not been called, invoke the alt handler\n if (alt && !handler.called) {\n (typeof alt === 'string' ? thisObj[alt] : alt).call(thisObj);\n }\n }, delay, `listener-timer-${performance.now()}`);\n }\n return [element, eventName, handler, options];\n }\n // composedPath throws in salesforce\n // https://github.com/bryntum/support/issues/4432\n static getComposedPathTarget(event) {\n return event.composedPath()[0] || event.path[0];\n }\n static fixEvent(event) {\n var _target$getRootNode, _event$relatedTarget;\n if (event.fixed) {\n return event;\n }\n const {\n type,\n target\n } = event;\n // When we listen to event on document and get event which bubbled from shadow dom, reading its target would\n // return shadow root element, or null if accessed in an async timeframe.\n // We need actual element which started the event\n if ((target !== null && target !== void 0 && target.shadowRoot || target !== null && target !== void 0 && (_target$getRootNode = target.getRootNode) !== null && _target$getRootNode !== void 0 && _target$getRootNode.call(target).host) && event.composedPath) {\n const targetElement = this.getComposedPathTarget(event),\n originalTarget = target;\n // Can there be an event which actually originated from custom element, not its shadow dom?\n Object.defineProperty(event, 'target', {\n value: targetElement,\n configurable\n });\n // Save original target just in case\n Object.defineProperty(event, 'originalTarget', {\n value: originalTarget,\n configurable\n });\n }\n // Flag that we have fixed this event\n Object.defineProperty(event, 'fixed', returnTrueProp);\n // Normalize key names\n if (type.startsWith('key')) {\n const normalizedKeyName = normalizedKeyNames[event.key];\n if (normalizedKeyName) {\n Object.defineProperty(event, 'key', {\n value: normalizedKeyName,\n configurable\n });\n }\n // Polyfill the code property for SPACE because it is not set for synthetic events.\n if (event.key === ' ' && !event.code) {\n Object.defineProperty(event, 'code', {\n value: 'Space',\n configurable\n });\n }\n }\n // Sync OSX's meta key with the ctrl key. This will only happen on Mac platform.\n // It's read-only, so define a local property to return true for ctrlKey.\n if (event.metaKey && !event.ctrlKey) {\n Object.defineProperty(event, 'ctrlKey', returnTrueProp);\n }\n // if (isRTL && (type.startsWith('mouse') || type.startsWith('pointer') || type === 'click')) {\n // event.nativePageX = event.pageX;\n //\n // if (!Object.getOwnPropertyDescriptor(event, 'pageX')) {\n // Object.defineProperties(event, {\n // pageX : {\n // get : () => {\n // return document.body.offsetWidth - event.nativePageX;\n // }\n // }\n // });\n // }\n // }\n // Chrome 78 has a bug where moving out of the left edge of an element can report a mousemove\n // with that element as the target, but offsetX as -1 and moving out the right edge can report\n // that the element is the target but an offset of the offsetWidth. Patch the event until they fix it.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1010528\n // Tested in EventHelper.js\n if (BrowserHelper.isChrome && target && 'offsetX' in event) {\n // Wrap reading `offsetX/Y` until this property is actually accessed in the code to avoid forced reflow.\n // To avoid getting infinite loop, property descriptor is looked up in the prototype chain. Should be\n // better than forcing DOM reflow on every single event.\n if (!Object.getOwnPropertyDescriptor(event, 'offsetX')) {\n Object.defineProperty(event, 'offsetX', {\n get: () => {\n const accessor = getAccessorFromPrototype(event, 'offsetX'),\n offsetX = accessor.call(event),\n {\n offsetWidth\n } = target,\n x = Math.min(Math.max(offsetX, 0), offsetWidth - 1);\n if (offsetX < 0 || offsetX >= offsetWidth) {\n return x;\n }\n return offsetX;\n }\n });\n }\n if (!Object.getOwnPropertyDescriptor(event, 'offsetY')) {\n Object.defineProperty(event, 'offsetY', {\n get: () => {\n const accessor = getAccessorFromPrototype(event, 'offsetY'),\n offsetY = accessor.call(event),\n {\n offsetHeight\n } = target,\n y = Math.min(Math.max(offsetY, 0), offsetHeight - 1);\n if (offsetY < 0 || offsetY >= offsetHeight) {\n return y;\n }\n return offsetY;\n }\n });\n }\n }\n // Firefox has a bug where it can report that the target is the #document when mouse is over a pseudo element\n if ((target === null || target === void 0 ? void 0 : target.nodeType) === Element.DOCUMENT_NODE && 'clientX' in event) {\n const targetElement = DomHelper.elementFromPoint(event.clientX, event.clientY);\n Object.defineProperty(event, 'target', {\n value: targetElement,\n configurable\n });\n }\n // Firefox has a bug where it can report a textNode as an event target/relatedTarget.\n // We standardize this to report the parentElement.\n if ((target === null || target === void 0 ? void 0 : target.nodeType) === Element.TEXT_NODE) {\n const targetElement = event.target.parentElement;\n Object.defineProperty(event, 'target', {\n value: targetElement,\n configurable\n });\n }\n if (((_event$relatedTarget = event.relatedTarget) === null || _event$relatedTarget === void 0 ? void 0 : _event$relatedTarget.nodeType) === Element.TEXT_NODE) {\n const relatedTargetElement = event.target.parentElement;\n Object.defineProperty(event, 'relatedTarget', {\n value: relatedTargetElement,\n configurable\n });\n }\n // If it's a touch event, move the positional details\n // of touches[0] up to the event.\n if (type.startsWith('touch') && event.touches.length) {\n this.normalizeEvent(event);\n }\n return event;\n }\n static createHandler(element, eventName, handlerSpec, defaults) {\n const delay = handlerSpec.delay || defaults.delay,\n throttled = handlerSpec.throttled || defaults.throttled,\n block = handlerSpec.block || defaults.block,\n once = 'once' in handlerSpec ? handlerSpec.once : defaults.once,\n capture = 'capture' in handlerSpec ? handlerSpec.capture : defaults.capture,\n passive = 'passive' in handlerSpec ? handlerSpec.passive : defaults.passive,\n delegate = 'delegate' in handlerSpec ? handlerSpec.delegate : defaults.delegate,\n wrappedFn = handlerSpec.handler,\n thisObj = handlerSpec.thisObj || defaults.thisObj,\n {\n rtlSource = thisObj\n } = thisObj || {};\n //Capture initial conditions in case of destruction of thisObj.\n // Destruction completely wipes the object.\n // Innermost level of wrapping which calls the user's handler.\n // Normalize the event cross-browser, and attempt to normalize touch events.\n let handler = (event, ...args) => {\n // When playing a demo using DemoBot, only handle synthetic events\n if (EH.playingDemo && event.isTrusted) {\n return;\n }\n // If the thisObj is already destroyed, we cannot call the function.\n // If in dev mode, warn the developer with a JS error.\n if (thisObj !== null && thisObj !== void 0 && thisObj.isDestroyed) {\n // eslint-disable-next-line\n return;\n }\n // Fix up events to handle various browser inconsistencies\n event = EH.fixEvent(event, rtlSource === null || rtlSource === void 0 ? void 0 : rtlSource.rtl);\n // Flag for the expiry timer\n handler.called = true;\n (typeof wrappedFn === 'string' ? thisObj[wrappedFn] : wrappedFn).call(thisObj, event, ...args);\n // Remove properties that our fixEvent method added.\n // Other applications to which this may bubble need the pure browser event.\n delete event.target;\n delete event.relatedTarget;\n delete event.originalarget;\n delete event.key;\n delete event.code;\n delete event.ctrlKey;\n delete event.fixed;\n };\n // Allow events to be blocked for a certain time\n if (block) {\n const wrappedFn = handler;\n let lastCallTime, lastTarget;\n handler = (e, ...args) => {\n const now = performance.now();\n if (!lastCallTime || e.target !== lastTarget || now - lastCallTime > block) {\n lastTarget = e.target;\n lastCallTime = now;\n wrappedFn(e, ...args);\n }\n };\n }\n // Go through options, each creates a new handler by wrapping the previous handler to implement the options.\n // Right now, we have delay. Note that it may be zero, so test != null\n if (delay != null) {\n const wrappedFn = handler,\n delayable = thisObj !== null && thisObj !== void 0 && thisObj.setTimeout ? thisObj : globalThis;\n handler = (...args) => {\n delayable.setTimeout(() => {\n wrappedFn(...args);\n }, delay);\n };\n }\n // If they specified the throttled option, wrap the handler in a createdThrottled\n // version. Allow the called to specify an alt function to call when the event\n // fires before the buffer time has expired.\n if (throttled != null) {\n let alt,\n buffer = throttled;\n if (throttled.buffer) {\n alt = e => {\n return throttled.alt.call(EH, EH.fixEvent(e, rtlSource === null || rtlSource === void 0 ? void 0 : rtlSource.rtl));\n };\n buffer = throttled.buffer;\n }\n if (thisObj !== null && thisObj !== void 0 && thisObj.isDelayable) {\n handler = thisObj.throttle(handler, {\n delay: buffer,\n throttled: alt\n });\n } else {\n handler = FunctionHelper.createThrottled(handler, buffer, thisObj, null, alt);\n }\n }\n // This must always be added late to be processed before delay so that the handler is removed immediately.\n // Note that we cant use native once because of our support for `delegate`, it would remove the listener even\n // when delegate does not match\n if (once) {\n const wrappedFn = handler;\n handler = (...args) => {\n EH.removeEventListener(element, eventName, handler);\n wrappedFn(...args);\n };\n }\n // This must be added last to be called first, once and delay should not act on wrong targets when configured\n // with a delegate\n if (delegate) {\n const wrappedFn = handler;\n handler = (event, ...args) => {\n var _event$target$closest;\n event = EH.fixEvent(event, rtlSource === null || rtlSource === void 0 ? void 0 : rtlSource.rtl);\n // delegate: '.b-field-trigger' only fires when click is in a matching el.\n // currentTarget becomes the delegate.\n // Maintainer: In Edge event.target can be an empty object for transitionend events\n const delegatedTarget = ((_event$target$closest = event.target.closest) === null || _event$target$closest === void 0 ? void 0 : _event$target$closest.call) && event.target.closest(delegate);\n if (!delegatedTarget) {\n return;\n }\n // Allow this to be redefined as it bubbles through listeners up the parentNode axis\n // which might have their own delegate settings.\n Object.defineProperty(event, 'currentTarget', {\n get: () => delegatedTarget,\n configurable: true\n });\n wrappedFn(event, ...args);\n };\n }\n // Only autoDetach here if there's a local thisObj is in the handlerSpec for this one listener.\n // If it's in the defaults, then the \"on\" method will handle it.\n if (handlerSpec.thisObj && handlerSpec.autoDetach !== false) {\n thisObj.doDestroy = FunctionHelper.createInterceptor(thisObj.doDestroy, () => EH.removeEventListener(element, eventName, handler), thisObj);\n }\n handler.spec = {\n delay,\n throttled,\n block,\n once,\n thisObj,\n capture,\n passive,\n delegate\n };\n return handler;\n }\n static removeEventListener(element, eventName, handler) {\n const {\n expires,\n timerId,\n thisObj,\n capture\n } = handler.spec;\n // Cancel outstanding expires.alt() call when removing the listener\n if (expires !== null && expires !== void 0 && expires.alt && timerId) {\n const delayable = thisObj !== null && thisObj !== void 0 && thisObj.isDelayable ? thisObj : globalThis;\n delayable[typeof expires.delay === 'number' ? 'clearTimeout' : 'cancelAnimationFrame'](timerId);\n }\n element.removeEventListener(eventName, handler, capture);\n }\n /**\n * Calls a callback when the described animation completes.\n *\n * @param {Object} detail\n * @param {HTMLElement} detail.element The element which is being animated.\n * @param {String|RegExp} [detail.animationName] The name of the animation to wait for.\n * @param {String} [detail.property] If no `animationName` specified, the CSS property\n * which is being animated.\n * @param {Function} detail.handler The function to call on animation end.\n * @param {Number} [detail.duration] Optional fallback time to wait until calling the callback.\n * @param {Object} [detail.thisObj] The `this` reference to call the callback with.\n * @param {Array} [detail.args] Optional arguments to call the callback with.\n * @param {Core.mixin.Delayable} [detail.timerSource] A Delayable to provide the fallback timeout.\n * @param {Boolean} [detail.runOnDestroy] If `timerSource` is a {@link Core.mixin.Delayable},\n * `true` to invoke the callback if it is destroyed during the animation.\n * @returns {Function} a function which detaches the animation end listener.\n */\n static onTransitionEnd({\n element,\n animationName,\n property,\n handler,\n mode = animationName ? 'animation' : 'transition',\n duration = DomHelper[`get${mode === 'transition' ? 'Property' : ''}${StringHelper.capitalize(mode)}Duration`](element, property),\n thisObj = globalThis,\n args = [],\n timerSource,\n runOnDestroy\n }) {\n let timerId;\n timerSource = timerSource || (thisObj.isDelayable ? thisObj : globalThis);\n const callbackArgs = [element, property, ...args],\n doCallback = () => {\n detacher();\n if (!thisObj.isDestroyed) {\n if (thisObj.callback) {\n thisObj.callback(handler, thisObj, callbackArgs);\n } else {\n handler.apply(thisObj, callbackArgs);\n }\n }\n },\n detacher = EH.on({\n element,\n [`${mode}end`]({\n animationName: endedAnimation,\n propertyName,\n target\n }) {\n if (target === element) {\n if (propertyName === property || endedAnimation !== null && endedAnimation !== void 0 && endedAnimation.match(animationName)) {\n if (timerId) {\n timerSource.clearTimeout(timerId);\n timerId = null;\n }\n doCallback();\n }\n }\n }\n });\n // If the transition has not signalled its end within duration + 50 milliseconds\n // then give up on it. Remove the listener and call the handler.\n if (duration != null) {\n timerId = timerSource.setTimeout(doCallback, duration + 50, 'onTransitionEnd', runOnDestroy);\n }\n return detacher;\n }\n /**\n * Waits for the described animation completes.\n *\n * @param {Object} detail\n * @param {HTMLElement} detail.element The element which is being animated.\n * @param {String|RegExp} [detail.animationName] The name of the animation to wait for.\n * @param {String} [detail.property] If no `animationName` specified, the CSS property\n * which is being animated.\n * @param {Number} [detail.duration] Optional fallback time to wait until calling the callback.\n * @param {Core.mixin.Delayable} [detail.timerSource] A Delayable to provide the fallback timeout.\n * @param {Boolean} [detail.runOnDestroy] If `timerSource` is a {@link Core.mixin.Delayable},\n * `true` to invoke the callback if it is destroyed during the animation.\n * @async\n */\n static async waitForTransitionEnd(config) {\n return new Promise(resolve => {\n config.handler = resolve;\n EventHelper.onTransitionEnd(config);\n });\n }\n /**\n * Private function to wrap the passed function. The returned wrapper function to be used as\n * a `touchstart` handler which will call the passed function passing a fabricated `contextmenu`\n * event if there's no `touchend` or `touchmove` after a default of 400ms.\n * @param {String|Function} handler The handler to call.\n * @param {Object} thisObj The owner of the function.\n * @private\n */\n static createContextMenuWrapper(handler, thisObj) {\n return event => {\n // Only attempt conversion to contextmenu if it's a single touch start.\n if (event.touches.length === 1) {\n const tapholdStartTouch = event.touches[0],\n // Dispatch a synthetic \"contextmenu\" event from the touchpoint in milliseconds.\n tapholdTimer = setTimeout(() => {\n // Remove the gesture cancelling listeners\n touchMoveRemover();\n const contextmenuEvent = new MouseEvent('contextmenu', tapholdStartTouch);\n Object.defineProperty(contextmenuEvent, 'target', {\n get() {\n return tapholdStartTouch.target;\n }\n });\n if (typeof handler === 'string') {\n handler = thisObj[handler];\n }\n contextmenuEvent.browserEvent = event;\n // Call the wrapped handler passing the fabricated contextmenu event\n handler.call(thisObj, contextmenuEvent);\n EH.contextMenuTouchId = tapholdStartTouch.identifier;\n }, EH.longPressTime),\n // This is what gets called if the user moves their touchpoint,\n // or releases the touch before ms is up\n onMoveOrPointerUp = ({\n clientX,\n clientY,\n type\n }) => {\n let cancel = type === 'touchend' || type === 'pointerup';\n // for move events, check if we only moved a little\n if (!cancel) {\n const deltaX = Math.abs(clientX - tapholdStartTouch.clientX),\n deltaY = Math.abs(clientY - tapholdStartTouch.clientY);\n cancel = deltaX >= longpressMoveThreshold || deltaY >= longpressMoveThreshold;\n }\n if (cancel) {\n EH.contextMenuTouchId = null;\n touchMoveRemover();\n clearTimeout(tapholdTimer);\n }\n },\n // Touchmove or touchend before that timer fires cancels the timer and removes these listeners.\n touchMoveRemover = EH.on({\n element: document,\n touchmove: onMoveOrPointerUp,\n touchend: onMoveOrPointerUp,\n pointermove: onMoveOrPointerUp,\n pointerup: onMoveOrPointerUp,\n capture: true\n });\n }\n };\n }\n /**\n * Private function to wrap the passed function. The returned wrapper function to be used as\n * a `touchend` handler which will call the passed function passing a fabricated `dblclick`\n * event if there is a `click` within 300ms.\n * @param {Element} element element\n * @param {String|Function} handler The handler to call.\n * @param {Object} thisObj The owner of the function.\n * @private\n */\n static createDblClickWrapper(element, handler, thisObj) {\n let startId, secondListenerDetacher, tapholdTimer;\n return () => {\n if (!secondListenerDetacher) {\n secondListenerDetacher = EH.on({\n element,\n // We only get here if a touchstart arrives within 300ms of a click\n touchstart: secondStart => {\n startId = secondStart.changedTouches[0].identifier;\n // Prevent zoom\n secondStart.preventDefault();\n },\n touchend: secondClick => {\n if (secondClick.changedTouches[0].identifier === startId) {\n secondClick.preventDefault();\n clearTimeout(tapholdTimer);\n startId = secondListenerDetacher = null;\n const targetRect = Rectangle.from(secondClick.changedTouches[0].target, null, true),\n offsetX = secondClick.changedTouches[0].pageX - targetRect.x,\n offsetY = secondClick.changedTouches[0].pageY - targetRect.y,\n dblclickEventConfig = Object.assign({\n browserEvent: secondClick\n }, secondClick),\n dblclickEvent = new MouseEvent('dblclick', dblclickEventConfig);\n Object.defineProperty(dblclickEvent, 'target', {\n get() {\n return secondClick.target;\n }\n });\n Object.defineProperty(dblclickEvent, 'offsetX', {\n get() {\n return offsetX;\n }\n });\n Object.defineProperty(dblclickEvent, 'offsetY', {\n get() {\n return offsetY;\n }\n });\n if (typeof handler === 'string') {\n handler = thisObj[handler];\n }\n // Call the wrapped handler passing the fabricated dblclick event\n handler.call(thisObj, dblclickEvent);\n }\n },\n once: true\n });\n // Cancel the second listener is there's no second click within milliseconds.\n tapholdTimer = setTimeout(() => {\n secondListenerDetacher();\n startId = secondListenerDetacher = null;\n }, EH.dblClickTime);\n }\n };\n }\n /**\n * Handles various inputs to figure out the name of the special key of the event.\n *\n * ```javascript\n * EventHelper.toSpecialKey('ctrl') // 'ctrlKey'\n * EventHelper.toSpecialKey(true) // 'ctrlKey', default\n * EventHelper.toSpecialKey(false) // false\n * EventHelper.toSpecialKey('foo') // false\n * ```\n *\n * @param {*} value User input value to process.\n * @param {String} defaultValue Default value to fall back to if `true` value is passed.\n * @returns {Boolean|String} Returns `false` if provided value cannot be converted to special key and special key\n * name otherwise.\n * @internal\n */\n static toSpecialKey(value, defaultValue = 'ctrlKey') {\n let result = false;\n if (value === true) {\n result = defaultValue;\n } else if (typeof value === 'string') {\n value = value.toLowerCase();\n if (value.match(specialKeyRe)) {\n result = `${value}Key`;\n }\n }\n return result;\n }\n}\n_defineProperty(EventHelper, \"eventNameMap\", {\n mousedown: 'MouseDown',\n mouseup: 'MouseUp',\n click: 'Click',\n dblclick: 'DblClick',\n contextmenu: 'ContextMenu',\n mouseover: 'MouseOver',\n mouseout: 'MouseOut',\n keyup: 'KeyUp',\n keydown: 'KeyDown',\n keypress: 'KeyPress'\n});\nconst EH = EventHelper;\n/**\n * The time in milliseconds for a `taphold` gesture to trigger a `contextmenu` event.\n * @member {Number} [longPressTime=500]\n * @readonly\n * @static\n */\nEH.longPressTime = 500;\n/**\n * The time in milliseconds within which a second touch tap event triggers a `dblclick` event.\n * @member {Number} [dblClickTime=300]\n * @readonly\n * @static\n */\nEH.dblClickTime = 300;\n// Flag body if last user action used keyboard, used for focus styling etc.\nEH.on({\n element: document,\n capture: true,\n mousedown({\n target\n }) {\n if (!DomHelper.isTouchEvent) {\n var _rootEl$classList;\n const rootEl = DomHelper.getRootElement(target);\n DomHelper.usingKeyboard = false;\n (_rootEl$classList = rootEl.classList) === null || _rootEl$classList === void 0 ? void 0 : _rootEl$classList.remove('b-using-keyboard');\n DomHelper.removeClsGlobally(rootEl, 'b-using-keyboard');\n }\n },\n touchmove({\n changedTouches\n }) {\n var _rootEl$classList2;\n const target = changedTouches[0].target,\n rootEl = DomHelper.getRootElement(target);\n DomHelper.usingKeyboard = false;\n (_rootEl$classList2 = rootEl.classList) === null || _rootEl$classList2 === void 0 ? void 0 : _rootEl$classList2.remove('b-using-keyboard');\n DomHelper.removeClsGlobally(rootEl, 'b-using-keyboard');\n },\n keydown({\n target,\n key\n }) {\n if (!ignoreModifierKeys[key]) {\n DomHelper.usingKeyboard = true;\n const rootElement = DomHelper.getRootElement(target);\n // if shadow root, add to outer children (shadow root itself lacks a classList :( )\n if (rootElement.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n Array.from(rootElement.children).forEach(node => {\n if (node.matches('.b-outer')) {\n node.classList.add('b-using-keyboard');\n }\n });\n } else {\n // document.body\n rootElement.classList.add('b-using-keyboard');\n }\n }\n }\n});\n// When dragging on a touch device, we need to prevent scrolling from happening.\n// Dragging only starts on a touchmove event, by which time it's too late to preventDefault\n// on the touchstart event which started it.\n// To do this we need a capturing, non-passive touchmove listener at the document level so we can preventDefault.\n// This is in lieu of a functioning touch-action style on iOS Safari. When that's fixed, this will not be needed.\nif (BrowserHelper.isTouchDevice) {\n EH.on({\n element: document,\n touchmove: event => {\n // If we're touching a b-dragging event, then stop any panning by preventing default.\n if (event.target.closest('.b-dragging')) {\n event.preventDefault();\n }\n },\n passive: false,\n capture: true\n });\n}\nEventHelper._$name = 'EventHelper';\n\n// Point must be imported because it needs to inject itself into the Rectangle class\n//import './util/Point.js';\n// TODO import VersionHelper from './VersionHelper.js';\n// https://app.assembla.com/spaces/bryntum/tickets/7903-rendering-fails\n// HACK: this value is required to calculate width if it was configured relative to font size (em) but no element is set\nconst DEFAULT_FONT_SIZE = 14,\n t0t0 = {\n align: 't0-t0'\n },\n // eslint-disable-next-line no-undef\n ELEMENT_NODE = Node.ELEMENT_NODE,\n // eslint-disable-next-line no-undef\n TEXT_NODE = Node.TEXT_NODE,\n {\n isObject: isObject$1\n } = ObjectHelper,\n // Transform matrix parse Regex. CSS transform computed style looks like this:\n // matrix(scaleX(), skewY(), skewX(), scaleY(), translateX(), translateY())\n // or\n // matrix3d(scaleX(), skewY(), 0, 0, skewX(), scaleY(), 0, 0, 0, 0, 1, 0, translateX(), translateY())\n // This is more reliable than using the style literal which may include\n // relative styles such as \"translateX(-20em)\", or not include the translation at all if it's from a CSS rule.\n // Use a const so as to only compile RexExp once\n // Extract repeating number regexp to simplify next expressions. Available values are: https://developer.mozilla.org/en-US/docs/Web/CSS/number\n numberRe = /[+-]?\\d*\\.?\\d+[eE]?-?\\d*/g,\n // -2.4492935982947064e-16 should be supported\n numberReSrc = numberRe.source,\n translateMatrix2dRe = new RegExp(`matrix\\\\((?:${numberReSrc}),\\\\s?(?:${numberReSrc}),\\\\s?(?:${numberReSrc}),\\\\s?(?:${numberReSrc}),\\\\s?(${numberReSrc}),\\\\s?(${numberReSrc})`),\n translateMatrix3dRe = new RegExp(`matrix3d\\\\((?:-?\\\\d*),\\\\s?(?:-?\\\\d*),\\\\s?(?:-?\\\\d*),\\\\s?(?:-?\\\\d*),\\\\s?(?:-?\\\\d*),\\\\s?(?:-?\\\\d*),\\\\s?(?:-?\\\\d*),\\\\s?(?:-?\\\\d*),\\\\s?(?:-?\\\\d*),\\\\s?(?:-?\\\\d*),\\\\s?(?:-?\\\\d*),\\\\s?(?:-?\\\\d*),\\\\s?(-?\\\\d*),\\\\s?(-?\\\\d*)`),\n translateMatrixRe = new RegExp(`(?:${translateMatrix2dRe.source})|(?:${translateMatrix3dRe.source})`),\n pxTtranslateXRe = new RegExp(`translate(3d|X)?\\\\((${numberReSrc})px(?:,\\\\s?(${numberReSrc})px)?`),\n pxTtranslateYRe = new RegExp(`translate(3d|Y)?\\\\((${numberReSrc})px(?:,\\\\s?(${numberReSrc})px)?`),\n whiteSpaceRe = /\\s+/,\n semicolonRe = /\\s*;\\s*/,\n colonRe = /\\s*:\\s*/,\n digitsRe$1 = /^-?((\\d+(\\.\\d*)?)|(\\.?\\d+))$/,\n elementPropKey = '$bryntum',\n // A blank value means the expando name is the same as the key in this object, otherwise the key in this object is\n // the name of the domConfig property and the value is the name of the DOM element expando property.\n elementCreateExpandos = {\n elementData: '',\n for: 'htmlFor',\n retainElement: ''\n },\n // DomHelper#createElement properties which require special processing.\n // All other configs such as id and type are applied directly to the element.\n elementCreateProperties = {\n // these two are handled by being in elementCreateExpands:\n // elementData : 1,\n // for : 1,\n tag: 1,\n html: 1,\n text: 1,\n children: 1,\n tooltip: 1,\n style: 1,\n dataset: 1,\n parent: 1,\n nextSibling: 1,\n ns: 1,\n reference: 1,\n class: 1,\n className: 1,\n unmatched: 1,\n // Used by syncId approach\n onlyChildren: 1,\n // Used by sync to not touch the target element itself,\n listeners: 1,\n compareHtml: 1,\n // Sync\n syncOptions: 1,\n // Sync\n keepChildren: 1 // Sync\n },\n styleIgnoreProperties = {\n length: 1,\n parentRule: 1,\n style: 1\n },\n nativeEditableTags = {\n INPUT: 1,\n TEXTAREA: 1\n },\n nativeFocusableTags = {\n BUTTON: 1,\n IFRAME: 1,\n EMBED: 1,\n INPUT: 1,\n OBJECT: 1,\n SELECT: 1,\n TEXTAREA: 1,\n BODY: 1\n },\n win = globalThis,\n doc = document,\n emptyObject$9 = Object.freeze({}),\n arraySlice$1 = Array.prototype.slice,\n immediatePromise$7 = Promise.resolve(),\n fontProps = ['font-size', 'font-size-adjust', 'font-style', 'font-weight', 'font-family', 'font-kerning', 'font-stretch', 'line-height', 'text-transform', 'text-decoration', 'letter-spacing', 'word-break'],\n isHiddenWidget = e => e._hidden,\n parentNode = el => el.parentNode || el.host,\n mergeChildren = (dest, src, options) => {\n if (options.key === 'children') {\n // Normally \"children\" is an array (for which we won't be here, due to isObject check in caller). To\n // maintain declarative order of children as an object, we need some special sauce:\n return ObjectHelper.mergeItems(dest, src, options);\n }\n return ObjectHelper.blend(dest, src, options);\n },\n isVisible = e => {\n const style = e.ownerDocument.defaultView.getComputedStyle(e);\n return style.getPropertyValue('display') !== 'none' && style.getPropertyValue('visibility') !== 'hidden';\n },\n getRootNode = doc.documentElement.getRootNode ? el => el.getRootNode() : el => {\n while (el.parentNode) el = el.parentNode;\n return el;\n },\n // Both Shadow Root Element and Anchor Element have `host` property.\n // https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot/host\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/host\n // Need make sure `host` is an Element.\n isShadowRoot = el => el.host && el.host instanceof Element,\n // Check whether the element has an offsetParent.\n // Nodes such as SVG which do not expose such a property must have an ancestor which has an offsetParent.\n // If position:fixed, there's no offsetParent, so continue to interrogate parentNode\n hasLayout = el => el && (el === doc.body || Boolean(el.offsetParent) || ('offsetParent' in el && DomHelper.getStyleValue(el, 'position') !== 'fixed' ? el.offsetParent : hasLayout(el.parentNode))),\n // Check for node being in document.\n // If part of shadow DOM, see if the root's host is in the DOM\n isInDocument = el => el && (doc.body.contains(el) || (root = getRootNode(el)) && isShadowRoot(root) && isInDocument(root.host)),\n elementOrConfigToElement = elementOrConfig => {\n if (elementOrConfig instanceof Node) {\n return elementOrConfig;\n }\n if (typeof elementOrConfig === 'string') {\n return DH$1.createElementFromTemplate(elementOrConfig);\n }\n return DH$1.createElement(elementOrConfig);\n },\n canonicalStyles = Object.create(null),\n canonicalizeStyle = (name, hasUnit) => {\n const entry = canonicalStyles[name] || [StringHelper.hyphenate(name), hasUnit];\n if (!canonicalStyles[name]) {\n canonicalStyles[entry[0]] = canonicalStyles[name] = entry;\n }\n return entry;\n },\n getOffsetParent = node => node.ownerSVGElement ? node.ownerSVGElement.parentNode : node.offsetParent,\n slideInAnimationName = /b-slide-in-from-\\w+/;\n// Push the styles that have units into the map:\n['top', 'right', 'bottom', 'left', 'width', 'height', 'maxWidth', 'maxHeight', 'minWidth', 'minHeight', 'borderSpacing', 'borderWidth', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontSize', 'letterSpacing', 'lineHeight', 'outlineWidth', 'textIndent', 'wordSpacing'].forEach(name => canonicalizeStyle(name, true));\n// We only do the measurement once, if the value is null\nlet scrollBarWidth = null,\n idCounter = 0,\n themeInfo = null,\n root,\n templateElement,\n htmlParser,\n scrollBarMeasureElement;\n/**\n * @module Core/helper/DomHelper\n */\n/**\n * An object that describes a DOM element. Used for example by {@link #function-createElement-static createElement()}\n * and by {@link Core.helper.DomSync#function-sync-static DomSync.sync()}.\n *\n * ```javascript\n * DomHelper.createElement({\n * class : {\n * big : true,\n * small : false\n * },\n * children : [\n * { tag : 'img', src : 'img.png' },\n * { html : 'Red text' }\n * ]\n * });\n * ```\n *\n * @typedef {Object} DomConfig\n * @property {String} [tag='div'] Tag name, for example 'span'\n * @property {HTMLElement} [parent] Parent element\n * @property {HTMLElement} [nextSibling] Element's next sibling in the parent element\n * @property {String|Object} [class] CSS classes, as a string or an object (truthy keys will be applied)\n * @property {String|Object} [className] Alias for `class`\n * @property {String|Object} [style] Style, as a string or an object (keys will be hyphenated)\n * @property {Object} [elementData] Data object stored as an expando on the resulting element\n * @property {Object} [dataset] Dataset applied to the resulting element\n * @property {DomConfig[]|Object|String[]|HTMLElement[]} [children] Child elements, as an array that can include\n * DomConfigs that will be turned into elements, plain strings that will be used as text nodes or existing elements that\n * will be moved. Also accepts an object map of DomConfigs, but please note that it cannot be used with\n * `DomHelper.createElement()`\n * @property {String} [html] Html string, used as the resulting elements `innerHTML`. Mutually exclusive with the `children` property\n * @property {Object} [tooltip] Tooltip config applied to the resulting element\n * @property {String} [text] Text content, XSS safe when you want to display text in the element. Mutually exclusive with the `children` property\n * @property {String} [id] Element's `id`\n * @property {String} [href] Element's `href`\n * @property {String} [ns] Element's namespace\n * @property {String} [src] Element's `src`\n */\n/**\n * Helps with dom querying and manipulation.\n *\n * ```javascript\n * DomHelper.createElement({\n * tag: 'div',\n * className: 'parent',\n * style: 'background: red',\n * children: [\n * { tag: 'div', className: 'child' },\n * { tag: 'div', className: 'child' }\n * ]\n * });\n * ```\n */\nclass DomHelper {\n /**\n * Animates the specified element to slide it into view within the visible viewport\n * of its parentElement from the direction of movement.\n *\n * So in a left-to-right Widget, `direction` 1 means it slides in from the right\n * and `direction` -1 means it slides in from the left. RTL reverses the movement.\n *\n * See the forward/backward navigations in {@link Core.widget.DatePicker} for an example\n * of this in action.\n *\n * If \"next\" should arrive from below and \"previous\" should arrive from above, add the\n * class `b-slide-vertical` to the element.\n * @param {HTMLElement} element The element to slide in.\n * @param {Number} direction\n * * `1` to slide in from the \"next\" direction.\n * * `-1` to slide in from the \"previous\" direction.\n *\n * If the element is inside an RTL widget the directions are reversed.\n * @async\n */\n static async slideIn(element, direction = 1) {\n const cls = `b-slide-in-${direction > 0 ? 'next' : 'previous'}`,\n {\n classList\n } = element,\n {\n style\n } = element.parentNode,\n {\n overflow\n } = style;\n style.overflow = 'hidden';\n classList.add(cls);\n await EventHelper.waitForTransitionEnd({\n element,\n animationName: slideInAnimationName\n });\n style.overflow = overflow;\n classList.remove(cls);\n }\n /**\n * Returns `true` if the passed element is focusable either programmatically or through pointer gestures.\n * @param {HTMLElement} element The element to test.\n * @returns {Boolean} Returns `true` if the passed element is focusable\n */\n static isFocusable(element, skipAccessibilityCheck = false) {\n if (!skipAccessibilityCheck) {\n // If element is hidden or in a hidden Widget, it's not focusable.\n if (!DH$1.isVisible(element) || DH$1.Widget.fromElement(element, isHiddenWidget)) {\n return false;\n }\n }\n const nodeName = element.nodeName;\n /*\n * An element is focusable if:\n * - It is natively focusable, or\n * - It is an anchor or link with href attribute, or\n * - It has a tabIndex, or\n * - It is an editing host (contenteditable=\"true\")\n */\n return nativeFocusableTags[nodeName] || (nodeName === 'A' || nodeName === 'LINK') && !!element.href || element.getAttribute('tabIndex') != null || element.contentEditable === 'true';\n }\n /**\n * Returns `true` if the passed element accepts keystrokes to edit its contents.\n * @returns {Boolean} Returns `true` if the passed element is editable.\n */\n static isEditable(element) {\n return element.isContentEditable || nativeEditableTags[element.nodeName];\n }\n /**\n * Returns the rectangle of the element which is currently visible in the browser viewport, i.e. user can find it on\n * screen, or `false` if it is scrolled out of view.\n * @param {HTMLElement} target The element to test.\n * @param {Boolean} [whole=false] Whether to check that whole element is visible, not just part of it.\n * If this is passed as true, the result will be a boolean, `true` or `false`.\n * @privateparam {Core.widget.Widget} [caller] the Widget aligning to the target.\n * @returns {Core.helper.util.Rectangle|Boolean} Returns the rectangle of the element which is currently visible in\n * the browser viewport, or `false` if it is out of view.\n */\n static isInView(target, whole = false, caller) {\n // If the target cannot yield a Rectangle, shortcut all processing.\n if (!hasLayout(target)) {\n return false;\n }\n const positioned = (caller === null || caller === void 0 ? void 0 : caller.positioned) && DomHelper.getStyleValue(caller.element, 'position') !== 'fixed',\n docRect = Rectangle.from(globalThis),\n method = whole ? 'contains' : 'intersect',\n cOp = positioned && caller.element.offsetParent,\n cOpR = positioned && Rectangle.from(cOp);\n // If we get to the top, the visible rectangle is the entire document.\n docRect.height = doc.scrollingElement.scrollHeight;\n // If they asked to test the body, it's always in view\n if (target === doc.body) {\n return docRect;\n }\n const result = this.getViewportIntersection(target, docRect, method);\n // We must use the *viewport* coordinate system to ascertain viewability\n if (result && positioned) {\n result.translate(doc.scrollingElement.scrollLeft, doc.scrollingElement.scrollTop);\n }\n // Return any rectangle to its positioned coordinate system\n return positioned && result ? result.translate(-cOpR.x + cOp.scrollLeft, -cOpR.y + cOp.scrollTop) : result;\n }\n /**\n * This method goes up the DOM tree checking that all ancestors are visible in the viewport\n * @param {HTMLElement} target Starting html element\n * @param {Core.helper.util.Rectangle} docRect Window rectangle\n * @param {String} method 'contains' or 'intersect'\n * @returns {Core.helper.util.Rectangle}\n */\n static getViewportIntersection(target, docRect, method) {\n const {\n parentNode\n } = target,\n {\n parentElement\n } = parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? target.getRootNode().host : target,\n peStyle = parentElement.ownerDocument.defaultView.getComputedStyle(parentElement),\n parentScroll = peStyle.overflowX !== 'visible' || peStyle.overflowY !== 'visible',\n offsetParent = getOffsetParent(target);\n let result = Rectangle.from(target, null, true);\n for (let viewport = parentScroll ? target.parentNode : offsetParent; result && viewport !== doc.documentElement; viewport = viewport.parentNode) {\n // Skip shadow root node.\n if (viewport.nodeType === Node.DOCUMENT_FRAGMENT_NODE && viewport.host) {\n viewport = viewport.host.parentNode;\n }\n const isTop = viewport === doc.body,\n style = viewport.ownerDocument.defaultView.getComputedStyle(viewport),\n viewportRect = isTop ? docRect : Rectangle.inner(viewport, null, true);\n // If this level allows overflow to show, don't clip. Obv, can't show overflowing els.\n if (isTop || style.overflow !== 'visible') {\n result = viewportRect[method](result, false, true);\n }\n }\n return result;\n }\n /**\n * Returns `true` if the passed element is deeply visible. Meaning it is not hidden using `display`\n * or `visibility` and no ancestor node is hidden.\n * @param {HTMLElement} element The element to test.\n * @returns {Boolean} `true` if deeply visible.\n */\n static isVisible(element) {\n const document = element.ownerDocument;\n // Use the parentNode function so that we can traverse upwards through shadow DOM\n // to correctly ascertain visibility of nodes in web components.\n for (; element; element = parentNode(element)) {\n // Visible if we've reached top of the owning document without finding a hidden Element.\n if (element === document) {\n return true;\n }\n // Must not evaluate a shadow DOM's root fragment.\n if (element.nodeType === element.ELEMENT_NODE && !isVisible(element)) {\n return false;\n }\n }\n // We get here if the node is detached.\n return false;\n }\n /**\n * Returns true if DOM Event instance is passed. It is handy to override to support Locker Service.\n * @param event\n * @internal\n * @returns {Boolean}\n */\n static isDOMEvent(event) {\n return event instanceof Event;\n }\n /**\n * Merges specified source DOM config objects into a `dest` object.\n * @param {Object} dest The destination DOM config object.\n * @param {...Object} sources The DOM config objects to merge into `dest`.\n * @returns {Object} The `dest` object.\n * @internal\n */\n static merge(dest, ...sources) {\n return ObjectHelper.blend(dest, sources, {\n merge: mergeChildren\n });\n }\n /**\n * Updates in-place a DOM config object whose `children` property may be an object instead of the typical array.\n * The keys of such objects become the `reference` property upon conversion.\n *\n * @param {DomConfig} domConfig\n * @param {Function} [namedChildren] A function to call for each named child element.\n * @privateparam {Boolean} [ignoreRefs] Not meant to be manually set, used when recursing.\n * @returns {Object} Returns the altered DOM config\n * @internal\n */\n static normalizeChildren(domConfig, namedChildren, ignoreRefs) {\n var _domConfig$syncOption;\n let children = domConfig === null || domConfig === void 0 ? void 0 : domConfig.children,\n child,\n i,\n name,\n kids,\n ref;\n // Allow redirecting/opting out of ref ownership in a hierarchy\n if (domConfig !== null && domConfig !== void 0 && (_domConfig$syncOption = domConfig.syncOptions) !== null && _domConfig$syncOption !== void 0 && _domConfig$syncOption.ignoreRefs) {\n ignoreRefs = true;\n }\n if (children && !(domConfig instanceof Node)) {\n if (Array.isArray(children)) {\n for (i = 0; i < children.length; ++i) {\n DH$1.normalizeChildren(children[i], namedChildren, ignoreRefs);\n }\n } else {\n kids = children;\n domConfig.children = children = [];\n for (name in kids) {\n var _child;\n child = kids[name];\n if ((_child = child) !== null && _child !== void 0 && _child.isWidget) {\n child = child.element;\n }\n // $ prefix indicates element is not a reference:\n ref = !name.startsWith('$') && !DH$1.isElement(child);\n ref && (namedChildren === null || namedChildren === void 0 ? void 0 : namedChildren(name, /* hoist = */!ignoreRefs));\n if (child) {\n if (!(child instanceof Node)) {\n if (child.reference === false) {\n delete child.reference;\n } else if (ref && typeof child !== 'string') {\n child.reference = name;\n }\n DH$1.normalizeChildren(child, namedChildren, ignoreRefs);\n }\n children.push(child);\n }\n }\n }\n }\n return domConfig;\n }\n static roundPx(px, devicePixelRatio = globalThis.devicePixelRatio || 1) {\n const multiplier = 1 / devicePixelRatio;\n return Math.round(px / multiplier) * multiplier;\n }\n /**\n * Returns true if element has opened shadow root\n * @param {HTMLElement} element Element to check\n * @returns {Boolean}\n */\n static isCustomElement(element) {\n return Boolean(element === null || element === void 0 ? void 0 : element.shadowRoot);\n }\n /**\n * Resolves element from point, checking shadow DOM if required\n * @param {Number} x\n * @param {Number} y\n * @returns {HTMLElement}\n */\n static elementFromPoint(x, y) {\n let el = document.elementFromPoint(x, y);\n // Try to check shadow dom if it exists\n if (DH$1.isCustomElement(el)) {\n el = el.shadowRoot.elementFromPoint(x, y) || el;\n }\n return el;\n }\n /**\n * Resolves child element from point __in the passed element's coordinate space__.\n * @param {HTMLElement} parent The element to find the occupying element in.\n * @param {Number|Core.helper.util.Point} x Either the `X` part of a point, or the point to find.\n * @param {Number} [y] The `Y` part of the point.\n * @returns {HTMLElement}\n * @internal\n */\n static childFromPoint(el, x, y, /* internal */parent = el) {\n const p = y == null ? x : new Rectangle(x, y, 0, 0);\n let result = null;\n Array.from(el.children).some(el => {\n if (Rectangle.from(el, parent).contains(p)) {\n // All rectangles must be relative to the topmost el, so that must be\n // passed down as the \"parent\" of all Rectangles.\n result = el.children.length && DH$1.childFromPoint(el, p, null, parent) || el;\n return true;\n }\n });\n return result;\n }\n /**\n * Converts a name/value pair of a style name and its value into the canonical (hyphenated) name of the style\n * property and a value with the `defaultUnit` suffix appended if no unit is already present in the `value`.\n *\n * For example:\n * ```javascript\n * const [property, value] = DomHelper.unitize('marginLeft', 50);\n * console.log(property, value);\n * ```\n *\n * ```\n * > margin-left 50px\n * ```\n * @param {String} name\n * @param {String|Number} value\n * @param {String} [defaultUnit]\n * @returns {String[]}\n * @internal\n */\n static unitize(name, value, defaultUnit = 'px') {\n const [trueName, hasUnits] = canonicalizeStyle(name);\n if (value != null) {\n value = String(value);\n value = hasUnits && digitsRe$1.test(value) ? value + defaultUnit : value;\n }\n return [trueName, value];\n }\n /**\n * Returns active element checking shadow dom too\n * @readonly\n * @property {HTMLElement}\n */\n static get activeElement() {\n let el = document.activeElement;\n while (el.shadowRoot) {\n el = el.shadowRoot.activeElement;\n }\n return el;\n }\n // returns active element for DOM tree / shadow DOM tree to which element belongs\n static getActiveElement(element) {\n var _element, _element2;\n if ((_element = element) !== null && _element !== void 0 && _element.isWidget) {\n element = element.element;\n }\n // If no element passed, fallback to document\n let el = (((_element2 = element) === null || _element2 === void 0 ? void 0 : _element2.getRootNode()) || document).activeElement;\n while ((_el = el) !== null && _el !== void 0 && _el.shadowRoot) {\n var _el;\n el = el.shadowRoot.activeElement;\n }\n return el;\n }\n // Returns the visible root (either document.body or a web component shadow root)\n static getRootElement(element) {\n var _element$getRootNode;\n const root = (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n return (root === null || root === void 0 ? void 0 : root.body) || root || element.ownerDocument.body;\n }\n // Returns the topmost HTMLElement inside the current context (either document.body or a direct child of a web component shadow root)\n static getOutermostElement(element) {\n var _element$getRootNode2, _element3;\n const root = (_element$getRootNode2 = (_element3 = element).getRootNode) === null || _element$getRootNode2 === void 0 ? void 0 : _element$getRootNode2.call(_element3);\n if (root !== null && root !== void 0 && root.body) {\n return root === null || root === void 0 ? void 0 : root.body;\n }\n // we are in a shadow root\n // parentNode might be null in salesforce\n while (element.parentNode !== root && element.parentNode) {\n element = element.parentNode;\n }\n return element;\n }\n static isValidFloatRootParent(target) {\n return target === document.body || target.constructor.name === 'ShadowRoot';\n }\n /**\n * Returns the `id` of the passed element. Generates a unique `id` if the element does not have one.\n * @param {HTMLElement} element The element to return the `id` of.\n */\n static getId(element) {\n return element.id || (element.id = 'b-element-' + ++idCounter);\n }\n /**\n * Returns common widget/node ancestor for from/to arguments\n * @param {Core.widget.Widget|HTMLElement} from\n * @param {Core.widget.Widget|HTMLElement} to\n * @returns {Core.widget.Widget|HTMLElement}\n * @internal\n */\n static getCommonAncestor(from, to) {\n if (from === to) {\n return from;\n }\n while (from && !((_from = (_from2 = from)[from.isWidget ? 'owns' : 'contains']) !== null && _from !== void 0 && _from.call(_from2, to) || from === to)) {\n var _from, _from2;\n from = from.owner || from.parentNode;\n }\n return from;\n }\n //region Internal\n /**\n * Internal convenience fn to allow specifying either an element or a CSS selector to retrieve one\n * @private\n * @param {String|HTMLElement} elementOrSelector element or selector to lookup in DOM\n * @returns {HTMLElement}\n */\n static getElement(elementOrSelector) {\n // also used for SVG elements, so need to use more basic class, that is also returned by querySelector\n if (elementOrSelector instanceof Element) {\n return elementOrSelector;\n }\n return doc.querySelector(elementOrSelector);\n }\n /**\n * Sets attributes passed as object to given element\n * @param {String|Element} elementOrSelector\n * @param {Object} attributes\n * @internal\n */\n static setAttributes(elementOrSelector, attributes) {\n const element = DH$1.getElement(elementOrSelector);\n if (element && attributes) {\n for (const key in attributes) {\n if (attributes[key] == null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, attributes[key]);\n }\n }\n }\n }\n /**\n * Sets a CSS [length](https://developer.mozilla.org/en-US/docs/Web/CSS/length) style value.\n * @param {String|HTMLElement} element The element to set the style in, or, if just the result is required,\n * the style magnitude to return with units added. If a nullish value is passed, an empty string\n * is returned.\n * @param {String} [style] The name of a style property which specifies a [length](https://developer.mozilla.org/en-US/docs/Web/CSS/length)\n * @param {Number|String} [value] The magnitude. If a number is used, the value will be set in `px` units.\n * @returns {String} The style value string.\n */\n static setLength(element, style, value) {\n if (arguments.length === 1) {\n var _element4;\n value = typeof element === 'number' ? `${element}px` : (_element4 = element) !== null && _element4 !== void 0 ? _element4 : '';\n } else {\n var _value;\n element = DH$1.getElement(element);\n value = element.style[style] = typeof value === 'number' ? `${value}px` : (_value = value) !== null && _value !== void 0 ? _value : '';\n }\n return value;\n }\n /**\n * Returns string percentified and rounded value for setting element's height, width etc.\n * @param {String|Number} value percent value\n * @param {Number} digits number of decimal digits for rounding\n * @returns {string} percentified value or empty string if value can not be parsed\n * @internal\n */\n static percentify(value, digits = 2) {\n const mult = Math.pow(10, digits);\n return value == null || value === '' || isNaN(value) ? '' : `${Math.round(value * mult) / mult}%`;\n }\n //endregion\n //region Children, going down...\n /**\n * Gets the first direct child of `element` that matches `selector`.\n * @param {HTMLElement} element Parent element\n * @param {String} selector CSS selector\n * @returns {HTMLElement}\n * @category Query children\n */\n static getChild(element, selector) {\n return element.querySelector(':scope>' + selector);\n }\n /**\n * Checks if `element` has any child that matches `selector`.\n * @param {HTMLElement} element Parent element\n * @param {String} selector CSS selector\n * @returns {Boolean} true if any child matches selector\n * @category Query children\n */\n static hasChild(element, selector) {\n return DH$1.getChild(element, selector) != null;\n }\n /**\n * Returns all child elements (not necessarily direct children) that matches `selector`.\n *\n * If `selector` starts with `'>'` or `'# '`, then all components of the `selector` must match inside of `element`.\n * The scope selector, `:scope` is prepended to the selector (and if `#` was used, it is removed).\n *\n * These are equivalent:\n *\n * DomHelper.children(el, '# .foo .bar');\n *\n * el.querySelectorAll(':scope .foo .bar');\n *\n * These are also equivalent:\n *\n * DomHelper.children(el, '> .foo .bar');\n *\n * el.querySelectorAll(':scope > .foo .bar');\n *\n * @param {HTMLElement} element The parent element\n * @param {String} selector The CSS selector\n * @returns {HTMLElement[]} Matched elements, somewhere below `element`\n * @category Query children\n */\n static children(element, selector) {\n // a '#' could be '#id' but '# ' (hash and space) is not a valid selector...\n if (selector[0] === '>' || selector.startsWith('# ')) {\n if (selector[0] === '#') {\n selector = selector.substr(2);\n }\n selector = ':scope ' + selector;\n }\n return Array.from(element.querySelectorAll(selector));\n }\n // Salesforce doesn't yet support childElementCount. So we relace all native usages with this wrapper and\n // override it for salesforce environment.\n // https://github.com/bryntum/support/issues/3008\n static getChildElementCount(element) {\n return element.childElementCount;\n }\n /**\n * Looks at the specified `element` and all of its children for the one that first matches `selector.\n * @param {HTMLElement} element Parent element\n * @param {String} selector CSS selector\n * @returns {HTMLElement} Matched element, either element or an element below it\n * @category Query children\n */\n static down(element, selector) {\n if (!element) {\n return null;\n }\n if (element.matches && element.matches(selector)) {\n return element;\n }\n selector = ':scope ' + selector;\n return element.querySelector(selector);\n }\n /**\n * Checks if childElement is a descendant of parentElement (contained in it or a sub element)\n * @param {HTMLElement} parentElement Parent element\n * @param {HTMLElement} childElement Child element, at any level below parent (includes nested shadow roots)\n * @returns {Boolean}\n * @category Query children\n */\n static isDescendant(parentElement, childElement) {\n const parentRoot = DH$1.getRootElement(parentElement),\n childRoot = DH$1.getRootElement(childElement);\n if (parentRoot !== childRoot && childRoot.host) {\n return DH$1.isDescendant(parentRoot, childRoot.host);\n }\n return parentElement.contains(childElement);\n }\n /**\n * Returns the specified element of the given `event`. If the `event` is an `Element`, it is returned. Otherwise,\n * the `eventName` argument is used to retrieve the desired element property from `event` (this defaults to the\n * `'target'` property).\n * @param {Event|Element} event\n * @param {String} [elementName]\n * @returns {Element}\n */\n static getEventElement(event, elementName = 'target') {\n return !event || DH$1.isElement(event) ? event : event[elementName];\n }\n /**\n * Returns `true` if the provided value is _likely_ a DOM element. If the element can be assured to be from the\n * same document, `instanceof Element` is more reliable.\n * @param {*} value\n * @returns {Boolean}\n */\n static isElement(value) {\n return (value === null || value === void 0 ? void 0 : value.nodeType) === document.ELEMENT_NODE && DH$1.isNode(value);\n }\n /**\n * Returns `true` if the provided value is _likely_ a DOM node. If the node can be assured to be from the same\n * document, `instanceof Node` is more reliable.\n * @param {*} value\n * @returns {Boolean}\n */\n static isNode(value) {\n // cannot use instanceof across frames. Using it here won't help since we'd need the same logic if it were\n // false... meaning we'd have the same chances of a false-positive.\n return Boolean(value) && typeof value.nodeType === 'number' && !isObject$1(value);\n }\n /**\n * Iterates over each result returned from `element.querySelectorAll(selector)`. First turns it into an array to\n * work in IE. Can also be called with only two arguments, in which case the first argument is used as selector and\n * document is used as the element.\n * @param {HTMLElement} element Parent element\n * @param {String} selector CSS selector\n * @param {Function} fn Function called for each found element\n * @category Query children\n */\n static forEachSelector(element, selector, fn) {\n if (typeof element === 'string') {\n // Legacy internal API, no longer valid\n throw new Error('DomHelper.forEachSelector must provide a root element context (for shadow root scenario)');\n }\n DH$1.children(element, selector).forEach(fn);\n }\n /**\n * Iterates over the direct child elements of the specified element. First turns it into an array to\n * work in IE.\n * @param {HTMLElement} element Parent element\n * @param {Function} fn Function called for each child element\n * @category Query children\n */\n static forEachChild(element, fn) {\n Array.from(element.children).forEach(fn);\n }\n /**\n * Removes each element returned from `element.querySelectorAll(selector)`.\n * @param {HTMLElement} element\n * @param {String} selector\n * @category Query children\n */\n static removeEachSelector(element, selector) {\n DH$1.forEachSelector(element, selector, child => child.remove());\n }\n static removeClsGlobally(element, ...classes) {\n classes.forEach(cls => DH$1.forEachSelector(element, '.' + cls, child => child.classList.remove(cls)));\n }\n //endregion\n //region Parents, going up...\n static isOrphaned(element) {\n return !isInDocument(element);\n }\n /**\n * Looks at the specified element and all of its parents for the one that first matches selector.\n * @deprecated Since 5.3.9, use native `element.closest()` instead\n * @param {HTMLElement} element Element\n * @param {String} selector CSS selector\n * @returns {HTMLElement} Matched element, either the passed in element or an element above it\n * @category Query parents\n */\n static up(element, selector) {\n VersionHelper.deprecate('Core', '6.0.0', 'DomHelper.up() deprecated, use native `element.closest()` instead');\n return element.closest(selector);\n }\n static getAncestor(element, possibleAncestorParents, outerElement = null) {\n let found = false,\n ancestor,\n parent = element;\n possibleAncestorParents = ArrayHelper.asArray(possibleAncestorParents);\n while (parent = parent.parentElement) {\n if (possibleAncestorParents.includes(parent)) {\n found = true;\n break;\n }\n if (outerElement && parent === outerElement) break;\n ancestor = parent;\n }\n if (!found) return null;\n return ancestor || element;\n }\n /**\n * Retrieves all parents to the specified element.\n * @param {HTMLElement} element Element\n * @returns {HTMLElement[]} All parent elements, bottom up\n * @category Query parents\n */\n static getParents(element) {\n const parents = [];\n while (element.parentElement) {\n parents.push(element.parentElement);\n element = element.parentElement;\n }\n return parents;\n }\n //endregion\n //region Creation\n /**\n * Converts the passed id to an id valid for usage as id on a DOM element.\n * @param {String} id\n * @returns {String}\n */\n static makeValidId(id, replaceValue = '') {\n return StringHelper.makeValidDomId(id, replaceValue);\n }\n /**\n * Creates an Element, accepts a {@link #typedef-DomConfig} object. Example usage:\n *\n * ```javascript\n * DomHelper.createElement({\n * tag : 'table', // defaults to 'div'\n * className : 'nacho',\n * html : 'I am a nacho',\n * children : [ { tag: 'tr', ... }, myDomElement ],\n * parent : myExistingElement // Or its id\n * style : 'font-weight: bold;color: red',\n * dataset : { index: 0, size: 10 },\n * tooltip : 'Yay!',\n * ns : 'http://www.w3.org/1999/xhtml'\n * });\n * ```\n *\n * @param {DomConfig} config Element config object\n * @param {Object} [options] An object specifying creation options. If this is a boolean value, it is\n * understood to be the `returnAll` option.\n * @param {Boolean} [options.ignoreRefs] Pass `true` to ignore element references.\n * @param {Boolean} [options.returnAll] Specify true to return all elements & child elements\n * created as an array.\n * @returns {HTMLElement|HTMLElement[]|Object} Single element or array of elements `returnAll` was set to true.\n * If any elements had a `reference` property, this will be an object containing a reference to\n * all those elements, keyed by the reference name.\n * @category Creation\n */\n static createElement(config = {}, options) {\n var _options, _options$callback, _config$dataset;\n let returnAll = options,\n element,\n i,\n ignoreChildRefs,\n ignoreRefOption,\n ignoreRefs,\n key,\n name,\n value,\n refOwner,\n refs,\n syncIdField;\n if (typeof returnAll === 'boolean') {\n throw new Error('Clean up');\n } else if (options) {\n ignoreRefs = options.ignoreRefs;\n refOwner = options.refOwner;\n refs = options.refs;\n returnAll = options.returnAll;\n syncIdField = options.syncIdField;\n if (ignoreRefs) {\n ignoreChildRefs = true;\n ignoreRefs = ignoreRefs !== 'children';\n }\n }\n if (typeof config.parent === 'string') {\n config.parent = document.getElementById(config.parent);\n }\n // nextSibling implies a parent\n const parent = config.parent || config.nextSibling && config.nextSibling.parentNode,\n {\n dataset,\n html,\n reference,\n syncOptions,\n text\n } = config;\n if (syncOptions) {\n syncIdField = syncOptions.syncIdField || syncIdField;\n ignoreRefOption = syncOptions.ignoreRefs;\n if (ignoreRefOption) {\n ignoreChildRefs = true;\n ignoreRefs = ignoreRefOption !== 'children';\n options = _objectSpread2(_objectSpread2({}, options), {}, {\n ignoreRefs: true\n });\n }\n }\n if (ignoreRefs) {\n refOwner = null;\n }\n if (config.ns) {\n element = doc.createElementNS(config.ns, config.tag || 'svg');\n } else {\n element = doc.createElement(config.tag || 'div');\n }\n if (text != null) {\n DH$1.setInnerText(element, text);\n } else if (html != null) {\n if (html instanceof DocumentFragment) {\n element.appendChild(html);\n } else {\n element.innerHTML = html;\n }\n }\n if (config.tooltip) {\n DH$1.Widget.attachTooltip(element, config.tooltip);\n }\n if (config.style) {\n DH$1.applyStyle(element, config.style);\n }\n if (dataset) {\n for (name in dataset) {\n value = dataset[name];\n if (value != null) {\n element.dataset[name] = value;\n }\n }\n }\n if (parent) {\n this.addChild(parent, element, config.nextSibling);\n }\n if (refOwner) {\n // Tag each element created by the refOwner's id to enable DomSync\n element.$refOwnerId = refOwner.id;\n }\n if (reference && !ignoreRefs) {\n // SalesForce platform does not allow custom attributes, but existing code\n // uses querySelector('[reference]'), so bypass it when we can:\n if (refOwner) {\n element.$reference = reference;\n refOwner.attachRef(reference, element, config);\n } else {\n // TODO fixup callers to do the above\n if (!refs) {\n options = Object.assign({}, options);\n options.refs = refs = {};\n }\n refs[reference] = element;\n element.setAttribute('data-reference', reference);\n }\n }\n const className = config.className || config.class,\n // matches DomSync\n keys = Object.keys(config);\n if (className) {\n element.setAttribute('class', DomClassList.normalize(className));\n }\n for (i = 0; i < keys.length; ++i) {\n name = keys[i];\n value = config[name];\n // We have to use setAttribute() for custom attributes to work and this is inline with how DomSync\n // handles attributes. For \"expando\" properties, however, we have to simply assign them.\n if ((key = elementCreateExpandos[name]) != null) {\n element[key || name] = value;\n } else if (!elementCreateProperties[name] && name && value != null) {\n // if (config.ns) {\n // element.setAttributeNS(config.ns, name, value);\n // }\n // else {\n // element.setAttribute(name, value);\n // }\n element.setAttribute(name, value);\n }\n }\n // ARIA. In the absence of a defined role or the elememnt being hidden from ARIA,\n // omit unfocusable elements from the accessibility tree.\n if (!config['aria-hidden'] && !config.role && !DomHelper.isFocusable(element, true) && !element.htmlFor) {\n element.setAttribute('role', 'presentation');\n }\n // Mimic the way DomSync issues callbacks as elements are created (needed by TaskBoard to trigger custom\n // taskRenderer calls as elements get produced).\n (_options = options) === null || _options === void 0 ? void 0 : (_options$callback = _options.callback) === null || _options$callback === void 0 ? void 0 : _options$callback.call(_options, {\n action: 'newElement',\n domConfig: config,\n targetElement: element,\n syncId: refOwner ? reference : options.syncIdField && ((_config$dataset = config.dataset) === null || _config$dataset === void 0 ? void 0 : _config$dataset[options.syncIdField])\n });\n // if returnAll is true, use array\n if (returnAll === true) {\n options.returnAll = returnAll = [element];\n }\n // if it already is an array, add to it (we are probably a child)\n else if (Array.isArray(returnAll)) {\n returnAll.push(element);\n }\n if (config.children) {\n if (syncIdField) {\n // Map syncId -> child element to avoid querying dom later on\n element.syncIdMap = {};\n }\n config.children.forEach(child => {\n // Skip null children, convenient to allow those for usage with Array.map()\n if (child) {\n // Append string children as text nodes\n if (typeof child === 'string') {\n const textNode = document.createTextNode(child);\n if (refOwner) {\n textNode.$refOwnerId = refOwner.id;\n }\n element.appendChild(textNode);\n }\n // Just append Elements directly.\n else if (isNaN(child.nodeType)) {\n var _config$syncOptions$i, _config$syncOptions, _child$dataset;\n child.parent = element;\n if (!child.ns && config.ns) {\n child.ns = config.ns;\n }\n const childElement = DH$1.createElement(child, _objectSpread2(_objectSpread2({}, options), {}, {\n ignoreRefs: (_config$syncOptions$i = (_config$syncOptions = config.syncOptions) === null || _config$syncOptions === void 0 ? void 0 : _config$syncOptions.ignoreRef) !== null && _config$syncOptions$i !== void 0 ? _config$syncOptions$i : ignoreChildRefs\n })),\n syncId = (_child$dataset = child.dataset) === null || _child$dataset === void 0 ? void 0 : _child$dataset[syncIdField];\n // syncId is used with DomHelper.sync to match elements. Populate a map here to make finding them faster\n if (syncId != null) {\n element.syncIdMap[syncId] = childElement;\n }\n // Do not want to alter the initial config\n delete child.parent;\n } else {\n element.appendChild(child);\n }\n }\n });\n }\n // Store used config, to be able to compare on sync to determine if changed without hitting dom\n element.lastDomConfig = config;\n // If references were used, return them in an object\n // If returnAll was specified, return the array\n // By default, return the root element\n return refs || returnAll || element;\n }\n /**\n * Create element(s) from a template (html string). Note that\n * `textNode`s are discarded unless the `raw` option is passed\n * as `true`.\n *\n * If the template has a single root element, then the single element will be returned\n * unless the `array` option is passed as `true`.\n *\n * If there are multiple elements, then an Array will be returned.\n *\n * @param {String} template The HTML string from which to create DOM content\n * @param {Object} [options] An object containing properties to modify how the DOM is created and returned.\n * @param {Boolean} [options.array] `true` to return an array even if there's only one resulting element.\n * @param {Boolean} [options.raw] Return all child nodes, including text nodes.\n * @param {Boolean} [options.fragment] Return a DocumentFragment.\n * @private\n */\n static createElementFromTemplate(template, options = emptyObject$9) {\n const {\n array,\n raw,\n fragment\n } = options;\n let result;\n // Use template by preference if it exists. It's faster on most supported platforms\n // https://jsperf.com/domparser-vs-template/\n if (DH$1.supportsTemplate) {\n (templateElement || (templateElement = doc.createElement('template'))).innerHTML = template;\n result = templateElement.content;\n if (fragment) {\n // The template is reused, so therefore is its fragment.\n // If we release the fragment to a caller, it must be a clone.\n return result.cloneNode(true);\n }\n } else {\n result = (htmlParser || (htmlParser = new DOMParser())).parseFromString(template, 'text/html').body;\n // We must return a DocumentFragment.\n // myElement.append(fragment) inserts the contents of the fragment, not the fragment itself.\n if (fragment) {\n const nodes = result.childNodes;\n result = document.createDocumentFragment();\n while (nodes.length) {\n result.appendChild(nodes[0]);\n }\n return result;\n }\n }\n // Raw means all child nodes are returned\n if (raw) {\n result = result.childNodes;\n }\n // Otherwise, only element nodes\n else {\n result = result.children;\n }\n return result.length === 1 && !array ? result[0] : arraySlice$1.call(result);\n }\n /**\n * Dispatches a MouseEvent of the passed type to the element at the visible centre of the passed element.\n * @param {HTMLElement} targetElement The element whose center receives the mouse event.\n * @param {String} [type=contextmenu] The mouse event type to dispatch.\n * @internal\n */\n static triggerMouseEvent(targetElement, type = 'contextmenu') {\n const isInView = this.isInView(targetElement),\n targetRect = isInView || Rectangle.from(targetElement),\n targetPoint = targetRect.center,\n contextmenuEvent = new MouseEvent(type, {\n clientX: targetPoint.x,\n clientY: targetPoint.y,\n bubbles: true\n });\n targetElement.dispatchEvent(contextmenuEvent);\n }\n /**\n * Inserts an `element` at first position in `into`.\n * @param {HTMLElement} into Parent element\n * @param {HTMLElement} element Element to insert, or an element config passed on to createElement()\n * @returns {HTMLElement}\n * @category Creation\n */\n static insertFirst(into, element) {\n if (element && element.nodeType !== ELEMENT_NODE && element.tag) {\n element = DH$1.createElement(element);\n }\n return into.insertBefore(element, into.firstElementChild);\n }\n /**\n * Inserts a `element` before `beforeElement` in `into`.\n * @param {HTMLElement} into Parent element\n * @param {HTMLElement} element Element to insert, or an element config passed on to createElement()\n * @param {HTMLElement} beforeElement Element before which passed element should be inserted\n * @returns {HTMLElement}\n * @category Creation\n */\n static insertBefore(into, element, beforeElement) {\n if (element && element.nodeType !== ELEMENT_NODE && element.tag) {\n element = DH$1.createElement(element);\n }\n return beforeElement ? into.insertBefore(element, beforeElement) : DH$1.insertFirst(into, element);\n }\n static insertAt(parentElement, newElement, index) {\n const siblings = Array.from(parentElement.children);\n if (index >= siblings.length) {\n return DH$1.append(parentElement, newElement);\n }\n const beforeElement = siblings[index];\n return DH$1.insertBefore(parentElement, newElement, beforeElement);\n }\n /**\n * Appends element to parentElement.\n * @param {HTMLElement} parentElement Parent element\n * @param {HTMLElement|Object|String} elementOrConfig Element to insert, or an element config passed on to createElement(), or an html string passed to createElementFromTemplate\n * @returns {HTMLElement}\n * @category Creation\n */\n static append(parentElement, elementOrConfig) {\n if (elementOrConfig.forEach) {\n // Ensure all elements of an Array are HTMLElements.\n // The other implementor of forEach is a NodeList which needs no conversion.\n if (Array.isArray(elementOrConfig)) {\n elementOrConfig = elementOrConfig.map(elementOrConfig => elementOrConfigToElement(elementOrConfig));\n }\n if (parentElement.append) {\n parentElement.append(...elementOrConfig);\n } else {\n const docFrag = document.createDocumentFragment();\n elementOrConfig.forEach(function (child) {\n docFrag.appendChild(child);\n });\n parentElement.appendChild(docFrag);\n }\n return elementOrConfig;\n } else {\n return parentElement.appendChild(elementOrConfigToElement(elementOrConfig));\n }\n }\n //endregion\n //region Get position\n /**\n * Returns the element's `transform translateX` value in pixels.\n * @param {HTMLElement} element\n * @returns {Number} X transform\n * @category Position, get\n */\n static getTranslateX(element) {\n const transformStyle = element.style.transform;\n let matches = pxTtranslateXRe.exec(transformStyle);\n // Use inline transform style if it contains \"translate(npx, npx\" or \"translate3d(npx, npx\" or \"translateX(npx\"\n if (matches) {\n return parseFloat(matches[2]);\n } else {\n // If the inline style is the matrix() form, then use that, otherwise, use computedStyle\n matches = translateMatrixRe.exec(transformStyle) || translateMatrixRe.exec(DH$1.getStyleValue(element, 'transform'));\n return matches ? parseFloat(matches[1] || matches[3]) : 0;\n }\n }\n /**\n * Returns the element's `transform translateY` value in pixels.\n * @param {HTMLElement} element\n * @returns {Number} Y coordinate\n * @category Position, get\n */\n static getTranslateY(element) {\n const transformStyle = element.style.transform;\n let matches = pxTtranslateYRe.exec(transformStyle);\n // Use inline transform style if it contains \"translate(npx, npx\" or \"translate3d(npx, npx\" or \"translateY(npx\"\n if (matches) {\n // If it was translateY(npx), use first item in the parens.\n const y = parseFloat(matches[matches[1] === 'Y' ? 2 : 3]);\n // FF will strip `translate(x, 0)` -> `translate(x)`, so need to check for isNaN also\n return isNaN(y) ? 0 : y;\n } else {\n // If the inline style is the matrix() form, then use that, otherwise, use computedStyle\n matches = translateMatrixRe.exec(transformStyle) || translateMatrixRe.exec(DH$1.getStyleValue(element, 'transform'));\n return matches ? parseFloat(matches[2] || matches[4]) : 0;\n }\n }\n /**\n * Gets both X and Y coordinates as an array [x, y]\n * @param {HTMLElement} element\n * @returns {Number[]} [x, y]\n * @category Position, get\n */\n static getTranslateXY(element) {\n return [DH$1.getTranslateX(element), DH$1.getTranslateY(element)];\n }\n /**\n * Get elements X offset within a containing element\n * @param {HTMLElement} element\n * @param {HTMLElement} container\n * @returns {Number} X offset\n * @category Position, get\n */\n static getOffsetX(element, container = null) {\n return container ? element.getBoundingClientRect().left - container.getBoundingClientRect().left : element.offsetLeft;\n }\n /**\n * Get elements Y offset within a containing element\n * @param {HTMLElement} element\n * @param {HTMLElement} container\n * @returns {Number} Y offset\n * @category Position, get\n */\n static getOffsetY(element, container = null) {\n return container ? element.getBoundingClientRect().top - container.getBoundingClientRect().top : element.offsetTop;\n }\n /**\n * Gets elements X and Y offset within containing element as an array [x, y]\n * @param {HTMLElement} element\n * @param {HTMLElement} container\n * @returns {Number[]} [x, y]\n * @category Position, get\n */\n static getOffsetXY(element, container = null) {\n return [DH$1.getOffsetX(element, container), DH$1.getOffsetY(element, container)];\n }\n /**\n * Focus element without scrolling the element into view.\n * @param {HTMLElement} element\n */\n static focusWithoutScrolling(element) {\n function resetScroll(scrollHierarchy) {\n scrollHierarchy.forEach(({\n element,\n scrollLeft,\n scrollTop\n }) => {\n // Check first to avoid triggering unnecessary `scroll` events\n if (element.scrollLeft !== scrollLeft) {\n element.scrollLeft = scrollLeft;\n }\n if (element.scrollTop !== scrollTop) {\n element.scrollTop = scrollTop;\n }\n });\n }\n // Check browsers which do support focusOptions. Currently only Safari lags.\n // https://caniuse.com/mdn-api_htmlelement_focus_preventscroll_option\n const preventScrollSupported = !BrowserHelper.isSafari;\n if (preventScrollSupported) {\n element.focus({\n preventScroll: true\n });\n } else {\n // Examine every parentNode of the target and cache the scrollLeft and scrollTop,\n // and restore all values after the focus has taken place\n const parents = DH$1.getParents(element),\n scrollHierarchy = parents.map(parent => ({\n element: parent,\n scrollLeft: parent.scrollLeft,\n scrollTop: parent.scrollTop\n }));\n element.focus();\n // Reset in async.\n setTimeout(() => resetScroll(scrollHierarchy), 0);\n }\n }\n /**\n * Get elements X position on page\n * @param {HTMLElement} element\n * @returns {Number}\n * @category Position, get\n */\n static getPageX(element) {\n return element.getBoundingClientRect().left + win.pageXOffset;\n }\n /**\n * Get elements Y position on page\n * @param {HTMLElement} element\n * @returns {Number}\n * @category Position, get\n */\n static getPageY(element) {\n return element.getBoundingClientRect().top + win.pageYOffset;\n }\n /**\n * Returns extremal (min/max) size (height/width) of the element in pixels\n * @param {HTMLElement} element\n * @param {String} style minWidth/minHeight/maxWidth/maxHeight\n * @returns {Number}\n * @internal\n */\n static getExtremalSizePX(element, style) {\n const prop = StringHelper.hyphenate(style),\n measure = prop.split('-')[1];\n let value = DH$1.getStyleValue(element, prop);\n if (/%/.test(value)) {\n // Element might be detached from DOM\n if (element.parentElement) {\n value = parseInt(DH$1.getStyleValue(element.parentElement, measure), 10);\n } else {\n value = NaN;\n }\n } else {\n value = parseInt(value, 10);\n }\n return value;\n }\n //endregion\n //region Set position\n /**\n * Set element's `scale`.\n * @param {HTMLElement} element\n * @param {Number} scaleX The value by which the element should be scaled in the X axis (0 to 1)\n * @param {Number} [scaleY] The value by which the element should be scaled in the Y axis (0 to 1).\n * Defaults to `scaleX`\n * @category Position, set\n * @internal\n */\n static setScale(element, scaleX, scaleY = scaleX) {\n const t = DH$1.getStyleValue(element, 'transform').split(/,\\s*/);\n if (t.length > 1) {\n if (t[0].startsWith('matrix3d')) {\n t[0] = `matrix3d(${scaleX}`;\n t[5] = scaleY;\n } else {\n t[0] = `matrix(${scaleX}`;\n t[3] = scaleY;\n }\n element.style.transform = t.join(',');\n } else {\n element.style.transform = `scale(${scaleX}, ${scaleY})`;\n }\n }\n /**\n * Set element's `X` translation in pixels.\n * @param {HTMLElement} element\n * @param {Number} x The value by which the element should be translated from its default position.\n * @category Position, set\n */\n static setTranslateX(element, x) {\n const t = DH$1.getStyleValue(element, 'transform').split(/,\\s*/);\n // Avoid blurry text on non-retina displays\n x = DH$1.roundPx(x);\n if (t.length > 1) {\n t[t[0].startsWith('matrix3d') ? 12 : 4] = x;\n element.style.transform = t.join(',');\n } else {\n element.style.transform = `translateX(${x}px)`;\n }\n }\n /**\n * Set element's `Y` translation in pixels.\n * @param {HTMLElement} element\n * @param {Number} y The value by which the element should be translated from its default position.\n * @category Position, set\n */\n static setTranslateY(element, y) {\n const t = DH$1.getStyleValue(element, 'transform').split(/,\\s*/);\n // Avoid blurry text on non-retina displays\n y = DH$1.roundPx(y);\n if (t.length > 1) {\n t[t[0].startsWith('matrix3d') ? 13 : 5] = y;\n element.style.transform = t.join(',') + ')';\n } else {\n element.style.transform = `translateY(${y}px)`;\n }\n }\n /**\n * Set element's style `top`.\n * @param {HTMLElement} element\n * @param {Number|String} y The top position. If numeric, `'px'` is used as the unit.\n * @category Position, set\n */\n static setTop(element, y) {\n DH$1.setLength(element, 'top', y);\n }\n /**\n * Set element's style `left`.\n * @param {HTMLElement} element\n * @param {Number|String} x The top position. If numeric, `'px'` is used as the unit.\n * @category Position, set\n */\n static setLeft(element, x) {\n DH$1.setLength(element, 'left', x);\n }\n static setTopLeft(element, y, x) {\n DH$1.setLength(element, 'top', y);\n DH$1.setLength(element, 'left', x);\n }\n /**\n * Set elements `X` and `Y` translation in pixels.\n * @param {HTMLElement} element\n * @param {Number} [x] The `X translation.\n * @param {Number} [y] The `Y translation.\n * @category Position, set\n */\n static setTranslateXY(element, x, y) {\n if (x == null) {\n return DH$1.setTranslateY(element, y);\n }\n if (y == null) {\n return DH$1.setTranslateX(element, x);\n }\n // Avoid blurry text on non-retina displays\n x = DH$1.roundPx(x);\n y = DH$1.roundPx(y);\n const t = DH$1.getStyleValue(element, 'transform').split(/,\\s*/),\n is3d = t[0].startsWith('matrix3d');\n if (t.length > 1) {\n t[is3d ? 12 : 4] = x;\n t[is3d ? 13 : 5] = y;\n element.style.transform = t.join(',') + ')';\n } else {\n element.style.transform = `translate(${x}px, ${y}px)`;\n }\n }\n /**\n * Increase `X` translation\n * @param {HTMLElement} element\n * @param {Number} x The number of pixels by which to increase the element's `X` translation.\n * @category Position, set\n */\n static addTranslateX(element, x) {\n DH$1.setTranslateX(element, DH$1.getTranslateX(element) + x);\n }\n /**\n * Increase `Y` position\n * @param {HTMLElement} element\n * @param {Number} y The number of pixels by which to increase the element's `Y` translation.\n * @category Position, set\n */\n static addTranslateY(element, y) {\n DH$1.setTranslateY(element, DH$1.getTranslateY(element) + y);\n }\n /**\n * Increase X position\n * @param {HTMLElement} element\n * @param {Number} x\n * @category Position, set\n */\n static addLeft(element, x) {\n DH$1.setLeft(element, DH$1.getOffsetX(element) + x);\n }\n /**\n * Increase Y position\n * @param {HTMLElement} element\n * @param {Number} y\n * @category Position, set\n */\n static addTop(element, y) {\n DH$1.setTop(element, DH$1.getOffsetY(element) + y);\n }\n /**\n * Align the passed element with the passed target according to the align spec.\n * @param {HTMLElement} element The element to align.\n * @param {HTMLElement|Core.helper.util.Rectangle} target The target element or rectangle to align to\n * @param {Object} [alignSpec] See {@link Core.helper.util.Rectangle#function-alignTo} Defaults to `{ align : 't0-t0' }`\n * @param {Boolean} [round] Round the calculated Rectangles (for example if dealing with scrolling which\n * is integer based).\n */\n static alignTo(element, target, alignSpec = t0t0, round) {\n target = target instanceof Rectangle ? target : Rectangle.from(target, true);\n const elXY = DH$1.getTranslateXY(element),\n elRect = Rectangle.from(element, true);\n if (round) {\n elRect.roundPx();\n target.roundPx();\n }\n const targetRect = elRect.alignTo(Object.assign(alignSpec, {\n target\n }));\n DH$1.setTranslateXY(element, elXY[0] + targetRect.x - elRect.x, elXY[1] + targetRect.y - elRect.y);\n }\n //endregion\n //region Styles & CSS\n /**\n * Returns a style value or values for the passed element.\n * @param {HTMLElement} element The element to read styles from\n * @param {String|String[]} propName The property or properties to read\n * @param {Boolean} [inline=false] Pass as `true` to read the element's inline style.\n * Note that this could return inaccurate results if CSS rules apply to this element.\n * @returns {String|Object} The value or an object containing the values keyed by the requested property name.\n * @category CSS\n */\n static getStyleValue(element, propName, inline, pseudo) {\n const styles = inline ? element.style : element.ownerDocument.defaultView.getComputedStyle(element, pseudo);\n if (Array.isArray(propName)) {\n const result = {};\n for (const prop of propName) {\n result[prop] = styles.getPropertyValue(StringHelper.hyphenate(prop));\n }\n return result;\n }\n // Use the elements owning view to get the computed style.\n // Ensure the property name asked for is hyphenated.\n // getPropertyValue doesn't work with camelCase\n return styles.getPropertyValue(StringHelper.hyphenate(propName));\n }\n /**\n * Returns an object with the parse style values for the top, right, bottom, and left\n * components of the given edge style.\n *\n * The return value is an object with `top`, `right`, `bottom`, and `left` properties\n * for the respective components of the edge style, as well as `width` (the sum of\n * `left` and `right`) and `height` (the sum of `top` and `bottom`).\n *\n * @param {HTMLElement} element\n * @param {String} edgeStyle The element's desired edge style such as 'padding', 'margin',\n * or 'border'.\n * @param {String} [edges='trbl'] A string with one character codes for each edge. Only\n * those edges will be populated in the returned object. By default, all edges will be\n * populated.\n * @returns {Object}\n */\n static getEdgeSize(element, edgeStyle, edges) {\n const suffix = edgeStyle === 'border' ? '-width' : '',\n ret = {\n raw: {}\n };\n for (const edge of ['top', 'right', 'bottom', 'left']) {\n if (!edges || edges.includes(edge[0])) {\n // This produces px units even if the provided style is em or other (i.e.,\n // getComputedStyle normalizes this):\n ret[edge] = parseFloat(ret.raw[edge] = DH$1.getStyleValue(element, `${edgeStyle}-${edge}${suffix}`));\n }\n }\n // These may not even be requested (based on \"edges\") but conditional code here\n // would be wasted since the caller would still need to know not to use them...\n // Replace NaN with 0 to keep calculations correct if they only asked for one side.\n ret.width = (ret.left || 0) + (ret.right || 0);\n ret.height = (ret.top || 0) + (ret.bottom || 0);\n return ret;\n }\n /**\n * Splits a style string up into object form. For example `'font-weight:bold;font-size:150%'`\n * would convert to\n *\n * ```javascript\n * {\n * font-weight : 'bold',\n * font-size : '150%'\n * }\n * ```\n * @param {String} style A DOM style string\n * @returns {Object} the style declaration in object form.\n */\n static parseStyle(style) {\n if (typeof style === 'string') {\n const styles = style.split(semicolonRe);\n style = {};\n for (let i = 0, {\n length\n } = styles; i < length; i++) {\n const propVal = styles[i].split(colonRe);\n style[propVal[0]] = propVal[1];\n }\n }\n return style || {};\n }\n /**\n * Applies specified style to the passed element. Style can be an object or a string.\n * @param {HTMLElement} element Target element\n * @param {String|Object} style Style to apply, 'border: 1px solid black' or { border: '1px solid black' }\n * @param {Boolean} [overwrite] Specify `true` to replace style instead of applying changes\n * @category CSS\n */\n static applyStyle(element, style, overwrite = false) {\n if (typeof style === 'string') {\n if (overwrite) {\n // Only assign if either end has any styles, do not want to add empty `style` tag on element\n if (style.length || element.style.cssText.length) {\n element.style.cssText = style;\n }\n } else {\n // Add style so as not to delete configs in style such as width, height, flex etc.\n // If a style is already there, the newest, appended one will take precedence.\n element.style.cssText += style;\n }\n } else if (style) {\n if (overwrite) {\n element.style.cssText = '';\n //element.removeAttribute('style');\n }\n // Has a sub-style block in object form? Use it to override style block\n if (style.style && typeof style.style !== 'string') {\n style = ObjectHelper.assign({}, style, style.style);\n }\n let key, value;\n // Prototype chained objects may be passed, so use direct loop.\n for (key in style) {\n // Ignore readonly properties of the CSSStyleDeclaration object:\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration\n // Also ignores sub-style blocks, which are applied above\n if (!styleIgnoreProperties[key]) {\n [key, value] = DH$1.unitize(key, style[key]);\n // Cannot use element.style[key], wont work with CSS vars\n element.style.setProperty(key, value);\n }\n }\n // Has sub-styles as string? Add to cssText after applying style block, to override it\n if (typeof style.style === 'string') {\n element.style.cssText += style.style;\n }\n }\n }\n static getCSSText(style) {\n if (typeof style === 'string') {\n return style;\n }\n let cssText = '';\n for (const key in style) {\n // Ignore readonly properties of the CSSStyleDeclaration object:\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration\n if (!styleIgnoreProperties[key]) {\n cssText += `${StringHelper.hyphenate(key)}:${style[key]};`;\n }\n }\n return cssText;\n }\n /**\n * Add multiple classes to elements classList.\n * @param {HTMLElement} element\n * @param {String[]} classes\n * @deprecated Since 5.0. Use {@link https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/add add} method\n * for {@link https://developer.mozilla.org/en-US/docs/Web/API/Element/classList Element.classlist}\n * @category CSS\n */\n static addClasses(element, classes) {\n VersionHelper.deprecate('Core', '6.0.0', 'DomHelper.addClasses should be replaced by native classList.add');\n element.classList.add(...classes);\n }\n /**\n * Remove multiple classes from elements classList.\n * @param {HTMLElement} element\n * @param {String[]} classes\n * @deprecated Since 5.0. Use {@link https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/remove remove} method\n * for {@link https://developer.mozilla.org/en-US/docs/Web/API/Element/classList Element.classlist}\n * @category CSS\n */\n static removeClasses(element, classes) {\n VersionHelper.deprecate('Core', '6.0.0', 'DomHelper.removeClasses should be replaced by native classList.remove');\n element.classList.remove(...classes);\n }\n /**\n * Toggle multiple classes in elements classList. Helper for toggling multiple classes at once.\n * @param {HTMLElement} element\n * @param {String[]} classes\n * @param {Boolean} [force] Specify true to add classes, false to remove. Leave blank to toggle\n * @category CSS\n */\n static toggleClasses(element, classes, force = null) {\n classes = ArrayHelper.asArray(classes);\n if (force === true) {\n element.classList.add(...classes);\n } else if (force === false) {\n element.classList.remove(...classes);\n } else {\n classes.forEach(cls => element.classList.toggle(cls));\n }\n }\n /**\n * Adds a CSS class to an element during the specified duration\n * @param {HTMLElement} element Target element\n * @param {String} cls CSS class to add temporarily\n * @param {Number} duration Duration in ms, 0 means cls will not be applied\n * @param {Core.mixin.Delayable} delayable The delayable to tie the setTimeout call to\n * @typings delayable -> {typeof Delayable}\n * @category CSS\n */\n static addTemporaryClass(element, cls, duration, delayable = globalThis) {\n if (duration > 0) {\n element.classList.add(cls);\n delayable.setTimeout({\n fn: cls => element.classList.remove(cls),\n delay: duration,\n name: cls,\n args: [cls],\n cancelOutstanding: true\n });\n }\n }\n /**\n * Reads computed style from the element and returns transition duration for a given property in milliseconds\n * @param {HTMLElement} element Target DOM element\n * @param {String} property Animated property name\n * @returns {Number} Duration in ms\n * @internal\n */\n static getPropertyTransitionDuration(element, property) {\n const style = globalThis.getComputedStyle(element),\n properties = style.transitionProperty.split(', '),\n durations = style.transitionDuration.split(', '),\n index = properties.indexOf(StringHelper.hyphenate(property));\n let result;\n if (index !== -1) {\n // get floating value of transition duration in seconds and convert into milliseconds\n result = parseFloat(durations[index]) * 1000;\n }\n return result;\n }\n /**\n * Reads computed style from the element and returns the animation duration for any\n * attached animation in milliseconds\n * @param {HTMLElement} element Target DOM element\n * @returns {Number} Duration in ms\n * @internal\n */\n static getAnimationDuration(element) {\n return parseFloat(DH$1.getStyleValue(element, 'animation-duration')) * 1000;\n }\n //endregion\n //region Effects\n /**\n * Highlights the passed element or Rectangle according to the theme's highlighting rules.\n * Usually an animated framing effect.\n *\n * The framing effect is achieved by adding the CSS class `b-fx-highlight` which references\n * a `keyframes` animation named `b-fx-highlight-animation`. You may override the animation\n * name referenced, or the animation itself in your own CSS.\n *\n * @param {HTMLElement|Core.helper.util.Rectangle} element The element or Rectangle to highlight.\n */\n static highlight(element, delayable = globalThis) {\n if (element instanceof Rectangle) {\n return element.highlight();\n }\n return new Promise(resolve => {\n delayable.setTimeout(() => {\n element.classList.add('b-fx-highlight');\n delayable.setTimeout(() => {\n element.classList.remove('b-fx-highlight');\n resolve();\n }, 1000);\n }, 0);\n });\n }\n //endregion\n //region Measuring / Scrollbar\n /**\n * Measures the scrollbar width using a hidden div. Caches result\n * @property {Number}\n * @readonly\n */\n static get scrollBarWidth() {\n // Ensure the measurement is only done once, when the value is null and body is available.\n // Leave measure element in place. It needs to be remeasured when the zoom level is changed\n // which is detected using a window resize listener, so *may* be called frequently.\n if (scrollBarWidth === null && doc.body) {\n const element = scrollBarMeasureElement || (scrollBarMeasureElement = DH$1.createElement({\n parent: doc.body,\n style: 'position:absolute;top:-9999em;height:100px;overflow-y:scroll'\n }));\n if (element.parentNode !== doc.body) {\n doc.body.appendChild(element);\n }\n scrollBarWidth = element.offsetWidth;\n }\n return scrollBarWidth;\n }\n static get scrollBarPadElement() {\n return {\n className: 'b-yscroll-pad',\n children: [{\n className: 'b-yscroll-pad-sizer'\n }]\n };\n }\n /**\n * Resets DomHelper.scrollBarWidth cache, triggering a new measurement next time it is read\n */\n static resetScrollBarWidth() {\n scrollBarWidth = null;\n }\n /**\n * Measures the text width using a hidden div\n * @param {String} text\n * @param {HTMLElement} sourceElement\n * @returns {Number} width\n * @category Measure\n */\n static measureText(text, sourceElement, useHTML = false, parentElement = undefined) {\n const offScreenDiv = DH$1.getMeasureElement(sourceElement, parentElement);\n offScreenDiv[useHTML ? 'innerHTML' : 'innerText'] = text;\n const result = offScreenDiv.clientWidth;\n offScreenDiv.className = '';\n return result;\n }\n /**\n * Measures a relative size, such as a size specified in `em` units for the passed element.\n * @param {String} size The CSS size value to measure.\n * @param {HTMLElement} sourceElement\n * @param {Boolean} [round] Pass true to return exact width, not rounded value\n * @returns {Number} size The size in pixels of the passed relative measurement.\n * @category Measure\n */\n static measureSize(size, sourceElement, round = true) {\n if (!size) {\n return 0;\n }\n if (typeof size === 'number') {\n return size;\n }\n if (!size.length) {\n return 0;\n }\n if (/^\\d+(px)?$/.test(size)) {\n return parseInt(size);\n }\n if (sourceElement) {\n const offScreenDiv = DH$1.getMeasureElement(sourceElement);\n offScreenDiv.innerHTML = '';\n offScreenDiv.style.width = DH$1.setLength(size);\n const result = round ? offScreenDiv.offsetWidth : offScreenDiv.getBoundingClientRect().width;\n offScreenDiv.style.width = offScreenDiv.className = '';\n return result;\n }\n if (/^\\d+em$/.test(size)) {\n return parseInt(size) * DEFAULT_FONT_SIZE;\n }\n return isNaN(size) ? 0 : parseInt(size);\n }\n // parentElement allows measurement to happen inside a specific element, allowing scoped css rules to match\n static getMeasureElement(sourceElement, parentElement = doc.body) {\n const sourceElementStyle = win.getComputedStyle(sourceElement),\n offScreenDiv = parentElement.offScreenDiv = parentElement.offScreenDiv || DH$1.createElement({\n parent: parentElement,\n style: 'position:fixed;top:-10000px;left:-10000px;visibility:hidden;contain:strict',\n className: 'b-measure-element',\n children: [{\n style: 'white-space:nowrap;display:inline-block;will-change:contents;width:auto;contain:none'\n }]\n }, {\n returnAll: true\n })[1];\n fontProps.forEach(prop => {\n if (offScreenDiv.style[prop] !== sourceElementStyle[prop]) {\n offScreenDiv.style[prop] = sourceElementStyle[prop];\n }\n });\n offScreenDiv.className = sourceElement.className;\n // In case the measure element was moved/removed, re-add it\n if (offScreenDiv.parentElement.parentElement !== parentElement) {\n parentElement.appendChild(offScreenDiv.parentElement);\n }\n return offScreenDiv;\n }\n /**\n * Strips the tags from a html string, returning text content.\n *\n * ```javascript\n * DomHelper.stripTags('
BoldItalic
'); // -> BoldItalic\n * ```\n *\n * @internal\n * @param {String} htmlString HTML string\n * @returns {String} Text content\n */\n static stripTags(htmlString) {\n const\n // we need to avoid any kind of evaluation of embedded XSS scripts or \"web bugs\" (img tags that issue\n // GET requests)\n parser = DH$1.$domParser || (DH$1.$domParser = new DOMParser()),\n doc = parser.parseFromString(htmlString, 'text/html');\n return doc.body.textContent;\n }\n //endregion\n //region Sync\n /**\n * Sync one source element attributes, children etc. to a target element. Source element can be specified as a html\n * string or an actual HTMLElement.\n *\n * NOTE: This function is superseded by {@link Core/helper/DomSync#function-sync-static DomSync.sync()}, which works\n * with DOM configs. For most usecases, use it instead.\n *\n * @param {String|HTMLElement} sourceElement Source \"element\" to copy from\n * @param {HTMLElement} targetElement Target element to apply to, can also be specified as part of the config object\n * @returns {HTMLElement} Returns the updated targetElement (which is also updated in place)\n */\n static sync(sourceElement, targetElement) {\n if (typeof sourceElement === 'string') {\n if (sourceElement === '') {\n targetElement.innerHTML = '';\n return;\n } else {\n sourceElement = DH$1.createElementFromTemplate(sourceElement);\n }\n }\n DH$1.performSync(sourceElement, targetElement);\n return targetElement;\n }\n // Internal helper used for recursive syncing\n static performSync(sourceElement, targetElement) {\n // Syncing identical elements is a no-op\n if (sourceElement.outerHTML !== targetElement.outerHTML) {\n DH$1.syncAttributes(sourceElement, targetElement);\n DH$1.syncContent(sourceElement, targetElement);\n DH$1.syncChildren(sourceElement, targetElement);\n return true;\n }\n return false;\n }\n // Attributes as map { attr : value, ... }, either from an html element or from a config\n static getSyncAttributes(element) {\n const attributes = {},\n // Attribute names, simplifies comparisons and calls to set/removeAttribute\n names = [];\n // Extract from element\n for (let i = 0; i < element.attributes.length; i++) {\n const attr = element.attributes[i];\n if (attr.specified) {\n const name = attr.name.toLowerCase();\n attributes[name] = attr.value;\n names.push(name);\n }\n }\n return {\n attributes,\n names\n };\n }\n /**\n * Syncs attributes from sourceElement to targetElement.\n * @private\n * @param {HTMLElement} sourceElement\n * @param {HTMLElement} targetElement\n */\n static syncAttributes(sourceElement, targetElement) {\n const\n // Extract attributes from elements (sourceElement might be a config)\n {\n attributes: sourceAttributes,\n names: sourceNames\n } = DH$1.getSyncAttributes(sourceElement),\n {\n attributes: targetAttributes,\n names: targetNames\n } = DH$1.getSyncAttributes(targetElement),\n // Used to ignore data-xx attributes when we will be setting entire dataset\n hasDataset = sourceNames.includes('dataset'),\n // Intersect arrays to determine what needs adding, removing and syncing\n toAdd = sourceNames.filter(attr => !targetNames.includes(attr)),\n toRemove = targetNames.filter(attr => !sourceNames.includes(attr) && (!hasDataset || !attr.startsWith('data-'))),\n toSync = sourceNames.filter(attr => targetNames.includes(attr));\n if (toAdd.length > 0) {\n for (let i = 0; i < toAdd.length; i++) {\n const attr = toAdd[i];\n // Style requires special handling\n if (attr === 'style') {\n DH$1.applyStyle(targetElement, sourceAttributes.style, true);\n }\n // So does dataset\n else if (attr === 'dataset') {\n Object.assign(targetElement.dataset, sourceAttributes.dataset);\n }\n // Other attributes are set using setAttribute (since it calls toString() DomClassList works fine)\n else {\n targetElement.setAttribute(attr, sourceAttributes[attr]);\n }\n }\n }\n if (toRemove.length > 0) {\n for (let i = 0; i < toRemove.length; i++) {\n targetElement.removeAttribute(toRemove[i]);\n }\n }\n if (toSync.length > 0) {\n for (let i = 0; i < toSync.length; i++) {\n const attr = toSync[i];\n // Set all attributes that has changed, with special handling for style\n if (attr === 'style') {\n // TODO: Check for changes?\n DH$1.applyStyle(targetElement, sourceAttributes.style, true);\n }\n // And dataset\n else if (attr === 'dataset') {\n // TODO: Any cost to assigning same values?\n Object.assign(targetElement.dataset, sourceAttributes.dataset);\n }\n // And class, which might be a DomClassList or an config for a DomClassList\n else if (attr === 'class' && (sourceAttributes.class.isDomClassList || typeof sourceAttributes.class === 'object')) {\n let classList;\n if (sourceAttributes.class.isDomClassList) {\n classList = sourceAttributes.class;\n } else {\n // TODO : Reuse a single DomClassList?\n classList = new DomClassList(sourceAttributes.class);\n }\n if (!classList.isEqual(targetAttributes.class)) {\n targetElement.setAttribute('class', classList);\n }\n } else if (targetAttributes[attr] !== sourceAttributes[attr]) {\n targetElement.setAttribute(attr, sourceAttributes[attr]);\n }\n }\n }\n }\n /**\n * Sync content (innerText) from sourceElement to targetElement\n * @private\n * @param {HTMLElement} sourceElement\n * @param {HTMLElement} targetElement\n */\n static syncContent(sourceElement, targetElement) {\n if (DH$1.getChildElementCount(sourceElement) === 0) {\n targetElement.innerText = sourceElement.innerText;\n }\n }\n static setInnerText(targetElement, text) {\n // setting firstChild.data is faster than innerText (and innerHTML),\n // but in some cases the inner node is lost and needs to be recreated\n const {\n firstChild\n } = targetElement;\n if ((firstChild === null || firstChild === void 0 ? void 0 : firstChild.nodeType) === Element.TEXT_NODE) {\n firstChild.data = text;\n } else {\n // textContent is supposed to be faster than innerText, since it does not trigger layout\n targetElement.textContent = text;\n }\n }\n /**\n * Sync traversing children\n * @private\n * @param {HTMLElement} sourceElement Source element\n * @param {HTMLElement} targetElement Target element\n */\n static syncChildren(sourceElement, targetElement) {\n const me = this,\n sourceNodes = arraySlice$1.call(sourceElement.childNodes),\n targetNodes = arraySlice$1.call(targetElement.childNodes);\n while (sourceNodes.length) {\n const sourceNode = sourceNodes.shift(),\n targetNode = targetNodes.shift();\n // only textNodes and elements allowed (no comments)\n if (sourceNode && sourceNode.nodeType !== TEXT_NODE && sourceNode.nodeType !== ELEMENT_NODE) {\n throw new Error(`Source node type ${sourceNode.nodeType} not supported by DomHelper.sync()`);\n }\n if (targetNode && targetNode.nodeType !== TEXT_NODE && targetNode.nodeType !== ELEMENT_NODE) {\n throw new Error(`Target node type ${targetNode.nodeType} not supported by DomHelper.sync()`);\n }\n if (!targetNode) {\n // out of target nodes, add to target\n targetElement.appendChild(sourceNode);\n } else {\n // match node\n if (sourceNode.nodeType === targetNode.nodeType) {\n // same type of node, take action depending on which type\n if (sourceNode.nodeType === TEXT_NODE) {\n // text\n targetNode.data = sourceNode.data;\n } else {\n if (sourceNode.tagName === targetNode.tagName) {\n me.performSync(sourceNode, targetNode);\n } else {\n // new tag, remove targetNode and insert new element\n targetElement.insertBefore(sourceNode, targetNode);\n targetNode.remove();\n }\n }\n }\n // Trying to set text node as element, use it as innerText\n // (we get this in FF with store mutations and List)\n else if (sourceNode.nodeType === TEXT_NODE && targetNode.nodeType === ELEMENT_NODE) {\n targetElement.innerText = sourceNode.data.trim();\n } else {\n const logElement = sourceNode.parentElement || sourceNode;\n throw new Error(`Currently no support for transforming nodeType.\\n${logElement.outerHTML}`);\n }\n }\n }\n // Out of source nodes, remove remaining target nodes\n targetNodes.forEach(targetNode => {\n targetNode.remove();\n });\n }\n /**\n * Replaces the passed element's `className` with the class names\n * passed in either Array or String format or Object.\n *\n * This method compares the existing class set with the incoming class set and\n * avoids mutating the element's class name set if possible.\n *\n * This can avoid browser style invalidations.\n * @param {HTMLElement} element The element whose class list to synchronize.\n * @param {String[]|String|Object} newClasses The incoming class names to set on the element.\n * @returns {Boolean} `true` if the DOM class list was changed.\n * @category CSS\n */\n static syncClassList(element, newClasses) {\n const {\n classList\n } = element,\n isString = typeof newClasses === 'string',\n newClsArray = isString ? newClasses.split(whiteSpaceRe) : DomClassList.normalize(newClasses, 'array'),\n classCount = newClsArray.length;\n let changed = classList.length !== classCount,\n i;\n // If the incoming and existing class lists are the same length\n // then check that each contains the same names. As soon as\n // we find a non-matching name, we know we have to update the\n // className.\n for (i = 0; !changed && i < classCount; i++) {\n changed = !classList.contains(newClsArray[i]);\n }\n if (changed) {\n element.className = isString ? newClasses : newClsArray.join(' ');\n }\n return changed;\n }\n /**\n * Applies the key state of the passed object or DomClassList to the passed element.\n *\n * Properties with a falsy value mean that property name is *removed* as a class name.\n *\n * Properties with a truthy value mean that property name is *added* as a class name.\n *\n * This is different from {@link #function-syncClassList-static}. That sets the `className` of the element to the\n * sum of all its truthy keys, regardless of what the pre-existing value of the `className` was, and ignoring falsy\n * keys.\n *\n * This _selectively_ updates the classes in the `className`. If there is a truthy key, the name is added. If there\n * is a falsy key, the name is removed.\n * @param {HTMLElement} element The element to apply the class list to .\n * @param {Object|Core.helper.util.DomClassList} classes The classes to add or remove.\n * @returns {Boolean} `true` if the DOM class list was changed.\n * @category CSS\n */\n static updateClassList(element, classes) {\n const {\n classList\n } = element;\n let cls,\n add,\n changed = false;\n for (cls in classes) {\n add = Boolean(classes[cls]);\n if (classList.contains(cls) !== add) {\n classList[add ? 'add' : 'remove'](cls);\n changed = true;\n }\n }\n return changed;\n }\n /**\n * Changes the theme to the passed theme name if possible.\n *\n * Theme names are case insensitive. The `href` used is all lower case.\n *\n * To use this method, the `` _must_ use the default,\n * Bryntum-supplied CSS files where the `href` end with `.css`, so that\n * it can be found in the document, and switched out for a new link with\n * the a modified `href`. The new `href` will use the same path, just\n * with the `themeName` portion substituted for the new name.\n *\n * If no `` with that name pattern can be found, an error will be thrown.\n *\n * If you use this method, you must ensure that the theme files are\n * all accessible on your server.\n *\n * Because this is an asynchronous operation, a `Promise` is returned.\n * The theme change event is passed to the success function. If the\n * theme was not changed, because the theme name passed is the current theme,\n * nothing is passed to the success function.\n *\n * The theme change event contains two properties:\n *\n * - `prev` The previous Theme name.\n * - `theme` The new Theme name.\n *\n * @param {String} newThemeName the name of the theme that should be applied\n * @privateparam {String} [defaultTheme] Optional, the name of the theme that should be used in case of fail\n * @returns {Promise} A promise who's success callback receives the theme change\n * event if the theme in fact changed. If the theme `href` could not be loaded,\n * the failure callback is called, passing the error event caught.\n * @async\n */\n static setTheme(newThemeName, defaultTheme) {\n newThemeName = newThemeName.toLowerCase();\n const {\n head\n } = document,\n oldThemeName = DH$1.getThemeInfo(defaultTheme).name.toLowerCase();\n let oldThemeLinks = head.querySelectorAll('[data-bryntum-theme]:not([data-loading])'),\n loaded = 0;\n if (oldThemeName === newThemeName) {\n return immediatePromise$7;\n }\n // Remove any links currently loading\n DH$1.removeEachSelector(head, '#bryntum-theme[data-loading],link[data-bryntum-theme][data-loading]');\n const themeEvent = {\n theme: newThemeName,\n prev: oldThemeName\n };\n function replaceTheme(oldThemeLink, resolve, reject) {\n const newThemeLink = DomHelper.createElement({\n tag: 'link',\n rel: 'stylesheet',\n dataset: {\n loading: true,\n bryntumTheme: true\n },\n href: oldThemeLink.href.replace(oldThemeName, newThemeName),\n nextSibling: oldThemeLink\n });\n newThemeLink.addEventListener('load', () => {\n delete newThemeLink.dataset.loading;\n themeInfo = null;\n // Flip all products to the new theme at the same time\n if (++loaded === oldThemeLinks.length) {\n oldThemeLinks.forEach(link => link.remove());\n GlobalEvents$1.trigger('theme', themeEvent);\n resolve(themeEvent);\n }\n });\n newThemeLink.addEventListener('error', e => {\n delete newThemeLink.dataset.loading;\n reject(e);\n });\n }\n if (oldThemeLinks.length) {\n return new Promise((resolve, reject) => {\n oldThemeLinks.forEach((oldThemeLink, i) => {\n replaceTheme(oldThemeLink, resolve, reject, i === oldThemeLinks.length - 1);\n });\n });\n } else {\n const oldThemeLink = head.querySelector('#bryntum-theme:not([data-loading])') || head.querySelector(`[href*=\"${oldThemeName}.css\"]:not([data-loading])`);\n // Theme link href ends with .css also there could be a query - css?11111...\n if (!(oldThemeLink !== null && oldThemeLink !== void 0 && oldThemeLink.href.includes(`${oldThemeName}.css`))) {\n throw new Error(`Theme link for ${oldThemeName} not found`);\n }\n oldThemeLinks = [oldThemeLink];\n return new Promise((resolve, reject) => replaceTheme(oldThemeLink, resolve, reject));\n }\n }\n /**\n * A theme information object about the current theme.\n *\n * Currently this has only one property:\n *\n * - `name` The current theme name.\n * @property {Object}\n * @readonly\n */\n static get themeInfo() {\n return DomHelper.getThemeInfo();\n }\n /**\n * A theme information object about the current theme.\n *\n * Currently this has only one property:\n *\n * - `name` The current theme name.\n * @param {String} defaultTheme the name of the theme used as backup value in case of fail\n * @returns {Object} info, currently it contains only one property - 'name'.\n * @private\n */\n static getThemeInfo(defaultTheme) {\n if (!themeInfo) {\n const\n // The content it creates for 'b-theme-info' is described in corresponding theme in Core/resources/sass/themes\n // for example in Core/resources/sass/themes/material.scss\n // ```\n // .b-theme-info:before {\n // content : '{\"name\":\"Material\"}';\n // }\n // ```\n testDiv = DH$1.createElement({\n parent: document.body,\n className: 'b-theme-info'\n }),\n // Theme desc object is in the :before pseudo element.\n themeData = DH$1.getStyleValue(testDiv, 'content', false, ':before');\n if (themeData) {\n // themeData could be invalid JSON string in case there is no content rule\n try {\n themeInfo = JSON.parse(themeData.replace(/^[\"']|[\"']$|\\\\/g, ''));\n } catch (e) {\n themeInfo = null;\n }\n }\n // CSS file has to be loaded to make the themeInfo available, so fallback to the default theme name\n themeInfo = themeInfo || (defaultTheme ? {\n name: defaultTheme\n } : null);\n testDiv.remove();\n }\n return themeInfo;\n }\n //endregion\n //region Transition\n static async transition({\n element: outerElement,\n selector = '[data-dom-transition]',\n duration,\n action,\n thisObj = this,\n addTransition = {},\n removeTransition = {}\n }) {\n const scrollers = new Set(),\n beforeElements = Array.from(outerElement.querySelectorAll(selector)),\n beforeMap = new Map(beforeElements.map(element => {\n let depth = 0,\n parent = element.parentElement;\n while (parent && parent !== outerElement) {\n depth++;\n parent = parent.parentElement;\n }\n element.$depth = depth;\n // Store scrolling elements and their current scroll pos, for restoring later\n if (element.scrollHeight > element.offsetHeight && getComputedStyle(element).overflow === 'auto') {\n element.$scrollTop = element.scrollTop;\n scrollers.add(element);\n }\n // Intersect our bounds with parents, to trim away overflow\n const {\n parentElement\n } = element,\n globalBounds = Rectangle.from(element, outerElement),\n localBounds = Rectangle.from(element, parentElement),\n style = getComputedStyle(parentElement),\n borderLeftWidth = parseFloat(style.borderLeftWidth);\n if (borderLeftWidth) {\n globalBounds.left -= borderLeftWidth;\n localBounds.left -= borderLeftWidth;\n }\n return [element.id, {\n element,\n globalBounds,\n localBounds,\n depth,\n parentElement\n }];\n }));\n action.call(thisObj);\n const afterElements = Array.from(outerElement.querySelectorAll(selector)),\n afterMap = new Map(afterElements.map(element => {\n const globalBounds = Rectangle.from(element, outerElement),\n localBounds = Rectangle.from(element, element.parentElement),\n style = globalThis.getComputedStyle(element.parentElement),\n borderLeftWidth = parseFloat(style.borderLeftWidth);\n if (borderLeftWidth) {\n globalBounds.left -= borderLeftWidth;\n localBounds.left -= borderLeftWidth;\n }\n return [element.id, {\n element,\n globalBounds,\n localBounds\n }];\n })),\n styleProps = ['position', 'top', 'left', 'width', 'height', 'padding', 'margin', 'zIndex', 'minWidth', 'minHeight', 'opacity', 'overflow'];\n // Convert to absolute layout, iterating elements remaining after action\n for (const [id, before] of beforeMap) {\n // We match before vs after on id and not actual element, allowing adding a new element with the same id to\n // transition from the old (which was removed or released). To match what will happen when DomSyncing with\n // multiple containing elements (columns in TaskBoard)\n const after = afterMap.get(id);\n if (after) {\n const {\n element\n } = after,\n {\n style,\n parentElement\n } = element,\n // Need to keep explicit zIndex to keep above other stuff\n zIndex = parseInt(DH$1.getStyleValue(element, 'zIndex')),\n {\n globalBounds,\n localBounds,\n depth,\n parentElement: beforeParent\n } = before,\n parentChanged = beforeParent !== parentElement;\n // Store initial state, in case element has a style prop we need to restore later\n ObjectHelper.copyProperties(element.$initial = {\n parentElement\n }, style, styleProps);\n // Prevent transition during the process, forced further down instead\n // element.remove();\n let bounds;\n // Action moved element to another parent, move it to the outer element to allow transitioning to the\n // new parent. Also use coordinates relative to that element\n if (parentChanged) {\n after.bounds = after.globalBounds;\n bounds = globalBounds;\n outerElement.appendChild(element);\n }\n // Keep element in current parent if it was not moved during the action call above.\n // Need to use coords relative to the parent\n else {\n after.bounds = after.localBounds;\n bounds = localBounds;\n beforeParent.appendChild(element);\n }\n let overflow = 'hidden'; // Looks weird with content sticking out if height is transitioned\n if (scrollers.has(element)) {\n element.$scrollPlaceholder = DH$1.createElement({\n parent: element,\n style: {\n height: element.scrollHeight\n }\n });\n overflow = 'auto';\n }\n // Move element back to where it started\n Object.assign(style, {\n position: 'absolute',\n top: `${bounds.top}px`,\n left: `${bounds.left}px`,\n width: `${bounds.width}px`,\n height: `${bounds.height}px`,\n minWidth: 0,\n minHeight: 0,\n padding: 0,\n margin: 0,\n zIndex: depth + (zIndex || 0),\n overflow\n });\n after.processed = true;\n }\n // Existed before but not after = removed\n else {\n const {\n element,\n localBounds: bounds,\n depth,\n parentElement\n } = before;\n element.$initial = {\n removed: true\n };\n Object.assign(element.style, {\n position: 'absolute',\n top: `${bounds.top}px`,\n left: `${bounds.left}px`,\n width: `${bounds.width}px`,\n height: `${bounds.height}px`,\n minWidth: 0,\n minHeight: 0,\n padding: 0,\n margin: 0,\n zIndex: depth,\n overflow: 'hidden' // Looks weird with content sticking out if height is transitioned\n });\n\n parentElement.appendChild(element);\n // Inject among non-removed elements to have it transition away\n afterMap.set(id, {\n element,\n bounds,\n removed: true,\n processed: true\n });\n afterElements.push(element);\n }\n }\n // Handle new elements\n for (const [, after] of afterMap) {\n if (!after.processed) {\n const {\n element\n } = after,\n {\n style,\n parentElement\n } = element,\n bounds = after.bounds = after.localBounds;\n element.classList.add('b-dom-transition-adding');\n ObjectHelper.copyProperties(element.$initial = {\n parentElement\n }, style, styleProps);\n // Props in `addTransition` will be transitioned\n Object.assign(style, {\n position: 'absolute',\n top: addTransition.top ? 0 : `${bounds.top}px`,\n left: addTransition.left ? 0 : `${bounds.left}px`,\n width: addTransition.width ? 0 : `${bounds.width}px`,\n height: addTransition.height ? 0 : `${bounds.height}px`,\n opacity: addTransition.opacity ? 0 : null,\n zIndex: parentElement.$depth + 1,\n overflow: 'hidden' // Looks weird with content sticking out if height is transitioned\n });\n }\n }\n // Restore scroll after modifying layout\n for (const element of scrollers) {\n element.scrollTop = element.$scrollTop;\n }\n // Enable transitions\n outerElement.classList.add('b-dom-transition');\n // Trigger layout, to be able to transition below\n outerElement.firstElementChild.offsetWidth;\n // Transition to new layout\n for (const [, {\n element,\n bounds: afterBounds,\n removed\n }] of afterMap) {\n if (removed) {\n Object.assign(element.style, {\n top: removeTransition.top ? 0 : `${afterBounds.top}px`,\n left: removeTransition.left ? 0 : `${afterBounds.left}px`,\n width: removeTransition.width ? 0 : `${afterBounds.width}px`,\n height: removeTransition.height ? 0 : `${afterBounds.height}px`,\n opacity: removeTransition.opacity ? 0 : element.$initial.opacity\n });\n } else {\n Object.assign(element.style, {\n top: `${afterBounds.top}px`,\n left: `${afterBounds.left}px`,\n width: `${afterBounds.width}px`,\n height: `${afterBounds.height}px`,\n opacity: element.$initial.opacity\n });\n }\n }\n // Wait for transition to finish\n await AsyncHelper.sleep(duration);\n outerElement.classList.remove('b-dom-transition');\n // Restore layout after transition\n for (const element of afterElements) {\n if (element.$initial) {\n if (element.$initial.removed) {\n element.remove();\n } else {\n ObjectHelper.copyProperties(element.style, element.$initial, styleProps);\n if (element.$scrollPlaceholder) {\n element.$scrollPlaceholder.remove();\n delete element.$scrollPlaceholder;\n }\n element.classList.remove('b-dom-transition-adding');\n element.$initial.parentElement.appendChild(element);\n }\n }\n }\n // Restore scroll positions last when all layout is restored\n for (const element of scrollers) {\n element.scrollTop = element.$scrollTop;\n delete element.$scrollTop;\n }\n }\n //endregion\n static async loadScript(url) {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = url;\n script.onload = resolve;\n script.onerror = reject;\n document.head.appendChild(script);\n });\n }\n static isNamedColor(color) {\n return color && !/^(#|hsl|rgb)/.test(color);\n }\n //#region Salesforce hooks\n // Wrap NodeFilter to support salesforce\n static get NodeFilter() {\n return NodeFilter;\n }\n static addChild(parent, child, sibling) {\n parent.insertBefore(child, sibling);\n }\n //#endregion\n}\n\nconst DH$1 = DomHelper;\nlet clearTouchTimer;\nconst clearTouchEvent = () => DH$1.isTouchEvent = false,\n setTouchEvent = () => {\n DH$1.isTouchEvent = true;\n // Jump round the click delay\n clearTimeout(clearTouchTimer);\n clearTouchTimer = setTimeout(clearTouchEvent, 400);\n };\n// Set event type flags so that mousedown and click handlers can know whether a touch gesture was used.\n// This is used. This must stay until we have a unified DOM event system which handles both touch and mouse events.\ndoc.addEventListener('touchstart', setTouchEvent, true);\ndoc.addEventListener('touchend', setTouchEvent, true);\nDH$1.canonicalStyles = canonicalStyles;\nDH$1.supportsTemplate = 'content' in doc.createElement('template');\nDH$1.elementPropKey = elementPropKey;\nDH$1.numberRe = numberRe;\n//region Polyfills\n// TODO: include babels polyfills instead of keeping own?\nif (!('children' in Node.prototype)) {\n const elementFilter = node => node.nodeType === node.ELEMENT_NODE;\n Object.defineProperty(Node.prototype, 'children', {\n get: function () {\n return Array.prototype.filter.call(this.childNodes, elementFilter);\n }\n });\n}\nif (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {\n const matches = (this.document || this.ownerDocument).querySelectorAll(s);\n let i = matches.length;\n // eslint-disable-next-line no-empty\n while (--i >= 0 && matches.item(i) !== this) {}\n return i > -1;\n };\n}\nif (win.Element && !Element.prototype.closest) {\n Node.prototype.closest = Element.prototype.closest = function (s) {\n let el = this;\n if (!doc.documentElement.contains(el)) return null;\n do {\n if (el.matches(s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === el.ELEMENT_NODE);\n return null;\n };\n} else {\n // It's crazy that closest is not already on the Node interface!\n // Note that some Node types (eg DocumentFragment) do not have a parentNode.\n Node.prototype.closest = function (selector) {\n var _this$parentNode;\n return (_this$parentNode = this.parentNode) === null || _this$parentNode === void 0 ? void 0 : _this$parentNode.closest(selector);\n };\n}\n// from MDN (public domain): https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove\n(function (arr) {\n arr.forEach(function (item) {\n if (Object.prototype.hasOwnProperty.call(item, 'remove')) {\n return;\n }\n Object.defineProperty(item, 'remove', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function remove() {\n this.parentNode && this.parentNode.removeChild(this);\n }\n });\n });\n})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\n//endregion\n// CTRL/+ and CTRL/- zoom gestures must invalidate the scrollbar width.\n// Window resize is triggered by this operation on Blink (Chrome & Edge), Firefox and Safari.\nglobalThis.addEventListener('resize', () => scrollBarWidth = null);\nDomHelper._$name = 'DomHelper';\n\n/**\n * @module Core/GlobalEvents\n */\nconst isFloatingWidget = w => w.floating;\nconst GlobalEvents = new class extends Base$1.mixin(Events) {\n suspendFocusEvents() {\n focusEventsSuspended = true;\n }\n resumeFocusEvents() {\n focusEventsSuspended = false;\n }\n setupFocusListenersOnce(rootElement, EventHelper) {\n if (rootElement && !GlobalEvents.observedElements.has(rootElement)) {\n GlobalEvents.setupFocusListeners(rootElement, EventHelper);\n GlobalEvents.observedElements.add(rootElement);\n }\n }\n // This is imported by EventHelper and that makes the call to set up the listeners\n // `detach` argument is required to not setup more listeners than we need to. In case of salesforce we include floatroot\n // inside the webcomponent element and thus don't need default listeners on document. In regular webcomponents demo we\n // don't need to do it, because with multiple components on one page that would force us to make more complex lookups.\n setupFocusListeners(element = document, EventHelper, detach = false) {\n var _detacher;\n const listeners = {\n element,\n touchstart(touchstart) {\n if (!globaltouchStart && touchstart.changedTouches.length === 1) {\n globaltouchStart = touchstart.changedTouches[0];\n } else {\n globaltouchStart = null;\n }\n },\n // Just this one has to be passive: false so that we are allowed to preventDefault\n // if we are part of a contextmenu longpress emulation. Otherwise the gesture will\n // proceed to cause a mousedown event.\n touchend: {\n handler: event => {\n if (globaltouchStart) {\n // If the touchstart was used to synthesize a contextmenu event\n // stop the touch gesture processing right now.\n // Also prevent the conversion of the touch into click.\n if (globaltouchStart.identifier === EventHelper.contextMenuTouchId) {\n event.stopImmediatePropagation();\n event.preventDefault();\n } else if (event.changedTouches.length === 1 && event.changedTouches[0].identifier === globaltouchStart.identifier) {\n GlobalEvents.trigger('globaltap', {\n event\n });\n }\n globaltouchStart = null;\n }\n },\n passive: false\n },\n mousedown: {\n handler: event => {\n lastInteractionType = 'mouse';\n if (!globaltouchStart) {\n GlobalEvents.trigger('globaltap', {\n event\n });\n }\n },\n passive: false\n },\n keydown() {\n lastInteractionType = 'key';\n },\n keypress() {\n lastInteractionType = 'key';\n },\n focusin(focusin) {\n const {\n Widget\n } = GlobalEvents;\n // https://app.assembla.com/spaces/bryntum/tickets/5503\n // Caused by the browser scrolling a focused element into view. The browser will do *whatever it takes*\n // to scroll a focused element so that as much of it is in view as possible. Its first point of scrolling will\n // be the float containing element. That must never scroll.\n // TODO: Remove when https://www.w3.org/TR/css-overflow-3/#valdef-overflow-clip is supported.\n Widget.resetFloatRootScroll();\n if (focusEventsSuspended) {\n return;\n }\n const fromElement = !focusin.relatedTarget ? null : focusin.relatedTarget instanceof HTMLElement ? focusin.relatedTarget : document.body,\n toElement = focusin.target || document.body,\n fromWidget = Widget.fromElement(fromElement),\n toWidget = Widget.fromElement(toElement),\n commonAncestor = DomHelper.getCommonAncestor(fromWidget, toWidget),\n // Flag if the fromElement is DOCUMENT_POSITION_FOLLOWING toElement\n backwards = !!(fromElement && toElement.compareDocumentPosition(fromElement) & 4),\n topVisibleModal = Widget.query(isTopVisibleModal);\n let currentFocus = null;\n if (toElement && toElement !== document.body) {\n currentFocus = DomHelper.getActiveElement(toElement);\n } else {\n currentFocus = DomHelper.getActiveElement(document);\n }\n // If there is a topmost modal that is not actively reverting focus, and the focus is moving to\n // somewhere *not* a descendant of that modal, and that somewhere is not in a floater that us\n // *above* that modal (the compareDocumentPosition call), then we enforce modality and sweep focus\n // back into the modal.\n // By default, the Container class will yield the first focusable descendant widget's focusEl as its\n // focusEl, so that will be out of the box behaviour for Popups.\n if (topVisibleModal && !topVisibleModal._isRevertingFocus) {\n if (!toWidget || !topVisibleModal.owns(toWidget) && !(topVisibleModal.element.compareDocumentPosition(toWidget.element) & 4 && toWidget.up(isFloatingWidget))) {\n return topVisibleModal.focus();\n }\n }\n let event = createWidgetEvent('focusout', fromElement, focusin.target, fromWidget, toWidget, backwards);\n // Bubble focusout event up the \"from\" side of the tree\n for (let target = fromWidget, owner; target && target !== commonAncestor; target = owner) {\n // Capture before any focus out handling is done. It may be manipulated.\n owner = target.owner;\n if (!target.isDestroying && target.onFocusOut) {\n target.onFocusOut(event);\n // It is possible for focusout handlers to refocus themselves (editor's invalidAction='block'), so\n // check if the focus is still where it was when we started unless we are in a document\n // loss of focus situation (no target)\n if (focusin.target && currentFocus !== DomHelper.getActiveElement(focusin.target)) {\n // If the focus has moved, that movement would have kicked off a nested sequence of focusin/out\n // notifications, so everyone has already been notified... no more to do here.\n return;\n }\n }\n }\n // Focus is moving upwards to the ancestor widget.\n // Its focus method might delegate focus to a focusable descendant.\n if (commonAncestor && focusin.target === commonAncestor.element) {\n // If one of the handlers above has not moved focus onwards\n // and the common ancestor is a container which delegates\n // focus inwards to a descendant, then give it the opportunity to do that.\n if (!commonAncestor.isDestroying && DomHelper.getActiveElement(commonAncestor) === toElement && commonAncestor.focusElement && commonAncestor.focusElement !== commonAncestor.element) {\n // If focus is not inside, move focus inside\n if (!commonAncestor.element.contains(currentFocus) || commonAncestor.focusDescendant) {\n // Wait until out of the focusin handler to move focus on.\n commonAncestor.setTimeout(() => {\n var _commonAncestor$focus;\n return (_commonAncestor$focus = commonAncestor.focus) === null || _commonAncestor$focus === void 0 ? void 0 : _commonAncestor$focus.call(commonAncestor);\n }, 0);\n }\n }\n }\n // Focus is moving between two branches of a subtree.\n // Bubble focusin event up the \"to\" side of the tree\n else {\n event = createWidgetEvent('focusin', toElement, fromElement, fromWidget, toWidget, backwards);\n for (let target = toWidget; target && target !== commonAncestor; target = target.owner) {\n if (!target.isDestroying) {\n var _target$onFocusIn, _target;\n (_target$onFocusIn = (_target = target).onFocusIn) === null || _target$onFocusIn === void 0 ? void 0 : _target$onFocusIn.call(_target, event);\n }\n }\n }\n // Fire element focusmove event. Grid navigation will use this when cells are focusable.\n const commonAncestorEl = DomHelper.getCommonAncestor((fromElement === null || fromElement === void 0 ? void 0 : fromElement.nodeType) === Element.ELEMENT_NODE ? fromElement : null, toElement) || toElement.parentNode;\n // Common ancestor may be null is salesforce\n // https://github.com/bryntum/support/issues/4865\n if (commonAncestorEl) {\n event = createWidgetEvent('focusmove', toElement, fromElement, fromWidget, toWidget, backwards, {\n bubbles: true\n });\n commonAncestorEl.dispatchEvent(event);\n }\n },\n focusout(focusout) {\n if (focusEventsSuspended) {\n return;\n }\n if (!focusout.relatedTarget || !GlobalEvents.Widget.fromElement(focusout.relatedTarget)) {\n // When switching between tabs in Salesforce app `relatedTarget` of the focusout event might be not an instance of\n // HTMLElement.\n const target = focusout.relatedTarget && focusout.relatedTarget instanceof HTMLElement ? focusout.relatedTarget : null;\n listeners.focusin({\n target,\n relatedTarget: focusout.target\n });\n }\n },\n capture: true,\n passive: true\n };\n // detach previous listeners\n detach && ((_detacher = detacher) === null || _detacher === void 0 ? void 0 : _detacher());\n detacher = EventHelper.on(listeners);\n }\n get lastInteractionType() {\n return lastInteractionType;\n }\n }(),\n isTopVisibleModal = w => w.isVisible && w.isTopModal;\nGlobalEvents.observedElements = new Set();\n/**\n * Fired after the theme is changed\n * @event theme\n * @param {Core.GlobalEvents} source\n * @param {String} theme The new theme name\n */\nlet globaltouchStart,\n focusEventsSuspended = false,\n lastInteractionType,\n detacher;\nfunction createWidgetEvent(eventName, target, relatedTarget, fromWidget, toWidget, backwards, options) {\n const result = new CustomEvent(eventName, options);\n // Workaround for Salesforce. They use strict mode and define non-configurable property `target`. We use this\n // CustomEvent as a synthetic one, feels fine to use non-standard handle for target.\n Object.defineProperty(result, '_target', {\n get() {\n return target;\n }\n });\n Object.defineProperty(result, 'relatedTarget', {\n get() {\n return relatedTarget;\n }\n });\n result.fromWidget = fromWidget;\n result.toWidget = toWidget;\n result.backwards = backwards;\n return result;\n}\n/**\n * A singleton firing global application level events like 'theme'.\n *\n * ```javascript\n * GlobalEvents.on({\n * theme() {\n * // react to theme changes here\n * }\n * });\n * ```\n *\n * @class\n * @singleton\n * @mixes Core/mixin/Events\n */\nvar GlobalEvents$1 = GlobalEvents;\n\n/**\n * @module Core/mixin/InstancePlugin\n */\nfunction getDescriptor(me, fnName) {\n const property = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(me), fnName);\n return property && (property.get || property.set) ? property : null;\n}\n/**\n * Base class for plugins. Published functions will be available from the other class. `this` in published functions is\n * referenced to the plugin, access the other class using `this.client`.\n *\n * Observe that plugin doesn't apply itself on class level but instead on instance level. Plugin is its own instance\n * that can have own functions and data that is not exposed to target class.\n *\n * Functions can be published in four ways:\n *\n * * `assign` (when function is not already available on target)\n * * `before` (when function is already available on target, will be called before original function)\n * * `after` (when function is already available on target, will be called after original function)\n * * `override` (replaces function on target, but old function can be reached)\n *\n * To configure which functions get published and in what way, specify `pluginConfig` getter on plugin:\n *\n * ```\n * class Sort extends InstancePlugin {\n * static get pluginConfig {\n * return {\n * before : ['init'],\n * after : ['destroy', 'onElementClick'],\n * override : ['render']\n * };\n * }\n * }\n * ```\n * @extends Core/Base\n * @mixes Core/localization/Localizable\n * @mixes Core/mixin/Events\n */\nclass InstancePlugin extends Base$1.mixin(Events, Localizable) {\n //region Config\n static get configurable() {\n return {\n clientListeners: null,\n /**\n * Get/set the plugin/feature `disabled` state.\n * @member {Boolean} disabled\n * @category Common\n */\n /**\n * The plugin/feature `disabled` state.\n *\n * For a feature that is **off** by default that you want to enable later during runtime,\n * configure it with `disabled : true`.\n * ```javascript\n * const grid = new Grid({\n * features : {\n * featureName : {\n * disabled : true // on and disabled, can be enabled later\n * }\n * }\n * });\n *\n * // enable the feature\n * grid.features.featureName.disabled = false;\n * ```\n *\n * If the feature is **off** by default, and you want to include and enable the feature, configure it as `true`:\n * ```javascript\n * const grid = new Grid({\n * features : {\n * featureName : true // on and enabled, can be disabled later\n * }\n * });\n *\n * // disable the feature\n * grid.features.featureName.disabled = true;\n * ```\n *\n * If the feature is **on** by default, but you want to turn it **off**, configure it as `false`:\n * ```javascript\n * const grid = new Grid({\n * features : {\n * featureName : false // turned off, not included at all\n * }\n * });\n * ```\n *\n * If the feature is **enabled** by default and you have no need of reconfiguring it,\n * you can omit the feature configuration.\n *\n * @config {Boolean}\n * @default\n * @category Common\n */\n disabled: false,\n /**\n * The Widget which was passed into the constructor,\n * which is the Widget we are providing extra services for.\n * @member {Core.widget.Widget} client\n * @readonly\n * @category Misc\n */\n /**\n * The widget which this plugin is to attach to.\n * @config {Core.widget.Widget}\n * @category Misc\n */\n client: null,\n // The plugins can define their own keyMap which will then be merged with their client's keyMap.\n keyMap: null\n };\n }\n //endregion\n updateClient(client) {\n // So that this.callback can reach the owning Widget when resolving function names.\n if (!this.owner) {\n this.owner = client;\n }\n }\n /**\n * This will merge a feature's (subclass of InstancePlugin) keyMap with it's client's keyMap.\n * @private\n */\n updateKeyMap(keyMap) {\n const {\n client\n } = this;\n client.keyMap = client.mergeKeyMaps(client.keyMap, keyMap, StringHelper.uncapitalize(this.constructor.$name));\n }\n //region Init\n /**\n * Call from another instance to add plugins to it.\n * @example\n * InstancePlugin.initPlugins(this, Search, Stripe);\n * @param plugInto Instance to mix into (usually this)\n * @param plugins Classes to plug in\n * @internal\n */\n static initPlugins(plugInto, ...plugins) {\n const property = plugInto.plugins || (plugInto.plugins = {});\n for (const PluginClass of plugins) {\n property[PluginClass.$$name] = new PluginClass(plugInto);\n }\n }\n /**\n * Simple wrapper for {@link #property-disabled} to make optional chaining simple:\n *\n * ```javascript\n * grid.features.myFeature?.enabled // returns true when feature exists and is enabled\n * ```\n * @returns {Boolean}\n * @internal\n */\n get enabled() {\n return !this.disabled;\n }\n // We can act as an owner of a widget, so must be able to participate in focus reversion\n getFocusRevertTarget() {\n var _this$client;\n return (_this$client = this.client) === null || _this$client === void 0 ? void 0 : _this$client.getFocusRevertTarget();\n }\n construct(...args) {\n const me = this;\n let [plugInto, config] = args,\n listeners;\n // When called with one argument (a config object), grab the \"client\" from the config object.\n if (args.length === 1) {\n if (ObjectHelper.isObject(plugInto)) {\n config = plugInto;\n plugInto = config.client;\n }\n }\n // Two args, so client is the first. Ensure the config doesn't contain a client property.\n else {\n config = ObjectHelper.assign({}, config);\n delete config.client;\n }\n me.client = plugInto;\n super.construct(config);\n me.applyPluginConfig(plugInto);\n listeners = me.clientListeners;\n if (listeners) {\n listeners = ObjectHelper.assign({}, listeners);\n listeners.thisObj = me;\n plugInto.on(listeners);\n }\n }\n /**\n * Applies config as found in plugInto.pluginConfig, or published all if no config found.\n * @private\n * @param plugInto Target instance to plug into\n */\n applyPluginConfig(plugInto) {\n const me = this,\n config = me.pluginConfig || me.constructor.pluginConfig;\n if (config) {\n const {\n assign,\n chain,\n after,\n before,\n override\n } = config;\n assign && me.applyAssign(plugInto, assign);\n (chain || after) && me.applyChain(plugInto, chain || after);\n before && me.applyChain(plugInto, before, false);\n override && me.applyOverride(plugInto, override);\n }\n }\n /**\n * Applies assigning for specified functions.\n * @private\n * @param plugInto\n * @param fnNames\n */\n applyAssign(plugInto, fnNames) {\n fnNames.forEach(fnName => this.assign(plugInto, fnName));\n }\n /**\n * Applies chaining for specified functions.\n * @private\n * @param plugInto\n * @param functions\n * @param after\n */\n applyChain(plugInto, functions, after = true) {\n if (Array.isArray(functions)) {\n for (const fnName of functions) {\n this.chain(plugInto, fnName, fnName, after);\n }\n } else {\n for (const intoName in functions) {\n this.chain(plugInto, intoName, functions[intoName], after);\n }\n }\n }\n /**\n * Applies override for specified functions.\n * @private\n * @param plugInto\n * @param fnNames\n */\n applyOverride(plugInto, fnNames) {\n const me = this;\n if (!me.overridden) {\n me.overridden = {};\n }\n fnNames.forEach(fnName => {\n if (!me[fnName]) {\n throw new Error(`Trying to chain fn ${plugInto.$$name}#${fnName}, but plugin fn ${me.$$name}#${fnName} does not exist`);\n }\n // override\n if (typeof plugInto[fnName] === 'function') {\n me.overridden[fnName] = plugInto[fnName].bind(plugInto);\n }\n plugInto[fnName] = me[fnName].bind(me);\n });\n }\n /**\n * Assigns specified functions.\n * @private\n * @param plugInto\n * @param fnName\n */\n assign(plugInto, fnName) {\n const me = this,\n property = getDescriptor(me, fnName);\n if (property) {\n // getter/setter, define corresponding property on target\n Object.defineProperty(plugInto, fnName, {\n configurable: true,\n enumerable: true,\n get: property.get && property.get.bind(me),\n set: property.set && property.set.bind(me)\n });\n } else {\n plugInto[fnName] = me[fnName].bind(me);\n }\n }\n //endregion\n //region Chaining\n /**\n * Chains functions. When the function is called on the target class all functions in the chain will be called in\n * the order they where added.\n * @private\n * @param plugInto\n * @param intoName\n * @param hookName\n * @param after\n */\n chain(plugInto, intoName, hookName, after = true) {\n // default hook prio\n let prio = 0;\n if (typeof intoName === 'object') {\n intoName = intoName.fn;\n }\n // if hook is provided as an object\n if (typeof hookName === 'object') {\n // hook prio to order runs\n prio = hookName.prio || 0;\n hookName = hookName.fn;\n }\n const me = this,\n chains = plugInto.pluginFunctionChain || (plugInto.pluginFunctionChain = {}),\n hookFn = me[hookName] && me[hookName].bind(me),\n // Grab the fn so that we won't need our this pointer to call it. This is due\n // to this instance possibly being destroyed by the time a chain call is made.\n functionChainRunner = me.functionChainRunner;\n if (!hookFn) {\n throw new Error(`Trying to chain fn ${plugInto.$$name}#${hookName}, but plugin fn ${me.$$name}#${hookName} does not exist`);\n }\n if (!chains[intoName]) {\n let intoFn = plugInto[intoName];\n if (intoFn) {\n intoFn = intoFn.bind(plugInto);\n intoFn.$this = plugInto;\n // use default prio\n intoFn.$prio = 0;\n }\n chains[intoName] = intoFn ? [intoFn] : [];\n plugInto[intoName] = (...params) => functionChainRunner(chains[intoName], params);\n }\n hookFn.$this = me;\n hookFn.$prio = prio;\n chains[intoName][after ? 'push' : 'unshift'](hookFn);\n chains[intoName].$sorted = false;\n }\n /**\n * Used to run multiple plugged in functions with the same name, see chain above. Returning false from a\n * function will abort chain.\n * @private\n * @param {Array} chain\n * @param {Array} params\n * @returns {*} value returned from last function in chain (or false if any returns false)\n */\n functionChainRunner(chain, params) {\n // NOTE: even though we are an instance method, we must not use our \"this\" pointer\n // since our instance may be destroyed. We cope with that by receiving parameters\n // for everything we need (so we're just a pure function).\n let fn, i, returnValue;\n // sort hooks by prio before running them\n if (!chain.$sorted) {\n chain.sort((a, b) => b.$prio - a.$prio);\n chain.$sorted = true;\n }\n for (i = 0; i < chain.length; i++) {\n fn = chain[i];\n // Feature hooks remain in place even after GridBase loops and destroys its\n // features, so skip over any destroyed features on the chain. In particular,\n // bindStore hooks will be called when GridBase sets store to null.\n if (!fn.$this.isDestroyed) {\n returnValue = fn(...params);\n if (returnValue === false) {\n break;\n }\n }\n }\n return returnValue;\n }\n //endregion\n /**\n * Called when disabling/enabling the plugin/feature, not intended to be called directly. To enable or disable a\n * plugin/feature, see {@link #property-disabled}.\n *\n * By default removes the cls of the plugin from its client. Override in subclasses to take any other actions necessary.\n * @category Misc\n */\n doDisable(disable) {\n const me = this,\n {\n constructor\n } = me,\n cls = 'featureClass' in constructor ? constructor.featureClass : `b-${constructor.$$name.toLowerCase()}`;\n // Some features do not use a cls\n if (cls) {\n var _me$client, _me$client$element;\n (_me$client = me.client) === null || _me$client === void 0 ? void 0 : (_me$client$element = _me$client.element) === null || _me$client$element === void 0 ? void 0 : _me$client$element.classList[disable ? 'remove' : 'add'](cls);\n }\n if (!me.isConfiguring) {\n if (disable) {\n /**\n * Fired when the plugin/feature is disabled.\n * @event disable\n * @param {Core.mixin.InstancePlugin} source\n */\n me.trigger('disable');\n } else {\n /**\n * Fired when the plugin/feature is enabled.\n * @event enable\n * @param {Core.mixin.InstancePlugin} source\n */\n me.trigger('enable');\n }\n }\n }\n updateDisabled(disabled) {\n this.doDisable(disabled);\n }\n throwOverrideIsMissing(data) {\n throw new Error(`Trying to override fn ${data.plugIntoName}#${data.fnName}, but plugin fn ${data.pluginName}#${data.fnName} does not exist`);\n }\n // Convenience method to read the rootElement from the owner widget\n get rootElement() {\n return this.client.rootElement;\n }\n}\n_defineProperty(InstancePlugin, \"$name\", 'InstancePlugin');\nInstancePlugin._$name = 'InstancePlugin';\n\n/**\n * @module Core/mixin/Pluggable\n */\n/**\n * Enables using plugins for a class by specifying property plugins as an array of plugin classes. If only a single plugin\n * is used, just give the plugin class instead of an array. This class isn't required for using plugins, just makes it\n * easier. Without mixin you can otherwise use `InstancePlugin.initPlugins(this, PluginClass)`.\n *\n * @example\n * new Store({\n * plugins: [PluginClass, ...]\n * });\n *\n * @mixin\n */\nvar Pluggable = (Target => class Pluggable extends (Target || Base$1) {\n static get $name() {\n return 'Pluggable';\n }\n /**\n * Specify plugins (an array of classes) in config\n * @config {Function[]} plugins\n * @category Misc\n */\n /**\n * Map of applied plugins\n * @property {Object}\n * @readonly\n * @category Misc\n */\n get plugins() {\n if (!this._plugins) {\n this._plugins = {};\n }\n return this._plugins;\n }\n set plugins(plugins) {\n if (plugins) {\n if (!Array.isArray(plugins)) plugins = [plugins];\n InstancePlugin.initPlugins(this, ...plugins);\n }\n this.initPlugins();\n }\n /**\n * Template method which may be implemented in subclasses to initialize any plugins.\n * This method is empty in the `Pluggable` base class.\n * @internal\n */\n initPlugins() {}\n /**\n * Adds plugins to an instance.\n * @param {Function[]} plugins The plugins to add\n * @category Misc\n */\n addPlugins(...plugins) {\n InstancePlugin.initPlugins(this, ...plugins);\n }\n /**\n * Checks if instance has plugin.\n * @param {String|Function} pluginClassOrName Plugin or name to check for\n * @returns {Boolean}\n * @category Misc\n */\n hasPlugin(pluginClassOrName) {\n return this.getPlugin(pluginClassOrName) != null;\n }\n /**\n * Get a plugin instance.\n * @param {String|Function} pluginClassOrName\n * @returns {Core.mixin.InstancePlugin}\n * @category Misc\n */\n getPlugin(pluginClassOrName) {\n var _this$plugins;\n if (typeof pluginClassOrName === 'function') {\n pluginClassOrName = pluginClassOrName.$$name;\n }\n return (_this$plugins = this.plugins) === null || _this$plugins === void 0 ? void 0 : _this$plugins[pluginClassOrName];\n }\n // This does not need a className on Widgets.\n // Each *Class* which doesn't need 'b-' + constructor.name.toLowerCase() automatically adding\n // to the Widget it's mixed in to should implement thus.\n get widgetClass() {}\n});\n\nconst {\n defineProperty: defineProperty$6\n} = Reflect;\nlet performance$1;\nif (BrowserHelper.isBrowserEnv) {\n performance$1 = globalThis.performance;\n} else {\n performance$1 = {\n now() {\n return new Date().getTime();\n }\n };\n}\n/**\n * @module Core/mixin/Delayable\n */\n// Global timeout collections for tests\nlet globalDelays = null;\nif (VersionHelper.isTestEnv) {\n const bryntum = globalThis.bryntum || (globalThis.bryntum = {});\n globalDelays = bryntum.globalDelays = {\n timeouts: new Map(),\n intervals: new Map(),\n animationFrames: new Map(),\n idleCallbacks: new Map(),\n isEmpty(includeIntervals = false) {\n return globalDelays.timeouts.size + globalDelays.animationFrames.size + globalDelays.idleCallbacks.size + (includeIntervals ? globalDelays.intervals.size : 0) === 0;\n },\n /**\n * Returns filtered delays array\n * @param {Object} options\n * @param {String[]} [options.ignoreTimeouts] array of delays names to ignore\n * @param {Number} [options.maxDelay] maximum delay in milliseconds. Timeouts with bigger delay will be filtered out\n * @param {Boolean} [options.includeIntervals] include intervals\n * @returns {Object[]} array of filtered delays\n * @internal\n */\n getFiltered({\n ignoreTimeouts = [],\n maxDelay = 5000,\n includeIntervals = false\n }) {\n const result = [],\n scopes = ['timeouts', 'animationFrames', 'idleCallbacks'];\n if (includeIntervals) {\n scopes.push('intervals');\n }\n // Filter delays\n for (const scope of scopes) {\n const map = globalDelays[scope];\n for (const [, entry] of map.entries()) {\n if (!ignoreTimeouts.includes(entry.name) && (!Number.isInteger(entry.delay) || entry.delay < maxDelay)) {\n result.push(entry);\n }\n }\n }\n return result;\n }\n };\n}\nconst\n /**\n * Creates and returns a function that will call the user-supplied `fn`.\n *\n * @param {Core.mixin.Delayable} me\n * @param {Function} fn The user function to call when the timer fires.\n * @param {Function} wrapFn The function the user will call to start the timer.\n * @param {Object} options The invoke options.\n * @param {Array} [options.appendArgs] The argument list to append to those passed to the function.\n * @param {Object} [options.thisObj] The `this` reference for `fn`.\n * @returns {Function}\n * @private\n */\n makeInvoker = (me, fn, wrapFn, options) => {\n const named = typeof fn === 'string',\n appendArgs = (options === null || options === void 0 ? void 0 : options.appendArgs) || [],\n // The invoker fn is intended to be wired directly to native setTimeout/requestAnimationFrame/etc and so\n // it does not receive any arguments worth passing on to the user's fn. Those come from the original call\n // to the wrapFn.\n invoker = () => {\n wrapFn.timerId = null;\n wrapFn.lastCallTime = performance$1.now();\n // Grab args now and null the stored args out (to avoid leaks):\n const args = wrapFn.args;\n wrapFn.args = null;\n if (named) {\n me[fn](...args, ...appendArgs);\n } else {\n fn.call(me, ...args, ...appendArgs);\n }\n wrapFn.called = true;\n ++wrapFn.calls;\n };\n if (options) {\n me = options.thisObj || me;\n }\n // We put most everything as properties on the wrapFn so that it can all be inspected in the debugger (unlike\n // closure variables) and expected in tests.\n wrapFn.lastCallTime = -9e9; // performance.now() = 0 at start...\n wrapFn.calls = 0;\n wrapFn.invoker = invoker;\n invoker.wrapFn = wrapFn;\n return invoker;\n },\n /**\n * Decorates the supported `wrapFn` with additional methods and an `isPending` readonly\n * property. These decorations are available to user code to help manage the scheduling\n * behavior of the buffered function.\n *\n * @param {Core.mixin.Delayable} me\n * @param {Function} wrapFn The function the user will call to start the timer.\n * @param {String} cancelFn The name of the function that will cancel a timer.\n * @returns {Function} The `wrapFn` is returned.\n * @private\n */\n decorateWrapFn = (me, wrapFn, cancelFn = 'clearTimeout') => {\n wrapFn.cancel = () => {\n if (wrapFn.isPending) {\n me[cancelFn](wrapFn.timerId);\n // avoid leaks and cleanup:\n wrapFn.args = wrapFn.timerId = null;\n }\n };\n wrapFn.flush = () => {\n if (wrapFn.isPending) {\n me[cancelFn](wrapFn.timerId);\n wrapFn.timerId = null;\n // we don't call cancel() since it also sets args=null\n wrapFn.invoker();\n }\n };\n wrapFn.now = (...args) => {\n wrapFn.cancel();\n wrapFn.args = args;\n wrapFn.invoker();\n };\n wrapFn.resume = all => {\n const n = wrapFn.suspended;\n wrapFn.suspended = all || n < 1 ? 0 : n - 1;\n };\n wrapFn.suspend = () => {\n ++wrapFn.suspended;\n };\n wrapFn.immediate = false;\n wrapFn.suspended = 0;\n wrapFn.timerId = null;\n defineProperty$6(wrapFn, 'isPending', {\n get() {\n return wrapFn.timerId !== null;\n }\n });\n return wrapFn;\n };\n/**\n * Tracks setTimeout, setInterval and requestAnimationFrame calls and clears them on destroy.\n *\n * @example\n * someClass.setTimeout(() => console.log('hi'), 200);\n * someClass.setInterval(() => console.log('annoy'), 100);\n * // can also use named timeouts for easier tracking\n * someClass.setTimeout(() => console.log('named'), 300, 'named');\n * someClass.clearTimeout('named');\n *\n * @mixin\n */\nvar Delayable = (Target => class Delayable extends (Target || Base$1) {\n static get $name() {\n return 'Delayable';\n }\n static get declarable() {\n return [\n /**\n * This class property returns an object that specifies methods to wrap with configurable timer behaviors.\n *\n * It is used like so:\n * ```javascript\n * class Foo extends Base.mixin(Delayable) {\n * static get delayable() {\n * return {\n * expensiveMethod : 500\n * };\n * }\n *\n * expensiveMethod() {\n * this.things();\n * this.moreThings();\n * this.evenMoreThings();\n * }\n * }\n * ```\n * With the above in place, consider:\n * ```javascript\n * let instance = new Foo();\n *\n * instance.expensiveMethod();\n * ```\n * Instead of the above code immediately calling the `expensiveMethod()`, it will start a timer that will\n * invoke the method 500ms later. Because `expensiveMethod()` is an instance method, each instance of `Foo`\n * will have its own timer.\n *\n * NOTE: Only instance methods are currently supported (i.e., only non-`static` methods).\n *\n * #### Options\n * The value of each key configures how the method will be scheduled. If the value is a number, it is\n * promoted to a config object of `type='buffer'` as in the following:\n * ```javascript\n * class Foo extends Base.mixin(Delayable) {\n * static get delayable() {\n * return {\n * expensiveMethod : {\n * type : 'buffer',\n * delay : 500\n * }\n * };\n * }\n * }\n * ```\n * The `type` property of the config object must be one of three values. Other options can be provided\n * depending on the `type`:\n *\n * - `buffer`
\n * Other options:\n * - `delay` (Number) : The number of milliseconds to wait before calling the underlying method. A\n * value of 0 is equivalent to setting `immediate: true`.\n * - `immediate` (Boolean) : Set to `true` to call immediately (effectively disabling the buffer).\n * - `raf` (short for \"request animation frame\")
\n * - `idle` (short for \"request idle callback\") __Not available on Safari__
\n * Other options:\n * - `cancelOutstanding` (Boolean) : Set to `true` to cancel any pending animation frame requests and\n * schedule a new one on each call.\n * - `immediate` (Boolean) : Set to `true` to call immediately.\n * - `throttle`
\n * Other options:\n * - `delay` (Number) : The number of milliseconds to wait after each execution before another\n * execution takes place. A value of 0 is equivalent to setting `immediate: true`.\n * - `immediate` (Boolean) : Set to `true` to call immediately (effectively disabling the throttle).\n *\n * While `immediate: true` can be specified at the class level, it is more typical to set it on the\n * instance's method as described below.\n *\n * #### Delayable Method API\n * Delayable methods have a consistent API to manage their scheduling. This API is added to the methods\n * themselves.\n *\n * For example:\n * ```javascript\n * let instance = new Foo();\n *\n * instance.expensiveMethod(); // schedule a call in 500ms\n * instance.expensiveMethod.isPending; // true\n * instance.expensiveMethod.cancel();\n * instance.expensiveMethod.flush();\n * instance.expensiveMethod.now();\n *\n * instance.expensiveMethod.delay = 10;\n * instance.expensiveMethod(); // schedule a call in 10ms\n * ```\n *\n * ##### `isPending` (Boolean, readonly)\n * This boolean property will be `true` if a call has been scheduled, and false otherwise.\n *\n * ##### `cancel()`\n * Cancels a pending call if one has been scheduled. Otherwise this method does nothing.\n *\n * ##### `flush()`\n * Cancels the timer and causes the pending call to execute immediately. If there is no pending call, this\n * method does nothing.\n *\n * ##### `now()`\n * Cancels the timer (if one is pending) and executes the method immediately. If there is no pending call,\n * this method will still call the underlying method.\n *\n * @static\n * @member {Object} delayable\n * @internal\n */\n 'delayable'];\n }\n doDestroy() {\n const me = this;\n // Normally one would expect this call at the end of this method... but in this case we need to run cleanup\n // of this stuff after config nullification since those can trigger delayable method calls.\n super.doDestroy();\n if (me.timeoutIds) {\n me.timeoutIds.forEach((fn, id) => {\n var _globalDelays;\n if (typeof fn === 'function') {\n fn();\n }\n clearTimeout(id);\n (_globalDelays = globalDelays) === null || _globalDelays === void 0 ? void 0 : _globalDelays.timeouts.delete(id);\n });\n me.timeoutIds = null;\n }\n if (me.timeoutMap) {\n me.timeoutMap.forEach((name, id) => clearTimeout(id));\n me.timeoutMap = null;\n }\n if (me.intervalIds) {\n me.intervalIds.forEach(id => {\n var _globalDelays2;\n clearInterval(id);\n (_globalDelays2 = globalDelays) === null || _globalDelays2 === void 0 ? void 0 : _globalDelays2.intervals.delete(id);\n });\n me.intervalIds = null;\n }\n if (me.animationFrameIds) {\n me.animationFrameIds.forEach(id => {\n var _globalDelays3;\n cancelAnimationFrame(id);\n (_globalDelays3 = globalDelays) === null || _globalDelays3 === void 0 ? void 0 : _globalDelays3.animationFrames.delete(id);\n });\n me.animationFrameIds = null;\n }\n if (me.idleCallbackIds) {\n me.idleCallbackIds.forEach(id => {\n var _globalDelays4;\n cancelIdleCallback(id);\n (_globalDelays4 = globalDelays) === null || _globalDelays4 === void 0 ? void 0 : _globalDelays4.idleCallbacks.delete(id);\n });\n me.idleCallbackIds = null;\n }\n }\n /**\n * Check if a named timeout is active\n * @param name\n * @internal\n */\n hasTimeout(name) {\n var _this$timeoutMap;\n return Boolean((_this$timeoutMap = this.timeoutMap) === null || _this$timeoutMap === void 0 ? void 0 : _this$timeoutMap.has(name));\n }\n /**\n * Same as native setTimeout, but will be cleared automatically on destroy. If a propertyName is supplied it will\n * be used to store the timeout id.\n * @param {Object} timeoutSpec An object containing the details about that function, and the time delay.\n * @param {Function|String} timeoutSpec.fn The function to call, or name of function in this object to call. Used as the `name` parameter if a string.\n * @param {Number} timeoutSpec.delay The milliseconds to delay the call by.\n * @param {Object[]} timeoutSpec.args The arguments to pass.\n * @param {String} [timeoutSpec.name] The name under which to register the timer. Defaults to `fn.name`.\n * @param {Boolean} [timeoutSpec.runOnDestroy] Pass `true` if this function should be executed if the Delayable instance is destroyed while function is scheduled.\n * @param {Boolean} [timeoutSpec.cancelOutstanding] Pass `true` to cancel any outstanding invocation of the passed function.\n * @returns {Number}\n * @internal\n */\n setTimeout({\n fn,\n delay,\n name,\n runOnDestroy,\n cancelOutstanding,\n args\n }) {\n var _globalDelays6;\n if (arguments.length > 1 || typeof arguments[0] === 'function') {\n [fn, delay, name, runOnDestroy] = arguments;\n }\n if (typeof fn === 'string') {\n name = fn;\n } else if (!name) {\n name = fn.name || fn;\n }\n if (cancelOutstanding) {\n this.clearTimeout(name);\n }\n const me = this,\n timeoutIds = me.timeoutIds || (me.timeoutIds = new Map()),\n timeoutMap = me.timeoutMap || (me.timeoutMap = new Map()),\n timeoutId = setTimeout(() => {\n var _globalDelays5;\n if (typeof fn === 'string') {\n fn = me[name];\n }\n // Cleanup before invocation in case fn throws\n timeoutIds === null || timeoutIds === void 0 ? void 0 : timeoutIds.delete(timeoutId);\n timeoutMap === null || timeoutMap === void 0 ? void 0 : timeoutMap.delete(name);\n (_globalDelays5 = globalDelays) === null || _globalDelays5 === void 0 ? void 0 : _globalDelays5.timeouts.delete(timeoutId);\n fn.apply(me, args);\n }, delay);\n timeoutIds.set(timeoutId, runOnDestroy ? fn : true);\n // Commented out code is helpful when debugging timeouts in tests\n (_globalDelays6 = globalDelays) === null || _globalDelays6 === void 0 ? void 0 : _globalDelays6.timeouts.set(timeoutId, {\n fn,\n delay,\n name /*, stack : new Error().stack*/\n });\n if (name) {\n timeoutMap.set(name, timeoutId);\n }\n return timeoutId;\n }\n /**\n * clearTimeout wrapper, either call with timeout id as normal clearTimeout or with timeout name (if you specified\n * a name to setTimeout())\n * property to null.\n * @param {Number|String} idOrName timeout id or name\n * @internal\n */\n clearTimeout(idOrName) {\n var _this$timeoutIds, _globalDelays7;\n let id = idOrName;\n if (typeof id === 'string') {\n if (this.timeoutMap) {\n id = this.timeoutMap.get(idOrName);\n this.timeoutMap.delete(idOrName);\n } else {\n return;\n }\n }\n clearTimeout(id);\n (_this$timeoutIds = this.timeoutIds) === null || _this$timeoutIds === void 0 ? void 0 : _this$timeoutIds.delete(id);\n (_globalDelays7 = globalDelays) === null || _globalDelays7 === void 0 ? void 0 : _globalDelays7.timeouts.delete(id);\n }\n /**\n * clearInterval wrapper\n * @param {Number} id\n * @internal\n */\n clearInterval(id) {\n var _this$intervalIds, _globalDelays8;\n clearInterval(id);\n (_this$intervalIds = this.intervalIds) === null || _this$intervalIds === void 0 ? void 0 : _this$intervalIds.delete(id);\n (_globalDelays8 = globalDelays) === null || _globalDelays8 === void 0 ? void 0 : _globalDelays8.intervals.delete(id);\n }\n /**\n * Same as native setInterval, but will be cleared automatically on destroy\n * @param {Function} fn callback method\n * @param {Number} delay delay in milliseconds\n * @param {String} name delay name for debugging\n * @returns {Number}\n * @internal\n */\n setInterval(fn, delay, name) {\n var _globalDelays9;\n const intervalId = setInterval(fn, delay);\n (this.intervalIds || (this.intervalIds = new Set())).add(intervalId);\n (_globalDelays9 = globalDelays) === null || _globalDelays9 === void 0 ? void 0 : _globalDelays9.intervals.set(intervalId, {\n fn,\n delay,\n name\n });\n return intervalId;\n }\n /**\n * Relays to native requestAnimationFrame and adds to tracking to have call automatically canceled on destroy.\n * @param {Function} fn\n * @param {Object[]} [extraArgs] The argument list to append to those passed to the function.\n * @param {Object} [thisObj] `this` reference for the function.\n * @returns {Number}\n * @internal\n */\n requestAnimationFrame(fn, extraArgs = [], thisObj = this) {\n var _globalDelays11;\n const animationFrameIds = this.animationFrameIds || (this.animationFrameIds = new Set()),\n frameId = requestAnimationFrame(() => {\n var _globalDelays10;\n (_globalDelays10 = globalDelays) === null || _globalDelays10 === void 0 ? void 0 : _globalDelays10.animationFrames.delete(frameId);\n // [dongriffin 2022-01-19] It was observed that we can still be called even though we issued the\n // cancelAnimationFrame call. Since delete() returns true if our frameId was present and is now\n // removed, we can tell that we haven't been cancelled before we call our fn:\n animationFrameIds.delete(frameId) && fn.apply(thisObj, extraArgs);\n });\n animationFrameIds.add(frameId);\n (_globalDelays11 = globalDelays) === null || _globalDelays11 === void 0 ? void 0 : _globalDelays11.animationFrames.set(frameId, {\n fn,\n extraArgs,\n thisObj\n });\n return frameId;\n }\n /**\n * Relays to native requestIdleCallback and adds to tracking to have call automatically canceled on destroy.\n * @param {Function} fn\n * @param {Object[]} [extraArgs] The argument list to append to those passed to the function.\n * @param {Object} [thisObj] `this` reference for the function.\n * @returns {Number}\n * @internal\n */\n requestIdleCallback(fn, extraArgs = [], thisObj = this) {\n var _globalDelays13;\n const idleCallbackIds = this.idleCallbackIds || (this.idleCallbackIds = new Set()),\n frameId = requestIdleCallback(() => {\n var _globalDelays12;\n (_globalDelays12 = globalDelays) === null || _globalDelays12 === void 0 ? void 0 : _globalDelays12.idleCallbacks.delete(frameId);\n // Since delete() returns true if our frameId was present and is now\n // removed, we can tell that we haven't been cancelled before we call our fn:\n idleCallbackIds.delete(frameId) && fn.apply(thisObj, extraArgs);\n });\n idleCallbackIds.add(frameId);\n (_globalDelays13 = globalDelays) === null || _globalDelays13 === void 0 ? void 0 : _globalDelays13.idleCallbacks.set(frameId, {\n fn,\n extraArgs,\n thisObj\n });\n return frameId;\n }\n /**\n * Creates a function which will execute once, on the next animation frame. However many time it is\n * called in one event run, it will only be scheduled to run once.\n * @param {Function|String} fn The function to call, or name of function in this object to call.\n * @param {Object[]} [args] The argument list to append to those passed to the function.\n * @param {Object} [thisObj] `this` reference for the function.\n * @param {Boolean} [cancelOutstanding] Cancel any outstanding queued invocation upon call.\n * @internal\n */\n createOnFrame(fn, args = [], thisObj = this, cancelOutstanding) {\n let rafId;\n const result = (...callArgs) => {\n // Cancel if outstanding if requested\n if (rafId != null && cancelOutstanding) {\n this.cancelAnimationFrame(rafId);\n rafId = null;\n }\n if (rafId == null) {\n rafId = this.requestAnimationFrame(() => {\n if (typeof fn === 'string') {\n fn = thisObj[fn];\n }\n rafId = null;\n callArgs.push(...args);\n fn.apply(thisObj, callArgs);\n });\n }\n };\n result.cancel = () => this.cancelAnimationFrame(rafId);\n return result;\n }\n /**\n * Relays to native cancelAnimationFrame and removes from tracking.\n * @param {Number} handle\n * @internal\n */\n cancelAnimationFrame(handle) {\n var _this$animationFrameI, _globalDelays14;\n cancelAnimationFrame(handle);\n (_this$animationFrameI = this.animationFrameIds) === null || _this$animationFrameI === void 0 ? void 0 : _this$animationFrameI.delete(handle);\n (_globalDelays14 = globalDelays) === null || _globalDelays14 === void 0 ? void 0 : _globalDelays14.animationFrames.delete(handle);\n }\n /**\n * Relays to native cancelIdleCallback and removes from tracking.\n * @param {Number} handle\n * @internal\n */\n cancelIdleCallback(handle) {\n var _this$idleCallbackIds, _globalDelays15;\n cancelIdleCallback(handle);\n (_this$idleCallbackIds = this.idleCallbackIds) === null || _this$idleCallbackIds === void 0 ? void 0 : _this$idleCallbackIds.delete(handle);\n (_globalDelays15 = globalDelays) === null || _globalDelays15 === void 0 ? void 0 : _globalDelays15.idleCallbacks.delete(handle);\n }\n async nextAnimationFrame() {\n return new Promise(resolve => this.requestAnimationFrame(resolve));\n }\n /**\n * Wraps a function with another function that delays it specified amount of time, repeated calls to the wrapper\n * resets delay.\n * @param {Function|String} fn The function to call. If this is a string, it is looked up as a method on `this`\n * instance (or `options.thisObj` instead, if provided).\n * @param {Object|Number} options The delay in milliseconds or an options object.\n * @param {Number} options.delay The delay in milliseconds.\n * @param {Array} [options.appendArgs] The argument list to append to those passed to the function.\n * @param {Object} [options.thisObj] The `this` reference for the function.\n * @returns {Function} Wrapped function to call.\n * @internal\n */\n buffer(fn, options) {\n let delay = options;\n if (options && typeof options !== 'number') {\n // if (config object)\n delay = options.delay;\n } else {\n options = null;\n }\n const bufferWrapFn = (...params) => {\n if (bufferWrapFn.suspended) {\n return;\n }\n const {\n delay\n } = bufferWrapFn;\n bufferWrapFn.cancel();\n bufferWrapFn.called = false;\n bufferWrapFn.args = params;\n // If delay=0, the buffer has been disabled so always call immediately.\n if (bufferWrapFn.immediate || !delay) {\n invoker();\n } else {\n bufferWrapFn.timerId = this.setTimeout(invoker, delay);\n }\n },\n invoker = makeInvoker(this, fn, bufferWrapFn, options);\n bufferWrapFn.delay = delay;\n return decorateWrapFn(this, bufferWrapFn);\n }\n /**\n * Returns a function that when called will schedule a call to `fn` on the next animation frame.\n *\n * @param {Function|String} fn The function to call. If this is a string, it is looked up as a method on `this`\n * instance (or `options.thisObj` instead, if provided).\n * @param {Boolean|Object} [options] An options object or the `cancelOutstanding` boolean property of it.\n * @param {Boolean} [options.cancelOutstanding] Pass `true` to cancel any pending animation frame requests and\n * schedule a new one on each call to the returned function.\n * @param {Array} [options.appendArgs] The argument list to append to those passed to the function.\n * @param {Object} [options.thisObj] The `this` reference for the function.\n * @returns {Function}\n * @internal\n */\n raf(fn, options) {\n // NOTE: This method is only intended for use with `delayable`. It has a signature that is compatible\n // with `buffer()` and `throttle()`. The name is 'raf' to make the following aesthetically pleasing:\n //\n // class Foo extends Delayable() {\n // static get delayable() {\n // return {\n // bar : 'raf'\n // };\n // }\n // }\n let cancelOutstanding = options;\n if (options && typeof options !== 'boolean') {\n // if (config object)\n cancelOutstanding = options.cancelOutstanding;\n } else {\n options = null;\n }\n const rafWrapFn = (...params) => {\n if (rafWrapFn.suspended) {\n return;\n }\n // Reschedule the frame on each call if requested\n if (rafWrapFn.cancelOutstanding) {\n rafWrapFn.cancel();\n }\n rafWrapFn.called = false;\n rafWrapFn.args = params;\n if (rafWrapFn.immediate) {\n invoker();\n } else if (!rafWrapFn.isPending) {\n rafWrapFn.timerId = this.requestAnimationFrame(invoker);\n }\n },\n invoker = makeInvoker(this, fn, rafWrapFn, options);\n rafWrapFn.cancelOutstanding = cancelOutstanding;\n return decorateWrapFn(this, rafWrapFn, 'cancelAnimationFrame');\n }\n idle(fn, options) {\n let cancelOutstanding = options;\n if (options && typeof options !== 'boolean') {\n // if (config object)\n cancelOutstanding = options.cancelOutstanding;\n } else {\n options = null;\n }\n const idleWrapFn = (...params) => {\n if (idleWrapFn.suspended) {\n return;\n }\n // Reschedule the frame on each call if requested\n if (idleWrapFn.cancelOutstanding) {\n idleWrapFn.cancel();\n }\n idleWrapFn.called = false;\n idleWrapFn.args = params;\n if (idleWrapFn.immediate) {\n invoker();\n } else if (!idleWrapFn.isPending) {\n idleWrapFn.timerId = this.requestIdleCallback(invoker);\n }\n },\n invoker = makeInvoker(this, fn, idleWrapFn, options);\n idleWrapFn.cancelOutstanding = cancelOutstanding;\n // If the timer is still there in 100ms, then invoke it.\n this.setTimeout(() => this.idleCallbackIds.delete(idleWrapFn.timerId) && idleWrapFn.now(), 100);\n return decorateWrapFn(this, idleWrapFn, 'cancelIdleCallback');\n }\n /**\n * Create a \"debounced\" function which will call on the \"leading edge\" of a timer period.\n * When first invoked will call immediately, but invocations after that inside its buffer\n * period will be rejected, and *one* invocation will be made after the buffer period has expired.\n *\n * This is useful for responding immediately to a first mousemove, but from then on, only\n * calling the action function on a regular timer while the mouse continues to move.\n *\n * @param {Function|String} fn The function to call. If this is a string, it is looked up as a method on `this`\n * instance (or `options.thisObj` instead, if provided).\n * @param {Number|Object} options The milliseconds to wait after each execution before another execution takes place\n * or a object containing options.\n * @param {Object} [options.thisObj] `this` reference for the function.\n * @param {Array} [options.appendArgs] The argument list to append to those passed to the function.\n * @param {Function|String} [options.throttled] A function to call when the invocation is delayed due to buffer\n * time not having expired. If this is a string, it is looked up as a method on `this` instance (or `options.thisObj`\n * instead, if provided). When called, the same arguments are passed as would have been passed to `fn`, including\n * any `options.appendArgs`.\n * @internal\n */\n throttle(fn, options) {\n let delay = options,\n throttled;\n if (options && typeof options !== 'number') {\n // if (config object)\n delay = options.delay;\n throttled = options.throttled;\n } else {\n options = null;\n }\n const me = this,\n throttleWrapFn = (...args) => {\n if (throttleWrapFn.suspended) {\n return;\n }\n const {\n delay\n } = throttleWrapFn,\n elapsed = performance$1.now() - throttleWrapFn.lastCallTime;\n throttleWrapFn.args = args;\n // If it's been more then the delay period since we invoked, we can call it now.\n // Setting delay=0 effectively disables the throttle (which is the goal)\n if (throttleWrapFn.immediate || elapsed >= delay) {\n me.clearTimeout(throttleWrapFn.timerId);\n invoker();\n } else {\n // Kick off a timer for the requested period.\n if (!throttleWrapFn.isPending) {\n throttleWrapFn.timerId = me.setTimeout(invoker, delay - elapsed);\n throttleWrapFn.called = false;\n }\n if (throttled) {\n // Args have to be stored on the wrapFn for the invoker to pick them up:\n throttled.wrapFn.args = args;\n throttled();\n }\n }\n },\n invoker = makeInvoker(me, fn, throttleWrapFn, options);\n throttleWrapFn.delay = delay;\n if (throttled) {\n // Make an invoker for this callback to handle thisObj and typeof=string etc (pass a dud wrapFn):\n throttled = makeInvoker(me, throttled, () => {}, options);\n }\n return decorateWrapFn(me, throttleWrapFn);\n }\n static setupDelayable(cls) {\n cls.setupDelayableMethods(cls.delayable);\n }\n /**\n * This method initializes the `delayable` methods on this class.\n * @param {Object} delayable The `delayable` property.\n * @param {Function} [cls] This parameter will be used internally to process static methods.\n * @private\n */\n static setupDelayableMethods(delayable, cls = null) {\n const me = this,\n statics = delayable.static,\n target = cls || me.prototype;\n if (statics) {\n // TODO me.setupDelayableMethods(statics, me);\n delete delayable.static;\n }\n for (const name in delayable) {\n let options = delayable[name];\n const implName = name + 'Now',\n type = typeof options;\n if (!target[implName]) {\n // Only move foo() -> fooNow() if a base class hasn't done so already\n target[implName] = target[name];\n }\n if (type === 'number') {\n options = {\n type: 'buffer',\n delay: options\n };\n } else if (type === 'string') {\n options = {\n type: options\n };\n }\n // For instance methods, we place a getter on the prototype. When the method is first accessed from the\n // prototype, we create an instance-specific version by calling this.buffer()/throttle() (based on the type\n // desired) and set that as the instance-level property.\n defineProperty$6(target, name, {\n get() {\n const value = this[options.type]((...params) => {\n this[implName](...params);\n }, options);\n defineProperty$6(this, name, {\n value\n });\n return value;\n }\n });\n }\n }\n // This does not need a className on Widgets.\n // Each *Class* which doesn't need 'b-' + constructor.name.toLowerCase() automatically adding\n // to the Widget it's mixed in to should implement thus.\n get widgetClass() {}\n});\n\n/**\n * @module Core/state/StateStorage\n */\n/**\n * Base class representing interface used by the {@link Core.state.StateProvider} to actually store the state data.\n * This class is not intended to be used directly.\n *\n * This class has an interface similar to the [Storage API](https://developer.mozilla.org/en-US/docs/Web/API/Storage).\n */\nclass StateStorage {\n /**\n * Returns an object with all stored keys and their values as its properties\n * @member {Object}\n */\n get data() {\n return Object.create(null);\n }\n /**\n * Returns the stored keys as set by {@link #function-setItem}\n * @member {String[]}\n */\n get keys() {\n return [];\n }\n /**\n * Remove all stored keys\n */\n clear() {}\n /**\n * Returns key value as set by {@link #function-setItem}\n * @param {String} key\n * @returns {*}\n */\n getItem(key) {\n return null;\n }\n /**\n * Removes the specified key\n * @param {String} key\n */\n removeItem(key) {}\n /**\n * Sets the specified key to the given value\n * @param {String} key\n * @param {*} value The item value\n */\n setItem(key, value) {}\n}\nStateStorage._$name = 'StateStorage';\n\n/**\n * @module Core/state/StateProvider\n */\nconst empty = () => Object.create(null),\n getKeys = (prefix, pos = 0) => {\n const keys = [],\n count = localStorage.length;\n for (let key, i = 0; i < count; ++i) {\n key = localStorage.key(i);\n key.startsWith(prefix) && keys.push(key.slice(pos));\n }\n return keys;\n },\n Local = class extends StateStorage {\n constructor(stateProvider) {\n super();\n this.prefix = stateProvider.prefix || '';\n }\n get isLocal() {\n return true;\n }\n get data() {\n const data = empty(),\n keys = this.keys;\n for (const key of keys) {\n data[key] = this.getItem(key);\n }\n return data;\n }\n get keys() {\n return getKeys(this.prefix, this.prefix.length);\n }\n clear() {\n // It's important that we only clear our own StateProvider's keys, not all of localStorage. We get the\n // full keys not the suffixes since we're just going to call removeItem() with them...\n const keys = getKeys(this.prefix);\n for (const key of keys) {\n localStorage.removeItem(key);\n }\n }\n getItem(key) {\n const value = localStorage.getItem(this.prefix + key);\n // We handle the JSON translation at this layer because the Memory storage does not do any such pickling\n // of data but localStorage only handles strings\n return value === null ? value : JSON.parse(value);\n }\n removeItem(key) {\n return localStorage.removeItem(this.prefix + key);\n }\n setItem(key, value) {\n return localStorage.setItem(this.prefix + key, JSON.stringify(value));\n }\n },\n Memory = class extends StateStorage {\n constructor() {\n super();\n this.clear();\n }\n get isMemory() {\n return true;\n }\n get data() {\n return ObjectHelper.clone(this._data);\n }\n get keys() {\n return Object.keys(this._data);\n }\n clear() {\n this._data = empty();\n }\n getItem(key) {\n return key in this._data ? this._data[key] : null;\n }\n removeItem(key) {\n delete this._data[key];\n }\n setItem(key, value) {\n this._data[key] = value;\n }\n },\n nullStorage = new StateStorage(),\n storageTypes = {\n local: Local,\n memory: Memory\n };\n/**\n * Instances of this class are used to manage data storage for objects that use the {@link Core.mixin.State} mixin, i.e.\n * stateful components. When such components change their {@link Core.mixin.State#config-stateful} properties, they\n * notify the associated {@link Core.mixin.State#config-stateProvider}, which will save the changes after a short\n * delay (to allow multiple changes to coalesce into a single save operation).\n *\n * There are two (2) built-in types of storage supported by `StateProvider`:\n *\n * - `local` : Stores data in the browser's `localStorage`. Because of this, all `StateProvider` instances share their\n * state data if they have the same {@link #config-prefix}.\n * - `memory` : Stores data in the provider's memory. Each instance has its own storage. This is typically used when\n * the state data is saved to a backend server.\n *\n * ## Using `local` Storage\n *\n * The global `StateProvider` is typically to use `localStorage` for the page or application like so:\n *\n * ```javascript\n * StateProvider.setup('local');\n * ```\n * With this provider in place, all {@link Core.mixin.State stateful components} will save their\n * {@link Core.mixin.State#property-state} to this provider by default.\n *\n * This is the most typical, and recommended, strategy for proving data to stateful components. This approach allows\n * various widgets on the page to simply declare their {@link Core.mixin.State#config-stateId} to participate in the\n * saving and restoring of application state.\n *\n * Because this storage type uses `localStorage`, the `StateProvider` applies a string prefix to isolate its data from\n * other users of `localStorage`. The default prefix is `'bryntum-state:'`, but this can be configured to a different\n * value. This could be desired, for example, to isolate state data from multiple pages or for version changes.\n *\n * ```javascript\n * StateProvider.setup({\n * storage : 'local',\n * prefix : 'myApp-v1:'\n * });\n * ```\n *\n * ## Using `memory` Storage\n *\n * In some applications it may be desirable to save state to a server and restore it on other devices for the user.\n * Because state data is consumed synchronously, and server I/O is asynchronous, the `StateProvider` can be configured\n * to use `'memory'` storage and the actual state data can be loaded/saved by the application.\n *\n * Two factors are important to consider before deciding to save application state on the server (beyond the async\n * adaptation):\n *\n * - State properties are often more of a reflection of the user's device than they are application preferences\n * and, therefore, may not apply well on other devices.\n * - Potentially undesired application state will not be cleared by clearing local browser user data (a common\n * troubleshooting strategy) and will follow the user to other browsers (another common troubleshooting technique).\n *\n * The use this type of storage, the global `StateProvider` is configured like so:\n *\n * ```javascript\n * StateProvider.setup('memory');\n * ```\n * In this scenario, application code would download the user's state and use {@link #property-data} to populate\n * the {@link #property-instance-static StateProvider.instance}. In this case, the {@link #event-save} event is used\n * to save the data back to the server when it changes.\n *\n * See [state](https://bryntum.com/examples/grid/state) demo for a usage example.\n */\nclass StateProvider extends Base$1.mixin(Delayable, Events) {\n static get $name() {\n return 'StateProvider';\n }\n static get configurable() {\n return {\n /**\n * The key prefix applied when using the `'local'` {@link #config-storage} type.\n * @config {String}\n * @default\n */\n prefix: 'bryntum-state:',\n /**\n * Storage instance\n * @member {Core.state.StateStorage} storage\n */\n /**\n * One of the following storage types:\n * - `local` : Stores data in the browser's `localStorage` using the {@link #config-prefix}.\n * - `memory` : Stores data in the provider's memory.\n *\n * @config {'local'|'memory'|Core.state.StateStorage}\n * @default\n */\n storage: 'local'\n };\n }\n static get delayable() {\n /*\n The StateProvider uses a delayed write to save stateful components in batches. To illustrate, consider the\n \"collapsed\" config for a Panel that has been marked as \"stateful\":\n App Stateful State\n Code Component Provider\n : : :\n | .collapsed=true : :\n |---------------------------->| :\n | onConfigChange() +--| :\n | | | :\n | +->| :\n | saveState() +--| :\n | | | :\n | +->| saveStateful() :\n | |-------------------------->|\n | | | pendingSaves.push()\n | | |----+ writeStatefuls()\n | .collapsed=true |<..........................: :\n |<............................: : : (maybe other changes)\n : : : :\n : : |<---+ (50 ms later)\n : : | writeStatefuls()\n : : saveState({ |\n : : immediate:true}) | <---------------+\n : |<--------------------------| \\\n : | setValue() | \\\n : |-------------------------->| \\\n : | | .trigger('set') ) one or more of these\n : |<..........................| /\n : | saveState() | /\n : :..........................>| /\n : : | <---------------+\n : : |\n : : | .trigger('save')\n : : |\n : : :....> writeStatefuls()\n : : :\n */\n return {\n writeStatefuls: 50\n };\n }\n /**\n * The default {@link Core.mixin.State#config-stateProvider} for stateful objects.\n * @property {Core.state.StateProvider}\n */\n static get instance() {\n return this._instance;\n }\n static set instance(inst) {\n if (inst == null) {\n inst = nullProvider;\n } else {\n if (typeof inst === 'string' || ObjectHelper.isClass(inst) || inst instanceof StateStorage) {\n inst = {\n storage: inst\n };\n }\n if (ObjectHelper.isObject(inst)) {\n inst = new StateProvider(inst);\n }\n }\n this._instance = inst;\n }\n /**\n * Initializes the default `StateProvider` instance for the page. This method can be passed an instance or one of\n * the following type aliases:\n *\n * - `'local'` : use `localStorage` to store application state (most common)\n * - `'memory'` : holds application state in the `StateProvider` instance (used when state is saved to a server)\n *\n * Once the `StateProvider` is initialized, components that use {@link Core.mixin.State} and assign components a\n * {@link Core.mixin.State#config-stateId} will use this default provider to automatically save and restore their\n * state.\n *\n * @param {'local'|'memory'|Core.state.StateProvider} inst The state provider storage type ('local' or 'memory') or\n * the `StateProvider` instance.\n * @returns {Core.state.StateProvider}\n */\n static setup(inst) {\n this.instance = inst; // use smart setter\n return this.instance;\n }\n doDestroy() {\n self.writeStatefuls.flush();\n super.doDestroy();\n }\n /**\n * On read, this property returns all state data stored in the provider. On write, this property _adds_ all the\n * given values to the state provider's data. To replace the data, call {@link #function-clear} before assigning\n * this property. This is used to bulk populate this `StateProvider` with data for stateful components.\n * @member {Object}\n */\n get data() {\n return this.storage.data;\n }\n set data(data) {\n if (!data) {\n this.clear();\n } else {\n for (const key in data) {\n this.setValue(key, data[key]);\n }\n }\n }\n /**\n * Clears all state date\n * @returns {Core.state.StateProvider} this instance\n */\n clear() {\n this.storage.clear();\n return this;\n }\n changeStorage(storage) {\n if (storage == null) {\n storage = nullStorage;\n } else {\n if (typeof storage === 'string') {\n if (!storageTypes[storage]) {\n throw new Error(`Invalid storage type \"${storage}\" (expected one of: \"${Object.keys(storageTypes).join('\", \"')}\")`);\n }\n storage = storageTypes[storage];\n }\n if (ObjectHelper.isClass(storage)) {\n storage = new storage(this);\n }\n }\n return storage;\n }\n /**\n * This method is called to schedule saving the given `stateful` object.\n * @param {Core.mixin.State} stateful The stateful object to save.\n * @param {Object} [options] An object of options that affect the state saving process.\n * @param {String} [options.id] The key for the saved state.\n * @param {Boolean} [options.immediate] Pass `true` to save the data synchronously instead of on a delay.\n * @internal\n */\n saveStateful(stateful, options) {\n (this.pendingSaves || (this.pendingSaves = [])).push([stateful, options]);\n this.writeStatefuls();\n }\n /**\n * A delayable method that flushes pending stateful objects.\n * @private\n */\n writeStatefuls() {\n const me = this,\n {\n pendingSaves\n } = me,\n n = pendingSaves === null || pendingSaves === void 0 ? void 0 : pendingSaves.length,\n stateIds = [],\n saved = [];\n me.pendingSaves = null;\n if (n) {\n for (let options, stateful, stateId, i = 0; i < n; ++i) {\n [stateful, options] = pendingSaves[i];\n if (!stateful.isDestroying && stateful.isSaveStatePending) {\n stateId = stateful.saveState(_objectSpread2(_objectSpread2({}, options), {}, {\n immediate: true\n }));\n if (stateId) {\n stateIds.push(stateId);\n saved.push(stateful);\n }\n }\n }\n if (stateIds.length) {\n /**\n * Triggered after one or more stateful objects save their state to the state provider. This event can\n * be used to save state to a backend server.\n *\n * For example, to save the page's state object as a single object on the server:\n *\n * ```javascript\n * StateProvider.instance.on({\n * save() {\n * const data = StateProvider.instance.data;\n *\n * // TODO save \"data\" to server\n * }\n * });\n * ```\n *\n * Or, to save individual stateful components to the server:\n *\n * ```javascript\n * StateProvider.instance.on({\n * save({ stateIds }) {\n * for (const stateId of stateIds) {\n * const data = StateProvider.instance.getValue(stateId);\n *\n * if (data == null) {\n * // TODO remove \"stateId\" from the server\n * }\n * else {\n * // TODO save new \"data\" for \"stateId\" to the server\n * }\n * }\n * }\n * });\n * ```\n *\n * Multi-page applications should probably include a page identifier in addition to the `stateId` to\n * prevent state from one page affecting other pages. If there are common components across all (or\n * many) pages, the `stateId` values would need to be assigned with all pages in mind.\n *\n * @event save\n * @param {Core.state.StateProvider} source The source of the event\n * @param {String[]} stateIds An array of `stateId` values that were saved to the state provider.\n * @param {Core.mixin.State[]} saved An array of stateful objects saved just saved to state provider\n * storage, in the same order as the `stateIds` array.\n */\n me.trigger('save', {\n stateIds,\n saved\n });\n }\n }\n }\n /**\n * Returns the stored state given its `key`.\n * @param {String} key The identifier of the state to return.\n * @returns {Object}\n */\n getValue(key) {\n this.writeStatefuls.flush();\n return this.storage.getItem(key);\n }\n /**\n * Stores the given state `value` under the specified `key`.\n * @param {String} key The identifier of the state value.\n * @param {Object} value The state value to set.\n * @returns {Core.state.StateProvider} this instance\n */\n setValue(key, value) {\n const me = this,\n {\n storage\n } = me,\n was = me.getValue(key);\n if (value != null) {\n storage.setItem(key, value);\n /**\n * Triggered after an item is stored to the state provider.\n * @event set\n * @param {Core.state.StateProvider} source The source of the event\n * @param {String} key The name of the stored item.\n * @param {*} value The value of the stored item.\n * @param {*} was The previous value of the stored item.\n */\n me.trigger('set', {\n key,\n value,\n was\n });\n } else if (was !== null) {\n storage.removeItem(key);\n /**\n * Triggered after an item is removed from the state provider.\n * @event remove\n * @param {Core.state.StateProvider} source The source of the event\n * @param {String} key The name of the removed item.\n * @param {*} was The value of the removed item.\n */\n me.trigger('remove', {\n key,\n was\n });\n }\n return me;\n }\n}\nconst nullProvider = new StateProvider({\n storage: nullStorage\n});\nStateProvider._instance = nullProvider;\nStateProvider._$name = 'StateProvider';\n\n//import Config from '../Config.js';\n/**\n * @module Core/mixin/State\n */\nconst primitiveRe = /boolean|number|string/;\n/**\n * A mixin that handles accessing, saving, and restoring an object's persistent state.\n *\n * ## Using Stateful Components\n *\n * Instances of classes that use this mixin (i.e., \"stateful components\") have a {@link #property-state} property that\n * provides read/write access to their persistable state in the form of a simple object. These state objects can be\n * saved and restored under application control, e.g., using `localStorage`.\n *\n * This approach can be streamlined using a {@link Core.state.StateProvider} either by setting the\n * {@link Core.state.StateProvider#property-instance-static default state provider} or by using an instance-level\n * {@link #config-stateProvider} config.\n *\n * When using a state provider, stateful components with a {@link #config-stateId} or an\n * {@link Core.widget.Widget#config-id} will automatically save (see {@link #function-saveState}) and restore\n * (see {@link #function-loadState}) their `state`. This use of the `id` as a `stateId` can be disabled by assigning\n * the {@link #config-stateful} config to `false`. When using a `stateId` and a state provider, it is not necessary to\n * call the {@link #function-loadState} and {@link #function-saveState} methods directly.\n *\n * ### Simple vs Complex State\n *\n * Some stateful components (e.g., {@link Core.widget.Panel panels}) have state that can be described purely by their\n * config properties. For these components, the {@link #config-stateful} config can be used to control which config\n * properties to include in their persistent state. For example:\n *\n * ```javascript\n * const mainPanel = new Panel({\n * collapsible : true,\n * stateId : 'mainPanel',\n * stateful : ['collapsed']\n * });\n * ```\n *\n * Other components have a complex state (e.g., `GridState`), and do not use the `stateful` config in this way. In all\n * other ways, however, these components behave the same as their simple state counterparts.\n *\n * ## Implementing Stateful Components\n *\n * Implementors of stateful components have two main design points to consider:\n *\n * - Getting and setting their persistent {@link #property-state} object.\n * - Initiating calls to {@link #function-saveState} when the object's persistent state changes.\n *\n * ### Persistent State\n *\n * For simple cases, the {@link #config-stateful} config can be set to the list of config property names that should be\n * saved:\n *\n * ```javascript\n * class MyStatefulComponent extends Base.mixin(State) {\n * static get configurable() {\n * return {\n * stateful : ['text', 'size']\n * };\n * }\n * }\n * ```\n *\n * While the `stateful` config supports an object form (where keys with truthy values are the config names), this form\n * is typically reserved for configuring instances.\n *\n * Classes can choose to implement the {@link #function-getState} and {@link #function-applyState} methods to enhance\n * the `state` object with data not easily mapped to config properties. These method can call their `super` methods or\n * fully replace them.\n *\n * ```javascript\n * class MyStatefulComponent extends Base.mixin(State) {\n * getState() {\n * return {\n * text : this.text,\n * size : this.size\n * };\n * }\n *\n * applyState(state) {\n * this.text = state.text;\n * this.size = state.size;\n * }\n * }\n * ```\n *\n * ### Saving State\n *\n * When the persistent state of a stateful component changes, it must call {@link #function-saveState}. This method\n * schedules an update of the component's persistence {@link #property-state} with the appropriate\n * {@link #config-stateProvider}. When a config property named in the {@link #config-stateful} config changes, this\n * call will be made automatically. This means that even if a component replaces {@link #function-getState} and\n * {@link #function-applyState}, it can still be helpful to specify a value for the `stateful` config.\n *\n * ```javascript\n * class MyStatefulComponent extends Base.mixin(State) {\n * static get configurable() {\n * return {\n * stateful : ['text', 'size']\n * };\n * }\n *\n * getState() { ... }\n * applyState(state) { ... }\n * }\n * ```\n *\n * Another way to ensure {@link #function-saveState} is called when necessary is to use {@link #config-statefulEvents}.\n *\n * ```javascript\n * class MyStatefulComponent extends Base.mixin(State) {\n * static get configurable() {\n * return {\n * statefulEvents : ['change', 'resize']\n * };\n * }\n * }\n * ```\n *\n * @mixin\n */\nvar State = (Target => {\n var _class;\n return _class = class State extends (Target || Base$1) {\n afterConstruct() {\n super.afterConstruct();\n this.loadState();\n }\n finalizeInit() {\n // For widgets, this should happen before rendering which happens in Widget.finalizeInit():\n this.loadState();\n super.finalizeInit();\n }\n /**\n * Returns `true` if this instance implements the {@link Core.mixin.State} interface.\n * @property {Boolean}\n * @readonly\n */\n get isStateful() {\n // TODO consider renaming this mixin to Core.mixin.Stateful since \"foo.isState\" doesn't look/feel right...\n return true;\n }\n /**\n * Returns `true` if this instance is ready to participate in state activities.\n * @property {Boolean}\n * @readonly\n * @internal\n */\n get isStatefulActive() {\n // If a widget is rendered via appendTo (for example), this happens inside construct(), before we are called\n // in afterConstruct(). When the Widget uses Responsive mixin, that will trigger its initial responsive update.\n // In short, when isResponsivePending, the Widget is Responsive _and_ has not yet determined its responsiveState.\n // In this case we do NOT want to activate statefulness.\n // Further, if we are updating configs from a responsiveUpdate, we do not want to save to state.\n return !this.statefulSuspended && !this.isResponsivePending && !this.isResponsiveUpdating;\n }\n // state\n /**\n * Gets or sets a component's state\n * @property {Object}\n * @category State\n */\n get state() {\n return this._state = this.getState();\n }\n set state(state) {\n this._state = state;\n if (state) {\n this.applyState(state);\n }\n }\n // statefulEvents\n updateStatefulEvents(events) {\n const me = this,\n listeners = {\n name: 'statefulEvents',\n thisObj: me\n };\n me.detachListeners(listeners.name);\n if (events) {\n if (typeof events === 'string') {\n events = StringHelper.split(events);\n } else if (!Array.isArray(events)) {\n events = ObjectHelper.getTruthyKeys(events);\n }\n if (events.length) {\n var _me$on;\n for (const event of events) {\n listeners[event] = 'onStatefulEvent';\n }\n (_me$on = me.on) === null || _me$on === void 0 ? void 0 : _me$on.call(me, listeners);\n }\n }\n }\n // statefulId\n /**\n * Returns the state key to use for this instance. This will be either the {@link #config-stateId} or the\n * {@link Core.widget.Widget#config-id} (if explicitly specified and {@link #config-stateful} is not `false`).\n * @property {String}\n * @category State\n * @internal\n */\n get statefulId() {\n const me = this,\n {\n responsiveState\n } = me;\n let statefulId = me.stateId;\n if (statefulId == null && me.hasGeneratedId === false && me.stateful !== false) {\n statefulId = me.id;\n }\n if (statefulId && responsiveState) {\n statefulId = `${statefulId}[${responsiveState}]`; // ex = 'foo[small]'\n }\n\n return statefulId;\n }\n // statefulness\n /**\n * Returns an object whose truthy keys are the config properties to include in this object's {@link #property-state}.\n * @property {Object}\n * @category State\n * @readonly\n * @private\n */\n get statefulness() {\n const {\n stateful\n } = this;\n return Array.isArray(stateful) ? ObjectHelper.createTruthyKeys(stateful) : stateful;\n }\n // stateProvider\n get stateProvider() {\n return this._stateProvider || StateProvider.instance;\n }\n //---------------------------------------------------------------------------------------------------------------\n // Methods\n /**\n * Applies the given `state` to this instance.\n *\n * This method is not called directly, but is called when the {@link #property-state} property is assigned a value.\n *\n * This method is implemented by derived classes that have complex state which exceeds the simple list of config\n * properties provided by {@link #config-stateful}. In these cases, the `super` method can be called to handle any\n * config properties that are part of the complex state. The default implementation of this method will only assign\n * those config properties listed in {@link #config-stateful} from the provided `state` object.\n *\n * @param {Object} state The state object to apply to this instance.\n * @category State\n */\n applyState(state) {\n state = this.pruneState(state);\n if (state) {\n this.setConfig(state);\n }\n }\n /**\n * Returns this object's state information.\n *\n * This method is not called directly, but is called to return the value of the {@link #property-state} property.\n *\n * This method is implemented by derived classes that have complex state which exceeds the simple list of config\n * properties provided by {@link #config-stateful}. In these cases, the `super` method can be called to gather the\n * config properties that are part of the complex state. The default implementation of this method will only copy\n * those config properties listed in {@link #config-stateful} to the returned `state` object.\n *\n * @returns {Object}\n * @category State\n */\n getState() {\n const me = this,\n {\n statefulness\n } = me;\n let state = null,\n key,\n value;\n if (statefulness) {\n state = {};\n for (key in statefulness) {\n if (statefulness[key]) {\n var _value, _me$initialConfig;\n value = me[key];\n if ((_value = value) !== null && _value !== void 0 && _value.isStateful) {\n value = value.state; // e.g.: stateful : { store : true }\n } else if (value === ((_me$initialConfig = me.initialConfig) === null || _me$initialConfig === void 0 ? void 0 : _me$initialConfig[key]) || !primitiveRe.test(typeof value)) {\n continue; // ignore configs that have their initial value or aren't primitives\n }\n\n state[key] = value;\n }\n }\n }\n return state;\n }\n /**\n * Loads this object's state from its {@link #config-stateProvider} and applies it to its {@link #property-state}.\n *\n * This method only acts upon its first invocation for a given instance (unless `true` is passed for the `reload`\n * parameter). This allows for flexibility in the timing of that call during the early stages of the instances'\n * lifecycle. To reload the state after this time, manually assign the desired value to the {@link #property-state}\n * property or call this method and pass `reload` as `true`.\n *\n * This method is called automatically during construction when a {@link #config-stateId} or (in some cases) an\n * explicit {@link Core.widget.Widget#config-id} is provided.\n *\n * @param {String} [stateId] An overriding key to use instead of this object's {@link #config-stateId}.\n * @param {Boolean} [reload=false] Pass `true` to load the state even if previously loaded.\n * @category State\n */\n loadState(stateId, reload) {\n if (typeof stateId === 'boolean') {\n reload = stateId;\n stateId = null;\n }\n const me = this,\n {\n statefulLoaded\n } = me;\n if (me.isStatefulActive && (reload || !statefulLoaded)) {\n const state = me.loadStatefulData(stateId || (stateId = me.statefulId));\n if (!statefulLoaded && stateId) {\n // whether we have state data or not, we attempted to load it, so track the defaults and load attempt\n me.defaultState = me.state;\n me.statefulLoaded = true;\n }\n if (state) {\n me.state = state;\n }\n }\n }\n loadStatefulData(stateId) {\n var _this$stateProvider;\n stateId = this.isStatefulActive ? stateId || this.statefulId : null;\n return stateId && ((_this$stateProvider = this.stateProvider) === null || _this$stateProvider === void 0 ? void 0 : _this$stateProvider.getValue(stateId));\n }\n resetDefaultState() {\n if (this.defaultState) {\n this.state = this.defaultState;\n }\n }\n resumeStateful(full = false) {\n this.statefulSuspended = full ? 0 : Math.max(this.statefulSuspended - 1, 0);\n }\n /**\n * Saves this object's state to its {@link #config-stateProvider}.\n *\n * When a {@link #config-stateId} or (in some cases) an explicit {@link Core.widget.Widget#config-id} is provided,\n * this method will be called automatically any time a config property listed in {@link #config-stateful} changes or\n * when a {@link #config-statefulEvents stateful event} is fired.\n *\n * Derived classes are responsible for calling this method whenever the persistent {@link #property-state} of the\n * object changes.\n *\n * @param {Object|String} [options] Options that affect the state saving process or, if a string, the state `id`.\n * @param {String} [options.id] The state id for the saved state (overrides {@link #config-stateId}).\n * @param {Boolean} [options.immediate] Pass `true` to save the data synchronously instead of on a delay.\n * @category State\n */\n saveState(options) {\n if (typeof options === 'string') {\n options = {\n id: options\n };\n } else {\n options = options || {};\n }\n const me = this,\n {\n stateProvider\n } = me,\n statefulId = options.id || me.isStatefulActive && me.statefulId;\n if (statefulId && stateProvider) {\n if (options.immediate) {\n me.isSaveStatePending = false;\n stateProvider.setValue(statefulId, me.state);\n } else if (!me.isSaveStatePending) {\n me.isSaveStatePending = true;\n stateProvider.saveStateful(me, options);\n }\n return statefulId;\n }\n }\n suspendStateful() {\n ++this.statefulSuspended;\n }\n //---------------------------------------------------------------------------------------------------------------\n // Private / Internal\n onConfigChange({\n name,\n value,\n was,\n config\n }) {\n super.onConfigChange({\n name,\n value,\n was,\n config\n });\n if (!this.isConstructing && this.isStatefulActive && this.statefulId) {\n const {\n stateful\n } = this;\n if (Array.isArray(stateful) ? stateful.includes(name) : stateful === null || stateful === void 0 ? void 0 : stateful[name]) {\n this.saveState();\n }\n }\n }\n onStatefulEvent() {\n if (!this.isConstructing) {\n this.saveState();\n }\n }\n /**\n * Returns an object that copies the {@link #config-stateful} config properties from the provided `state` object.\n *\n * @param {Object} state A state object from which to copy stateful configs.\n * @returns {Object}\n * @category State\n * @private\n */\n pruneState(state) {\n const {\n statefulness\n } = this;\n if (statefulness) {\n const pruned = {};\n for (const key in state) {\n if (statefulness[key]) {\n pruned[key] = state[key];\n }\n }\n state = pruned;\n }\n return state;\n }\n //---------------------------------------------------------------------------------------------------------------\n // This does not need a className on Widgets.\n // Each *Class* which doesn't need 'b-' + constructor.name.toLowerCase() automatically adding\n // to the Widget it's mixed in to should implement thus.\n get widgetClass() {}\n }, _defineProperty(_class, \"$name\", 'State'), _defineProperty(_class, \"configurable\", {\n /**\n * This value can be one of the following:\n *\n * - `false` to not use an explicitly assigned {@link Core.widget.Widget#config-id} as the component's\n * {@link #config-stateId} (this is only necessary when there is a {@link #config-stateProvider}).\n * - An array of strings naming the config properties to save in the component's {@link #property-state}\n * object.\n * - An object whose truthy keys are the config properties to save in the component's {@link #property-state}\n * object.\n *\n * These last two uses of the `stateful` config property do not apply to components that have a complex\n * state, as described in the {@link Core.mixin.State State mixin documentation}.\n *\n * This config property is typically set by derived classes to a value including any config property that\n * the user can affect via the user interface. For example, the {@link Core.widget.Panel#config-collapsed}\n * config property is listed for a {@link Core.widget.Panel} since the user can toggle this config property\n * using the {@link Core.widget.panel.PanelCollapser#config-tool collapse tool}.\n *\n * @config {Boolean|Object|String[]}\n * @category State\n */\n stateful: null,\n /**\n * The events that, when fired by this component, should trigger it to save its state by calling\n * {@link #function-saveState}.\n *\n * ```javascript\n * class MyStatefulComponent extends Base.mixin(State) {\n * static get configurable() {\n * return {\n * statefulEvents : [ 'change', 'resize' ]\n * };\n * }\n * }\n * ```\n * In the above example, {@link #function-saveState} will be called any time an instance of this class\n * fires the `change` or `resize` event.\n *\n * This config is typically set by derived classes as a way to ensure {@link #function-saveState} is called\n * whenever their persistent state changes.\n *\n * @config {Object|String[]}\n * @category State\n * @default\n */\n statefulEvents: {\n $config: {\n merge: 'classList'\n },\n value: ['stateChange']\n },\n /**\n * The key to use when saving this object's state in the {@link #config-stateProvider}. If this config is\n * not assigned, and {@link #config-stateful} is not set to `false`, the {@link Core.widget.Widget#config-id}\n * (if explicitly specified) will be used as the `stateId`.\n *\n * If neither of these is given, the {@link #function-loadState} and {@link #function-saveState} methods\n * will need to be called directly to make use of the `stateProvider`.\n *\n * For single page applications (SPA's), or multi-page applications (MPA's) that have common, stateful\n * components on multiple pages, the `stateId` should be unique across all stateful components (similar to DOM\n * element id's). MPA's that want each page to be isolated can more easily achieve that isolation using the\n * {@link Core.state.StateProvider#config-prefix}.\n *\n * @config {String}\n * @category State\n */\n stateId: null,\n /**\n * The `StateProvider` to use to save and restore this object's {@link #property-state}. By default, `state`\n * will be saved using the {@link Core.state.StateProvider#property-instance-static default state provider}.\n *\n * This config is useful for multi-page applications that have a set of common components that want to share\n * state across pages, as well as other components that want their state to be isolated. One of these groups\n * of stateful components could be assigned an explicit `stateProvider` while the other group could use the\n * default state provider.\n *\n * @config {Core.state.StateProvider}\n * @category State\n */\n stateProvider: null\n }), _defineProperty(_class, \"prototypeProperties\", {\n statefulLoaded: false,\n statefulSuspended: 0\n }), _class;\n});\n\n/**\n * @module Core/mixin/Identifiable\n */\nconst\n // Id generation should be on a per page basis, not per module\n idCounts$1 = ObjectHelper.getPathDefault(globalThis, 'bryntum.idCounts', Object.create(null)),\n idTypes = {\n string: 1,\n number: 1\n };\n/**\n * A mixin which provides identifier services such as auto-creation of `id`s and registration and\n * lookup of instances by `id`.\n *\n * @mixin\n * @internal\n */\nvar Identifiable = (Target => class Identifiable extends (Target || Base$1) {\n static get $name() {\n return 'Identifiable';\n }\n static get declarable() {\n return ['identifiable'];\n }\n static get configurable() {\n return {\n /**\n * The id of this object. If not specified one will be generated. Also used for lookups through the\n * static `getById` of the class which mixes this in. An example being {@link Core.widget.Widget}.\n *\n * For a {@link Core.widget.Widget Widget}, this is assigned as the `id` of the DOM\n * {@link Core.widget.Widget#config-element element} and must be unique across all elements\n * in the page's `document`.\n * @config {String}\n * @category Common\n */\n id: ''\n };\n }\n static setupIdentifiable(cls, meta) {\n const {\n identifiable\n } = cls;\n identifiable.idMap = Object.create(null);\n Reflect.defineProperty(cls, 'identifiable', {\n get() {\n return identifiable;\n }\n });\n }\n doDestroy() {\n this.constructor.unregisterInstance(this);\n super.doDestroy();\n }\n changeId(id) {\n return (this.hasGeneratedId /* assignment */ = !id) ? this.generateAutoId() : id;\n }\n updateId(id, oldId) {\n const me = this,\n C = me.constructor;\n oldId && C.unregisterInstance(me, oldId);\n if (!me.hasGeneratedId || C.identifiable.registerGeneratedId !== false) {\n C.registerInstance(me, id);\n }\n }\n /**\n * This method generates an id for this instance.\n * @returns {String}\n * @internal\n */\n generateAutoId() {\n return this.constructor.generateId(`b-${this.$$name.toLowerCase()}-`);\n }\n static get all() {\n // not documented here since type of array is not knowable... documented at mixin target class\n return Object.values(this.identifiable.idMap);\n }\n /**\n * Generate a new id, using an internal counter and a prefix.\n * @param {String} prefix Id prefix\n * @returns {String} Generated id\n */\n static generateId(prefix = 'generatedId') {\n // This produces \"b-foo-1, b-foo-2, ...\" for each prefix independently of the others. In other words, it makes\n // id's more stable since the counter is on a per-class basis.\n return prefix + (idCounts$1[prefix] = (idCounts$1[prefix] || 0) + 1);\n }\n static registerInstance(instance, instanceId = instance.id) {\n const {\n idMap\n } = this.identifiable;\n // Code editor sets `disableThrow` to not get conflicts when loading the same module again\n if (instanceId in idMap && !this.disableThrow) {\n throw new Error('Id ' + instanceId + ' already in use');\n }\n idMap[instanceId] = instance;\n }\n /**\n * Unregister Identifiable instance, normally done on destruction\n * @param {Object} instance Object to unregister\n * @param {String} id The id of the instance to unregister.\n */\n static unregisterInstance(instance, id = instance.id) {\n const {\n idMap\n } = this.identifiable;\n // ID may be passed, for example if the instance is destroyed and can no longer yield an id.\n if (idTypes[typeof instance]) {\n delete idMap[instance];\n }\n // Have to check for identity in case another instance by the same id has been created.\n // Allow that to be overridden. Stores have always just evicted the previous owner of their IDs\n else if (idMap[id] === instance) {\n delete idMap[id];\n }\n }\n static getById(id) {\n const idMap = this.identifiable.idMap;\n if (idMap) {\n return idMap[id];\n }\n }\n static get registeredInstances() {\n const idMap = this.identifiable.idMap;\n return idMap ? Object.values(idMap) : [];\n }\n});\n\n/**\n * @module Core/data/stm/mixin/ModelStm\n */\nconst STM_PROP$1 = Symbol('STM_PROP'),\n unrecordedFields = {\n // This field's value is a by product of node insertion and must not be recorded here.\n // It's the node insertion operation which is recorded by STM.\n parentIndex: 1\n };\n/**\n * Mixin making a model compatible with {@link Core/data/stm/StateTrackingManager}\n *\n * @mixin\n */\nvar ModelStm = (Target => class ModelStm extends (Target || Base$1) {\n static get $name() {\n return 'ModelStm';\n }\n static get defaultConfig() {\n return {\n stm: null\n };\n }\n joinStore(store) {\n // No super on purpose, micro optimization of critical perf path\n // super.joinStore && super.joinStore(store);\n if (!this.stm) {\n this.stm = store.stm;\n }\n }\n unjoinStore(store) {\n var _super$unjoinStore;\n if (this.stm === store.stm) {\n this.stm = null;\n }\n (_super$unjoinStore = super.unjoinStore) === null || _super$unjoinStore === void 0 ? void 0 : _super$unjoinStore.call(this, store);\n }\n /**\n * Reference to STM manager, if used\n * @member {Core.data.stm.StateTrackingManager}\n * @category Misc\n */\n get stm() {\n return this[STM_PROP$1];\n }\n set stm(stm) {\n this[STM_PROP$1] = stm;\n }\n // Hook for chronograph entity field accessors, for example; task.duration = 123.\n // Triggers before setting the value.\n beforeChronoFieldSet(fieldName, value) {\n const me = this,\n {\n stm\n } = me,\n result = [];\n if (!me.inSetting && stm !== null && stm !== void 0 && stm.enabled && !unrecordedFields[fieldName] && !me.constructor.nonPersistableFields[fieldName]) {\n // Do not record changes of identifiers that are not fields\n if (me.getFieldDefinition(fieldName)) {\n const newDataCandidate = {\n [fieldName]: value\n },\n oldDataCandidate = {\n [fieldName]: me[fieldName]\n };\n result.push([newDataCandidate, oldDataCandidate]);\n }\n }\n return result;\n }\n /**\n * Overridden to collect initial data for the fields about to be changed.\n * The method is called from within {@link Core/data/Model#function-set} method.\n *\n * @private\n */\n beforeSet(field, value, silent, fromRelationUpdate) {\n const {\n stm\n } = this;\n if (stm !== null && stm !== void 0 && stm.enabled && !unrecordedFields[field] && !this.constructor.nonPersistableFields[field]) {\n var _super$beforeSet;\n const preResult = ((_super$beforeSet = super.beforeSet) === null || _super$beforeSet === void 0 ? void 0 : _super$beforeSet.call(this, field, value, silent, fromRelationUpdate)) || [];\n let newDataCandidate, oldDataCandidate;\n if (typeof field == 'object') {\n [newDataCandidate, oldDataCandidate] = Object.keys(field).reduce((data, fName) => {\n data[0][fName] = field[fName];\n data[1][fName] = this.get(fName);\n return data;\n }, [{}, {}]);\n } else {\n newDataCandidate = {\n [field]: value\n };\n oldDataCandidate = {\n [field]: this.get(field)\n };\n }\n preResult.push([newDataCandidate, oldDataCandidate]);\n return preResult;\n }\n return [];\n }\n // Hook for chronograph entity field accessors, for example; task.duration = 123\n // Triggers after setting the value.\n afterChronoFieldSet(fieldName, value, beforeResult) {\n if (beforeResult !== null && beforeResult !== void 0 && beforeResult[0]) {\n this.afterSet(fieldName, value, false, false, beforeResult, beforeResult[0][0]);\n }\n }\n shouldRecordFieldChange(fieldName, oldValue, newValue) {\n const store = this.firstStore;\n // By default we do not record:\n // - not persistable field changes\n // - null vs undefined changes\n // - \"id\" changes\n // - \"parentId\" changes caused by parent record idChange\n return !(this.constructor.nonPersistableFields[fieldName] || !oldValue && !newValue || fieldName === 'id' || fieldName === 'parentId' && store && store.oldIdMap[oldValue] === store.getById(newValue));\n }\n /**\n * Overridden to store initial data of the changed fields and to notify STM\n * manager about the change action if anything has been changed in result.\n *\n * The method is called from within {@link Core/data/Model#function-set} method.\n *\n * @private\n */\n afterSet(field, value, silent, fromRelationUpdate, beforeResult, wasSet) {\n const {\n stm\n } = this,\n nonPersistableFields = this.constructor.nonPersistableFields;\n if (stm !== null && stm !== void 0 && stm.isBase && stm.enabled && !unrecordedFields[field] && !nonPersistableFields[field]) {\n const preResult = beforeResult.pop();\n if (wasSet) {\n let shouldRecord;\n const [newDataCandidate, oldDataCandidate] = preResult,\n [newData, oldData] = Object.keys(wasSet).reduce((data, fieldName) => {\n const newValue = newDataCandidate[fieldName],\n oldValue = oldDataCandidate[fieldName];\n if (this.shouldRecordFieldChange(fieldName, oldValue, newValue)) {\n shouldRecord = true;\n data[0][fieldName] = newValue;\n data[1][fieldName] = oldValue;\n }\n return data;\n }, [{}, {}]);\n if (shouldRecord) {\n stm.onModelUpdate(this, newData, oldData);\n }\n }\n }\n // No super on purpose, micro optimization of critical perf path\n // super.afterSet && super.afterSet(field, value, silent, fromRelationUpdate, beforeResult, wasSet);\n }\n /**\n * Called from {@link Core/data/mixin/TreeNode#function-insertChild} to obtain inserted\n * records initial parents and parent index, to be able to restore the state back upon undo.\n *\n * @param {Core.data.Model[]} childRecords\n * @returns {Array} Array of results from this call and any of super calls if any.\n * This result is consumed by {@link #function-afterInsertChild} which pops\n * from the result array to take only results of this method call and leave\n * results from super calls untouched.\n *\n * @private\n */\n beforeInsertChild(childRecords) {\n const preResult = super.beforeInsertChild ? super.beforeInsertChild(childRecords) : [],\n {\n stm\n } = this;\n if (stm !== null && stm !== void 0 && stm.enabled) {\n preResult.push(childRecords.reduce((result, childRecord) => {\n // We are interested only in records from the same root node.\n // Removing (which is done before insertion) of the records\n // from another root (and store) should\n // be handled by that store STM instance.\n if (childRecord.root === this.root) {\n result.set(childRecord, {\n parent: childRecord.parent,\n index: childRecord.parent ? childRecord.parentIndex : undefined\n });\n }\n return result;\n }, new Map()));\n }\n return preResult;\n }\n /**\n * Called from {@link Core/data/mixin/TreeNode#function-insertChild} to notify {@link Core/data/stm/StateTrackingManager}\n * about children insertion. Provides it with all necessary context information collected\n * in {@link #function-beforeInsertChild} required to undo/redo the action.\n *\n * @private\n */\n afterInsertChild(index, childRecords, beforeResult, inserted) {\n var _super$afterInsertChi;\n const {\n stm\n } = this;\n if (stm !== null && stm !== void 0 && stm.enabled) {\n const context = beforeResult.pop();\n if (inserted) {\n stm.onModelInsertChild(this, index, inserted, context);\n }\n }\n (_super$afterInsertChi = super.afterInsertChild) === null || _super$afterInsertChi === void 0 ? void 0 : _super$afterInsertChi.call(this, index, childRecords, beforeResult, inserted);\n }\n /**\n * Called from {@link Core/data/mixin/TreeNode#function-removeChild} to obtain removed\n * records initial parent index, to be able to restore the state back upon undo.\n *\n * @param {Core.data.Model[]} childRecords\n * @param {Boolean} isMove\n * @returns {Array} Array of results from this call and any of super calls if any.\n * This result is consumed by {@link #function-afterRemoveChild} which pops\n * from the result array to take only results of this method call and leave\n * results from super calls untouched.\n *\n * @private\n */\n beforeRemoveChild(childRecords, isMove) {\n const preResult = super.beforeRemoveChild ? super.beforeRemoveChild(childRecords, isMove) : [],\n {\n stm\n } = this;\n // If it's move then InsertChildAction will handle this case\n if (stm !== null && stm !== void 0 && stm.enabled && !isMove) {\n // Child records we receive are guaranteed to be direct children\n // of this node, see Core/data/mixin/TreeNode#removeChild method\n // Here we interested in the original index for each child removed,\n // we collect it and store for future use in RemoveChildAction\n preResult.push(childRecords.reduce((result, childRecord) => {\n result.set(childRecord, childRecord.parentIndex);\n return result;\n }, new Map()));\n }\n return preResult;\n }\n /**\n * Called from {@link Core/data/mixin/TreeNode#function-removeChild} to notify {@link Core/data/stm/StateTrackingManager}\n * about children removing. Provides it with all necessary context information collected\n * in {@link #function-beforeRemoveChild} required to undo/redo the action.\n *\n * @private\n */\n afterRemoveChild(childRecords, beforeResult, isMove) {\n var _super$afterRemoveChi;\n const {\n stm\n } = this;\n // If it's move then InsertChildAction will handle this case\n if (stm !== null && stm !== void 0 && stm.enabled && !isMove) {\n const context = beforeResult.pop();\n if (childRecords && childRecords.length) {\n stm.onModelRemoveChild(this, childRecords, context);\n }\n }\n (_super$afterRemoveChi = super.afterRemoveChild) === null || _super$afterRemoveChi === void 0 ? void 0 : _super$afterRemoveChi.call(this, childRecords, beforeResult, isMove);\n }\n});\n\n/**\n * @module Core/data/mixin/TreeNode\n */\n/**\n * Mixin for Model with tree node related functionality. This class is mixed into the {@link Core/data/Model} class.\n *\n * ## Adding and removing child nodes\n *\n * ```javascript\n * const parent = store.getById(1),\n *\n * firstBorn = parent.insertChild({\n * name : 'Child node'\n * }, parent.children[0]); // Insert a child at a specific place in the children array\n *\n * parent.removeChild(parent.children[0]); // Removes a child node\n * parent.appendChild({ name : 'New child node' }); // Appends a child node\n * ```\n *\n * @mixin\n */\nvar TreeNode = (Target => class TreeNode extends (Target || Base$1) {\n static get $name() {\n return 'TreeNode';\n }\n /**\n * This static configuration option allows you to control whether an empty parent task should be converted into a\n * leaf. Enable/disable it for a whole class:\n *\n * ```javascript\n * Model.convertEmptyParentToLeaf = false;\n * ```\n *\n * By specifying `true`, all empty parents will be considered leafs. Can also be assigned a configuration object\n * with the following Boolean properties to customize the behaviour:\n *\n * * `onLoad` - Apply the transformation on load to any parents without children (`children : []`)\n * * `onRemove` - Apply the transformation when all children have been removed from a parent\n *\n * ```javascript\n * Model.convertEmptyParentToLeaf = {\n * onLoad : false,\n * onRemove : true\n * }\n * ```\n *\n * @property {Boolean|Object}\n * @default false\n * @category Parent & children\n */\n static set convertEmptyParentToLeaf(value) {\n if (value === true) {\n value = {\n onLoad: true,\n onRemove: true\n };\n } else if (value === false) {\n value = {\n onLoad: false,\n onRemove: false\n };\n }\n this._convertEmptyParentToLeaf = value;\n }\n static get convertEmptyParentToLeaf() {\n return this._convertEmptyParentToLeaf || {\n onLoad: false,\n onRemove: false\n };\n }\n /**\n * This is a read-only property providing access to the parent node.\n * @member {Core.data.Model} parent\n * @readonly\n * @category Parent & children\n */\n /**\n * This is a read-only field provided in server synchronization packets to specify\n * which record id is the parent of the record.\n * @readonly\n * @field {String|Number|null} parentId\n * @category Tree\n */\n /**\n * This is a read-only field provided in server synchronization packets to specify\n * which position the node takes in the parent's children array.\n * This index is set on load and gets updated automatically after row reordering, sorting, etc.\n * To save the order, need to persist the field on the server and when data is fetched to be loaded,\n * need to sort by this field.\n * @readonly\n * @field {Number} parentIndex\n * @category Tree\n */\n ingestChildren(childRecord, stores = this.stores) {\n const {\n inProcessChildren,\n constructor: MyClass\n } = this,\n store = stores[0];\n if (childRecord === true) {\n if (inProcessChildren) {\n return true;\n }\n return [];\n }\n if (childRecord) {\n childRecord = ArrayHelper.asArray(childRecord);\n const len = childRecord.length,\n result = [];\n for (let i = 0, child; i < len; i++) {\n child = childRecord[i];\n child = child.isModel ? child : store ? store.createRecord(child, false, true) : new MyClass(child, null, null, true);\n child = store ? store.processRecord(child) : child;\n result.push(child);\n }\n if (this.children === true && store) {\n const sorter = store.createSorterFn(store.sorters);\n result.sort(sorter);\n }\n return result;\n }\n }\n /**\n * Child nodes. To allow loading children on demand, specify `children : true` in your data. Omit the field for leaf tasks.\n *\n * Note, if the tree store loads data from a remote origin, make sure {@link Core/data/AjaxStore#config-readUrl}\n * is specified, and optionally {@link Core/data/AjaxStore#config-parentIdParamName} is set, otherwise\n * {@link Core/data/Store#function-loadChildren} has to be implemented.\n *\n * @field {Boolean|Object[]|Core.data.Model[]} children\n * @category Parent & children\n */\n /**\n * Called during creation to also turn any children into Models joined to the same stores as this model\n * @internal\n * @category Parent & children\n */\n processChildren(stores = this.stores) {\n const me = this,\n {\n meta\n } = me;\n me.inProcessChildren = true;\n const children = me.ingestChildren(me.data[me.constructor.childrenField], stores);\n if (children) {\n const {\n convertEmptyParentToLeaf\n } = me.constructor,\n shouldConvert = convertEmptyParentToLeaf === true || convertEmptyParentToLeaf.onLoad;\n if (shouldConvert ? children.length : Array.isArray(children)) {\n meta.isLeaf = false;\n // We are processing a remote load\n if (me.children === true) {\n me.children = [];\n } else if (children.length === 0) {\n me.children = children;\n return;\n }\n me.appendChild(children);\n }\n // Flagged for load on demand\n else if (children === true) {\n meta.isLeaf = false;\n me.children = true;\n }\n // Empty child array, flag is leaf if configured to do so\n else if (!me.isRoot) {\n meta.isLeaf = me.constructor.convertEmptyParentToLeaf.onLoad;\n }\n }\n me.inProcessChildren = false;\n }\n /**\n * This method returns `true` if this record has all expanded ancestors and is therefore\n * eligible for inclusion in a UI.\n * @param {Core.data.Store} [store] Optional store, defaults to nodes first store\n * @returns {Boolean}\n * @readonly\n * @category Parent & children\n * @returns {Boolean}\n */\n ancestorsExpanded(store = this.firstStore) {\n const {\n parent\n } = this;\n return !parent || parent.isExpanded(store) && parent.ancestorsExpanded(store);\n }\n /**\n * Used by stores to assess the record's collapsed/expanded state in that store.\n * @param {Core.data.Store} store\n * @category Parent & children\n * @returns {Boolean}\n */\n isExpanded(store = this.firstStore) {\n const mapMeta = this.instanceMeta(store.id);\n // Default initial expanded/collapsed state when in the store\n // to the record's original expanded property.\n if (!Object.prototype.hasOwnProperty.call(mapMeta, 'collapsed')) {\n mapMeta.collapsed = !this.expanded;\n }\n return !mapMeta.collapsed;\n }\n // A read-only property. It provides the initial state upon load\n // The UI's expanded/collapsed state is in the store's meta map.\n get expanded() {\n return this.data.expanded;\n }\n /**\n * Depth in the tree at which this node exists. First visual level of nodes are at level 0, their direct children at\n * level 1 and so on.\n * @property {Number}\n * @readonly\n * @category Parent & children\n */\n get childLevel() {\n let node = this,\n ret = -1;\n while (node && !node.isRoot) {\n ++ret;\n node = node.parent;\n }\n return ret;\n }\n /**\n * Is a leaf node in a tree structure?\n * @property {Boolean}\n * @readonly\n * @category Parent & children\n */\n get isLeaf() {\n return this.meta.isLeaf !== false && !this.isRoot;\n }\n /**\n * Returns `true` if this node is the root of the tree\n * @member {Boolean} isRoot\n * @readonly\n * @category Parent & children\n */\n /**\n * Is a parent node in a tree structure?\n * @property {Boolean}\n * @readonly\n * @category Parent & children\n */\n get isParent() {\n return !this.isLeaf;\n }\n /**\n * Returns true for parent nodes with children loaded (there might still be no children)\n * @property {Boolean}\n * @readonly\n * @category Parent & children\n */\n get isLoaded() {\n return this.isParent && Array.isArray(this.children);\n }\n /**\n * Count all children (including sub-children) for a node (in its `firstStore´)\n * @member {Number}\n * @category Parent & children\n */\n get descendantCount() {\n return this.getDescendantCount();\n }\n /**\n * Count visible (expanded) children (including sub-children) for a node (in its `firstStore`)\n * @member {Number}\n * @category Parent & children\n */\n get visibleDescendantCount() {\n return this.getDescendantCount(true);\n }\n /**\n * Count visible (expanded)/all children for this node, optionally specifying for which store.\n * @param {Boolean} [onlyVisible] Specify `true` to only count visible (expanded) children.\n * @param {Core.data.Store} [store] A Store to which this node belongs\n * @returns {Number}\n * @category Parent & children\n */\n getDescendantCount(onlyVisible = false, store = this.firstStore) {\n const children = this.children;\n if (!children || !Array.isArray(children) || onlyVisible && !this.isExpanded(store)) {\n return 0;\n }\n return children.reduce((count, child) => count + child.getDescendantCount(onlyVisible), children.length);\n }\n /**\n * Retrieve all children (by traversing sub nodes)\n * @property {Core.data.Model[]}\n * @category Parent & children\n */\n get allChildren() {\n const children = this.children;\n if (!children) return [];\n return children.reduce((all, child) => {\n all.push(child);\n // push.apply is faster than push with array spread:\n // https://jsperf.com/push-apply-vs-push-with-array-spread/1\n all.push.apply(all, child.allChildren);\n return all;\n }, []);\n }\n /**\n * Get the first child of this node\n * @property {Core.data.Model}\n * @readonly\n * @category Parent & children\n */\n get firstChild() {\n const children = this.children;\n return (children === null || children === void 0 ? void 0 : children.length) && children[0] || null;\n }\n /**\n * Get the last child of this node\n * @property {Core.data.Model}\n * @readonly\n * @category Parent & children\n */\n get lastChild() {\n const children = this.children;\n return (children === null || children === void 0 ? void 0 : children.length) && children[children.length - 1] || null;\n }\n /**\n * Get the previous sibling of this node\n * @member {Core.data.Model} previousSibling\n * @readonly\n * @category Parent & children\n */\n /**\n * Get the next sibling of this node\n * @member {Core.data.Model} nextSibling\n * @readonly\n * @category Parent & children\n */\n /**\n * Returns count of all preceding sibling nodes (including their children).\n * @property {Number}\n * @category Parent & children\n */\n get previousSiblingsTotalCount() {\n let task = this.previousSibling,\n count = this.parentIndex;\n while (task) {\n count += task.descendantCount;\n task = task.previousSibling;\n }\n return count;\n }\n get root() {\n var _this$parent;\n return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.root) || this;\n }\n /**\n * Reading this property returns the id of the parent node, if this record is a child of a node.\n *\n * Setting this property appends this record to the record with the passed id **in the same store that this record\n * is already in**.\n *\n * Note that setting this property is **only valid if this record is already part of a tree store**.\n *\n * This is not intended for general use. This is for when a server responds to a record mutation and the server\n * decides to move a record to a new parent. If a `parentId` property is passed in the response data for a record,\n * that record will be moved.\n *\n * @property {Number|String|null}\n * @category Parent & children\n */\n get parentId() {\n return this.parent && !this.parent.isAutoRoot ? this.parent.id : null;\n }\n set parentId(parentId) {\n const me = this,\n {\n parent\n } = me,\n newParent = parentId === null ? me.firstStore.rootNode : me.firstStore.getById(parentId);\n // Handle exact equality of parent.\n // Also handle one being null and the other being undefined meaning no change.\n if (!(newParent === parent || !parent && !newParent)) {\n // If we are batching, we do not trigger a change immediately.\n // endBatch will set the field which will set the property again.\n if (me.isBatchUpdating) {\n me.meta.batchChanges.parentId = parentId;\n } else {\n if (newParent) {\n newParent.appendChild(me);\n } else {\n me.parent.removeChild(me);\n }\n }\n }\n }\n static set parentIdField(parentIdField) {\n // Maintainer: the \"this\" references in here reference two different contexts.\n // Outside of the property definition, it's the Model Class.\n // In the getter and setter, it's the record instance.\n this._parentIdField = parentIdField;\n Object.defineProperty(this.prototype, parentIdField, {\n set: function (parentId) {\n // no arrow functions here, need `this` to change to instance\n // noinspection JSPotentiallyInvalidUsageOfClassThis\n this.parentId = parentId;\n },\n get: function () {\n // no arrow functions here, need `this` to change to instance\n // noinspection JSPotentiallyInvalidUsageOfClassThis\n return this.parentId;\n }\n });\n }\n static get parentIdField() {\n return this._parentIdField || 'parentId';\n }\n /**\n * Traverses all child nodes recursively calling the passed function\n * on a target node **before** iterating the child nodes.\n * @param {Function} fn The function to call\n * @param {Boolean} [skipSelf=false] True to ignore self\n * @param {Boolean} [includeFilteredOutRecords=false] True to also traverse filtered out records\n * @category Parent & children\n */\n traverse(fn, skipSelf = false, includeFilteredOutRecords = false) {\n const children = (includeFilteredOutRecords ? this.unfilteredChildren : this.children) || this.children;\n if (!skipSelf) {\n fn.call(this, this);\n }\n // Simply testing whether there is non-zero children length\n // is 10x faster than using this.isLoaded\n for (let i = 0, l = children === null || children === void 0 ? void 0 : children.length; i < l; i++) {\n children[i].traverse(fn, false, includeFilteredOutRecords);\n }\n }\n /**\n * Traverses all child nodes recursively calling the passed function\n * on child nodes of a target **before** calling it it on the node.\n * @param {Function} fn\n * @param {Boolean} [skipSelf] True to skip this node in the traversal\n * @param {Boolean} [includeFilteredOutRecords=false] True to also traverse filtered out records\n * @category Parent & children\n */\n traverseBefore(fn, skipSelf = false, includeFilteredOutRecords = false) {\n const children = (includeFilteredOutRecords ? this.unfilteredChildren : this.children) || this.children;\n // Simply testing whether there is non-zero children length\n // is 10x faster than using this.isLoaded\n for (let i = 0, l = children === null || children === void 0 ? void 0 : children.length; i < l; i++) {\n children[i].traverse(fn, false, includeFilteredOutRecords);\n }\n if (!skipSelf) {\n fn.call(this, this);\n }\n }\n /**\n * Traverses child nodes recursively while fn returns true\n * @param {Function} fn\n * @param {Boolean} [skipSelf] True to skip this node in the traversal\n * @param {Boolean} [includeFilteredOutRecords=false] True to also traverse filtered out records\n * @category Parent & children\n * @returns {Boolean}\n */\n traverseWhile(fn, skipSelf = false, includeFilteredOutRecords = false) {\n const me = this;\n let goOn = true;\n if (!skipSelf) {\n goOn = fn.call(me, me) !== false;\n }\n if (goOn && me.isLoaded) {\n const children = (includeFilteredOutRecords ? me.unfilteredChildren : me.children) || this.children;\n goOn = children.every(child => child.traverseWhile(fn, false, includeFilteredOutRecords));\n }\n return goOn;\n }\n /**\n * Bubbles up from this node, calling the specified function with each node.\n *\n * @param {Function} fn The function to call for each node\n * @param {Boolean} [skipSelf] True to skip this node in the traversal\n * @category Parent & children\n */\n bubble(fn, skipSelf = false) {\n let me = this;\n if (!skipSelf) {\n fn.call(me, me);\n }\n while (me.parent) {\n me = me.parent;\n fn.call(me, me);\n }\n }\n /**\n * Bubbles up from this node, calling the specified function with each node,\n * while the function returns true.\n *\n * @param {Function} fn The function to call for each node\n * @param {Boolean} [skipSelf] True to skip this node in the traversal\n * @category Parent & children\n * @returns {Boolean}\n */\n bubbleWhile(fn, skipSelf = false) {\n let me = this,\n goOn = true;\n if (!skipSelf) {\n goOn = fn.call(me, me);\n }\n while (goOn && me.parent) {\n me = me.parent;\n goOn = fn.call(me, me);\n }\n return goOn;\n }\n /**\n * Checks if this model contain another model as one of it's descendants\n *\n * @param {Core.data.Model|String|Number} childOrId child node or id\n * @category Parent & children\n * @returns {Boolean}\n */\n contains(childOrId) {\n if (childOrId && typeof childOrId === 'object') {\n childOrId = childOrId.id;\n }\n return !this.traverseWhile(node => node.id != childOrId);\n }\n getTopParent(all) {\n let result;\n if (all) {\n result = [];\n this.bubbleWhile(t => {\n result.push(t);\n return t.parent && !t.parent.isRoot;\n });\n } else {\n result = null;\n this.bubbleWhile(t => {\n if (!t.parent) {\n result = t;\n }\n return t.parent && !t.parent.isRoot;\n });\n }\n return result;\n }\n /**\n * Append a child record(s) to any current children.\n * @param {Core.data.Model|Core.data.Model[]|Object|Object[]} childRecord Array of records/data or a single\n * record/data to append\n * @param {Boolean} [silent] Pass `true` to not trigger events during append\n * @returns {Core.data.Model|Core.data.Model[]|null}\n * @category Parent & children\n */\n appendChild(childRecord, silent = false) {\n return this.insertChild(childRecord, null, silent);\n }\n /**\n * Insert a child record(s) before an existing child record.\n * @param {Core.data.Model|Core.data.Model[]|Object|Object[]} childRecord Array of records/data or a single\n * record/data to insert\n * @param {Core.data.Model} [before] Optional record to insert before, leave out to append to the end\n * @param {Boolean} [silent] Pass `true` to not trigger events during append\n * @returns {Core.data.Model|Core.data.Model[]|null}\n * @category Parent & children\n */\n insertChild(childRecord, before = null, silent = false) {\n var _ref, _before$parentIndex, _before, _me$children2, _me$beforeInsertChild, _me$afterInsertChild;\n const me = this,\n returnArray = Array.isArray(childRecord);\n childRecord = ArrayHelper.asArray(childRecord);\n if (typeof before === 'number') {\n var _me$children$before, _me$children;\n before = (_me$children$before = (_me$children = me.children) === null || _me$children === void 0 ? void 0 : _me$children[before]) !== null && _me$children$before !== void 0 ? _me$children$before : null;\n }\n if (!silent && !me.stores.every(s => s.trigger('beforeAdd', {\n records: childRecord,\n parent: me\n }) !== false)) {\n return null;\n }\n // This call makes child record an array containing Models\n childRecord = me.ingestChildren(childRecord);\n // NOTE: see comment in Model::set() about before/in/after calls approach.\n const index = (_ref = (_before$parentIndex = (_before = before) === null || _before === void 0 ? void 0 : _before.parentIndex) !== null && _before$parentIndex !== void 0 ? _before$parentIndex : (_me$children2 = me.children) === null || _me$children2 === void 0 ? void 0 : _me$children2.length) !== null && _ref !== void 0 ? _ref : 0,\n preResult = (_me$beforeInsertChild = me.beforeInsertChild) === null || _me$beforeInsertChild === void 0 ? void 0 : _me$beforeInsertChild.call(me, childRecord),\n inserted = me.internalAppendInsert(childRecord, before, silent);\n // Turn into a parent if not already one\n if (inserted.length) {\n me.convertToParent(silent);\n }\n (_me$afterInsertChild = me.afterInsertChild) === null || _me$afterInsertChild === void 0 ? void 0 : _me$afterInsertChild.call(me, index, childRecord, preResult, inserted);\n return returnArray || !inserted ? inserted : inserted[0];\n }\n /**\n * Converts a leaf node to a parent node, assigning an empty array as its children\n * @param {Boolean} [silent] Pass `true` to not trigger any event\n * @category Parent & children\n */\n convertToParent(silent = false) {\n const me = this,\n wasLeaf = me.isLeaf;\n me.meta.isLeaf = false;\n if (!me.children) {\n me.children = [];\n }\n // Signal a change event so that the UI updates, unless it is during load in which case StoreTree#onNodeAddChild\n // will handle it\n if (wasLeaf && !me.root.isLoading && !silent) {\n me.signalNodeChanged({\n isLeaf: {\n value: false,\n oldValue: true\n }\n });\n }\n }\n signalNodeChanged(changes) {\n this.stores.forEach(s => {\n s.trigger('update', {\n record: this,\n changes\n });\n s.trigger('change', {\n action: 'update',\n record: this,\n changes\n });\n });\n }\n tryInsertChild() {\n return this.insertChild(...arguments);\n }\n internalAppendInsert(recordsToInsert, beforeRecord, silent) {\n const me = this,\n {\n stores,\n root\n } = me,\n {\n firstStore: rootStore\n } = root,\n {\n parentIdField\n } = me.constructor,\n parentId = me.isAutoRoot ? null : me.id,\n isMove = {};\n let isNoop, start, i, newRecordsCloned;\n // The reference node must be one of our children. If not, fall back to an append.\n if (beforeRecord && beforeRecord.parent !== me) {\n beforeRecord = null;\n }\n // If the records starting at insertAt or (insertAt - 1), are the same sequence\n // that we are being asked to add, this is a no-op.\n if (me.children) {\n const children = me.children,\n insertAt = beforeRecord ? beforeRecord.parentIndex : children.length;\n if (children[start = insertAt] === recordsToInsert[0] || children[start = insertAt - 1] === recordsToInsert[0]) {\n for (isNoop = true, i = 0; isNoop && i < recordsToInsert.length; i++) {\n if (recordsToInsert[i] !== children[start + i]) {\n isNoop = false;\n }\n }\n }\n }\n // Fulfill the contract of appendChild/insertChild even if we did not have to do anything.\n // Callers must be able to correctly postprocess the returned value as an array.\n if (isNoop) {\n return recordsToInsert;\n }\n // Remove incoming child nodes from any current parent.\n for (i = 0; i < recordsToInsert.length; i++) {\n const newRecord = recordsToInsert[i],\n oldParent = newRecord.parent;\n // Store added should not be modified for adds\n // caused by moving.\n isMove[newRecord.id] = newRecord.root === root;\n // Check if any descendants of the added node are moves.\n if (rootStore && !root.isLoading) {\n newRecord.traverse(r => {\n if (r.root === root) {\n isMove[r.id] = true;\n }\n });\n }\n // If the new record has a parent, remove from that parent.\n // This operation may be vetoed by listeners.\n // If it is vetoed, then remove from the newRecords and do not\n // set the parent property\n if ((oldParent === null || oldParent === void 0 ? void 0 : oldParent.removeChild(newRecord, isMove[newRecord.id], silent, true)) === false) {\n if (!newRecordsCloned) {\n recordsToInsert = recordsToInsert.slice();\n newRecordsCloned = true;\n }\n recordsToInsert.splice(i--, 1);\n } else {\n newRecord.parent = me;\n // Set parentId directly to data, record.parentId uses a getter to return record.parent.id\n newRecord.data[parentIdField] = parentId;\n if (oldParent) {\n newRecord.meta.oldParentId = oldParent.id;\n }\n }\n }\n // Still records to insert after beforeRemove listeners may have vetoed some\n if (recordsToInsert.length) {\n if (!Array.isArray(me.children)) {\n me.children = [];\n }\n // Add to the children\n const insertAt = me.addToChildren(me.children, beforeRecord, recordsToInsert);\n // When filter is used add to the unfiltered children\n me.addToChildren(me.unfilteredChildren, beforeRecord, recordsToInsert, true);\n stores.forEach(store => {\n if (!store.isChained) {\n recordsToInsert.forEach(record => {\n // Initialize context for newly added records\n record.joinStore(store);\n });\n // Add to store (will also add any child records and trigger events)\n store.onNodeAddChild(me, recordsToInsert, insertAt, isMove, silent);\n recordsToInsert.forEach(record => {\n // If we are in the recursive inclusion of children at construction\n // time, or in a store load, that must not be a data modification.\n // Otherwise, we have to signal a change\n if (record.meta.oldParentId != null && !(me.inProcessChildren || me.isLoading)) {\n const toSet = {\n [parentIdField]: parentId,\n [me.getDataSource('parentIndex')]: record.parentIndex\n },\n wasSet = {},\n {\n modified,\n oldParentId\n } = record.meta,\n oldParentIndex = modified.parentIndex;\n delete record.meta.oldParentId;\n if (me.id !== oldParentId) {\n wasSet[parentIdField] = {\n value: parentId,\n oldValue: oldParentId\n };\n }\n if (record.parentIndex !== oldParentIndex) {\n wasSet.parentIndex = {\n value: record.parentIndex,\n oldValue: oldParentIndex\n };\n }\n // Changing back to its original value\n if (modified[parentIdField] === me.id) {\n Reflect.deleteProperty(modified, parentIdField);\n }\n // Cache its original value\n else if (!(parentIdField in modified)) {\n modified[parentIdField] = oldParentId;\n }\n record.afterChange(toSet, wasSet);\n }\n });\n }\n });\n }\n return recordsToInsert;\n }\n /**\n * Remove a child record. Only direct children of this node can be removed, others are ignored.\n * @param {Core.data.Model|Core.data.Model[]} childRecords The record(s) to remove.\n * @param {Boolean} [isMove] Pass `true` if the record is being moved within the same store.\n * @param {Boolean} [silent] Pass `true` to not trigger events during remove.\n * @privateparam {Boolean} [isInserting] `true` is passed when removal is part of record inserting (acted on by\n * ModelLink)\n * @returns {Core.data.Model[]} All records (including nested children) removed\n * @category Parent & children\n */\n removeChild(childRecords, isMove = false, silent = false, isInserting = false) {\n var _me$beforeRemoveChild, _me$afterRemoveChild;\n const me = this,\n allRemovedRecords = [],\n wasLeaf = me.isLeaf,\n {\n children,\n stores\n } = me;\n childRecords = ArrayHelper.asArray(childRecords);\n childRecords = childRecords.filter(r => r.parent === me);\n if (!silent) {\n // Allow store listeners to veto the beforeRemove event\n for (const store of stores) {\n if (!store.isChained && store.trigger('beforeRemove', {\n parent: me,\n records: childRecords,\n isMove\n }) === false) {\n return false;\n }\n }\n }\n const preResult = (_me$beforeRemoveChild = me.beforeRemoveChild) === null || _me$beforeRemoveChild === void 0 ? void 0 : _me$beforeRemoveChild.call(me, childRecords, isMove);\n for (const childRecord of childRecords) {\n const {\n parentIdField\n } = childRecord.constructor,\n {\n modified\n } = childRecord.meta,\n oldParentId = childRecord.parent ? childRecord.parent.id : null;\n // Cache its original value (not if it is a link, that would pollute original)\n if (!(parentIdField in modified) && !childRecord.isLinked) {\n modified[parentIdField] = oldParentId;\n }\n const index = me.removeFromChildren(children, childRecord);\n me.removeFromChildren(me.unfilteredChildren, childRecord, true);\n stores.forEach(store => {\n if (!store.isChained) {\n allRemovedRecords.push(...store.onNodeRemoveChild(me, [childRecord], index, {\n isMove,\n silent\n }));\n }\n });\n // No need to clean up the node parent info and other meta data in case it is \"move\" operation. The info will be updated after \"insert\" operation.\n if (!isMove) {\n childRecord.parent = childRecord.parentIndex = childRecord.unfilteredIndex = childRecord.nextSibling = childRecord.previousSibling = null;\n // Reset parentId in data, record.parentId uses a getter to return record.parent.id\n childRecord.data[parentIdField] = null;\n }\n }\n // Convert emptied parent into leaf if configured to do so\n if ((me.unfilteredChildren || children).length === 0 && me.constructor.convertEmptyParentToLeaf.onRemove && !me.isRoot) {\n me.meta.isLeaf = true;\n }\n // If we've transitioned to being a leaf node, signal a change event\n // so that the UI updates\n if (me.isLeaf !== wasLeaf && !silent) {\n me.stores.forEach(s => {\n const changes = {\n isLeaf: {\n value: true,\n oldValue: false\n }\n };\n s.trigger('update', {\n record: me,\n changes\n });\n s.trigger('change', {\n action: 'update',\n record: me,\n changes\n });\n });\n }\n (_me$afterRemoveChild = me.afterRemoveChild) === null || _me$afterRemoveChild === void 0 ? void 0 : _me$afterRemoveChild.call(me, childRecords, preResult, isMove);\n return allRemovedRecords;\n }\n clearParentId() {\n const me = this;\n Reflect.deleteProperty(me.data, me.parentIdField);\n Reflect.deleteProperty(me.originalData, me.parentIdField);\n if (me.meta.modified) {\n Reflect.deleteProperty(me.meta.modified, me.parentIdField);\n }\n }\n /**\n * Replaces all child nodes with the new node set.\n * @param {Core.data.Model|Core.data.Model[]} childRecords The new child record set.\n * @returns {Core.data.Model[]}\n * @category Parent & children\n */\n replaceChildren(newChildren) {\n this.clearChildren();\n this.data[this.constructor.childrenField] = newChildren;\n this.processChildren();\n return this.children;\n }\n /**\n * Removes all child nodes from this node.\n * @param {Boolean} [silent=false] Pass `true` to not fire Store events during the remove.\n * @returns {Core.data.Model[]}\n * @category Parent & children\n */\n clearChildren(silent = false) {\n const me = this,\n {\n stores\n } = me,\n children = me.unfilteredChildren || me.children;\n me.children = [];\n if (children && children !== true) {\n stores.forEach(store => {\n if (!store.isChained) {\n // unfiltered:true to unregister children on filtered stores\n store.onNodeRemoveChild(me, children, 0, {\n unfiltered: true,\n silent\n });\n }\n });\n // clear unfilteredChildren (must be after the above loop)\n if (me.unfilteredChildren) {\n me.unfilteredChildren = [];\n }\n }\n }\n /**\n * Removes all records from the rootNode\n * @private\n */\n clear() {\n var _me$children3;\n const me = this,\n {\n stores\n } = me,\n children = (_me$children3 = me.children) === null || _me$children3 === void 0 ? void 0 : _me$children3.slice();\n // Only allow for root node and if data is present\n if (!me.isRoot || !children) {\n return;\n }\n for (const store of stores) {\n if (!store.isChained) {\n if (store.trigger('beforeRemove', {\n parent: me,\n records: children,\n isMove: false,\n removingAll: true\n }) === false) {\n return false;\n }\n }\n }\n me.children.length = 0;\n if (me.unfilteredChildren) {\n me.unfilteredChildren.length = 0;\n }\n stores.forEach(store => {\n children.forEach(child => {\n if (child.stores.includes(store)) {\n // this will drill down the child, unregistering whole branch\n child.unjoinStore(store);\n }\n child.parent = child.parentIndex = child.nextSibling = child.previousSibling = null;\n });\n store.storage.suspendEvents();\n store.storage.clear();\n store.storage.resumeEvents();\n store.added.clear();\n store.modified.clear();\n store.trigger('removeAll');\n store.trigger('change', {\n action: 'removeall'\n });\n });\n }\n updateChildrenIndices(children, unfiltered = false, silent = false) {\n const indexName = unfiltered ? 'unfilteredIndex' : 'parentIndex';\n let previousSibling = null;\n for (let i = 0; i < children.length; i++) {\n const child = children[i],\n oldValue = child[indexName];\n if (indexName === 'parentIndex') {\n // Record should not be considered modified by initial assignment of parentIndex\n if (oldValue === undefined || silent) {\n child.setData('parentIndex', i);\n }\n // Check to avoid pointless beforeUpdates from inSet\n else if (oldValue !== i) {\n // Silent set, do not want to trigger events from updated indices\n child.set('parentIndex', i, true);\n }\n } else {\n child[indexName] = i;\n }\n if (!unfiltered) {\n child.previousSibling = previousSibling;\n if (previousSibling) {\n previousSibling.nextSibling = child;\n }\n // Last child never has a nextSibling\n if (i === children.length - 1) {\n child.nextSibling = null;\n }\n previousSibling = child;\n }\n }\n }\n addToChildren(children, beforeRecord, newRecords, unfiltered = false) {\n if (children) {\n const indexName = unfiltered ? 'unfilteredIndex' : 'parentIndex',\n index = beforeRecord ? beforeRecord[indexName] : children.length;\n children.splice(index, 0, ...newRecords);\n this.updateChildrenIndices(children, unfiltered);\n return index;\n }\n }\n removeFromChildren(children, childRecord, unfiltered = false) {\n if (children) {\n const indexName = unfiltered ? 'unfilteredIndex' : 'parentIndex',\n index = childRecord[indexName];\n if (index > -1) {\n children.splice(index, 1);\n this.updateChildrenIndices(children, unfiltered);\n }\n return index;\n }\n }\n});\n\n/**\n * @module Core/data/mixin/ModelLink\n */\nconst\n // Properties set on the proxy instead of on the original\n propertyOverrides = {\n id: 1,\n stores: 1,\n parentIndex: 1,\n parent: 1,\n previousSibling: 1,\n nextSibling: 1,\n unfilteredIndex: 1\n },\n proxyConfig = {\n get(target, prop) {\n // Proxy record has some additional meta\n if (prop === 'proxyMeta') {\n return this.proxyMeta;\n }\n // Accessing constructor in functions should lead to original records constructor\n // (for static fns etc.)\n if (prop === 'constructor') {\n return target.constructor;\n }\n // Override setData / set to reroute parentIndex updates\n if (prop === 'setData') {\n return this.setDataOverride;\n }\n if (prop === 'set') {\n return this.setOverride;\n }\n // Special properties not shared with the original record\n if (propertyOverrides[prop]) {\n return this.proxyMeta.data[prop];\n }\n // Everything else is scoped to the proxy record\n return Reflect.get(target, prop, this.proxyRecord);\n },\n set(target, prop, value) {\n // Special properties not shared with the original record\n if (propertyOverrides[prop]) {\n this.proxyMeta.data[prop] = value;\n }\n // Everything else is relayed to the original record\n else {\n target[prop] = value;\n }\n return true;\n },\n // Override setData & set to reroute parentIndex updates\n setDataOverride(toSet, value) {\n if (toSet === 'parentIndex') {\n this.proxyMeta.data.parentIndex = value;\n } else {\n this.proxyMeta.originalRecord.setData(toSet, value);\n }\n },\n setOverride(field, value, ...args) {\n if (field === 'parentIndex') {\n this.proxyMeta.data.parentIndex = value;\n } else {\n this.proxyMeta.originalRecord.set(field, value, ...args);\n }\n }\n };\n/**\n * Mixin that allows creating proxy records linked to an original record. See {@link #function-link} for more\n * information.\n *\n *
Note that not all UI features support linked records
\n *\n * @mixin\n */\nvar ModelLink = (Target => {\n var _class;\n return _class = class ModelLink extends (Target || Base$1) {\n /**\n * Creates a proxy record (using native Proxy) linked to this record (the original). The proxy records shares most\n * data with the original, except for its `id` (which is always generated), and ordering fields such as\n * `parentIndex` and `parentId` etc.\n *\n * Any change to the proxy record will be reflected on the original, and vice versa. A proxy record is not meant to\n * be persisted, only the original record should be persisted. Thus, proxy records are not added to stores change\n * tracking (added, modified and removed records).\n *\n * Removing the original record removes all proxies.\n *\n * Creating a proxy record allows a Store to seemingly contain the record multiple times, something that is\n * otherwise not possible. It also allows a record to be used in both a tree store and in a flat store.\n *\n *
Note that not all UI features support linked records
\n *\n * @returns {Proxy} Proxy record linked to the original record\n */\n link() {\n // Calling link on a link creates another link of the original record\n if (this.isLinked) {\n return this.$original.link();\n }\n const me = this,\n useConfig = _objectSpread2(_objectSpread2({}, proxyConfig), {}, {\n // Data not shared with the original record\n proxyMeta: {\n originalRecord: me,\n data: {\n id: `${me.id}_link_${StringHelper.generateUUID()}`,\n stores: []\n }\n }\n }),\n proxyRecord = new Proxy(me, useConfig);\n useConfig.proxyRecord = proxyRecord;\n // Original record keeps tracks of all proxies\n (me.meta.linkedRecords || (me.meta.linkedRecords = [])).push(proxyRecord);\n return proxyRecord;\n }\n /**\n * Is this record linked to another record?\n * @prp {Boolean}\n * @readonly\n */\n get isLinked() {\n var _this$proxyMeta;\n return Boolean((_this$proxyMeta = this.proxyMeta) === null || _this$proxyMeta === void 0 ? void 0 : _this$proxyMeta.originalRecord);\n }\n /**\n * Are other records linked to this record?\n * @prp {Boolean}\n * @readonly\n */\n get hasLinks() {\n return Boolean(!this.proxyMeta && this.$links.length);\n }\n // Logic to remove a link shared between removing in a flat store and a tree store\n removeLink(link, records = null, silent = false) {\n // Removing original, also remove linked records\n if (link.hasLinks) {\n for (const linked of link.$links.slice()) {\n // Flat\n if (records) {\n ArrayHelper.include(records, linked);\n }\n // Tree\n else {\n linked.remove(silent);\n }\n }\n }\n // Removing linked record, remove from originals link tracking\n else if (link.isLinked) {\n ArrayHelper.remove(link.$original.$links, link);\n }\n }\n // Overrides beforeRemove in Model, to remove all linked records when original record is removed.\n beforeRemove(records) {\n this.removeLink(this, records);\n }\n // Overrides removeChild in TreeNode, to remove the original node and all linked nodes when either a linked or\n // original node is removed.\n removeChild(childRecords, isMove, silent, isInserting = false) {\n if (!isInserting) {\n childRecords = ArrayHelper.asArray(childRecords);\n for (const child of childRecords) {\n this.removeLink(child, null, silent);\n }\n }\n return super.removeChild(childRecords, isMove, silent, isInserting);\n }\n // Convenience getter for code keying by id that needs to work with both link and original\n get $originalId() {\n return this.$original.id;\n }\n // Convenience getter for code keying by record that needs to work with both link and original\n get $original() {\n return this.isLinked ? this.proxyMeta.originalRecord : this;\n }\n // Convenience getter to retrieve linked records\n get $links() {\n var _this$meta$linkedReco;\n return (_this$meta$linkedReco = this.meta.linkedRecords) !== null && _this$meta$linkedReco !== void 0 ? _this$meta$linkedReco : [];\n }\n }, _defineProperty(_class, \"$name\", 'ModelLink'), _class;\n});\n\n/**\n * @module Core/mixin/Factoryable\n */\nconst {\n defineProperty: defineProperty$5\n } = Reflect,\n ownerSymbol = Symbol('owner'),\n typeSplitRe = /[\\s,]+/;\n/**\n * This mixin is applied to base classes of a type that will be dynamically created by type name aliases.\n * ```\n * class Layout extends Base.mixin(Factoryable) {\n * static get factoryable() {\n * return {\n * defaultType : 'default'\n * };\n * }\n *\n * static get type() {\n * return 'default';\n * }\n * }\n *\n * class Fit extends Layout {\n * static get type() {\n * return 'fit';\n * }\n * }\n * ```\n *\n * Once a family of classes has been defined, instances are created using the `create()` method:\n * ```\n * const layout = Layout.create(config);\n * ```\n *\n * In the above example, `config` can be a type name (such as \"fit\") or a config object with a `type` property that\n * holds the type name.\n *\n * Factories can also extend other factories. For example, one factory creates objects that are useful across a wide\n * range of consumers, and a second factory creates objects for a more specialized consumer. If that specialized\n * consumer can also consume objects from the first factory, then the second factory can specify this relationship:\n * ```\n * class General extends Base.mixin(Factoryable) {\n * ...\n * }\n *\n * class Specialized extends Base.mixin(Factoryable) {\n * static get factoryable() {\n * return {\n * extends : General,\n * ...\n * };\n * }\n * }\n * ```\n * The `extends` factoryable option can be either a class that mixes in `Factoryable` or an array of such classes.\n * @mixin\n * @internal\n */\nvar Factoryable = (Target => class Factoryable extends (Target || Base$1) {\n static get $name() {\n return 'Factoryable';\n }\n static get declarable() {\n return [\n /**\n * This property getter returns options that control the factory process. This property getter must be\n * defined by the class that mixes in `Factoryable` in order to initialize the factory properly.\n * ```\n * static get factoryable() {\n * return {\n * defaultType : 'default'\n * };\n * }\n * ```\n * If there are no special options to provide, this method can return nothing (`undefined`):\n * ```\n * static get factoryable() {\n * // initialize the factory with all default options\n * }\n * ```\n * @static\n * @member {Object} factoryable\n * @property {Boolean} [factoryable.caseless=true] Specify `false` to use case-sensitive type names. The\n * default is to ignore case.\n * @property {String} [factoryable.defaultType=null] The default type to create when a config object has\n * no `typeKey` property.\n * @property {Function|Function[]} [factoryable.extends] One or more classes that mix in `Factoryable` to\n * use for resolving type names when a type name is not found in this factory.\n * @property {String} [factoryable.typeKey='type'] The name of the property in a config object that holds\n * the type name.\n * @internal\n */\n 'factoryable',\n /**\n * One or more additional type name aliases for this class. This can be useful for renaming and maintaining\n * a previous type name.\n * ```\n * class Fit extends Layout {\n * static get type() {\n * return 'fit';\n * }\n *\n * static get alias() {\n * return 'fill'; // deprecated type name (now known as 'fit')\n * }\n * }\n * ```\n * @static\n * @member {String|String[]} alias\n * @internal\n */\n 'alias',\n /**\n * The (canonical) type name for this class by which instances can be created using the static\n * {@link #function-create-static create()} method.\n * @static\n * @member {String} type\n */\n 'type'];\n }\n /**\n * Registers a class (`cls`) associated with the given `type`.\n * @param {String|String[]} type A string, array of strings or a comma-separated string containing the type names\n * for the specified `cls` class.\n * @param {Function} cls The class (constructor function)\n * @param {Boolean} [replace] Pass `true` to overwrite existing registered types. Otherwise, this method will throw\n * an exception if the `type` is already registered with this factory.\n * @internal\n */\n static register(type, cls, replace = globalThis.__BRYNTUM_EXAMPLE) {\n // `replace` default value is set to true while we are run inside a bryntum demo where code editor changes might\n // lead to same widget class being registered over and over.\n const {\n factoryable\n } = this.initClass(),\n {\n caseless,\n registry\n } = factoryable,\n types = StringHelper.split(type, typeSplitRe); // if type is a string[] it will just be returned\n for (let lower, name, i = 0; i < types.length; ++i) {\n name = types[i];\n lower = caseless ? name.toLowerCase() : name;\n if (!replace && lower in registry) {\n throw new Error(`Type \"${name}\" already registered with ${factoryable.class.name} factory`);\n }\n // Ensure class being registered is initialized. (initClass returns the class)\n registry[name] = registry[lower] = cls.initClass();\n }\n }\n /**\n * Returns 'true` if the passed instance is of the passed type or of a derived class.\n * @param {Object} instance The object to test.\n * @param {String} type The type to test against\n */\n static isA(instance, type) {\n return this.isType(instance, type, true);\n }\n /**\n * Returns 'true` if the passed instance is of the passed type.\n * @param {Object} instance The object to test.\n * @param {String} type The type to test against\n * @param {Boolean} [deep] Pass `true` to return `true` if the class is a subclass of the passed type.\n */\n static isType(instance, type, deep) {\n const {\n factoryable\n } = this,\n {\n caseless,\n registry\n } = factoryable,\n typeCls = registry[caseless ? type.toLowerCase() : type];\n // If the type to be tested against maps to a class, see if the instance is an instanceof that\n if (typeCls) {\n if (deep) {\n return instance instanceof typeCls;\n }\n return instance.constructor === typeCls;\n }\n return false;\n }\n static setupAlias(cls) {\n cls.register(cls.alias, cls);\n }\n static setupFactoryable(cls, meta) {\n const superClass = meta.super.class;\n let {\n factoryable\n } = cls;\n factoryable = _objectSpread2({\n caseless: true,\n defaultType: null,\n extends: superClass.factoryable ? [superClass] : null,\n typeKey: 'type'\n }, factoryable);\n factoryable.class = cls;\n factoryable.registry = Object.create(null);\n if (factoryable.extends && !Array.isArray(factoryable.extends)) {\n factoryable.extends = [factoryable.extends];\n }\n // Replace the class/static getter with a new one that returns the complete factoryable object:\n defineProperty$5(cls, 'factoryable', {\n get() {\n return factoryable;\n }\n });\n }\n static setupType(cls, meta) {\n const {\n type\n } = cls;\n cls.register(type, cls, meta.replaceType);\n // Copy the static type property onto the prototype as a readonly property:\n defineProperty$5(cls.prototype, 'type', {\n value: type\n });\n }\n /**\n * Creates an instance from this factory, given the type name or a config object.\n * @param {String|Object} config The type name string or config object.\n * @param {String|Function|Object} [options] Creation options (for details see {@link #function-reconfigure-static}).\n * @returns {Object}\n */\n static create(config, options) {\n return this.reconfigure(null, config, options);\n }\n /**\n * Reconfigures an optional existing instance based on the provided config and returns the correctly configured\n * instance. This will be the `existingInstance` if the `config` does not specify a different type.\n *\n * If `config` is `null` (or simply falsy), this method will destroy the `existingInstance` (if any) and return\n * `null`.\n *\n * If there is no `existingInstance`, the config must specify a type. That is, it must be a string (the type name)\n * or an object containing a `type` property, the `defaultType` must be provided or the factory itself must have\n * a `defaultType` specified (see {@link #property-factoryable-static}).\n *\n * When an `existingInstance` is provided and a type is specified, the instance will be reconfigured via `setConfig`\n * if it is of that type. Otherwise, the `existingInstance` is destroyed (if it is owned by the `options.owner`)\n * and a new instance of the correct type is created.\n *\n * @param {Object} existingInstance The instance to reconfigure. This can be `null`.\n *\n * @param {String|Object} config The type name string or config object.\n *\n * @param {String|Function|Object} [options] Additional options to control the reconfiguration process. If this\n * value is a string or a class constructor, it treated as `options.type`. If this value is an class instance, it\n * is used as the `options.owner`. If this is a function, it is treated as `options.setup`. NOTE: functions declared\n * using the `function` keyword are equivalent to class constructors. Use an arrow function or a class method to\n * avoid this when a `setup` function is intended.\n *\n * @param {String|Function} [options.type] The default type to use if the `config` object does not specify a type.\n *\n * @param {Object} [options.owner] The owner of any created instances. If the `existingInstance` is being replaced,\n * this value determines if the instance will be destroyed.\n *\n * @param {Object} [options.defaults] A config object of default values to use when creating a new instance.\n *\n * @param {Function|String} [options.setup] A function or the name of a method (on the `options.owner`) to call\n * prior to creating a new instance. It is passed the config object that will be used to create the instance. If a\n * truthy value is returned, that value is passed to the constructor instead of the provided config object.\n *\n * @param {Function|String} [options.transform] A function or the name of a method (on the `options.owner`) to call\n * with the raw config object prior to processing and the value it returns replaces the raw value. This function is\n * used to transform strings or arrays (for example) into proper config objects.\n *\n * @param {Function|String} [options.cleanup] A function or the name of a method (on the `options.owner`) to call\n * prior to destroying the `existingInstance`. The `existingInstance` is passed as the sole argument.\n *\n * @returns {Object} The reconfigured instance (either `existingInstance` or a new instance of the desired type)\n */\n static reconfigure(existingInstance, config, options) {\n const me = this,\n {\n factoryable\n } = me,\n {\n typeKey\n } = factoryable;\n let defaultType = options,\n cleanup,\n defaults,\n mergeType,\n owner,\n prepared,\n setup,\n t,\n transform,\n type;\n // Pick apart the options and set the vars accordingly\n if (options && !ObjectHelper.isClass(options)) {\n // if (options is not the defaultType)\n defaultType = null;\n t = typeof options;\n if (t === 'function') {\n setup = options;\n } else if (t === 'string') {\n defaultType = options;\n } else if (ObjectHelper.isObject(options)) {\n // TODO revert to\n // ({ cleanup, defaults, owner, setup, type : defaultType } = options);\n // after this issue is fixed https://github.com/bryntum/bryntum-suite/issues/1457\n cleanup = options.cleanup;\n defaults = options.defaults;\n owner = options.owner;\n setup = options.setup;\n defaultType = options.type;\n transform = options.transform;\n } else {\n owner = options;\n }\n }\n if (transform) {\n config = typeof transform === 'string' ? owner[transform](config) : transform(config);\n }\n type = config;\n // Figure out config... it's either a type (string), a config object or the actual instance.\n if (typeof type === 'string') {\n config = {};\n } else if (config) {\n if (config === true) {\n config = {};\n }\n if (!ObjectHelper.isObject(config)) {\n // If we are being given an instance (not a config object), discard or destroy the existingInstance\n if (owner && config !== existingInstance && (existingInstance === null || existingInstance === void 0 ? void 0 : existingInstance[ownerSymbol]) === owner) {\n var _cleanup;\n typeof cleanup === 'string' ? owner[cleanup](existingInstance) : (_cleanup = cleanup) === null || _cleanup === void 0 ? void 0 : _cleanup(existingInstance);\n existingInstance.destroy();\n }\n return config;\n }\n type = config[typeKey];\n }\n type = type && me.resolveType(type);\n // We've got our orders... make it so...\n if (existingInstance) {\n // We can have a type-less config object when reconfiguring an existing instance, but if we have a type,\n // the existingInstance must be of that type. If !config that means we are nulling out.\n if (config && (!type || existingInstance.constructor === type)) {\n if (typeKey in config) {\n config = ObjectHelper.assign({}, config);\n delete config[typeKey]; // so \"type\" won't be processed as a config property\n }\n\n existingInstance.setConfig(config);\n return existingInstance;\n }\n if (owner && existingInstance[ownerSymbol] === owner) {\n var _cleanup2;\n typeof cleanup === 'string' ? owner[cleanup](existingInstance) : (_cleanup2 = cleanup) === null || _cleanup2 === void 0 ? void 0 : _cleanup2(existingInstance);\n existingInstance.destroy();\n }\n }\n if (config) {\n if (defaults) {\n if (!(mergeType = type)) {\n if (!(mergeType = defaults[typeKey] || defaultType || factoryable.defaultType)) {\n throw new Error(`No default mergeType defined for ${factoryable.class.name} factory`);\n }\n mergeType = me.resolveType(mergeType);\n }\n if (mergeType) {\n // Allow the merge fn of each config to perform the task:\n config = mergeType.mergeConfigs(defaults, config);\n }\n }\n if (setup) {\n prepared = typeof setup === 'string' ? owner[setup](config, type, defaults) : setup(config, type, defaults);\n if (prepared === null) {\n return prepared;\n }\n config = prepared || config;\n }\n if (!type) {\n // One more check on config[typeKey] since the setup() function may have added it...\n if (!(type = config[typeKey] || defaultType || factoryable.defaultType)) {\n throw new Error(`No default type defined for ${factoryable.class.name} factory`);\n }\n type = me.resolveType(type);\n }\n if (defaults && !mergeType) {\n config = type.mergeConfigs(defaults, config);\n }\n if (typeKey in config) {\n config = ObjectHelper.assign({}, config);\n delete config[typeKey]; // so \"type\" won't be processed as a config property\n }\n\n config = new type(config);\n if (owner) {\n config[ownerSymbol] = owner;\n }\n }\n return config || null;\n }\n /**\n * This method returns the constructor of the class registered for the given type name.\n * @param {String} type The type name to look up.\n * @param {Boolean} [optional] Pass `true` to return `null` if `type` is not found instead of throwing an exception.\n * @returns {Function}\n */\n static resolveType(type, optional) {\n if (typeof type !== 'string') {\n return type;\n }\n const {\n factoryable\n } = this,\n bases = factoryable.extends;\n let result = factoryable.registry[factoryable.caseless ? type.toLowerCase() : type],\n i;\n for (i = 0; !result && bases && i < bases.length; ++i) {\n // Pass optional=true to base factory so the error is our own should the lookup fail:\n result = bases[i].resolveType(type, /* optional = */true);\n }\n if (!result && !optional) {\n throw new Error(`Invalid type name \"${type}\" passed to ${factoryable.class.name} factory`);\n }\n return result;\n }\n});\n\n/**\n * @module Core/data/field/DataField\n */\nconst {\n getOwnPropertyDescriptor\n} = Reflect;\n/**\n * This is the base class for Model field classes. A field class defines how to handle the data for a particular type\n * of field. Many of these behaviors can be configured on individual field instances.\n *\n * @extends Core/Base\n */\nclass DataField extends Base$1.mixin(Factoryable) {\n static get $name() {\n return 'DataField';\n }\n static get type() {\n return 'auto';\n }\n static get factoryable() {\n return {\n defaultType: 'auto'\n };\n }\n static get prototypeProperties() {\n return {\n /**\n * The name of the field.\n * @config {String} name\n */\n /**\n * The label text for a form item generated for this field. This is also used to create\n * a column header for a {@link #config-column} for this field.\n * @config {String} label\n */\n /**\n * A column config object for a column to display this field in a grid. For simple, atomic\n * data types, such as `date`, `string`, `boolean`, `number` and `integer`, this is optional\n * and the appropriate column type can be inferred.\n *\n * This also provides default values for column configuration if a configured column definition\n * for a grid lacks a property.\n *\n * For complex fields, such as identifiers which link to other records, a more capable\n * column type may be specified, for example a `type : `number'` field may be configured\n * with\n *\n * ```javascript\n * column : 'percent'\n * ```\n * or\n * ```javascript\n * column : {\n * type : 'percent',\n * width : 100\n * }\n * ```\n * if it represents a percentage vaue and needs appropriate rendering and editing.\n * @config {String|Object} column\n */\n /**\n * A config object for a widget to edit this field in a form. For simple, atomic\n * data types, such as `date`, `string`, `boolean`, `number` and `integer`, this is optional\n * and the appropriate input widget type can be inferred.\n *\n * For complex fields, such as identifiers which link to other records, a more capable\n * widget may be specified.\n * @config {String|Object} editor\n * @private\n */\n /**\n * A function that compares two values and returns a value < 0 if the first is less than the second, or 0\n * if the values are equal, or a value > 0 if the first is greater than the second.\n * @config {Function}\n * @default\n */\n compare: null,\n /**\n * A function that compares two objects or records using the `compare` function on the properties of each\n * objects based on the `name` of this field.\n * @config {Function}\n * @default\n * @internal\n */\n compareItems: null,\n /**\n * The property in a record's data object that contains the field's value.\n * Defaults to the field's `name`.\n * @config {String}\n */\n dataSource: null,\n /**\n * The type of this field.\n * @config {'string'|'array'|'boolean'|'date'|'model'|'object'|'number'|'int'|'durationunit'}\n */\n type: null,\n /**\n * The default value to assign to this field in a record if no value is provided.\n * @config {*} defaultValue\n */\n /**\n * Setting to `true` will ensure this field is included in any update/insert request payload\n * when a Store / Project / CrudManager performs a request.\n * @config {Boolean}\n * @default\n */\n alwaysWrite: false,\n /**\n * Setting to `false` indicates that `null` is not a valid value.\n * @config {Boolean}\n * @default\n */\n nullable: true,\n /**\n * The value to return from {@link #function-print} for a `null` or `undefined` value.\n * @config {String}\n * @default\n */\n nullText: null,\n /**\n * The value to replace `null` when the field is not `nullable`.\n * @config {*}\n * @default\n */\n nullValue: undefined,\n /**\n * Set to `false` to exclude this field when saving records to a server.\n * @config {Boolean}\n * @default\n */\n persist: true,\n /**\n * Set to `true` for the field's set accessor to ignore attempts to set this field.\n * @config {Boolean}\n * @default\n */\n readOnly: false,\n /**\n * By default, defined {@link Core.data.Model} fields may be used to create a grid column\n * suitable for diplaying that field in a grid cell. Some fields may not be suitable for\n * features which automatically generate columns for view. These fields are created using\n * `internal : true`. Some examples are the `expanded` and `rowHeight` fields which are used\n * internally.\n * @config {Boolean}\n * @default\n */\n internal: false\n };\n }\n /**\n * The class that first defined this field. Derived classes that override a field do not change this property.\n * @member {Core.data.Model} definedBy\n * @private\n * @readonly\n */\n /**\n * The class that most specifically defined this field. Derived classes that override a field set this property to\n * themselves.\n * @member {Core.data.Model} owner\n * @private\n * @readonly\n */\n // NOTE: Since we create lots of instances, they have no life cycle (they are not destroyed) and are readonly after\n // creation, this class does not use configurable.\n construct(config) {\n const me = this;\n if (config) {\n me.name = config.name; // assign name first for diagnostic reasons\n Object.assign(me, config);\n }\n if (me.compare) {\n // We wrap in this way to allow compareItems() to be used as an array sorter fn (which gets no \"this\"):\n me.compareItems = (itemA, itemB) => me.compare(itemA === null || itemA === void 0 ? void 0 : itemA[me.name], itemB === null || itemB === void 0 ? void 0 : itemB[me.name]);\n }\n }\n /**\n * This method transforms a data value into the desired form for storage in the record's data object.\n *\n * ```javascript\n * export default class Task extends TaskModel {\n * static get fields() {\n * return [\n * {\n * name : 'status',\n * convert : value => {\n * if (value >= 100) {\n * return 'done';\n * }\n * else if (value > 0) {\n * return 'started';\n * }\n * }\n * }\n * ];\n * }\n * }\n * ```\n *\n * @method convert\n * @param {*} value The value to convert for storage in a record.\n * @returns {*} The converted value.\n */\n /**\n * This method transforms a data value into the desired form for transmitting to a server.\n * @method serialize\n * @param {*} value The value to serialize\n * @param {Core.data.Model} record The record that contains the value being serialized.\n * @returns {*} The serialized value.\n */\n /**\n * This optional method is called when setting a data value on a record.\n * @method set\n * @param {*} value The value to set\n * @param {Object} data The records future or current data object to set value to\n * @param {Core.data.Model} record The record that owns or will own the data object\n * @internal\n */\n /**\n * This optional method is called when a record using this field is created.\n * @method init\n * @param {Core.data.Model} record The record being created\n * @internal\n */\n /**\n * Create getter and setter functions for the specified field name under the specified key.\n * @internal\n */\n defineAccessor(target, force) {\n const {\n name,\n dataSource\n } = this;\n // Bail out if trying to override an explicitly defined accessor\n if (!force && name in target && target.$meta.hierarchy.some(current => {\n var _getOwnPropertyDescri;\n return ((_getOwnPropertyDescri = getOwnPropertyDescriptor(current.prototype, name)) === null || _getOwnPropertyDescri === void 0 ? void 0 : _getOwnPropertyDescri.enumerable) === false;\n })) {\n return;\n }\n Reflect.defineProperty(target, name, {\n configurable: true,\n // To allow removing it later\n enumerable: true,\n // no arrow functions here, need `this` to change to instance\n get: this.complexMapping ? function () {\n return this.complexGet(name, dataSource);\n } : function () {\n // Inlined copy of Model#flatGet, to save a fn call since this is hit very often\n // When changes are batched, they get stored by field name, not dataSource\n if (this.batching && name in this.meta.batchChanges) {\n return this.meta.batchChanges[name];\n }\n return dataSource in this.data ? this.data[dataSource] : this.data[name];\n },\n // no arrow functions here, need `this` to change to instance\n set(value) {\n // Since the accessor is defined on a base class, we dip into the fields map for the actual\n // calling class to get the correct field definition\n const field = this.$meta.fields.map[name];\n // Only set if field is read/write. Privately, we use setData to set its value\n if (!(field && field.readOnly)) {\n this.set(name, value);\n }\n }\n });\n }\n /**\n * Compares two values for this field and returns `true` if they are equal, and `false` if not.\n * @param {*} first The first value to compare for equality.\n * @param {*} second The second value to compare for equality.\n * @returns {Boolean} `true` if `first` and `second` are equal.\n */\n isEqual(first, second) {\n return ObjectHelper.isEqual(first, second);\n }\n /**\n * Returns the given field value as a `String`. If `value` is `null` or `undefined`, the value specified by\n * {@link #config-nullText} is returned.\n * @param {*} value The value to convert to a string.\n * @returns {String}\n */\n print(value) {\n return value == null ? this.nullText : this.printValue(value);\n }\n /**\n * Returns the given, non-null field value as a `String`.\n * @param {*} value The value to convert to a string (will not be `null` or `undefined`).\n * @returns {String}\n * @protected\n */\n printValue(value) {\n return String(value);\n }\n}\nDataField._$name = 'DataField';\n\n/**\n * @module Core/data/field/ArrayDataField\n */\n/**\n * This field class handles fields that hold an array.\n *\n * ```javascript\n * class Task extends Model {\n * static get fields() {\n * return [\n * 'name',\n * // Array field\n * { name : 'todo', type : 'array' }\n * ];\n * }\n * }\n * ```\n *\n * A record can be constructed like this:\n *\n * ```javascript\n * const task = new Task({\n * name : 'Task 1',\n * todo : [\n * { text : 'Something', done : false },\n * { text : 'Some other thing', done : true }\n * ]\n * };\n * ```\n *\n * Or by populating a store:\n *\n * ```\n * const store = new Store({\n * modelClass : Task,\n * data : [\n * {\n * name : 'Task 1',\n * todo : [\n * { text : 'Something', done : false },\n * { text : 'Some other thing', done : true }\n * ]\n * },\n * ...\n * ]\n * });\n *\n * ```\n *\n * For the field to count as modified, the whole array has to be replaced:\n *\n * ```javascript\n * // This wont be detected as a modification\n * task.todo[0].done = true;\n * // task.isModified === false\n *\n * // But this will\n * const todo = task.todo.slice(); // Create a new array with same contents\n * todo[0].done = true;\n * task.todo = todo;\n * // task.isModified === true\n * ```\n *\n * @extends Core/data/field/DataField\n * @classtype array\n */\nclass ArrayDataField extends DataField {\n static get $name() {\n return 'ArrayDataField';\n }\n static get type() {\n return 'array';\n }\n isEqual(a, b) {\n return a === b;\n }\n}\nArrayDataField.initClass();\nArrayDataField._$name = 'ArrayDataField';\n\n/**\n * @module Core/data/field/BooleanDataField\n */\n/**\n * This field class handles field of type `Boolean`.\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'active', type : 'boolean' }\n * ];\n * }\n * }\n * ```\n *\n * When a field is declared as a `'boolean'`, non-null values are promoted to `Boolean` type. This is seldom required,\n * but can be useful if a field value is received as a number but should be treated as a boolean.\n *\n * @extends Core/data/field/DataField\n * @classtype boolean\n */\nclass BooleanDataField extends DataField {\n static get $name() {\n return 'BooleanDataField';\n }\n static get type() {\n return 'boolean';\n }\n static get alias() {\n return 'bool';\n }\n static get prototypeProperties() {\n return {\n /**\n * The value to replace `null` when the field is not `nullable`.\n * @config {Boolean}\n * @default\n */\n nullValue: false\n };\n }\n isEqual(first, second) {\n if (first == null && second == null) {\n return true;\n }\n return super.isEqual(first, second);\n }\n convert(value) {\n return value == null ? this.nullable ? value : this.nullValue : Boolean(value);\n }\n}\nBooleanDataField.initClass();\nBooleanDataField._$name = 'BooleanDataField';\n\n/**\n * @module Core/data/field/DateDataField\n */\n/**\n * This field class handles field of type `Date`.\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'birthday', type : 'date', format : 'YYYY-MM-DD' },\n * { name : 'age', readOnly : true }\n * ];\n * }\n * }\n * ```\n *\n * When a field is declared as a `'date'`, non-null values are promoted to `Date` type. This is frequently needed due\n * to how date types are serialized to JSON strings.\n *\n * Date fields can have a special `defaultValue` of `'now'` which will convert to the current date/time.\n *\n * @extends Core/data/field/DataField\n * @classtype date\n */\nclass DateDataField extends DataField {\n static get $name() {\n return 'DateDataField';\n }\n static get type() {\n return 'date';\n }\n static get prototypeProperties() {\n return {\n /**\n * The format of the date field.\n *\n * See {@link Core.helper.DateHelper DateHelper} for details.\n * @config {String} format\n * @default DateHelper.defaultFormat\n */\n format: null\n };\n }\n convert(value) {\n if (value == null) {\n if (!this.nullable) {\n value = this.nullValue;\n }\n } else if (value === 'now') {\n value = new Date();\n } else if (!(value instanceof Date)) {\n // Use configured format, if null/undefined use DateHelpers default format\n value = DateHelper.parse(value, this.format || DateHelper.defaultParseFormat);\n // if parsing has failed, we would like to return `undefined` to indicate the \"absence\" of data\n // instead of `null` (presence of \"empty\" data)\n value = value || undefined;\n }\n return value;\n }\n serialize(value) {\n if (value instanceof Date) {\n // Use configured format or DateHelpers default one\n value = DateHelper.format(value, this.format || DateHelper.defaultFormat);\n }\n return value;\n }\n printValue(value) {\n return DateHelper.format(value, this.format || DateHelper.defaultFormat);\n }\n}\nDateDataField.initClass();\nDateDataField._$name = 'DateDataField';\n\n/**\n * @module Core/data/field/StringDataField\n */\n/**\n * This field class handles field of type `String`.\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * { name : 'name', type : 'string' }\n * ];\n * }\n * }\n * ```\n *\n * When a field is declared as a `'string'`, non-null values are promoted to `String` type. This is seldom required, but\n * can be useful if a field value is received as a number but should be treated as a string.\n *\n * @extends Core/data/field/DataField\n * @classtype string\n */\nclass StringDataField extends DataField {\n static get $name() {\n return 'StringDataField';\n }\n static get type() {\n return 'string';\n }\n static get prototypeProperties() {\n return {\n /**\n * The value to replace `null` when the field is not `nullable`.\n * @config {String}\n * @default\n */\n nullValue: ''\n };\n }\n convert(value) {\n return value == null ? this.nullable ? value : this.nullValue : String(value);\n }\n}\nStringDataField.initClass();\nStringDataField._$name = 'StringDataField';\n\n/**\n * @module Core/data/field/DurationUnitDataField\n */\n/**\n * This field class handles field of type `durationunit` (string type). See {@link Core.data.Duration} for more information.\n *\n * ```javascript\n * class Event extends Model {\n * static get fields() {\n * return [\n * { name : 'durationUnit', type : 'durationunit' }\n * ];\n * }\n * }\n * ```\n *\n * @extends Core/data/field/StringDataField\n * @classtype durationunit\n */\nclass DurationUnitDataField extends StringDataField {\n static get $name() {\n return 'DurationUnitDataField';\n }\n static get type() {\n return 'durationunit';\n }\n isEqual(first, second) {\n return DateHelper.compareUnits(first, second) === 0;\n }\n}\nDurationUnitDataField.initClass();\nDurationUnitDataField._$name = 'DurationUnitDataField';\n\n/**\n * @module Core/data/field/IntegerDataField\n */\n/**\n * This field class handles field of type `Number` with no decimal digits.\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'age', type : 'int' }\n * ];\n * }\n * }\n * ```\n *\n * When a field is declared as a `'int'`, non-null values are promoted to `Number` type and decimals are removed using\n * a specified `rounding`. This field type can be useful if a field value is received as a string but should be stored\n * as a number or has a fractional component that must be rounded or truncated.\n *\n * @extends Core/data/field/DataField\n * @classtype integer\n */\nclass IntegerDataField extends DataField {\n static get $name() {\n return 'IntegerDataField';\n }\n static get type() {\n return 'integer';\n }\n static get alias() {\n return 'int';\n }\n static get prototypeProperties() {\n return {\n /**\n * The value to replace `null` when the field is not `nullable`.\n * @config {Number}\n * @default\n */\n nullValue: 0,\n /**\n * The `Math` method to use to ensure fractional component is removed.\n * @config {'round'|'floor'|'ceil'}\n * @default\n */\n rounding: 'round'\n };\n }\n convert(value) {\n return value == null ? this.nullable ? value : this.nullValue : Math[this.rounding](Number(value));\n }\n}\nIntegerDataField.initClass();\nIntegerDataField._$name = 'IntegerDataField';\n\n/**\n * @module Core/data/field/ModelDataField\n */\n/**\n * This field class handles fields that hold other records.\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'address', type : 'model' }\n * ];\n * }\n * }\n * ```\n *\n * @internal\n * @extends Core/data/field/DataField\n * @classtype model\n */\nclass ModelDataField extends DataField {\n static get $name() {\n return 'ModelDataField';\n }\n static get type() {\n return 'model';\n }\n static get prototypeProperties() {\n return {\n complexMapping: true\n };\n }\n isEqual(first, second) {\n // Check for semantic equality. An instance of the same Model class of the same ID is equal.\n return first && second && second instanceof first.constructor && second.id == first.id;\n }\n}\nModelDataField.initClass();\nModelDataField._$name = 'ModelDataField';\n\n/**\n * @module Core/data/field/NumberDataField\n */\n/**\n * This field class handles field of type `Number`.\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'age', type : 'number' }\n * ];\n * }\n * }\n * ```\n *\n * When a field is declared as a `'number'`, non-null values are promoted to `Number` type. This is seldom required, but\n * can be useful if a field value is received as a string but should be treated as a number.\n *\n * @extends Core/data/field/DataField\n * @classtype number\n */\nclass NumberDataField extends DataField {\n static get $name() {\n return 'NumberDataField';\n }\n static get type() {\n return 'number';\n }\n static get alias() {\n return 'float';\n }\n static get prototypeProperties() {\n return {\n /**\n * The value to replace `null` when the field is not `nullable`.\n * @config {Number}\n * @default\n */\n nullValue: 0,\n /**\n * The numeric precision of this field. Values are rounded to the specified number of digits. If `null`,\n * the default, no rounding is performed.\n * @config {Number}\n * @default\n */\n precision: null\n };\n }\n isEqual(first, second) {\n // NaN !== NaN in JS which results having a number field w/ such value always dirty\n // Not sure having two NaN-s not equal each other makes any sense here to us ..so handle it\n return isNaN(Number(first)) && isNaN(Number(second)) || super.isEqual(first, second);\n }\n convert(value) {\n if (value == null) {\n return this.nullable ? value : this.nullValue;\n }\n value = Number(value);\n let scale = this.precision;\n if (scale) {\n scale = 10 ** scale;\n value = Math.round(value * scale) / scale;\n } else if (scale === 0) {\n value = Math.round(value);\n }\n return value;\n }\n}\nNumberDataField.initClass();\nNumberDataField._$name = 'NumberDataField';\n\n/**\n * @module Core/data/field/ObjectDataField\n */\n/**\n * This field class handles fields that hold an object.\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'address', type : 'object' }\n * ];\n * }\n * }\n * ```\n *\n * For the field to count as modified, the whole object has to be replaced:\n *\n * ```javascript\n * person.address = { ...address };\n * ```\n *\n * @extends Core/data/field/DataField\n * @classtype object\n */\nclass ObjectDataField extends DataField {\n static get $name() {\n return 'ObjectDataField';\n }\n static get type() {\n return 'object';\n }\n static get prototypeProperties() {\n return {\n complexMapping: true\n };\n }\n}\nObjectDataField.initClass();\nObjectDataField._$name = 'ObjectDataField';\n\n/**\n * @module Core/data/field/StoreDataField\n */\n/**\n * This field class handles fields that accepts an array that is then converted to a store.\n *\n * ```javascript\n * class Task extends Model {\n * static get fields() {\n * return [\n * 'name',\n * // Store field\n * { name : 'subTasks', type : 'store', storeClass : Store }\n * ];\n * }\n * }\n * ```\n *\n * A record can be constructed like this:\n *\n * ```javascript\n * const task = new Task({\n * name : 'Task 1',\n * subTasks : [\n * { text : 'Something', done : false },\n * { text : 'Some other thing', done : true }\n * ]\n * };\n * ```\n *\n * Or by populating a store:\n *\n * ```\n * const store = new Store({\n * modelClass : Task,\n * data : [\n * {\n * name : 'Task 1',\n * subTasks : [\n * { text : 'Something', done : false },\n * { text : 'Some other thing', done : true }\n * ]\n * },\n * ...\n * ]\n * });\n *\n * ```\n *\n * Whenever the store or its records are manipulated, the field will be marked as modified:\n *\n * ```javascript\n * // These will all be detected as modifications\n * task.subTasks.first.done = true;\n * task.subTasks.last.remove();\n * task.subTasks.add({ text : 'New task', done : false });\n * ```\n *\n * @extends Core/data/field/DataField\n * @classtype store\n * @internal\n */\nclass StoreDataField extends DataField {\n /**\n * Store class to use when creating the store.\n * @config {Class} storeClass\n */\n // Initializer, called when creating a record. Sets up the store and populates it with any initial data\n init(data, record) {\n var _record;\n const me = this,\n storeName = `${me.name}Store`,\n config = {\n skipStack: true\n }; // Optimization when used from sources, don't create a stack in Base\n // Optionally apply modelClass, for convenient configuration\n if (me.modelClass) {\n config.modelClass = me.modelClass;\n }\n // Call optional initializer (initSubTasksStore for subTasks field) on the record, letting it manipulate the\n // config before creating a store\n (_record = record[`init${StringHelper.capitalize(storeName)}`]) === null || _record === void 0 ? void 0 : _record.call(record, config);\n if (!config.storeClass && !me.storeClass) {\n throw new Error(`Field '${me.name}' with type 'store' must have a storeClass configured`);\n }\n // Store has to be assigned on the record, field is shared\n const store = record.meta[storeName] = new (config.storeClass || me.storeClass)(config);\n if (me.complexMapping) {\n ObjectHelper.setPath(data, me.dataSource, store);\n } else {\n data[me.dataSource] = store;\n }\n // Don't warn about generated ids, responsibility lies elsewhere\n store.verifyNoGeneratedIds = false;\n // Keep track of if id should be included when serializing or not\n store.usesId = !store.count || !store.every(record => record.hasGeneratedId);\n // Cache value\n store.$currentValue = me.getValue(store);\n // Track changes to the store, applying them to the record and caching current value to be used when\n // serializing and in comparisons (required, otherwise we would be comparing to already updated store\n store.on('change', () => {\n const value = me.getValue(store);\n if (!store.$isSettingStoreFieldData) {\n record.set(me.name, value);\n }\n store.$currentValue = value;\n });\n }\n // Called when setting a new value to the field on a record\n set(value, data, record) {\n var _record2, _record3;\n const me = this,\n storeName = `${me.name}Store`,\n {\n [storeName]: store\n } = record.meta;\n // Lazy store might not be created yet, gets created on first access. Returning false keeps the value for later\n // if called during init\n if (!store) {\n return false;\n }\n // Prevent changes from leading to recursive calls\n if (store.$isSettingStoreFieldData) {\n return;\n }\n store.$isSettingStoreFieldData = true;\n // Call optional processing fn (processSubTasksStoreData for subTasks field) on the record, letting it\n // manipulate the data before creating records\n value = (_record2 = (_record3 = record[`process${StringHelper.capitalize(storeName)}Data`]) === null || _record3 === void 0 ? void 0 : _record3.call(record, value, record)) !== null && _record2 !== void 0 ? _record2 : value;\n // Apply incoming array to store\n store.data = value;\n store.$isSettingStoreFieldData = false;\n // Keep track of if id should be included when serializing or not\n store.usesId = !store.count || !store.every(record => record.hasGeneratedId);\n }\n serialize(value, record) {\n return record.meta[`${this.name}Store`].$currentValue;\n }\n // Extract persistable values, optionally including id depending on if ids are used\n getValue(store) {\n return store.allRecords.map(r => {\n const data = r.persistableData;\n if (!store.usesId) {\n delete data.id;\n }\n return data;\n });\n }\n isEqual(a, b) {\n var _a, _b;\n if ((_a = a) !== null && _a !== void 0 && _a.isStore) {\n a = a.$currentValue;\n }\n if ((_b = b) !== null && _b !== void 0 && _b.isStore) {\n b = b.$currentValue;\n }\n return ObjectHelper.isDeeplyEqual(a, b);\n }\n}\n_defineProperty(StoreDataField, \"$name\", 'StoreDataField');\n_defineProperty(StoreDataField, \"type\", 'store');\nStoreDataField.initClass();\nStoreDataField._$name = 'StoreDataField';\n\nconst {\n defineProperty: defineProperty$4\n } = Reflect,\n {\n hasOwn: hasOwn$1\n } = ObjectHelper,\n _undefined = undefined,\n internalProps = {\n children: 1,\n data: 1,\n meta: 1\n },\n abbreviationFields = ['name', 'title', 'text', 'label', 'description'],\n fieldDataTypes = {\n boolean: 1,\n number: 1,\n date: 1,\n object: 1\n };\n/**\n * @module Core/data/Model\n */\n/**\n * A Model is the definition of a record which can be added to (or loaded into) a {@link Core.data.Store}. It defines\n * which fields the data contains and exposes an interface to access and manipulate that data. The Model data is\n * populated through simple a JSON object.\n *\n * By default a Model stores a shallow copy of its raw json, but for records in stores configured with\n * `useRawData: true` it stores the supplied json object as is.\n *\n * ## Defining fields\n *\n * A Model can either define its fields explicitly (see {@link #property-fields-static}) or have them created from its\n * data (see {@link #property-autoExposeFields-static}). This snippet shows a model with 4 fields defined explicitly:\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'birthday', type : 'date', format : 'YYYY-MM-DD' },\n * { name : 'shoeSize', type : 'number', defaultValue : 11 },\n * { name : 'age', readOnly : true }\n * ];\n * }\n * }\n * ```\n *\n * The first field (name) has an unspecified type, which means the field's value is held as received with no conversion\n * applied. The second field (birthday) is defined to be a date, which will make the model parse any supplied value into\n * an actual date. The parsing is handled by {@link Core/helper/DateHelper#function-parse-static DateHelper.parse()}\n * using the specified `format`, or if no format is specified using\n * {@link Core/helper/DateHelper#property-defaultFormat-static DateHelper.defaultFormat}.\n *\n * The set of standard field types is as follows:\n *\n * - {@link Core.data.field.ArrayDataField `array`}\n * - {@link Core.data.field.BooleanDataField `boolean`}\n * - {@link Core.data.field.DateDataField `date`}\n * - {@link Core.data.field.IntegerDataField `integer`}\n * - {@link Core.data.field.ObjectDataField `object`}\n * - {@link Core.data.field.NumberDataField `number`}\n * - {@link Core.data.field.StringDataField `string`}\n *\n * You can also set a `defaultValue` that will be used if the data does not contain a value for the field:\n *\n * ```javascript\n * { name : 'shoeSize', type : 'number', defaultValue : 11 }\n * ```\n *\n * To create a record from a Model, supply data to its constructor:\n *\n * ```javascript\n * let guy = new Person({\n * id : 1,\n * name : 'Dude',\n * birthday : '2014-09-01'\n * });\n * ```\n *\n * If no id is specified, a temporary id based on a UUID will be generated. This id is not meant to be serialized, it\n * should instead be replaced by the backend with a proper id from the underlying database (or similar).\n *\n * Please avoid using reserved names for your fields (such as `parent`, `children` and others that are used as Model\n * properties) to avoid possible data collisions and bugs.\n *\n * ## Nested fields\n *\n * Model supports mapping fields to nested data structures using dot `.` separated paths as the `dataSource`. For\n * example given this JSON object:\n *\n * ```json\n * {\n * name : 'Borje Salming',\n * team : {\n * name : 'Toronto Maple Leafs',\n * league : 'NHL'\n * }\n * }\n * ```\n *\n * A field can be mapped to the nested team name by using `dataSource : 'team.name'`:\n *\n * ```javascript\n * class Player extends Model {\n * static get fields() {\n * return [\n * 'name',\n * // Field mapped to a property on a nested object\n * { name : 'teamName', dataSource : 'team.name' }\n * ]\n * }\n * }\n * ```\n *\n * Usage:\n *\n * ```javascript\n * const player = new Player(json);\n *\n * console.log(player.teamName); // > Toronto Maple Leafs\n * player.teamName = 'Detroit Red Wings'; // The name property of the team object is updated\n * ```\n *\n * ### Updating a nested object\n *\n * Note that directly altering a property of the nested object wont register as an update of the record, record does not\n * track changes deeply. If nested fields (as described above) is not enough for your usecase you can map a field\n * directly to the nested object and then assign a shallow copy of it to the record on changes:\n *\n * ```javascript\n * class Player extends Model {\n * static get fields() {\n * return [\n * ...,\n * // Field mapped directly to the nested object\n * { name : 'team', type : 'object' }\n * ]\n * }\n * }\n *\n * // \"External object\" to nest\n * const team = {\n * name : 'Brynas',\n * league : 'SHL'\n * }\n *\n * const player = new Player({\n * name : 'Borje Salming',\n * team\n * });\n *\n * // This will not flag player as dirty\n * team.league = 'CHL';\n *\n * // Instead you have to reassign the mapped field\n * player.team = { ...player.team };\n * ```\n *\n * ## Array fields\n *\n * When a field holds an array we recommend using the {@link Core/data/field/ArrayDataField `array`} type for the field:\n *\n * ```javascript\n * class GroceryList extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'items', type : 'array' }\n * ];\n * }\n * }\n * ```\n *\n *
\n * Modifying items in the array will not flag the field as updated, since the array itself does not change. For it to\n * register a change, you must assign it a new array (could be a copy of the old one). For more info, see\n * {@link Core/data/field/ArrayDataField}\n *
\n *\n * ## Persisting fields\n *\n * By default, all fields are persisted. If you don't want particular field to get saved to the server, configure it\n * with `persist: false`. In this case field will not be among changes which are sent by\n * {@link Core/data/AjaxStore#function-commit store.commit()}, otherwise its behavior doesn't change.\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'age', persist : false }\n * ];\n * }\n * }\n * ```\n *\n * ## The `idField`\n * By default Model expects its id to be stored in a field named \"id\". The name of the field can be customized by\n * setting {@link #property-idField-static}:\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'age', persist : false },\n * { name : 'personId' },\n * { name : 'birthday', type : 'date' }\n * ];\n * }\n * }\n *\n * // Id drawn from 'id' property by default; use custom field here\n * Person.idField = 'personId';\n *\n * let girl = new Person({\n * personId : 2,\n * name : 'Lady',\n * birthday : '2011-11-05'\n * });\n * ```\n *\n * ## Getting and setting values\n *\n * Fields are used to generate getters and setters on the records. Use them to access or modify values (they are\n * reactive):\n *\n * ```javascript\n * console.log(guy.name);\n * girl.birthday = new Date(2011,10,6);\n * ```\n *\n * NOTE: In an application with multiple different models you should subclass Model, since the prototype is decorated\n * with getters and setters. Otherwise, you might get unforeseen collisions.\n *\n * ## Field data mapping\n *\n * By default, fields are mapped to data using their name. If you for example have a \"name\" field it expects data to be\n * `{ name: 'Some name' }`. If you need to map it to some other property, specify `dataSource` in your field definition:\n *\n * ```javascript\n * class Person extends Model {\n * static get fields {\n * return [\n * { name : 'name', dataSource : 'TheName' }\n * ];\n * }\n * }\n *\n * // This is now OK:\n * let dude = new Person({ TheName : 'Manfred' });\n * console.log(dude.name); // --> Manfred\n * ```\n * ## Field inheritance\n *\n * Fields declared in a derived model class are added to those from its superclass. If a field declared by a derived\n * class has also been declared by its super class, the field properties of the super class are merged with those of\n * the derived class.\n *\n * For example:\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'birthday', type : 'date', format : 'YYYY-MM-DD' }\n * ];\n * }\n * }\n *\n * class User extends Person {\n * static get fields() {\n * return [\n * { name : 'birthday', dataSource : 'dob' },\n * { name : 'lastLogin', type : 'date' }\n * ];\n * }\n * }\n * ```\n *\n * In the above, the `Person` model declares the `birthday` field as a `date` with a specified `format`. The `User`\n * model extends `Person` and also declares the `birthday` field. This redeclared field only specifies `dataSource`, so\n * all the other fields are preserved from `Person`. The `User` model also adds a `lastLogin` field.\n *\n * The `User` from above could have been declared like so to achieve the same `fields`:\n *\n * ```javascript\n * class User extends Model {\n * static get fields() {\n * return [\n * 'name',\n * { name : 'birthday', type : 'date', format : 'YYYY-MM-DD', dataSource : 'dob' },\n * { name : 'lastLogin', type : 'date' }\n * ];\n * }\n * }\n * ```\n *\n * ## Override default values\n *\n * In case you need to define default value for a specific field, or override an existing default value, you can\n * define a new or re-define an existing field definition in {@link #property-fields-static} static getter:\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * { name : 'username', defaultValue : 'New person' },\n * { name : 'birthdate', type : 'date' }\n * ];\n * }\n * }\n *\n * class Bot extends Person {\n * static get fields() {\n * return [\n * { name : 'username', defaultValue : 'Bot' } // default value of 'username' field is overridden\n * ];\n * }\n * }\n * ```\n *\n * ## Read-only records\n *\n * Model has a default field called {@link #field-readOnly}, which is used to make the record read-only in the UI while\n * still allowing programmatic changes to it. Setting it to `true` will prevent it from being edited by the built-in\n * editing features (cell editing in Grid, event draging in Scheduler, task editor in Gantt etc.). Please note that it\n * is not made read-only on the data level, the record can still be manipulated by application code.\n *\n * ```javascript\n * // Prevent record from being manipulated by the user\n * record.readOnly = true;\n *\n * // Programmatic manipulation is still allowed\n * record.remove();\n * ```\n *\n * ## Tree API\n *\n * This class mixes in the {@link Core/data/mixin/TreeNode TreeNode} mixin which provides an API for tree related\n * functionality (only relevant if your store is configured to be a {@link Core/data/Store#config-tree tree}).\n *\n * @mixes Core/data/mixin/ModelLink\n * @mixes Core/data/mixin/TreeNode\n * @mixes Core/data/stm/mixin/ModelStm\n */\nclass Model extends Base$1.mixin(ModelStm, TreeNode, ModelLink) {\n static get $name() {\n return 'Model';\n }\n static get declarable() {\n return [\n /**\n * Array of defined fields for this model class. Subclasses add new fields by implementing this static\n * getter:\n *\n * ```javascript\n * // Model defining two fields\n * class Person extends Model {\n * static get fields() {\n * return [\n * { name : 'username', defaultValue : 'New person' },\n * { name : 'birthdate', type : 'date' }\n * ];\n * }\n * }\n *\n * // Subclass overriding one of the fields\n * class Bot extends Person {\n * static get fields() {\n * return [\n * // Default value of 'username' field is overridden, any other setting from the parents\n * // definition is preserved\n * { name : 'username', defaultValue : 'Bot' }\n * ];\n * }\n * }\n * ```\n *\n * Fields in a subclass are merged with those from the parent class, making it easy to override mappings,\n * formats etc.\n *\n * @member {String[]|Object[]|Core.data.field.DataField[]} fields\n * @readonly\n * @static\n * @category Fields\n */\n 'fields'];\n }\n static get fields() {\n return [\n // The index of this item in its parent (respects filtering)\n {\n name: 'parentIndex',\n type: 'number',\n persist: false,\n internal: true\n },\n /**\n * Flag the record as read-only on the UI level, preventing the end user from manipulating it using editing\n * features such as cell editing and event dragging.\n *\n * Does not prevent altering the record programmatically, it can still be manipulated by application code.\n *\n * For more info, see the \"Read-only records\" section above.\n *\n * @field {Boolean} readOnly\n * @category Common\n */\n {\n name: 'readOnly',\n type: 'boolean'\n }];\n }\n /**\n * Template static getter which is supposed to be overridden to define default field values for the Model class.\n * Overrides `defaultValue` config specified by the {@link #property-fields-static} getter.\n * Returns a named object where key is a field name and value is a default value for the field.\n *\n * NOTE: This is a legacy way of defining default values, we recommend using {@link #property-fields-static} moving\n * forward.\n *\n * ```javascript\n * class Person extends Model {\n * static get fields() {\n * return [\n * { name : 'username', defaultValue : 'New person' }\n * ];\n * }\n * }\n *\n * class Bot extends Person {\n * static get defaults() {\n * return {\n * username : 'Bot' // default value of 'username' field is overridden\n * };\n * }\n * }\n * ```\n *\n * @member {Object} defaults\n * @static\n * @category Fields\n */\n // TODO: deprecate in 5.0 in favor of static fields getter\n // static get defaults() {\n // return {};\n // }\n /**\n * The name of the data field which provides the ID of instances of this Model.\n * @property {String}\n * @category Fields\n */\n static set idField(idField) {\n this._assignedIdField = true;\n this._idField = idField;\n }\n static get idField() {\n return this._idField;\n }\n /**\n * The name of the data field which holds children of this Model when used in a tree structure\n * ```javascript\n * MyModel.childrenField = 'kids';\n * const parent = new MyModel({\n * name : 'Dad',\n * kids : [\n * { name : 'Daughter' },\n * { name : 'Son' }\n * ]\n * });\n * ```\n * @property {String}\n * @category Fields\n */\n static set childrenField(childrenField) {\n this._childrenField = childrenField;\n }\n static get childrenField() {\n if (!this._childrenField) {\n const dataField = this.fieldMap.children;\n this._childrenField = (dataField === null || dataField === void 0 ? void 0 : dataField.dataSource) || 'children';\n }\n return this._childrenField;\n }\n /**\n * Returns index path to this node. This is the index of each node in the node path\n * starting from the topmost parent. (only relevant when its part of a tree store).\n * @returns {Number[]} The index of each node in the path from the topmost parent to this node.\n * @category Parent & children\n * @private\n */\n get indexPath() {\n const indices = [];\n let node = this,\n depth = node.childLevel;\n for (node = this; node && !node.isRoot; node = node.parent) {\n indices[depth--] = node.parentIndex + 1;\n }\n return indices;\n }\n /**\n * Unique identifier for the record. Might be mapped to another dataSource using idField, but always exposed as\n * record.id. Will get a generated value if none is specified in records data.\n *\n *
Note that generated ids are meant to be temporary (phantom ids), they should not be serialized\n * but instead replaced by the backend on commit
\n *\n * @field {String|Number} id\n * @category Common\n */\n //region Init\n /**\n * Constructs a new record from the supplied data.\n * @param {Object} [data] Raw data\n * @param {Core.data.Store} [store] Data store\n * @param {Object} [meta] Meta data\n * @privateparam {Boolean} [skipExpose] Skip exposing properties from data\n * @privateparam {Boolean} [forceUseRaw] Force using raw data, used by copy to not clone data twice\n * @function constructor\n * @category Lifecycle\n */\n construct(data = {}, store = null, meta = null, skipExpose = false, forceUseRaw = false, rawData = false) {\n var _ArrayHelper$asArray, _me$meta$initableValu;\n const me = this,\n stores = (_ArrayHelper$asArray = ArrayHelper.asArray(store)) !== null && _ArrayHelper$asArray !== void 0 ? _ArrayHelper$asArray : [],\n {\n constructor,\n fieldMap\n } = me;\n // null passed to Base construct inhibits config processing.\n let configs = null;\n store = stores[0];\n me.meta = _objectSpread2(_objectSpread2({\n modified: {}\n }, constructor.metaConfig), meta);\n // Should apply configs?\n if (constructor.applyConfigs) {\n // Extract from data and combine with defaultConfigs\n for (const key in me.getDefaultConfiguration()) {\n if (!configs) {\n // if (first config)\n configs = {};\n if (!me.useRawData || !me.useRawData.enabled) {\n // Shallow copy of data to not mutate incoming object\n data = _objectSpread2({}, data);\n }\n }\n // Loop through configs excluding fields\n if (key in data) {\n // Let defaults override any config supplied with an `undefined` value\n if (data[key] !== undefined) {\n // Use as config\n configs[key] = data[key];\n }\n // Always remove config from data\n delete data[key];\n }\n }\n }\n super.construct(configs);\n // make getters/setters for fields, needs to be done before processing data to make sure defaults are available\n if (!skipExpose) {\n constructor.exposeProperties(data, rawData);\n }\n // It's only valid to do this once, on construction of the first instance\n if (!hasOwn$1(constructor, 'idFieldProcessed')) {\n // idField can be overridden from meta, or from the store if we have not had an idField set programmatically\n // and if we have not had an id field defined above the base Model class level.\n let overriddenIdField = me.meta.idField;\n if (!overriddenIdField) {\n // Might have been set to Model after construction but before load\n if (constructor._assignedIdField) {\n overriddenIdField = constructor.idField;\n }\n // idField on store was deprecated, but should still work to not break code\n // TODO: Remove in 3.0? Or reintroduce it...\n else if (store) {\n overriddenIdField = store.idField;\n }\n }\n // If it's overridden to something different than we already have, replace the 'id' field in the fieldMap\n if (overriddenIdField && overriddenIdField !== fieldMap.id.dataSource) {\n constructor.addField({\n name: 'id',\n dataSource: overriddenIdField,\n internal: true\n });\n }\n constructor.idFieldProcessed = true;\n }\n // assign internalId, unique among all records\n me._internalId = Model._internalIdCounter++;\n // relation code expects store to be available for relation lookup, but actual join done below\n me.stores = [];\n me.unjoinedStores = [];\n // Superclass constructors may set this in their own way before this is called.\n if (!me.originalData) {\n me.originalData = data;\n }\n me.data = constructor.processData(data, false, store, me, forceUseRaw);\n // Assign any intiable value last, so that it can reference this record if needed\n ((_me$meta$initableValu = me.meta.initableValues) === null || _me$meta$initableValu === void 0 ? void 0 : _me$meta$initableValu.size) && me.assignInitables();\n // Consider undefined and null as missing id and generate one\n if (me.id == null) {\n // Assign a generated id silently, record should not be considered modified\n me.setData('id', me.generateId(store));\n }\n if (me.data[constructor.childrenField]) {\n me.processChildren(stores);\n }\n me.generation = 0;\n }\n /**\n * Set this property to `true` when adding a record on a conditional basis, that is, it is yet\n * to be confirmed as an addition.\n *\n * When this is set, the {@link #property-isPersistable} value of the record is **false**, and upon being\n * added to a Store it will *not* be eligible to be synced with the server as an added record.\n *\n * Subsequently *clearing* this property means this record will become persistable and eligible\n * for syncing as an added record.\n * @property {Boolean}\n */\n set isCreating(isCreating) {\n const me = this;\n // A no-change must not have any effect.\n if (Boolean(me.meta.isCreating) !== isCreating) {\n // This flag contributes to the evaluation of isPersistable.\n // A record is not persistable if it isCreating.\n me.meta.isCreating = isCreating;\n // Owning Stores may have things to do at this lifecycle point\n me.stores.forEach(s => {\n s.onIsCreatingToggle(me, isCreating);\n });\n }\n }\n get isCreating() {\n return Boolean(this.meta.isCreating);\n }\n /**\n * Compares this Model instance to the passed instance. If they are of the same type, and all fields\n * (except, obviously, `id`) are equal, this returns `true`.\n * @param {Core.data.Model} other The record to compare this record with.\n * @returns {Boolean} `true` if the other is of the same class and has all fields equal.\n */\n equals(other) {\n if (other instanceof this.constructor) {\n for (let fields = this.$meta.fields.defs, i = 0, {\n length\n } = fields; i < length; i++) {\n const field = fields[i],\n {\n name\n } = field;\n if (name !== 'id' && !field.isEqual(this[name], other[name])) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n get subclass() {\n return new this.constructor(Object.setPrototypeOf({\n id: _undefined\n }, this.data), this.stores[0], null, true);\n }\n /**\n * Processes raw data, converting values and setting defaults.\n * @private\n * @param {Object} data Raw data\n * @param {Boolean} [ignoreDefaults] Ignore setting default values, used when updating\n * @returns {Object} Processed data\n * @category Fields\n */\n static processData(data, ignoreDefaults = false, store, record, forceUseRaw) {\n const {\n fieldMap,\n defaultValues\n } = this,\n {\n useRawData = {\n enabled: false\n }\n } = store || {},\n // Store configured with useRawData uses the supplied data object, polluting it. When not configured with\n // useRawData it instead makes a copy (intentionally deep, in case data has a prototype chain or contains\n // arrays or objects)\n processed = forceUseRaw || useRawData.enabled ? data : ObjectHelper.clone(data);\n let fieldName;\n ignoreDefaults = ignoreDefaults || useRawData.disableDefaultValue || forceUseRaw;\n if (!ignoreDefaults) {\n for (fieldName in defaultValues) {\n if (processed[fieldName] === _undefined) {\n let defaultValue = defaultValues[fieldName];\n // Avoid sharing arrays across instances\n if (Array.isArray(defaultValue)) {\n defaultValue = defaultValue.slice();\n }\n processed[fieldName] = defaultValue;\n }\n }\n }\n if (!useRawData.disableTypeConversion && !forceUseRaw) {\n // Convert field types which need converting\n for (fieldName in fieldMap) {\n const field = fieldMap[fieldName],\n {\n name,\n dataSource\n } = field,\n // Value might have been supplied either using mapped dataSource (when loading JSON etc. for example\n // event.myStartDate) or as field name (from internal code, for example event.startDate). If [name]\n // exists but not [dataSource], use it.\n hasSource = dataSource !== name,\n complex = field.complexMapping,\n sourceExists = hasSource && (complex ? ObjectHelper.pathExists(data, dataSource) : dataSource in data),\n useNameForValue = name in data && (!hasSource || !sourceExists),\n convert = !useRawData.disableTypeConversion && field.convert;\n // Only action field definitions which have a convert function or remap data\n if (useNameForValue || convert) {\n // When ignoringDefaults, do not convert unspecified values\n if (!ignoreDefaults || useNameForValue || sourceExists) {\n const value = useNameForValue ? processed[name] : complex ? ObjectHelper.getPath(processed, dataSource) : processed[dataSource],\n converted = convert ? field.convert(value, record) : value;\n if (complex) {\n ObjectHelper.setPath(processed, dataSource, converted);\n } else {\n processed[dataSource] = converted;\n }\n // Remove [startDate] from internal data holder, only keeping [myStartDate]\n if (hasSource) {\n delete processed[name];\n }\n }\n }\n }\n }\n // Fields that needs initializing\n this.$meta.fields.initable.length && this.initInitables(record, processed);\n return processed;\n }\n static setupClass(meta) {\n super.setupClass(meta);\n if (!meta.fields) {\n // Normally setupFields will only run when a Model defines a fields getter, but we want to always run it:\n this.setupFields(this, meta);\n }\n }\n static setupFields(cls, meta) {\n var _base$defs$slice, _base$exposed, _base$ordinals, _base$map, _base$sources;\n const classFields = hasOwn$1(cls, 'fields') && cls.fields,\n base = meta.super.fields,\n fieldsInfo = meta.fields = {\n defs: (_base$defs$slice = base === null || base === void 0 ? void 0 : base.defs.slice()) !== null && _base$defs$slice !== void 0 ? _base$defs$slice : [],\n // Set to true when an instance's data object is run through exposeProperties\n exposedData: false,\n // These objects are all keyed by field name:\n defaults: base ? _objectSpread2({}, base.defaults) : {},\n // value=field.defaultValue\n exposed: Object.create((_base$exposed = base === null || base === void 0 ? void 0 : base.exposed) !== null && _base$exposed !== void 0 ? _base$exposed : null),\n // value=true if we've done defineProperty\n ordinals: Object.create((_base$ordinals = base === null || base === void 0 ? void 0 : base.ordinals) !== null && _base$ordinals !== void 0 ? _base$ordinals : null),\n // value=index in the defs array\n map: Object.create((_base$map = base === null || base === void 0 ? void 0 : base.map) !== null && _base$map !== void 0 ? _base$map : null),\n // value=definition object\n sources: Object.create((_base$sources = base === null || base === void 0 ? void 0 : base.sources) !== null && _base$sources !== void 0 ? _base$sources : null) // value=source definition object\n };\n // We use Object.create(null) as the base for these maps because some models declare \"constructor\" as a field\n // NOTE: instead of chaining the defaults, we copy them so the defaults object can be used with Object.assign\n // in other contexts (since it does not copy inherited properties from the prototype chain)\n // Clone the superclass's defaults, and override that with our own defaults.\n // As we find fields with a defaultValue, more defaults may be added\n if (hasOwn$1(cls, 'defaults')) {\n Object.assign(fieldsInfo.defaults, cls.defaults);\n }\n // Hook up our field maps with the class hierarchy's fieldMaps.\n // We need to be able to look up field definitions by the name, or by the dataSource property name\n // If the idField is overridden at this level, create a new field\n if (hasOwn$1(cls, 'idField')) {\n cls.addField({\n name: 'id',\n dataSource: cls.idField,\n internal: true\n });\n fieldsInfo.exposed[cls.idField] = true;\n }\n // Process fields defined in the class definition\n if (classFields !== null && classFields !== void 0 && classFields.length) {\n classFields.map(cls.addField, cls);\n }\n // Collect fields that need to be initialized (StoreDataField for example)\n fieldsInfo.initable = fieldsInfo.defs.filter(field => field.init);\n cls.exposeRelations();\n }\n static get defaultValues() {\n return this.$meta.fields.defaults;\n }\n /**\n * An array containing all the _defined_ fields for this Model class. This will include all superclass's\n * defined fields.\n * @property {Core.data.field.DataField[]}\n * @static\n * @readonly\n * @category Fields\n */\n static get allFields() {\n return this.$meta.fields.defs;\n }\n /**\n * Same as {@link #property-allFields-static}.\n * @property {Core.data.field.DataField[]}\n * @readonly\n * @category Fields\n */\n get allFields() {\n return this.$meta.fields.defs;\n }\n /**\n * An object containing all the _defined_ fields for this Model class. This will include all superclass's\n * defined fields through its prototype chain. So be aware that `Object.keys` and `Object.entries` will only\n * access this class's defined fields.\n * @property {Object}\n * @static\n * @readonly\n * @category Fields\n */\n static get fieldMap() {\n return this.$meta.fields.map;\n }\n /**\n * Same as {@link #property-fieldMap-static}.\n * @property {Object}\n * @readonly\n * @category Fields\n */\n get fieldMap() {\n return this.$meta.fields.map;\n }\n static get fieldDataSourceMap() {\n return this.$meta.fields.sources;\n }\n /**\n * Makes getters and setters for fields (from definitions and data). Called once when class is defined and once when\n * data is loaded first time.\n * @internal\n * @param {Object} [data] Raw data\n * @param {Boolean} [raw=true] True if data is raw (contains data sources), False if data contains field names\n * @category Fields\n */\n static exposeProperties(data, raw = true) {\n const me = this,\n fieldsInfo = me.$meta.fields,\n // exposeProperties method is called from two different places: from the model constructor which receives\n // field names, and from store loadData method, which handles raw data. When loading data to store we need\n // to use names as specified in the dataSource. And when calling a model constructor we need to use field\n // names\n fieldMapProperty = raw ? 'exposed' : 'map';\n // Process the raw data properties and expose them as fields unless the property name\n // has already been used by the \"dataSource\" of a defined field.\n if (data && me.autoExposeFields && !fieldsInfo.exposedData) {\n let dataProperty, fieldDef, type;\n for (dataProperty in data) {\n // We need to skip children field because it can be `true` and that would create boolean field.\n // See https://github.com/bryntum/support/issues/2705\n if (!fieldsInfo[fieldMapProperty][dataProperty] && dataProperty !== me.childrenField) {\n type = ObjectHelper.typeOf(data[dataProperty]);\n // Create a field definition in our fieldMap with the flag that it's from data\n fieldDef = {\n name: dataProperty,\n dataSource: dataProperty,\n fromData: true\n };\n if (fieldDataTypes[type]) {\n fieldDef.type = type;\n }\n me.addField(fieldDef);\n }\n }\n fieldsInfo.exposedData = true;\n }\n me.exposeRelations();\n }\n /**\n * Add a field definition in addition to those predefined in `fields`.\n * @param {String|Object} fieldDef A field name or definition\n * @category Fields\n */\n static addField(fieldDef) {\n if (fieldDef == null) {\n return;\n }\n if (typeof fieldDef === 'string') {\n fieldDef = {\n name: fieldDef\n };\n }\n const me = this.initClass(),\n fieldsInfo = me.$meta.fields,\n {\n ordinals\n } = fieldsInfo,\n propertiesExposed = fieldsInfo.exposed,\n {\n name\n } = fieldDef,\n existing = fieldsInfo.map[name],\n dataSource = fieldDef.dataSource || (fieldDef.dataSource = name);\n let field, key;\n if (!existing || fieldDef.type && fieldDef.type !== existing.type) {\n field = DataField.create(fieldDef);\n field.definedBy = existing ? existing.definedBy : me;\n field.ordinal = existing ? existing.ordinal : ordinals[name] = fieldsInfo.defs.length;\n } else {\n field = Object.create(existing);\n for (key in fieldDef) {\n if (key !== 'type') {\n field[key] = fieldDef[key];\n }\n }\n }\n field.owner = me;\n fieldsInfo.defs[field.ordinal] = field;\n fieldsInfo.map[name] = field;\n if (!fieldsInfo.sources[dataSource]) {\n fieldsInfo.sources[dataSource] = field;\n }\n // With complex mapping avoid exposing object as model field\n if (dataSource.includes('.')) {\n field.complexMapping = true;\n }\n if (field.complexMapping) {\n // model fields have this set on their prototype...\n propertiesExposed[dataSource.split('.')[0]] = true;\n } else {\n // When iterating through the raw data, if autoExposeFields is set\n // We do not need to create properties for raw property names we've processed here\n propertiesExposed[dataSource] = true;\n }\n // Maintain an object of defaultValues for fields.\n if ('defaultValue' in field) {\n fieldsInfo.defaults[dataSource] = field.defaultValue;\n }\n // Create a property on this Model's prototype, named for the defined field name\n // which reads the correct property out of the raw data object.\n if (!internalProps[name]) {\n // Either creates a new accessor or redefines an existing\n field.defineAccessor(me.prototype);\n }\n me._nonPersistableFields = null;\n me._alwaysWriteFields = null;\n return field;\n }\n /**\n * Remove a field definition by name.\n * @param {String} fieldName Field name\n * @category Fields\n */\n static removeField(fieldName) {\n const me = this.initClass(),\n fieldsInfo = me.$meta.fields,\n definition = fieldsInfo.map[fieldName],\n {\n ordinals\n } = fieldsInfo,\n index = ordinals[fieldName];\n if (definition) {\n fieldsInfo.defs.splice(index, 1);\n delete ordinals[fieldName];\n delete fieldsInfo.defaults[fieldName];\n delete fieldsInfo.exposed[fieldName];\n delete fieldsInfo.map[fieldName];\n delete fieldsInfo.sources[definition.dataSource];\n for (const name in ordinals) {\n if (ordinals[name] > index) {\n --ordinals[name];\n }\n }\n // Note: if field was exposed by superclass, this won't do anything...\n delete me.prototype[fieldName];\n }\n }\n /**\n * Makes getters and setters for related records. Populates a Model#relation array with the relations, to allow it\n * to be modified later when assigning stores.\n * @internal\n * @category Relations\n */\n static exposeRelations() {\n const me = this;\n if (hasOwn$1(me, 'relationsExposed')) {\n return;\n }\n if (me.relationConfig) {\n me.relationsExposed = true;\n me.relations = [];\n me.relationConfig.forEach(relation => {\n me.relations.push(relation);\n const name = relation.relationName;\n // getter and setter for related object\n if (!Reflect.ownKeys(me.prototype).includes(name)) {\n defineProperty$4(me.prototype, name, {\n enumerable: true,\n get: function () {\n // noinspection JSPotentiallyInvalidUsageOfClassThis\n return this.getForeign(name);\n },\n set: function (value) {\n // noinspection JSPotentiallyInvalidUsageOfClassThis\n this.setForeign(name, value, relation);\n }\n });\n }\n });\n }\n }\n //endregion\n //region Initable fields\n // Initializes any fields using a data type that has an init method, and caches the value to assign to that field to\n // be able to assign it after all others. That allows the initter to reference the records other data if needed\n // (baselines use that to reference the task to get default values)\n static initInitables(record, processedData) {\n const laterValues = record.meta.initableValues = new Map();\n // Initialize any initializable fields (only StoreDataField currently)\n for (const field of this.$meta.fields.initable) {\n // Set data (if any) later, in case it needs to reference this record\n const value = ObjectHelper.getPath(processedData, field.dataSource);\n value !== undefined && laterValues.set(field, value);\n // Init field if not lazy, if lazy app is responsible for doing it\n !field.lazy && field.init(processedData, record);\n }\n }\n // Assigns values to the fields that were initialized earlier (see initInitables above)\n assignInitables() {\n const {\n initableValues\n } = this.meta;\n for (const [field, value] of initableValues) {\n if (field.set(value, this.data, this) !== false) {\n initableValues.delete(field);\n }\n }\n }\n //region Fields\n /**\n * Flag checked from Store when loading data that determines if fields found in first records should be exposed in\n * same way as predefined fields.\n * @property {Boolean}\n * @category Fields\n */\n static get autoExposeFields() {\n return true;\n }\n /**\n * Convenience getter to get field definitions from class.\n * @property {Core.data.field.DataField[]}\n * @readonly\n * @category Fields\n */\n get fields() {\n return this.$meta.fields.defs;\n }\n /**\n * Convenience function to get the definition for a field from class.\n * @param {String} fieldName Field name\n * @returns {Core.data.field.DataField}\n * @category Fields\n */\n getFieldDefinition(fieldName) {\n return this.$meta.fields.map[fieldName];\n }\n getFieldDefinitionFromDataSource(dataSource) {\n return this.$meta.fields.sources[dataSource];\n }\n /**\n * Get the names of all fields in data.\n * @property {String[]}\n * @readonly\n * @category Fields\n */\n get fieldNames() {\n return Object.keys(this.data);\n }\n /**\n * Get the definition for a field by name. Caches results.\n * @param {String} fieldName Field name\n * @returns {Core.data.field.DataField} Field definition or null if none found\n * @category Fields\n */\n static getFieldDefinition(fieldName) {\n return this.$meta.fields.map[fieldName];\n }\n /**\n * Returns dataSource configuration for a given field name\n * @param {String} fieldName\n * @returns {String} Field `dataSource` mapping\n * @internal\n */\n static getFieldDataSource(fieldName) {\n return this.getFieldDefinition(fieldName).dataSource;\n }\n /**\n * Get the data source used by specified field. Returns the fieldName if no data source specified.\n * @param {String} fieldName Field name\n * @returns {String}\n * @category Fields\n */\n getDataSource(fieldName) {\n const def = this.constructor.getFieldDefinition(fieldName);\n return (def === null || def === void 0 ? void 0 : def.dataSource) || (def === null || def === void 0 ? void 0 : def.name);\n }\n /**\n * Processes input to a field, converting to expected type.\n * @param {String} fieldName Field name\n * @param {*} value Value to process\n * @returns {*} Converted value\n * @category Fields\n */\n static processField(fieldName, value, record) {\n const field = this.fieldMap[fieldName];\n return field !== null && field !== void 0 && field.convert ? field.convert(value, record) : value;\n }\n //endregion\n //region Relations\n /**\n * Initializes model relations. Called from store when adding a record.\n * @private\n * @category Relations\n */\n initRelations() {\n const me = this,\n relations = me.constructor.relations;\n if (!relations) return;\n // TODO: feels strange to have to look at the store for relation config but didn't figure out anything better.\n // TODO: because other option would be to store it on each model instance, not better...\n me.stores.forEach(store => {\n var _store$modelRelations;\n if (!store.modelRelations) {\n store.initRelations();\n }\n // TODO: not at all tested for multiple stores, can't imagine it works as is\n const relatedRecords = [];\n (_store$modelRelations = store.modelRelations) === null || _store$modelRelations === void 0 ? void 0 : _store$modelRelations.forEach(config => {\n relatedRecords.push({\n related: me.initRelation(config),\n config\n });\n });\n store.updateRecordRelationCache(me, relatedRecords);\n });\n }\n /**\n * Initializes/updates a single relation.\n * @param config Relation config\n * @returns {Core.data.Model} Related record\n * @private\n * @category Relations\n */\n initRelation(config) {\n const me = this,\n keyValue = me.get(config.fieldName),\n foreign = keyValue !== _undefined && typeof config.store !== 'string' && config.store.getById(keyValue),\n placeHolder = {\n id: keyValue,\n placeHolder: true\n };\n if (!me.meta.relationCache) {\n me.meta.relationCache = {};\n }\n // apparently scheduler tests expect cache to work without matched related record, thus the placeholder\n me.meta.relationCache[config.relationName] = foreign || (keyValue != null ? placeHolder : null);\n return foreign;\n }\n removeRelation(config) {\n // (have to check for existence before deleting to work in Safari)\n if (this.meta.relationCache[config.relationName]) {\n delete this.meta.relationCache[config.relationName];\n if (config.nullFieldOnRemove) {\n // Setting to null silently, to not trigger additional relation behaviour\n this.setData(config.fieldName, null);\n }\n }\n }\n getForeign(name) {\n var _this$meta$relationCa;\n return (_this$meta$relationCa = this.meta.relationCache) === null || _this$meta$relationCa === void 0 ? void 0 : _this$meta$relationCa[name];\n }\n setForeign(name, value, config) {\n const id = Model.asId(value);\n return this.set(config.fieldName, id);\n }\n //endregion\n //region Get/set values, data handling\n flatGet(fieldName, dataSource) {\n // NOTE: There is an inlined copy of this fn in DataField, when changing here make sure it is updated too\n // When changes are batched, they get stored by field name, not dataSource\n if (this.batching && fieldName in this.meta.batchChanges) {\n return this.meta.batchChanges[fieldName];\n }\n return dataSource in this.data ? this.data[dataSource] : this.data[fieldName];\n }\n complexGet(fieldName, dataSource) {\n // When changes are batched, they get stored by field name, not dataSource\n if (this.batching && fieldName in this.meta.batchChanges) {\n return this.meta.batchChanges[fieldName];\n }\n return ObjectHelper.getPath(this.data, dataSource);\n }\n /**\n * Get value for specified field name. You can also use the generated getters if loading through a Store.\n * If model is currently in batch operation this will return updated batch values which are not applied to Model\n * until endBatch() is called.\n * @param {String} fieldName Field name to get value from\n * @returns {*} Fields value\n * @category Fields\n */\n get(fieldName) {\n if (!fieldName) {\n return;\n }\n const field = this.fieldMap[fieldName];\n // Getting property of nested record?\n if (!field && fieldName.includes('.')) {\n return this.complexGet(fieldName, fieldName);\n }\n if (field !== null && field !== void 0 && field.complexMapping) {\n return this.complexGet(fieldName, field.dataSource);\n }\n return this.flatGet(fieldName, (field === null || field === void 0 ? void 0 : field.dataSource) || fieldName);\n }\n /**\n * Internal function used to update a records underlying data block (record.data) while still respecting field\n * mappings. Needed in cases where a field needs setting without triggering any associated behaviour and it has a\n * dataSource with a different name.\n *\n * For example:\n * ```javascript\n * // startDate mapped to data.beginDate\n * { name : 'startDate', dataSource : 'beginDate' }\n *\n * // Some parts of our code needs to update the data block without triggering any of the behaviour associated with\n * // calling set. This would then not update \"beginDate\":\n * record.data.startDate = xx;\n *\n * // But this would\n * record.setData('startDate', xx);\n * ```\n * @internal\n * @category Editing\n */\n setData(toSet, value) {\n const {\n data,\n fieldMap\n } = this;\n // Two separate paths for performance reasons\n // setData('name', 'Quicksilver');\n if (typeof toSet === 'string') {\n var _field$dataSource;\n const field = fieldMap[toSet],\n dataSource = (_field$dataSource = field === null || field === void 0 ? void 0 : field.dataSource) !== null && _field$dataSource !== void 0 ? _field$dataSource : toSet;\n if (field !== null && field !== void 0 && field.set) {\n field.set(value, this.data, this);\n } else if (field !== null && field !== void 0 && field.complexMapping) {\n ObjectHelper.setPath(data, dataSource, value);\n } else {\n data[dataSource] = value;\n }\n }\n // setData({ name : 'Magneto', power : 'Magnetism' });\n else {\n const keys = Object.keys(toSet);\n for (let i = 0; i < keys.length; i++) {\n var _field$dataSource2;\n const fieldName = keys[i],\n field = fieldMap[fieldName],\n dataSource = (_field$dataSource2 = field === null || field === void 0 ? void 0 : field.dataSource) !== null && _field$dataSource2 !== void 0 ? _field$dataSource2 : fieldName;\n if (field !== null && field !== void 0 && field.set) {\n field.set(value, this.data, this);\n } else if (dataSource) {\n if (field !== null && field !== void 0 && field.complexMapping) {\n ObjectHelper.setPath(data, dataSource, toSet[fieldName]);\n } else {\n data[dataSource] = toSet[fieldName];\n }\n }\n }\n }\n }\n /**\n * Returns raw data from the encapsulated data object for the passed field name\n * @param {String} fieldName The field to get data for.\n * @returns {*} The raw data value for the field.\n */\n getData(fieldName) {\n var _field$dataSource3;\n const field = this.fieldMap[fieldName],\n dataSource = (_field$dataSource3 = field === null || field === void 0 ? void 0 : field.dataSource) !== null && _field$dataSource3 !== void 0 ? _field$dataSource3 : fieldName;\n if (dataSource) {\n if (field !== null && field !== void 0 && field.complexMapping) {\n return ObjectHelper.getPath(this.data, dataSource);\n }\n return this.data[dataSource];\n }\n }\n /**\n * Silently updates record's id with no flagging the property as modified.\n * Triggers onModelChange event for changed id.\n * @param {String|Number} value id value\n * @private\n */\n syncId(value) {\n const oldValue = this.id;\n if (oldValue !== value) {\n this.setData('id', value);\n const data = {\n id: {\n value,\n oldValue\n }\n };\n this.afterChange(data, data);\n }\n }\n /**\n * Set value for the specified field. You can also use the generated setters if loading through a Store.\n *\n * Setting a single field, supplying name and value:\n *\n * ```javascript\n * record.set('name', 'Clark');\n * ```\n *\n * Setting multiple fields, supplying an object:\n *\n * ```javascript\n * record.set({\n * name : 'Clark',\n * city : 'Metropolis'\n * });\n * ```\n *\n * @param {String|Object} field The field to set value for, or an object with multiple values to set in one call\n * @param {*} [value] Value to set\n * @param {Boolean} [silent] Set to true to not trigger events. If event is recurring, occurrences won't be updated automatically.\n * @fires Store#idChange\n * @fires Store#update\n * @fires Store#change\n * @category Editing\n */\n set(field, value, silent = false, fromRelationUpdate = false, skipAccessors = false) {\n const me = this;\n // We use beforeSet/inSet/afterSet approach here because mixin interested in overriding set() method\n // like STM, for example, might be mixed before Model class or after. In general, we have no control over this.\n // STM mixed before, so the only option to wrap set() method body is actually to call\n // beforeSet()/afterSet().\n if (me.isBatchUpdating) {\n me.inBatchSet(field, value, silent || me.$silenceBatch);\n return null;\n } else {\n var _me$beforeSet, _me$afterSet;\n const preResult = (_me$beforeSet = me.beforeSet) === null || _me$beforeSet === void 0 ? void 0 : _me$beforeSet.call(me, field, value, silent, fromRelationUpdate),\n wasSet = me.inSet(field, value, silent, fromRelationUpdate, skipAccessors);\n (_me$afterSet = me.afterSet) === null || _me$afterSet === void 0 ? void 0 : _me$afterSet.call(me, field, value, silent, fromRelationUpdate, preResult, wasSet);\n return wasSet;\n }\n }\n fieldToKeys(field, value) {\n if (typeof field !== 'string') {\n // will get in trouble when setting same field on multiple models without this\n return ObjectHelper.assign({}, field);\n }\n return {\n [field]: value\n };\n }\n inBatchSet(field, value, silent) {\n const me = this,\n {\n meta,\n constructor,\n fieldMap\n } = me,\n wasSet = {};\n let cmp,\n changed = false;\n if (typeof field !== 'string') {\n Object.keys(me.fieldToKeys(field, value)).forEach(key => {\n cmp = fieldMap[key] || ObjectHelper;\n value = constructor.processField(key, field[key], me);\n // Store batch changes\n if (!cmp.isEqual(meta.batchChanges[key], value)) {\n wasSet[key] = {\n value,\n oldValue: me.get(key)\n };\n meta.batchChanges[key] = value;\n changed = true;\n }\n });\n } else {\n cmp = fieldMap[field] || ObjectHelper;\n // Minor optimization for engine writing back a lot of changes\n if (!cmp.isEqual(meta.batchChanges[field], value)) {\n wasSet[field] = {\n value,\n oldValue: me.get(field)\n };\n meta.batchChanges[field] = value;\n changed = true;\n }\n }\n // Callers need to be able to detect changes\n if (changed) {\n me.generation++;\n if (!silent) {\n // Fire batched events for UIs which need to update themselves during batched updates.\n // An example is evenResize feature which batches the changes to the endDate\n // or startDate, but the UI must update during the drag.\n const event = {\n action: 'update',\n record: me,\n records: [me],\n changes: wasSet\n };\n me.stores.forEach(store => {\n store.trigger('batchedUpdate', _objectSpread2({}, event));\n });\n // Propagate to linked records\n me.forEachLinked((store, record) => store.trigger('batchedUpdate', _objectSpread2(_objectSpread2({}, event), {}, {\n record,\n records: [record]\n })));\n }\n }\n }\n inSet(field, value, silent, fromRelationUpdate, skipAccessors = false) {\n const me = this,\n {\n data,\n meta,\n fieldMap,\n constructor\n } = me,\n {\n prototype: myProto,\n childrenField\n } = constructor,\n wasSet = {},\n toSet = me.fieldToKeys(field, value),\n keys = Object.keys(toSet);\n let changed = false;\n // Give a chance to cancel action before records updated.\n if (!silent && !me.triggerBeforeUpdate(toSet)) {\n return null;\n }\n me.inSetting = true;\n for (let i = 0; i < keys.length; i++) {\n var _field$dataSource4;\n const key = keys[i];\n // Currently not allowed to set children in a TreeNode this way, will be ignored\n if (key === childrenField) {\n continue;\n }\n const field = fieldMap[key],\n cmp = field || ObjectHelper,\n readOnly = field === null || field === void 0 ? void 0 : field.readOnly,\n mapping = (_field$dataSource4 = field === null || field === void 0 ? void 0 : field.dataSource) !== null && _field$dataSource4 !== void 0 ? _field$dataSource4 : key,\n useProp = !skipAccessors && !field && key in myProto,\n oldValue = useProp ? me[mapping] : field !== null && field !== void 0 && field.complexMapping ? ObjectHelper.getPath(data, mapping) : data[mapping],\n value = constructor.processField(key, toSet[key], me),\n val = toSet[key] = {\n value\n },\n relation = me.getRelationConfig(key);\n if (!readOnly && !cmp.isEqual(oldValue, value)) {\n // Indicate to observers that data has changed.\n me.generation++;\n val.oldValue = oldValue;\n changed = true;\n // Update `modified` state which is used in sync request\n if (cmp.isEqual(me.meta.modified[key], value)) {\n // Remove changes if values are the same\n Reflect.deleteProperty(meta.modified, key);\n } else if (!me.ignoreBag) {\n // Private flag in engine, speeds initial commit up by not recording changes\n // Cache its original value\n if (!(key in meta.modified)) {\n me.storeFieldChange(key, oldValue);\n }\n if (val.oldValue === _undefined) {\n Reflect.deleteProperty(val, 'oldValue');\n }\n }\n // The wasSet object keys must be the field *name*, not its dataSource.\n wasSet[key] = val;\n me.applyValue(useProp, mapping, value, skipAccessors, field);\n // changing foreign key\n if (relation && !fromRelationUpdate) {\n me.initRelation(relation);\n me.stores.forEach(store => store.cacheRelatedRecord(me, value, relation.relationName, val.oldValue));\n }\n }\n }\n if (changed) {\n me.afterChange(toSet, wasSet, silent, fromRelationUpdate, skipAccessors);\n }\n me.inSetting = false;\n return changed ? wasSet : null;\n }\n // Provided as a hook for Engine to do what needs to be done which ever way a field value is changed\n applyValue(useProp, key, value, skipAccessors, field) {\n var _field, _field3;\n let complexMapping = (_field = field) === null || _field === void 0 ? void 0 : _field.complexMapping;\n // If we don't have a field, but we have a property define eg, the fullDuration property defined in TaskModel,\n // then use the property.\n // Setting parentId moves the node, always route through setter\n if (useProp || key === this.constructor.parentIdField) {\n var _field2;\n // key is the dataSource, if we use property we need to use field name\n this[((_field2 = field) === null || _field2 === void 0 ? void 0 : _field2.name) || key] = value;\n return;\n }\n if ((_field3 = field) !== null && _field3 !== void 0 && _field3.set) {\n field.set(value, this.data, this);\n return;\n }\n // Might be setting value of nested object\n if (!field && key.includes('.')) {\n var _field4, _field5;\n const nestedName = key.split('.')[0];\n field = this.constructor.fieldMap[nestedName];\n // We use complex mapping if the field's dataSource was defined as such,\n // OR if we are being asked to set using dot notation and field is of Object type.\n complexMapping = ((_field4 = field) === null || _field4 === void 0 ? void 0 : _field4.complexMapping) || ((_field5 = field) === null || _field5 === void 0 ? void 0 : _field5.type) === 'object';\n }\n // Use complex mapping?\n if (complexMapping) {\n ObjectHelper.setPath(this.data, key, value);\n }\n // Otherwise, push the value through into the data.\n else {\n this.data[key] = value;\n }\n }\n // skipAccessors argument is used in the engine override\n afterChange(toSet, wasSet, silent, fromRelationUpdate, skipAccessors) {\n for (const store of this.stores) {\n store.onModelChange(this, toSet, wasSet, silent, fromRelationUpdate, skipAccessors);\n }\n // Propagate to linked records\n this.forEachLinked((store, record) => store.onModelChange(record, toSet, wasSet, silent, fromRelationUpdate, skipAccessors));\n }\n // Run fn for each store on each linked record\n forEachLinked(fn) {\n for (const linked of this.$links) {\n for (const store of linked.stores) {\n fn(store, linked);\n }\n }\n }\n /**\n * This yields `true` if this record is eligible for syncing with the server.\n * It can yield `false` if the record is in the middle of a {@link #property-isBatchUpdating batched update},\n * or if it is a {@link #property-isCreating tentative record} yet to be confirmed as a new addition.\n * @property {Boolean}\n * @readonly\n */\n get isPersistable() {\n // Record is not persistable if the owning app is in the middle of a batch update\n // and the record is not flagged as being in the middle of a creation sequence.\n // This means that a \"new\" record can be added on a conditional basis with its\n // isCreating property set which means it is examplt from being synced until\n // the isCreating flag is cleared.\n return !this.isBatchUpdating && !this.isCreating;\n }\n /**\n * True if this model has any uncommitted changes.\n * @property {Boolean}\n * @readonly\n * @category Editing\n */\n get isModified() {\n return Boolean(this.meta.modified && Object.keys(this.meta.modified).length > 0);\n }\n // TODO: Make this the behaviour of isModified?\n get hasPersistableChanges() {\n return this.isPersistable && !ObjectHelper.isEmpty(this.rawModificationData);\n }\n /**\n * Returns true if this model has uncommitted changes for the provided field.\n * @param {String} fieldName Field name\n * @returns {Boolean} True if the field is changed\n * @category Editing\n */\n isFieldModified(fieldName) {\n return this.isModified && fieldName in this.meta.modified;\n }\n /**\n * Returns field value that should be persisted, or `undefined` if field is configured with `persist: false`.\n * @param {String|Core.data.field.DataField} nameOrField Name of the field to get value for, or its field definition\n * @private\n * @category Fields\n */\n getFieldPersistentValue(nameOrField) {\n const field = typeof nameOrField === 'string' ? this.getFieldDefinition(nameOrField) : nameOrField,\n name = (field === null || field === void 0 ? void 0 : field.name) || nameOrField;\n let result;\n if (!field || field.persist) {\n result = this[name];\n // if serialize function is provided we use it to prepare the persistent value\n if (field !== null && field !== void 0 && field.serialize) {\n result = field.serialize(result, this);\n }\n }\n return result;\n }\n /**\n * Get a map of the modified fields in form of an object. The field *names* are used as the property names\n * in the returned object.\n * @property {Object}\n * @readonly\n * @category Editing\n */\n get modifications() {\n const data = this.rawModifications;\n if (data && Object.keys(data).length) {\n data[this.constructor.idField] = this.id;\n }\n return data;\n }\n get rawModifications() {\n const me = this,\n data = {};\n if (!me.isModified) {\n return null;\n }\n let keySet = false;\n Object.keys(me.meta.modified).forEach(key => {\n // TODO: isModified will report record as modified even if a modification won't be persisted here. Should it?\n const value = me.getFieldPersistentValue(key);\n if (value !== _undefined) {\n data[key] = value;\n keySet = true;\n }\n });\n return keySet ? data : null;\n }\n /**\n * Get a map of the modified fields in form of an object. The field´s {@link Core.data.field.DataField#config-dataSource}\n * is used as the property name in the returned object. The record´s id is always included.\n * @property {Object}\n * @readonly\n * @category Editing\n */\n get modificationData() {\n const data = this.rawModificationData;\n // If there are some persistable field changes, append record id\n if (data && Object.keys(data).length) {\n ObjectHelper.setPath(data, this.constructor.getFieldDefinition(this.constructor.idField).dataSource, this.id);\n }\n return data;\n }\n /**\n * Returns a map of the modified persistable fields\n * @internal\n * @property {Object}\n * @category Editing\n */\n get rawModificationData() {\n const me = this,\n {\n fieldMap\n } = me.constructor,\n data = {};\n if (!me.isModified) {\n return null;\n }\n let keySet = false;\n Object.keys(me.meta.modified).forEach(fieldName => {\n // TODO: isModified will report record as modified even if a modification wont be persisted here. Should it?\n const field = fieldMap[fieldName];\n // No field definition means there's no original dataSource to update\n if (field !== null && field !== void 0 && field.persist) {\n const value = me.getFieldPersistentValue(fieldName);\n if (value !== _undefined) {\n ObjectHelper.setPath(data, field.dataSource, value);\n keySet = true;\n }\n }\n });\n return keySet ? data : null;\n }\n /**\n * Get a map of the modified data fields along with any {@link Core/data/field/DataField#config-alwaysWrite} fields, in\n * form of an object. The field´s *dataSource* is used as the property name in the returned object.\n * Used internally by AjaxStore / CrudManager when sending updates.\n * @property {Object}\n * @readonly\n * @category Editing\n */\n get modificationDataToWrite() {\n const alwaysWriteFields = this.constructor.alwaysWriteFields,\n recordData = this.modificationData;\n alwaysWriteFields.forEach(fieldName => {\n recordData[this.getFieldDefinition(fieldName).dataSource] = this.getFieldPersistentValue(fieldName);\n });\n return recordData;\n }\n /**\n * Returns data for **all** {@link Core.data.field.DataField#config-persist persistable} fields in form of an\n * object, using dataSource if present.\n * @property {Object}\n * @internal\n * @readonly\n * @category Editing\n */\n get persistableData() {\n const me = this,\n data = {};\n me.fields.forEach(field => {\n const value = me.getFieldPersistentValue(field);\n if (value !== _undefined) {\n if (field !== null && field !== void 0 && field.complexMapping) {\n ObjectHelper.setPath(data, field.dataSource, value);\n } else {\n data[field.dataSource] = value;\n }\n }\n });\n return data;\n }\n /**\n * True if this models changes are currently being committed.\n * @property {Boolean}\n * @category Editing\n */\n get isCommitting() {\n return Boolean(this.meta.committing);\n }\n /**\n * Clear stored changes, used on commit. Does not revert changes.\n * @param {Boolean} [includeDescendants] Supply `false` to not clear node descendants\n * @privateparam {Boolean} [removeFromStoreChanges] Update related stores modified collection or not\n * @privateparam {Object|null} [changes] Set of changes to clear on the record\n * @category Editing\n */\n clearChanges(includeDescendants = true, removeFromStoreChanges = true, changes = null) {\n const me = this,\n {\n meta\n } = me;\n // If we've received an object with changes, we only need to clean that one up\n if (changes) {\n for (const key in changes) {\n delete meta.modified[key];\n }\n } else {\n meta.modified = {};\n }\n // We can only remove record from changes if we no modified fields in meta\n const noChanges = ObjectHelper.isEmpty(meta.modified);\n meta.committing = false;\n if (removeFromStoreChanges) {\n me.stores.forEach(store => {\n noChanges && store.modified.remove(me);\n store.added.remove(me);\n if (includeDescendants) {\n const descendants = store.collectDescendants(me).all;\n store.added.remove(descendants);\n noChanges && store.modified.remove(descendants);\n }\n });\n }\n }\n storeFieldChange(key, oldValue) {\n this.meta.modified[key] = oldValue;\n }\n /**\n * Reverts changes in this back to their original values.\n * @privateparam {Boolean} [silent] Specify `true` to not trigger events.\n * @category Editing\n */\n revertChanges(silent = false) {\n this.set(this.meta.modified, _undefined, silent);\n }\n applyChangeset(rawChanges, phantomIdField = '$PhantomId', remote = true) {\n const me = this,\n modelClass = me.constructor,\n {\n idField,\n fieldDataSourceMap\n } = modelClass,\n rawChangesSimplePaths = ObjectHelper.pathifyKeys(rawChanges),\n ownChangesSimplePaths = ObjectHelper.pathifyKeys(me.modificationData),\n changes = {},\n // Value of id field cannot be changed, it can only be set. In which case phantom id field will be in the\n // rawChanges objects\n idChanged = (phantomIdField in rawChanges);\n // Collect the changes into a change set for field names.\n for (const dataSource in rawChangesSimplePaths) {\n var _field$name;\n const field = fieldDataSourceMap[dataSource],\n propName = (_field$name = field === null || field === void 0 ? void 0 : field.name) !== null && _field$name !== void 0 ? _field$name : dataSource;\n // Only apply change to the model:\n // 1. if changes is remote\n // 2. or local change is not outdated\n // 3. we are setting id (in which case phantom id would be in raw changes). id value cannot be changed here,\n // only assigned if record is phantom - because we use id from the raw data to resolve this record in the\n // first place\n if (remote || ((field === null || field === void 0 ? void 0 : field.name) === idField ? idChanged : rawChangesSimplePaths[dataSource] === ownChangesSimplePaths[dataSource])) {\n changes[propName] = rawChangesSimplePaths[dataSource];\n }\n }\n // Apply all changes in one go, making sure record is considered unmodified after\n const wasSet = me.set(changes);\n me.clearChanges(false, true, remote ? null : changes);\n // wasSet has format { field : { oldValue, value }}, convert to { field : value }\n return wasSet ? Object.entries(wasSet).reduce((result, [field, change]) => {\n result[field] = change.value;\n return result;\n }, {}) : {};\n }\n // TODO CrudManager tests expect all changes to be cleared, keeping this in case we reconsider that\n // Clear select changes, as opposed to clearChanges that always clears all\n // clearChangeset(changes) {\n // const\n // me = this,\n // { modified } = me.meta;\n //\n // for (const fieldName in changes) {\n // delete modified[fieldName];\n // }\n //\n // for (const store of me.stores) {\n // ObjectHelper.isEmpty(modified) && store.modified.remove(me);\n // store.added.remove(me);\n // }\n // }\n //endregion\n //region Id\n /**\n * Gets the records internalId. It is assigned during creation, guaranteed to be globally unique among models.\n * @property {Number}\n * @category Identification\n */\n get internalId() {\n return this._internalId;\n }\n /**\n * Returns true if the record is new and has not been persisted (and received a proper id).\n * @property {Boolean}\n * @readonly\n * @category Identification\n */\n get isPhantom() {\n return this.id === '' || this.id == null || this.hasGeneratedId;\n }\n get isModel() {\n return true;\n }\n /**\n * Checks if record has a generated id.\n *\n * New records are assigned a generated id based on a UUID (starting with `_generated`), which is intended to be\n * temporary and should be replaced by the backend on commit.\n *\n * @property {Boolean}\n * @category Identification\n */\n get hasGeneratedId() {\n return typeof this.id === 'string' && this.id.startsWith('_generated');\n }\n static generateId(text = this.$$name) {\n return `_generated${text}_${StringHelper.generateUUID()}`;\n }\n /**\n * Generates an id for a new record (a phantom id), based on a UUID (starting with `_generated`).\n *\n * Generated ids are intended to be temporary and should be replaced by the backend on commit.\n *\n * @category Identification\n * @returns {String}\n */\n generateId() {\n return this.constructor.generateId();\n }\n /**\n * Gets the id of specified model or model data object, or the value if passed string/number.\n * @param {Core.data.Model|String|Number} model\n * @returns {String|Number} id\n * @category Identification\n */\n static asId(model) {\n return model !== null && model !== void 0 && model.isModel ? model.id : ObjectHelper.isObject(model) ? model[this.fieldMap.id.dataSource] : model;\n }\n //endregion\n //region JSON\n /**\n * Get the records data as a json string.\n *\n * ```javascript\n * const record = new Model({\n * title : 'Hello',\n * children : [\n * ...\n * ]\n * });\n *\n * const jsonString = record.json;\n *\n * //jsonString:\n * '{\"title\":\"Hello\",\"children\":[...]}'\n * ```\n *\n * @member {String}\n * @category JSON\n */\n get json() {\n return StringHelper.safeJsonStringify(this); // calls our toJSON() method\n }\n /**\n * Used by `JSON.stringify()` to correctly convert this record to json.\n *\n * In most cases no point in calling it directly.\n *\n * ```\n * // This will call `toJSON()`\n * const json = JSON.stringify(record);\n * ```\n *\n * If called manually, the resulting object is a clone of `record.data` + the data of any children:\n *\n * ```\n * const record = new Model({\n * title : 'Hello',\n * children : [\n * ...\n * ]\n * });\n *\n * const jsonObject = record.toJSON();\n *\n * // jsonObject:\n * {\n * title : 'Hello',\n * children : [\n * ...\n * ]\n * }\n * ```\n *\n * @returns {Object}\n * @category JSON\n */\n toJSON() {\n const {\n children,\n unfilteredChildren\n } = this,\n jsonData = this.persistableData;\n if (unfilteredChildren || children) {\n jsonData[this.constructor.childrenField] = (unfilteredChildren || children).map(c => c.toJSON());\n }\n return jsonData;\n }\n /**\n * Represent the record as a string, by default as a JSON string. Tries to use an abbreviated version of the objects\n * data, using id + name/title/text/label/description. If no such field exists, the full data is used.\n *\n * ```javascript\n * const record = new Model({ id : 1, name : 'Steve Rogers', alias : 'Captain America' });\n * console.log(record.toString()); // logs { \"id\" : 1, \"name\" : \"Steve Rogers\" }\n * ```\n *\n * @returns {String}\n */\n toString() {\n const me = this,\n nameField = abbreviationFields.find(field => field in me.constructor.fieldMap),\n data = nameField ? {\n [me.constructor.idField]: me.id,\n [nameField]: me[nameField]\n } : me.data;\n return StringHelper.safeJsonStringify(data);\n }\n //endregion\n //region Batch\n /**\n * True if this Model is currently batching its changes.\n * @property {Boolean}\n * @readonly\n * @category Editing\n */\n get isBatchUpdating() {\n return Boolean(this.batching);\n }\n /**\n * Returns `true` if this Model currently has outstanding batched changes for the specified field name.\n * @param {String} fieldName The field name to check for batched updates on.\n * @returns {Boolean}\n */\n hasBatchedChange(fieldName) {\n var _this$meta, _this$meta$batchChang;\n return (_this$meta = this.meta) === null || _this$meta === void 0 ? void 0 : (_this$meta$batchChang = _this$meta.batchChanges) === null || _this$meta$batchChang === void 0 ? void 0 : _this$meta$batchChang[fieldName];\n }\n /**\n * Begin a batch, which stores changes and commits them when the batch ends.\n * Prevents events from being fired during batch.\n *\n * ```javascript\n * record.beginBatch();\n * record.name = 'Mr Smith';\n * record.team = 'Golden Knights';\n * record.endBatch();\n * ```\n *\n * Please note that you can also set multiple fields in a single call using {@link #function-set}, which in many\n * cases can replace using a batch:\n *\n * ```javascript\n * record.set({\n * name : 'Mr Smith',\n * team : 'Golden Knights'\n * });\n * ```\n * @category Editing\n * @privateparam {Boolean} silentUpdates Suppress firing the `batchUpdatedEvent`\n */\n beginBatch(silentUpdates = false) {\n const me = this;\n if (!me.batching) {\n me.batching = 0;\n me.meta.batchChanges = {};\n }\n if (silentUpdates) {\n me.$silenceBatch = (me.$silenceBatch || 0) + 1;\n }\n me.batching++;\n }\n /**\n * End a batch, triggering events if data has changed.\n * @param {Boolean} [silent] Specify `true` to not trigger events. If event is recurring, occurrences won't be updated automatically.\n * @category Editing\n */\n endBatch(silent = false, skipAccessors = false) {\n const me = this,\n {\n parentIdField\n } = me.constructor;\n if (!me.batching) {\n return;\n }\n me.batching--;\n // Ideally we should track which batch was silenced, but that will complicate code more than what avoiding a few\n // triggered events is worth (this is private and we do not start batches while batches are ongoing in the\n // critical code path in engine)\n me.$silenceBatch && me.$silenceBatch--;\n if (me.batching > 0) {\n return;\n }\n // Set pending batch changes\n if (!ObjectHelper.isEmpty(me.meta.batchChanges)) {\n const batchChanges = _objectSpread2({}, me.meta.batchChanges);\n me.meta.batchChanges = null;\n // Move to its new parent before applying the other changes.\n if (batchChanges[parentIdField]) {\n me.parentId = batchChanges[parentIdField];\n delete batchChanges[parentIdField];\n }\n me.set(batchChanges, _undefined, silent, false, skipAccessors);\n }\n }\n /**\n * Cancels current batch operation. Any changes during the batch are discarded.\n * @category Editing\n */\n cancelBatch() {\n if (this.batching) {\n const me = this,\n {\n batchChanges\n } = me.meta,\n wasSet = {};\n me.batching = null;\n me.meta.batchChanges = null;\n me.generation++;\n if (!me.$silenceBatch) {\n // Create a wasSet describing the revert back from the batched values to the real values.\n Object.entries(batchChanges).forEach(([key, oldValue]) => {\n wasSet[key] = {\n oldValue,\n value: me[key]\n };\n });\n // Fire batched events for UIs which need to update themselves during batched updates.\n // An example is evenResize feature which batches the changes to the endDate\n // or startDate, but the UI must update during the drag.\n const event = {\n action: 'update',\n record: me,\n records: [me],\n changes: wasSet\n };\n me.stores.forEach(store => {\n // Cant use event directly, it will get polluted with `source` and then have that incorrect for\n // following calls\n store.trigger('batchedUpdate', _objectSpread2({}, event));\n });\n // Propagate to linked records\n me.forEachLinked((store, record) => {\n store.trigger('batchedUpdate', _objectSpread2(_objectSpread2({}, event), {}, {\n record,\n records: [record]\n }));\n });\n }\n me.$silenceBatch && me.$silenceBatch--;\n }\n }\n //endregion\n //region Events\n /**\n * Triggers beforeUpdate event for each store and checks if changes can be made from event return value.\n * @param {Object} changes Data changes\n * @returns {Boolean} returns true if data changes are accepted\n * @private\n */\n triggerBeforeUpdate(changes) {\n var _this$stores;\n return !((_this$stores = this.stores) !== null && _this$stores !== void 0 && _this$stores.some(s => s.trigger('beforeUpdate', {\n record: this,\n changes\n }) === false));\n }\n //endregion\n //region Additional functionality\n /**\n * Makes a copy of this model, assigning the specified id or a generated id and also allowing you to pass field values to\n * the created copy.\n *\n * ```\n * const record = new Model({ name : 'Super model', hairColor : 'Brown' });\n * const clone = record.copy({ name : 'Super model clone' });\n * ```\n * @param {Number|String|Object} [newId] The id for the copied instance, or any field values to apply\n * (overriding the values from the source record). If no id provided, one will be auto-generated\n * @param {Boolean} [deep] True to also clone children\n * @returns {Core.data.Model} Copy of this model\n * @category Editing\n */\n copy(newId = null, deep) {\n const me = this,\n data = ObjectHelper.clone(me.data),\n idField = me.constructor.idField,\n // Chrono model is adding more logic to copy and that logic should be manageable from arguments. So there is\n // option to pass object as a last argument to switch method behavior. Used internally only, shouldn't be public.\n useDeep = ObjectHelper.isObject(deep) ? deep.deep : deep;\n let id;\n if (newId && typeof newId === 'object') {\n id = newId[idField];\n Object.assign(data, newId);\n } else {\n id = newId;\n }\n // Iterate over instance children, because data may not reflect actual children state\n if (useDeep && me.children) {\n data.children = me.children.map(child => child.copy(undefined, deep));\n } else {\n delete data.children;\n delete data.expanded;\n }\n if (newId !== false) {\n // We can use the value from the 'id' property, but as a fallback, generate the id.\n data[idField] = id || me.generateId(me.firstStore);\n }\n // Force using raw data when creating a copy, since data was cloned above anyway\n const copy = new me.constructor(data, null, null, false, true);\n // Store original record internal id to lookup from copy later\n copy.originalInternalId = me.internalId;\n return copy;\n }\n // Copies data using the real field names to trigger setters\n copyData(fromRecord) {\n const propertiesAndValues = {};\n fromRecord.allFields.forEach(({\n name: fieldName\n }) => {\n if (fieldName !== fromRecord.constructor.idField) {\n propertiesAndValues[fieldName] = fromRecord[fieldName];\n }\n });\n this.set(propertiesAndValues);\n }\n /**\n * Removes this record from all stores (and in a tree structure, also from its parent if it has one).\n * @param {Boolean} [silent] Specify `true` to not trigger events. If event is recurring, occurrences won't be updated automatically.\n * @category Editing\n */\n remove(silent = false) {\n const me = this,\n {\n parent\n } = this;\n // Remove from parent if we're in a tree structure.\n // This informs the owning store(s)\n if (parent) {\n parent.removeChild(me);\n }\n // Store handles remove\n else if (me.stores.length) {\n // Not sure what should happen if you try to remove a special row (group row for example), bailing out\n if (!me.isSpecialRow) {\n me.stores.forEach(s => s.remove(me, silent, false, true));\n }\n }\n }\n // Called by stores before removing the record from the store. Returning false prevents the removal (overridden in\n // ModelLink.js)\n beforeRemove(stores, records) {\n return super.beforeRemove(stores, records);\n }\n /**\n * Get a relation config by name, from the first store.\n * @param {String} name\n * @returns {Object}\n * @private\n * @category Relations\n */\n getRelationConfig(name) {\n var _this$firstStore, _this$firstStore$mode;\n // Using first store for relations, might have to revise later...\n return (_this$firstStore = this.firstStore) === null || _this$firstStore === void 0 ? void 0 : (_this$firstStore$mode = _this$firstStore.modelRelations) === null || _this$firstStore$mode === void 0 ? void 0 : _this$firstStore$mode.find(r => r.fieldName === name);\n }\n //endregion\n //region Validation\n /**\n * Check if record has valid data. Default implementation returns true, override in your model to do actual validation.\n * @property {Boolean}\n * @category Editing\n */\n get isValid() {\n return true;\n }\n //endregion\n //region Store\n /**\n * Get the first store that this model is assigned to.\n * @property {Core.data.Store}\n * @readonly\n * @category Misc\n */\n get firstStore() {\n return this.stores.length > 0 && this.stores[0];\n }\n /**\n * Joins this record and any children to specified store, if not already joined.\n * @internal\n * @param {Core.data.Store} store Store to join\n * @category Misc\n */\n joinStore(store) {\n const me = this,\n {\n stores\n } = me;\n if (!stores.includes(store)) {\n const {\n unjoinedStores\n } = me;\n super.joinStore(store);\n store.register(me);\n stores.push(store);\n if (unjoinedStores.includes(store)) {\n unjoinedStores.splice(unjoinedStores.indexOf(store), 1);\n }\n me.isLoaded && me.children.forEach(child => child.joinStore(store));\n me.initRelations();\n if (store.tree && !me.isRoot) {\n me.instanceMeta(store.id).collapsed = !me.expanded;\n }\n }\n }\n /**\n * Unjoins this record and any children from specified store, if already joined.\n * @internal\n * @param {Core.data.Store} store Store to join\n * @param {Boolean} [isReplacing] `true` if this record is being replaced\n * @category Misc\n */\n unjoinStore(store, isReplacing = false) {\n const me = this,\n {\n stores,\n unjoinedStores\n } = me;\n if (stores.includes(store)) {\n var _ref, _ref$forEach;\n if (!store.isDestroying) {\n store.unregister(me);\n unjoinedStores.push(store);\n }\n // me.children may === true...\n // If filtered, *all* children must be unjoined when we are.\n (_ref = me.unfilteredChildren || me.children) === null || _ref === void 0 ? void 0 : (_ref$forEach = _ref.forEach) === null || _ref$forEach === void 0 ? void 0 : _ref$forEach.call(_ref, child => child.unjoinStore(store, isReplacing));\n stores.splice(stores.indexOf(store), 1);\n // keep the cord to allow removed records to reach the store when needed\n super.unjoinStore && super.unjoinStore(store, isReplacing);\n // remove from relation cache\n store.uncacheRelatedRecord(me);\n }\n }\n /**\n * Returns true if this record is contained in the specified store, or in any store if store param is omitted.\n * @internal\n * @param {Core.data.Store} store Store to join\n * @returns {Boolean}\n * @category Misc\n */\n isPartOfStore(store) {\n if (store) {\n return store.includes(this);\n }\n return this.stores.length > 0;\n }\n /**\n * Returns true if this record is not part of any store.\n * @property {Boolean}\n * @readonly\n * @internal\n */\n get isRemoved() {\n return !this.isPartOfStore();\n }\n //endregion\n //region Per instance meta\n /**\n * Used to set per external instance meta data. For example useful when using a record in multiple grids to store some state\n * per grid.\n * @param {String|Object} instanceOrId External instance id or the instance itself, if it has id property\n * @private\n * @category Misc\n */\n instanceMeta(instanceOrId) {\n const {\n meta\n } = this,\n id = instanceOrId.id || instanceOrId;\n if (!meta.map) {\n meta.map = {};\n }\n return meta.map[id] || (meta.map[id] = {});\n }\n get isGroupHeader() {\n return 'groupRowFor' in this.meta;\n }\n get isGroupFooter() {\n return 'groupFooterFor' in this.meta;\n }\n get isSpecialRow() {\n var _this$meta2;\n return Boolean((_this$meta2 = this.meta) === null || _this$meta2 === void 0 ? void 0 : _this$meta2.specialRow);\n }\n //endregion\n static get nonPersistableFields() {\n const me = this;\n if (!me._nonPersistableFields) {\n me._nonPersistableFields = {};\n me.allFields.forEach(field => {\n if (!field.persist || field.calculated) {\n me._nonPersistableFields[field.name] = 1;\n }\n });\n }\n return me._nonPersistableFields;\n }\n static get alwaysWriteFields() {\n const me = this;\n if (!me._alwaysWriteFields) {\n me._alwaysWriteFields = [];\n me.allFields.forEach(field => {\n if (field.alwaysWrite) {\n me._alwaysWriteFields.push(field.name);\n }\n });\n }\n return me._alwaysWriteFields;\n }\n // Id with spaces and dots replaced by -, for safe usage as an id in DOM\n get domId() {\n return typeof this.id === 'string' ? this.id.replace(/[ .]/g, '-') : this.id;\n }\n //region Extract config\n // These functions are not meant to be called by any code other than Base#getCurrentConfig()\n // Convert custom modelClass to string, keeping custom fields\n static toJavaScriptValue(options) {\n // Get name, skipping the automatically extended name that goes last (MyModel, not MyModelEx)\n const {\n names\n } = this.$meta,\n className = names[names.length - 2],\n superName = names[names.length - 3];\n return `class ${className} extends ${superName} { static fields = ${StringHelper.toJavaScriptValue(this.fields, options)}; }`;\n }\n // Get fields current values\n getCurrentConfig(options) {\n const {\n data,\n children\n } = this,\n {\n defaultValues,\n applyConfigs\n } = this.constructor,\n result = applyConfigs ? super.getCurrentConfig(options) : {};\n if (result) {\n for (const field of this.fields) {\n if (field.persist) {\n const value = ObjectHelper.getPath(data, field.dataSource);\n if (!field.isEqual(value, defaultValues[field.name])) {\n ObjectHelper.setPath(result, field.dataSource, Base$1.processConfigValue(value, options));\n }\n }\n }\n // Always include children\n if (children) {\n // Inline available children\n if (Array.isArray(children)) {\n result.children = [];\n for (const child of children) {\n result.children.push(child.getCurrentConfig(options));\n }\n }\n // Load on demand\n else {\n result.children = children;\n }\n }\n if (this.hasGeneratedId) {\n delete result.id;\n }\n delete result.parentId;\n delete result.parentIndex;\n }\n return result;\n }\n //endregion\n}\n\nModel._idField = 'id';\nModel._internalIdCounter = 1;\nModel._assignedIdField = false;\nModel.exposeProperties();\nModel._$name = 'Model';\n\n/**\n * @module Core/data/Duration\n */\n/**\n * Class which represents a duration object. A duration consists of a `magnitude` and a `unit`.\n *\n * ```javascript\n * {\n * unit : String,\n * magnitude : Number\n * }\n * ```\n *\n * Valid values are:\n * - \"millisecond\" - Milliseconds\n * - \"second\" - Seconds\n * - \"minute\" - Minutes\n * - \"hour\" - Hours\n * - \"day\" - Days\n * - \"week\" - Weeks\n * - \"month\" - Months\n * - \"quarter\" - Quarters\n * - \"year\"- Years\n */\nclass Duration {\n /**\n * Duration constructor.\n * @param {Number|String} magnitude Duration magnitude value or a duration + magnitude string ('2h', '4d')\n * @param {String} [unit] Duration unit value\n */\n constructor(magnitude, unit) {\n if (typeof magnitude === 'number') {\n this._magnitude = magnitude;\n this._unit = unit;\n } else {\n if (typeof magnitude === 'string') {\n magnitude = DateHelper.parseDuration(magnitude);\n }\n if (typeof magnitude === 'object') {\n Object.assign(this, magnitude);\n }\n }\n }\n /**\n * Get/Set numeric magnitude `value`.\n * @property {Number}\n */\n get magnitude() {\n return this._magnitude;\n }\n set magnitude(value) {\n this._magnitude = typeof value === 'number' && value;\n }\n /**\n * Get/Set duration unit to use with the current magnitude value.\n * Valid values are:\n * - \"millisecond\" - Milliseconds\n * - \"second\" - Seconds\n * - \"minute\" - Minutes\n * - \"hour\" - Hours\n * - \"day\" - Days\n * - \"week\" - Weeks\n * - \"month\" - Months\n * - \"quarter\" - Quarters\n * - \"year\"- Years\n *\n * @member {'millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year'}\n */\n get unit() {\n return this._unit;\n }\n set unit(value) {\n this._unit = DateHelper.parseTimeUnit(value);\n }\n get isValid() {\n return this._magnitude != null && Boolean(DateHelper.normalizeUnit(this._unit));\n }\n /**\n * The `milliseconds` property is a read only property which returns the number of milliseconds in this Duration\n * @property {Number}\n * @readonly\n */\n get milliseconds() {\n // There's no smaller time unit in the Date class than milliseconds, so round any divided values\n return this.isValid ? Math.round(DateHelper.asMilliseconds(this._magnitude, this._unit)) : 0;\n }\n /**\n * Returns truthy value if this Duration equals the passed value.\n * @param {Core.data.Duration} value\n * @returns {Boolean}\n */\n isEqual(value) {\n return Boolean(value && this.milliseconds === value.milliseconds);\n }\n toString(useAbbreviation) {\n const me = this,\n abbreviationFn = useAbbreviation ? 'getShortNameOfUnit' : 'getLocalizedNameOfUnit';\n return me.isValid ? `${me._magnitude} ${DateHelper[abbreviationFn](me._unit, me._magnitude !== 1)}` : '';\n }\n toJSON() {\n return this.toString();\n }\n valueOf() {\n return this.milliseconds;\n }\n}\nDuration._$name = 'Duration';\n\n/**\n * @module Core/util/CollectionFilter\n */\nconst nestedValueReducer = (object, path) => object === null || object === void 0 ? void 0 : object[path],\n relativeDateUnitRegExp = /^is(this|next|last)(week|month|year)$/i,\n relativeDateOperators = ['isToday', 'isTomorrow', 'isYesterday', 'isThisWeek', 'isNextWeek', 'isLastWeek', 'isThisMonth', 'isNextMonth', 'isLastMonth', 'isThisYear', 'isNextYear', 'isLastYear', 'isYearToDate'];\n/**\n * A class which encapsulates a single filter operation which may be applied to any object to decide whether to\n * include or exclude it from a set.\n *\n * A CollectionFilter generally has at least three main properties:\n *\n * * `property` - The name of a property in candidate objects from which to extract the value to test\n * * `value` - The value which this filter uses to test against.\n * * `operator` - The comparison operator, eg: `'='` or `'>'` etc.\n *\n * Given these three essential values, further configurations may affect how the filter is applied:\n *\n * * `caseSensitive` - If configured as `false`, string comparisons are case insensitive.\n * * `convert` - A function which, when passed the extracted value from the candidate object, returns the value to test.\n *\n * A filter may also be configured with a single `filterBy` property. This function is just passed the raw\n * candidate object and must return `true` or `false`.\n *\n * A CollectionFilter may be configured to encapsulate a single filtering function by passing that function as the sole\n * parameter to the constructor:\n *\n * new CollectionFilter(candidate => candidate.title.contains('search string'));\n *\n */\nclass CollectionFilter extends Base$1.mixin(Identifiable) {\n static get defaultConfig() {\n return {\n /**\n * The value against which to compare the {@link #config-property} of candidate objects.\n * @config {*}\n */\n value: null,\n /**\n * The operator to use when comparing a candidate object's {@link #config-property} with this CollectionFilter's {@link #config-value}.\n * May be:\n * `'='`, `'!='`, `'>'`, `'>='`, `'<'`, `'<='`, `'*'`,\n * `'startsWith'`, `'endsWith'`, `'isIncludedIn'`, `'includes'`, `'doesNotInclude'`,\n * `'empty'`, `'notEmpty'`, `'between'`, `'notBetween'`,\n * `'isToday'`, `'isTomorrow'`, `'isYesterday'`, `'isThisWeek'`, `'isLastWeek'`, `'isNextWeek'`, `'isThisMonth'`,\n * `'isLastMonth'`, `'isNextMonth'`, `'isThisYear'`, `'isLastYear'`, `'isNextYear'`, `'isYearToDate`',\n * `'isTrue'`, `'isFalse'`\n * @config {'='|'!='|'>'|'>='|'<'|'<='|'*'|'startsWith'|'endsWith'|'isIncludedIn'|'isNotIncludedIn'|'includes'|'doesNotInclude'|'empty'|'notEmpty'|'between'|'notBetween'|'isToday'|'isTomorrow'|'isYesterday'|'isThisWeek'|'isLastWeek'|'isNextWeek'|'isThisMonth'|'isLastMonth'|'isNextMonth'|'isThisYear'|'isLastYear'|'isNextYear'|'isYearToDate'|'isTrue'|'isFalse'}\n */\n operator: null,\n /**\n * May be used in place of the {@link #config-property}, {@link #config-value} and {@link #config-property} configs. A function which\n * accepts a candidate object and returns `true` or `false`\n * @config {Function}\n */\n filterBy: null,\n /**\n * A function which accepts a value extracted from a candidate object using the {@link #config-property} name, and\n * returns the value which the filter should use to compare against its {@link #config-value}.\n * @config {Function}\n */\n convert: null,\n /**\n * Configure as `false` to have string comparisons case insensitive.\n * @config {Boolean}\n * @default\n */\n caseSensitive: true,\n /**\n * The `id` of this Filter for when used by a {@link Core.util.Collection} Collection.\n * By default the `id` is the {@link #config-property} value.\n * @config {String}\n */\n id: null,\n // Type is required to process the Date value in State API. Store doesn't always know about field type to\n // process filter value, when it applies it from the state, e.g. when you don't declare model field as `date`\n // type but provide a Date instance there. When DateColumn is used to shows this field, it could add date\n // filters to the store. When store is applying state it cannot just infer type, because model doesn't\n // declare it. Only column knows. So to properly process the Date instance for the filter State API would\n // have to process the field additionally, checking model field type and column type. So it is simpler to\n // make Filter to put this information. That way when filter is instantiated by the store, it can gracefully\n // handle value processing, converting date string to the Date instance.\n // Date is the only known value type so far which requires this processing.\n type: null,\n /**\n * Setting the `internal` config on a filter means that it is a fixed part of your store's operation.\n *\n * {@link Core.data.Store#function-clearFilters} does not remove `internal` filters. If you add an\n * `internal` filter, you must explicitly remove it if it is no longer required.\n *\n * Grid features which offer column-based filtering do *not* ingest existing store filters on\n * their data field if the filter is `internal`\n * @config {Boolean}\n * @default false\n */\n internal: null,\n /**\n * When `true`, the filter will not be applied.\n * @config {Boolean}\n * @default\n */\n disabled: false\n };\n }\n static get configurable() {\n return {\n /**\n * The name of a property of candidate objects which yields the value to compare against this CollectionFilter's {@link #config-value}.\n * @member {String} property\n */\n /**\n * The name of a property of candidate objects which yields the value to compare against this CollectionFilter's {@link #config-value}.\n * @config {String}\n */\n property: null\n };\n }\n construct(config) {\n if (typeof config === 'function') {\n config = {\n filterBy: config\n };\n }\n // If Filter is created without a type (yet everything except applying state) create one\n if (!config.type) {\n if (DateHelper.isDate(config.value) || Array.isArray(config.value) && config.value.every(DateHelper.isDate)) {\n config.type = 'date';\n } else if (config.value instanceof Duration) {\n config.type = 'duration';\n }\n }\n // If type already exist, it means we are applying state and should process value\n else {\n if (config.type === 'date' && config.value != null && !Array.isArray(config.value)) {\n config.value = new Date(config.value);\n } else if (config.type === 'duration' && config.value != null && !Array.isArray(config.value)) {\n config.value = new Duration(config.value);\n }\n }\n super.construct(config);\n }\n /**\n * When in a Collection (A Collection holds its Filters in a Collection), we need an id.\n * @property {String}\n * @private\n */\n get id() {\n if (!this._id) {\n // Internal filters get a special, unique property so that they cannot collide\n // with default filters for a field.\n if (this.internal) {\n this._id = CollectionFilter.generateId(`b-internal-${this.property}-filter-`);\n } else {\n this._id = this.property || CollectionFilter.generateId('b-filter-');\n }\n }\n return this._id;\n }\n set id(id) {\n this._id = id;\n }\n onChange(propertyChanged) {\n const me = this;\n // Inform any owner (eg a Store), that it has to reassess its CollectionFilters\n if (!me.isConfiguring && me.owner && !me.owner.isConfiguring && me.owner.onFilterChanged) {\n me.owner.onFilterChanged(me, propertyChanged);\n }\n }\n get filterBy() {\n return this._filterBy || this.defaultFilterBy;\n }\n /**\n * May be used in place of the {@link #config-property}, {@link #config-value} and {@link #config-property} configs. A function which\n * accepts a candidate object and returns `true` or `false`\n * @type {Function}\n */\n set filterBy(filterBy) {\n this._filterBy = filterBy;\n }\n defaultFilterBy(candidate) {\n const me = this;\n let candidateValue;\n // check if is nested property\n if (me._propertyItems.length > 1) {\n // support nested props (https://github.com/bryntum/support/issues/1861)\n candidateValue = me._propertyItems.reduce(nestedValueReducer, candidate);\n } else {\n candidateValue = candidate[me.property];\n }\n return me[me.operator](me.convert(candidateValue));\n }\n updateProperty(property) {\n this._propertyItems = property.split('.');\n // Signal to owner about filter change\n this.onChange('property');\n }\n /**\n * The value against which to compare the {@link #config-property} of candidate objects.\n * @type {*}\n */\n set value(value) {\n const me = this;\n me._value = value;\n // Filter value is a processed value to be used by the comparators. Useful when value is object, like Duration field\n if (Array.isArray(value) && ({\n date: 1,\n duration: 1\n }[me.type] || value.length > 0 && typeof value[0] === 'string')) {\n me._filterValue = value.map(v => me.convert(v));\n } else if (!me.caseSensitive && Array.isArray(value) && value.length > 0 && typeof value[0] === 'string') {\n me._filterValue = value.map(s => s === null || s === void 0 ? void 0 : s.toLowerCase());\n } else if (!me.caseSensitive && typeof value === 'string') {\n me._filterValue = value.toLowerCase();\n } else {\n me._filterValue = me.convert(value);\n }\n // Signal to owner about filter change\n me.onChange('value');\n }\n get value() {\n return this._value;\n }\n get filterValue() {\n return this._filterValue;\n }\n /**\n * The operator to use when comparing a candidate object's {@link #config-property} with this CollectionFilter's {@link #config-value}.\n * May be:\n * `'='`, `'!='`, `'>'`, `'>='`, `'<'`, `'<='`, `'*'`,\n * `'startsWith'`, `'endsWith'`, `'isIncludedIn'`, `'includes'`, `'doesNotInclude'`,\n * `'empty'`, `'notEmpty'`, `'between'`, `'notBetween'`,\n * `'isToday'`, `'isTomorrow'`, `'isYesterday'`, `'isThisWeek'`, `'isLastWeek'`, `'isNextWeek'`, `'isThisMonth'`,\n * `'isLastMonth'`, `'isNextMonth'`, `'isThisYear'`, `'isLastYear'`, `'isNextYear'`, `'isYearToDate`',\n * `'isTrue'`, `'isFalse'`\n * @type {'='|'!='|'>'|'>='|'<'|'<='|'*'|'startsWith'|'endsWith'|'isIncludedIn'|'isNotIncludedIn'|'includes'|'doesNotInclude'|'empty'|'notEmpty'|'between'|'notBetween'|'isToday'|'isTomorrow'|'isYesterday'|'isThisWeek'|'isLastWeek'|'isNextWeek'|'isThisMonth'|'isLastMonth'|'isNextMonth'|'isThisYear'|'isLastYear'|'isNextYear'|'isYearToDate'|'isTrue'|'isFalse'}\n */\n set operator(operator) {\n this._operator = operator;\n // Signal to owner about filter change\n this.onChange('operator');\n }\n get operator() {\n const me = this;\n if (me._operator) {\n return me._operator;\n }\n if (Array.isArray(me.filterValue)) {\n return 'isIncludedIn';\n }\n return typeof me.filterValue === 'string' ? '*' : '=';\n }\n convert(value) {\n // This is a workaround for filterbar feature: it always converts input value to string. When date is typed,\n // it is converted into string, and Date.valueOf() would return number. So if we are matching date against string\n // type, we should not convert it.\n if (this.operator !== 'sameTime' && !(typeof this.filterValue === 'string' && value instanceof Date)) {\n var _value$valueOf, _value;\n if (this.operator === 'sameDay') {\n value = DateHelper.clearTime(value);\n }\n // if value is a complex type, try to access `value` property to get primitive value\n value = (_value$valueOf = (_value = value) === null || _value === void 0 ? void 0 : _value.valueOf()) !== null && _value$valueOf !== void 0 ? _value$valueOf : value;\n }\n value = !this.caseSensitive && typeof value === 'string' ? value.toLowerCase() : value;\n return value;\n }\n filter(candidate) {\n return this.filterBy(candidate);\n }\n startsWith(v) {\n return String(v).startsWith(this.filterValue);\n }\n endsWith(v) {\n return String(v).endsWith(this.filterValue);\n }\n isIncludedIn(v) {\n return this.filterValue.length === 0 || this.filterValue.includes(v);\n }\n isNotIncludedIn(v) {\n return !this.isIncludedIn(v);\n }\n includes(v) {\n return this.filterValue.length === 0 || String(v).includes(this.filterValue);\n }\n doesNotInclude(v) {\n return !this.includes(v);\n }\n sameTime(v) {\n return DateHelper.isSameTime(v, this.filterValue);\n }\n sameDay(v) {\n return v === this.filterValue;\n }\n '='(v) {\n return ObjectHelper.isEqual(v, this.filterValue);\n }\n '!='(v) {\n return !ObjectHelper.isEqual(v, this.filterValue);\n }\n '>'(v) {\n return ObjectHelper.isMoreThan(v, this.filterValue);\n }\n '>='(v) {\n return ObjectHelper.isMoreThan(v, this.filterValue) || ObjectHelper.isEqual(v, this.filterValue);\n }\n '<'(v) {\n return ObjectHelper.isLessThan(v, this.filterValue);\n }\n '<='(v) {\n return ObjectHelper.isLessThan(v, this.filterValue) || ObjectHelper.isEqual(v, this.filterValue);\n }\n '*'(v) {\n return ObjectHelper.isPartial(v, this.filterValue);\n }\n between(v) {\n const [start, end] = this._filterValue;\n return (ObjectHelper.isMoreThan(v, start) || ObjectHelper.isEqual(v, start)) && (ObjectHelper.isLessThan(v, end) || ObjectHelper.isEqual(v, end));\n }\n notBetween(v) {\n return !this.between(v);\n }\n empty(v) {\n return v === undefined || v === null || String(v).length === 0;\n }\n notEmpty(v) {\n return !this.empty(v);\n }\n isToday(v) {\n // Values have already been converted to fixed date range\n return this.between(v);\n }\n isTomorrow(v) {\n return this.between(v);\n }\n isYesterday(v) {\n return this.between(v);\n }\n isThisWeek(v) {\n return this.between(v);\n }\n isNextWeek(v) {\n return this.between(v);\n }\n isLastWeek(v) {\n return this.between(v);\n }\n isThisMonth(v) {\n return this.between(v);\n }\n isNextMonth(v) {\n return this.between(v);\n }\n isLastMonth(v) {\n return this.between(v);\n }\n isThisYear(v) {\n return this.between(v);\n }\n isNextYear(v) {\n return this.between(v);\n }\n isLastYear(v) {\n return this.between(v);\n }\n isYearToDate(v) {\n return this.between(v);\n }\n isTrue(v) {\n return v === true;\n }\n isFalse(v) {\n return v === false;\n }\n // Fill in actual dates relative to now\n setRelativeDateValues() {\n this._filterValue = CollectionFilter.getRelativeDateRange(this._operator).map(date => date.valueOf());\n }\n static getRelativeDateRange(relativeExpr, now = new Date()) {\n let todayStart, tomorrowStart, parts, oneTimeUnit, unitStart, which, timeUnit;\n switch (relativeExpr) {\n case 'isYearToDate':\n return [DateHelper.floor(now, '1 year'), now];\n case 'isToday':\n todayStart = DateHelper.floor(now, '1 day');\n return [todayStart, DateHelper.add(todayStart, 1, 'day')];\n case 'isYesterday':\n todayStart = DateHelper.floor(now, '1 day');\n return [DateHelper.add(todayStart, -1, 'day'), todayStart];\n case 'isTomorrow':\n tomorrowStart = DateHelper.getStartOfNextDay(now);\n return [tomorrowStart, DateHelper.add(tomorrowStart, 1, 'day')];\n case 'isThisWeek':\n case 'isNextWeek':\n case 'isLastWeek':\n case 'isThisMonth':\n case 'isNextMonth':\n case 'isLastMonth':\n case 'isThisYear':\n case 'isNextYear':\n case 'isLastYear':\n parts = relativeExpr.toLowerCase().match(relativeDateUnitRegExp);\n if (!parts) {\n throw new Error(`Unrecognized relative date expression: ${relativeExpr}`);\n }\n [, which, timeUnit] = parts;\n oneTimeUnit = `1 ${timeUnit}`;\n unitStart = DateHelper.floor(now, oneTimeUnit);\n if (which === 'next') {\n unitStart = DateHelper.add(unitStart, 1, timeUnit);\n } else if (which === 'last') {\n unitStart = DateHelper.add(unitStart, -1, timeUnit);\n }\n return [unitStart, DateHelper.add(unitStart, 1, timeUnit)];\n }\n }\n // Accepts an array or a Collection\n static generateFiltersFunction(filters) {\n if (!filters || !filters.length && !filters.count) {\n return FunctionHelper.returnTrue;\n }\n for (const filter of filters) {\n if (filter.type === 'date' && relativeDateOperators.includes(filter._operator)) {\n filter.setRelativeDateValues();\n }\n }\n return function (candidate) {\n let match = true;\n for (const filter of filters) {\n // Skip disabled filters\n if (!filter.disabled) {\n match = filter.filter(candidate);\n }\n if (!match) {\n break;\n }\n }\n return match;\n };\n }\n}\nCollectionFilter._$name = 'CollectionFilter';\n\n/**\n * @module Core/helper/IdHelper\n */\n// Id generation should be on a per page basis, not per module\nconst idCounts = ObjectHelper.getPathDefault(globalThis, 'bryntum.idCounts', Object.create(null));\n/**\n * IdHelper provides unique ID generation.\n *\n * This class is not intended for application use, it is used internally by the Bryntum infrastructure.\n * @internal\n */\nclass IdHelper {\n /**\n * Generate a new id, using IdHelpers internal counter and a prefix\n * @param {String} prefix Id prefix\n * @returns {String} Generated id\n */\n static generateId(prefix = 'generatedId') {\n // This produces \"b-foo-1, b-foo-2, ...\" for each prefix independently of the others. In other words, it makes\n // id's more stable since the counter is on a per-class basis.\n return prefix + (idCounts[prefix] = (idCounts[prefix] || 0) + 1);\n }\n}\nIdHelper._$name = 'IdHelper';\n\n/**\n * @module Core/util/CollectionSorter\n */\n/**\n * A class which encapsulates a single sorter operation which may be applied to a {@link Core.util.Collection} to\n * order its elements in a specific way.\n *\n * A CollectionSorter generally has two properties:\n *\n * * `property` - The name of a property in collection objects by which to sort\n * * `direction` - The sort direction, `'ASC'` or `'DESC'`.\n *\n * It may also be configured with just a {@link #config-sortFn} function which returns the desired comparison\n * result when passed two objects to compare. Note that this does *not* require or use the\n * {@link #config-property} config. Two collection items are passed for comparison.\n *\n * Further configurations may affect how the sorter is applied:\n *\n * * `convert` - A function which, when passed the {@link #config-property} value from\n * a collection object, returns the value to sort by.\n *\n * A CollectionSorter may be configured to encapsulate a {@link #config-sortFn} by passing that function as the sole\n * parameter to the constructor:\n *\n * new CollectionSorter((lhs, rhs) => {\n * lhs = lhs.customerDetails.companyName.toLowerCase();\n * rhs = rhs.customerDetails.companyName.toLowerCase();\n *\n * if (lhs < rhs) {\n * return -1;\n * }\n * else if (lhs > rhs) {\n * return 1;\n * }\n * else {\n * return 0;\n * }\n * });\n *\n */\nclass CollectionSorter extends Base$1 {\n static get defaultConfig() {\n return {\n /**\n * The name of a property of collection objects which yields the value to sort by.\n * @config {String}\n */\n property: null,\n /**\n * The direction to sort in, `'ASC'` or `'DESC'`\n * @config {'ASC'|'DESC'}\n * @default\n */\n direction: 'ASC',\n /**\n * A function which takes the place of using {@link #config-property} and {@link #config-direction}.\n * The function is passed two objects from the collection to compare and must return the comparison result.\n * @config {Function}\n */\n sortFn: null,\n /**\n * When using {@link #config-property}, this may be specified as a function which takes the raw\n * property value and returns the value to actually sort by.\n * @config {Function}\n */\n convert: null,\n /**\n * The `id` of this Sorter for when used by a {@link Core.util.Collection} Collection.\n * By default the `id` is the {@link #config-property} value.\n * @config {String}\n */\n id: null,\n /**\n * Use `localeCompare()` when sorting, which lets the browser sort in a locale specific order. Set to `true`,\n * a locale string or a locale config to enable.\n *\n * Enabling this has big negative impact on sorting\n * performance. For more info on `localeCompare()`, see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare).\n *\n * ```javascript\n * collection.addSorter({ field: 'name', useLocaleSort : 'sv-SE' });\n * ```\n *\n * @config {Boolean|String|Object}\n * @default false\n */\n useLocaleSort: null\n };\n }\n construct(config) {\n if (typeof config === 'function') {\n config = {\n sortFn: config\n };\n }\n super.construct(config);\n }\n /**\n * When in a Collection (A Collection holds its Sorters in a Collection), we need an id.\n * @property {String}\n * @private\n */\n get id() {\n return this._id || (this._id = this.property || IdHelper.generateId('b-sorter'));\n }\n set id(id) {\n this._id = id;\n }\n set sortFn(sortFn) {\n this._sortFn = sortFn;\n }\n get sortFn() {\n if (this._sortFn) {\n return this._sortFn;\n }\n return this.defaultSortFn;\n }\n /**\n * Default sortFn used when no sortFn specified. Uses the {@link #config-property},\n * {@link #config-direction}, and {@link #config-convert}.\n * @private\n */\n defaultSortFn(lhs, rhs) {\n const me = this,\n {\n convert,\n property,\n useLocaleSort\n } = me,\n multiplier = me.direction.toLowerCase() === 'desc' ? -1 : 1;\n lhs = lhs[property];\n rhs = rhs[property];\n if (convert) {\n lhs = convert(lhs);\n rhs = convert(rhs);\n }\n if (useLocaleSort && lhs != null && rhs != null && typeof lhs === 'string') {\n // Use systems locale\n if (useLocaleSort === true) {\n return String(lhs).localeCompare(rhs);\n }\n // Use specified locale\n if (typeof useLocaleSort === 'string') {\n return String(lhs).localeCompare(rhs, useLocaleSort);\n }\n // Use locale config\n if (typeof useLocaleSort === 'object') {\n return String(lhs).localeCompare(rhs, useLocaleSort.locale, useLocaleSort);\n }\n }\n return (lhs > rhs ? 1 : lhs < rhs ? -1 : 0) * multiplier;\n }\n static generateSortFunction(sorters, tieBreaker) {\n const items = sorters.isCollection ? sorters.values : sorters,\n n = items.length;\n return (lhs, rhs) => {\n let comp, i;\n for (i = 0; i < n; ++i) {\n comp = items[i].sortFn(lhs, rhs);\n if (comp) {\n return comp;\n }\n }\n return tieBreaker ? tieBreaker(lhs, rhs) : 0;\n };\n }\n}\nCollectionSorter._$name = 'CollectionSorter';\n\n/**\n * @module Core/util/Collection\n */\nconst return0 = () => 0,\n reverseNumericSortFn = (a, b) => b - a,\n filteredIndicesProperty = Symbol('filteredIndicesProperty'),\n emptyArray$9 = Object.freeze([]),\n sortEvent = Object.freeze({\n action: 'sort',\n added: emptyArray$9,\n removed: emptyArray$9,\n replaced: emptyArray$9\n }),\n filterEvent = Object.freeze({\n action: 'filter',\n added: emptyArray$9,\n removed: emptyArray$9,\n replaced: emptyArray$9\n }),\n keyTypes = {\n string: 1,\n number: 1\n };\n// Adds a single item to a single index using the specified key\nfunction addItemToIndex(item, index, key) {\n // Unique holds a single entry\n if (index.unique !== false) {\n index.set(key, item);\n }\n // Non-unique index holds a Set\n else {\n let set = index.get(key);\n // Add a set if this is the first entry\n if (!set) {\n set = new Set();\n index.set(key, set);\n }\n // Add entry to the set\n set.add(item);\n }\n}\n// Removes a single item from a single index using the specified key\nfunction removeItemFromIndex(item, index, key) {\n // Unique holds single entry, remove it\n if (index.unique !== false) {\n index.delete(key);\n } else if (index.has(key)) {\n // Remove from set\n index.get(key).delete(item);\n // Remove turned empty set\n if (!index.get(key).size) {\n index.delete(key);\n }\n }\n}\n// Used to fully build the indices, normal and filtered (if used). Better to do full builds for performance reasons\n// when assigning new datasets. For other CRUD operations, indices are kept up to date elsewhere\nfunction doRebuildIndices(values, indices, keyProps, indexCount) {\n for (let i = 0; i < values.length; i++) {\n const item = values[i];\n for (let j = 0; j < indexCount; j++) {\n const keyProp = keyProps[j],\n key = item[keyProp],\n index = indices[keyProp];\n addItemToIndex(item, index, key);\n }\n }\n}\n/**\n * A class which encapsulates a {@link #function-get keyed},\n * {@link #function-addFilter filterable}, {@link #function-addSorter sortable}\n * collection of objects. Entries may not be atomic data types such as `string` or `number`.\n *\n * The entries are keyed by their `id` which is determined by interrogating the {@link #config-idProperty}.\n *\n * To filter a Collection, add a {@link Core.util.CollectionFilter CollectionFilter}\n * using the {@link #function-addFilter} method. A Filter config object may be specified here\n * which will be promoted to a CollectionFilter instance.\n *\n * To sort a Collection, add a {@link Core.util.CollectionSorter CollectionSorter}\n * using the {@link #function-addSorter} method. A Sorter config object may be specified here\n * which will be promoted to a CollectionSorter instance.\n */\nclass Collection extends Base$1.mixin(Events) {\n //region Config\n static get configurable() {\n return {\n /**\n * Specify the name of the property of added objects which provides the lookup key\n * @config {String}\n * @default\n */\n idProperty: 'id',\n /**\n * Specify the names or index configs of properties which are to be indexed for fast lookup.\n *\n * Index configs use the format `{ property : string, unique : boolean }`. Unique indices stores one index\n * per entry, non-unique stores a `Set`. If left out, `unique` defaults to `true`\n *\n * @config {String[]|Object[]}\n */\n extraKeys: null,\n /**\n * Automatically apply filters on item add.\n * @config {Boolean}\n * @default\n */\n autoFilter: true,\n /**\n * Automatically apply sorters on item add.\n * @config {Boolean}\n * @default\n */\n autoSort: true,\n /**\n * A {@link Core.util.CollectionSorter Sorter}, or Sorter config object, or\n * an array of these, to use to sort this Collection.\n * @config {Object[]}\n * @default\n */\n sorters: {\n $config: ['lazy'],\n value: []\n }\n };\n }\n get isCollection() {\n return true;\n }\n //endregion\n //region Init & destroy\n construct(config) {\n /**\n * A counter which is incremented whenever the Collection is mutated in a meaningful way.\n *\n * If a {@link #function-splice} call results in no net replacement, removal or addition,\n * then the `generation` will not be incremented.\n * @property {Number}\n * @readonly\n */\n this.generation = 0;\n this._values = [];\n super.construct(config);\n }\n doDestroy() {\n var _me$_sorters;\n super.doDestroy();\n const me = this;\n me._values.length = 0;\n if (me.isFiltered) {\n me._filteredValues.length = 0;\n me.filters.destroy();\n }\n // eslint-disable-next-line no-unused-expressions\n (_me$_sorters = me._sorters) === null || _me$_sorters === void 0 ? void 0 : _me$_sorters.destroy();\n }\n //endregion\n //region \"CRUD\"\n /**\n * Clears this collection.\n */\n clear() {\n const me = this,\n removed = me._values.slice();\n if (me.totalCount) {\n me._values.length = 0;\n if (me._filteredValues) {\n me._filteredValues.length = 0;\n }\n me._indicesInvalid = true;\n // Indicate to observers that data has changed.\n me.generation++;\n me.trigger('change', {\n action: 'clear',\n removed\n });\n }\n }\n /**\n * Compares the content of this Collection with the content of the passed Collection or\n * with the passed array. Order insensitive. This returns `true` if the two objects passed\n * contain the same set of items.\n * @param {Core.util.Collection|Array} other The Collection or array to compare with.\n * @param {Function} [map] Optionally a function to convert the items into a comparable object\n * to compare. For example `item => item.id` could be used to compare the ids of the\n * constituent items.\n * @returns {Boolean} `true` if the two objects passed have the same content.\n */\n equals(other, map) {\n if (other.isCollection) {\n other = other.values;\n }\n if (other.length === this.count) {\n let {\n values\n } = this;\n if (map) {\n other = other.map(map);\n values = values.map(map);\n }\n return ArrayHelper.delta(other, values).inBoth.length === this.count;\n }\n return false;\n }\n /**\n * Replaces the internal `values` array with the passed `values`, or `filteredValues` array with the passed `filteredValues`.\n * If `filteredValues` are not passed explicitly, but storage is filtered, decides internally `values` or `filteredValues` should\n * be replaced by passed `values`.\n *\n * Note that this takes ownership of the array, and the array must not be mutated by outside code.\n *\n * This is an internal utility method, not designed for use by application code.\n *\n * @param {Object} params Values and parameters to replace\n * @param {Object[]} params.values The new `values` array\n * @param {Object[]} [params.filteredValues] The new `filteredValues` array. Applicable only when storage is filtered.\n * @param {Boolean} [params.silent=false] If true, `change` event will not be fired\n * @param {Boolean} [params.isNewDataset=false] If true, `values` is a new dataset\n * @fires change\n * @internal\n */\n replaceValues({\n values,\n filteredValues,\n silent = false,\n isNewDataset = false\n }) {\n const me = this;\n let replacedValues, replacedFilteredValues;\n // The isNewDataset flag is passed by store#loadData to indicate that it's\n // a new data load, and that local filters can be applied.\n // Other use cases are for purely local updates of an existing dataset such as\n // refreshing the visible data with a values array containing group headers.\n if (me.isFiltered && !isNewDataset) {\n const filteredPassed = Boolean(filteredValues);\n // If `filteredValues` are missing, take `values` as a source of filtered values\n if (!filteredPassed) {\n filteredValues = values.slice();\n values = null;\n }\n // otherwise check if non-filtered values are passed together with filtered, and replace them too\n else if (values) {\n replacedValues = me._values;\n me._values = values.slice();\n }\n replacedFilteredValues = me._filteredValues;\n me._filteredValues = filteredValues.slice();\n } else {\n replacedValues = me._values;\n me._values = values.slice();\n filteredValues = null;\n if (me.isFiltered && isNewDataset && me.autoFilter) {\n me._filterFunction = null;\n me._filteredValues = me._values.filter(me.filterFunction);\n } else if (me._filteredValues) {\n me._filteredValues.length = 0;\n }\n }\n me._indicesInvalid = true;\n // Indicate to observers that data has changed.\n me.generation++;\n if (!silent) {\n me.trigger('change', {\n action: 'replaceValues',\n replacedValues,\n replacedFilteredValues,\n values,\n filteredValues\n });\n }\n }\n set values(values) {\n // Want a full rebuild for new dataset, less costly than doing it per item\n this.invalidateIndices();\n this.splice(0, this._values.length, values);\n }\n /**\n * The set of values of this Collection. If this Collection {@link #property-isFiltered},\n * this yields the filtered data set.\n *\n * Setting this property replaces the data set.\n * @property {Object[]}\n */\n get values() {\n return this.isFiltered ? this._filteredValues : this._values;\n }\n /**\n * Iterator that allows you to do `for (const item of collection)`\n */\n [Symbol.iterator]() {\n return this.values[Symbol.iterator]();\n }\n /**\n * Executes the passed function for each item in this Collection, passing in the item,\n * ths index, and the full item array.\n * @param {Function} fn The function to execute.\n * @param {Boolean} [ignoreFilters=false] Pass `true` to include all items, bypassing filters.\n */\n forEach(fn, ignoreFilters = false) {\n (this.isFiltered && !ignoreFilters ? this._filteredValues : this._values).forEach(fn);\n }\n /**\n * Extracts ths content of this Collection into an array based upon the passed\n * value extraction function.\n * @param {Function} fn A function, which, when passed an item, returns a value to place into the resulting array.\n * @param {Boolean} [ignoreFilters=false] Pass `true` to process an item even if it is filtered out.\n * @returns {Object[]} An array of values extracted from this Collection.\n */\n map(fn, ignoreFilters = false) {\n return (this.isFiltered && !ignoreFilters ? this._filteredValues : this._values).map(fn);\n }\n /**\n * Returns the first item in this Collection which elicits a *truthy* return value from the passed function.\n * @param {Function} fn A function, which, when passed an item, returns `true` to select it as the item to return.\n * @param {Boolean} [ignoreFilters=false] Pass `true` to include filtered out items.\n * @returns {Object} The matched item, or `undefined`.\n */\n find(fn, ignoreFilters = false) {\n return (this.isFiltered && !ignoreFilters ? this._filteredValues : this._values).find(fn);\n }\n get first() {\n return this.values[0];\n }\n get last() {\n return this.values[this.count - 1];\n }\n /**\n * The set of all values of this Collection regardless of filters applied.\n * @readonly\n * @property {Object[]}\n */\n get allValues() {\n return this._values;\n }\n /**\n * Adds items to this Collection. Multiple new items may be passed.\n *\n * By default, new items are appended to the existing values.\n *\n * Any {@link #property-sorters} {@link #property-sorters} present are re-run.\n *\n * Any {@link #property-filters} {@link #property-filters} present are re-run.\n *\n * *Note that if application functionality requires add and remove, the\n * {@link #function-splice} operation is preferred as it performs both\n * operations in an atomic manner*\n * @param {...Object} items The item(s) to add.\n */\n add(...items) {\n if (items.length === 1) {\n this.splice(this._values.length, null, ...items);\n } else {\n this.splice(this._values.length, null, items);\n }\n }\n /**\n * Removes items from this Collection. Multiple items may be passed.\n *\n * Any {@link #property-sorters} {@link #property-sorters} present are re-run.\n *\n * Any {@link #property-filters} {@link #property-filters} present are re-run.\n *\n * *Note that if application functionality requires add and remove, the\n * {@link #function-splice} operation is preferred as it performs both\n * operations in an atomic manner*\n * @param {...Object} items The item(s) to remove.\n */\n remove(...items) {\n if (items.length === 1) {\n this.splice(0, ...items);\n } else {\n this.splice(0, items);\n }\n }\n /**\n * Moves an individual item, or a block of items to another location.\n * @param {Object|Object[]} items The item/items to move.\n * @param {Object} [beforeItem] the item to insert the first item before. If omitted, the `item`\n * is moved to the end of the Collection.\n * @returns {Number} The new index of the `item`.\n */\n move(items, beforeItem) {\n items = ArrayHelper.asArray(items);\n // Handle the case of move(myItem, myItem). It's a no-op\n while (items.length && items[0] === beforeItem) {\n items.shift();\n }\n if (!items.length) {\n return;\n }\n const me = this,\n {\n _values\n } = me,\n itemIndex = me.indexOf(items[0], true);\n // move(record, followingrecord) is a no-op\n if (items.length === 1 && _values[itemIndex + 1] === beforeItem) {\n return;\n }\n // Silently remove the items that are to be inserted before the \"beforeItem\".\n me.suspendEvents();\n me.remove(items);\n me.resumeEvents();\n const beforeIndex = beforeItem ? me.indexOf(beforeItem, true) : _values.length;\n if (beforeIndex === -1) {\n throw new Error('Collection move beforeItem parameter must be present in Collection');\n }\n _values.splice(beforeIndex, 0, ...items);\n me._indicesInvalid = 1;\n me.trigger('change', {\n action: 'move',\n items,\n from: itemIndex,\n to: beforeIndex\n });\n return beforeIndex;\n }\n /**\n * The core data set mutation method. Removes and adds at the same time. Analogous\n * to the `Array` `splice` method.\n *\n * Note that if items that are specified for removal are also in the `toAdd` array,\n * then those items are *not* removed then appended. They remain in the same position\n * relative to all remaining items.\n *\n * @param {Number} index Index at which to remove a block of items. Only valid if the\n * second, `toRemove` argument is a number.\n * @param {Object[]|Number} [toRemove] Either the number of items to remove starting\n * at the passed `index`, or an array of items to remove (If an array is passed, the `index` is ignored).\n * @param {Object[]|Object} [toAdd] An item, or an array of items to add.\n */\n splice(index = 0, toRemove, ...toAdd) {\n const me = this,\n idProperty = me.idProperty,\n values = me._values,\n newIds = {},\n removed = [],\n replaced = [],\n oldCount = me.totalCount;\n let added, mutated;\n // Create an \"newIds\" map of the new items so remove ops know if it's really a replace\n // {\n // 1234 : true\n // }\n // And an \"added\" array of the items that need adding (there was not already an entry for the id)\n //\n if (me.trigger('beforeSplice', {\n index,\n toRemove,\n toAdd\n }) === false) {\n return;\n }\n if (toAdd) {\n if (toAdd.length === 1 && Array.isArray(toAdd[0])) {\n toAdd = toAdd[0];\n }\n // Check for replacements if we contain any data\n if (oldCount && toAdd.length) {\n // Only risk rebuilding the indices if we are adding\n const idIndex = me.indices[idProperty];\n added = [];\n for (let i = 0; i < toAdd.length; i++) {\n const newItem = toAdd[i],\n id = newItem[idProperty],\n existingItem = idIndex.get(id),\n existingIndex = existingItem ? values.indexOf(existingItem) : -1;\n // Register incoming id so that removal leaves it be\n newIds[id] = true;\n // Incoming id is already present.\n // Replace it in place.\n if (existingIndex !== -1) {\n // If incoming is the same object, it's a no-op\n if (values[existingIndex] !== newItem) {\n replaced.push([values[existingIndex], newItem]);\n values[existingIndex] = newItem;\n }\n } else {\n added.push(newItem);\n }\n }\n }\n // Empty Collection, we simply add what we're passed\n else {\n added = toAdd;\n }\n }\n if (toRemove) {\n // We're removing a chunk starting at index\n if (typeof toRemove === 'number') {\n // Ensure we don't walk off the end if the toRemove count exceeds what we contain\n toRemove = Math.min(toRemove, values.length - index);\n for (let removeIndex = index; toRemove; --toRemove) {\n const id = values[removeIndex][idProperty];\n // If the entry here is being replaced, skip the insertion index past it\n if (newIds[id]) {\n index++;\n removeIndex++;\n }\n // If the id is not among incoming items, remove it\n else {\n removed.push(values[removeIndex]);\n values.splice(removeIndex, 1);\n mutated = true;\n }\n }\n }\n // We are removing an item/items\n else {\n let contiguous = added.length === 0,\n lastIdx;\n toRemove = ArrayHelper.asArray(toRemove);\n // Create array of index points to remove.\n // They must be in reverse order so that removal leaves following remove indices stable\n const removeIndices = toRemove.reduce((result, item) => {\n const isNumeric = typeof item === 'number',\n idx = isNumeric ? item : me.indexOf(item, true);\n // Drop out of contiguous mode if we find a non-contiguous record, or a remove *index*\n if (contiguous && (lastIdx != null && idx !== lastIdx + 1 || isNumeric)) {\n contiguous = false;\n }\n // Do not include indices out of range in our removeIndices\n if (idx >= 0 && idx < oldCount) {\n result.push(idx);\n }\n lastIdx = idx;\n return result;\n }, []).sort(reverseNumericSortFn);\n // If it's a pure remove of contiguous items with no adds, fast track it.\n if (contiguous) {\n // If reduced to zero by being asked to remove items we do not contain\n // then this is a no-op\n if (removeIndices.length) {\n removed.push.apply(removed, toRemove);\n values.splice(removeIndices[removeIndices.length - 1], removeIndices.length);\n mutated = true;\n }\n } else {\n // Loop through removeIndices splicing each index out of the values\n // unless there's an incoming identical id.\n for (let i = 0; i < removeIndices.length; i++) {\n const removeIndex = removeIndices[i];\n if (removeIndex !== -1) {\n const id = values[removeIndex][idProperty];\n // If the id is not among incoming items, remove it\n if (!newIds[id]) {\n removed.unshift(values[removeIndex]);\n values.splice(removeIndex, 1);\n mutated = true;\n }\n }\n }\n }\n }\n // Update indices only if they have been used\n if (removed.length && !me._indicesInvalid) {\n removed.forEach(me.removeFromIndices, me);\n }\n }\n // If we collected genuinely new entries, insert them at the splice index\n if (added.length) {\n values.splice(Math.min(index, values.length), 0, ...added);\n mutated = true;\n // Update indices only if they have been used\n if (!me._indicesInvalid) {\n added.forEach(me.addToIndices, me);\n }\n }\n // Update indices only if they have been used\n if (replaced.length && !me._indicesInvalid) {\n replaced.forEach(rep => {\n me.removeFromIndices(rep[0]);\n me.addToIndices(rep[1]);\n });\n }\n // If we either added or removed items, or we did an in-place replace operation\n // then inform all interested parties.\n if (mutated || replaced.length) {\n // Ensure order of values matches the sorters\n if (me.isSorted) {\n me.onSortersChanged();\n }\n // The sort will also recreate the filteredValues so that it can be in correct sort order\n else if (me.isFiltered) {\n if (me.autoFilter) {\n me.onFiltersChanged({\n action: 'splice',\n oldCount: 1\n });\n } else {\n me._filteredValues.push(...added);\n }\n }\n // Indicate to observers that data has changed.\n me.generation++;\n /**\n * Fired when items are added, replace or removed\n * @event change\n * @param {'splice'|'clear'|'replaceValues'|'move'|'sort'|'filter'} action The underlying operation\n * which caused data change. May be `'splice'` (meaning an atomic add/remove operation, `'sort'` or\n * `'filter'`), `'clear'`, `'replaceValues'`, `'move'`, `'sort'` or `'filter'`.\n * @param {Core.util.Collection} source This Collection.\n * @param {Object[]} removed An array of removed items. If the `action` is `'filter'`, the\n * removed property represents the records which were filtered out by the action.\n * @param {Object[]} added An array of added items. If the `action` is `'filter'`, the\n * added property represents the records which were filtered in by the action.\n * @param {Object[]} replaced An array of replacements, each entry of which contains `[oldValue, newValue]`.\n * @param {Number} oldCount The number of items in the full, unfiltered collection prior to the splice operation.\n */\n me.trigger('change', {\n action: 'splice',\n removed,\n added,\n replaced,\n oldCount\n });\n } else {\n /**\n * Fired when a {@link #function-splice} operation is requested but the operation\n * is a no-op and has caused no change to this Collection's dataset. The splice\n * method's parameters are passed for reference.\n * @event noChange\n * @param {Number} index Index at which to remove a block of items.\n * @param {Object[]|Number} [toRemove] Either the number of items to remove starting\n * at the passed `index`, or an array of items to remove (If an array is passed, the `index` is ignored).\n * @param {Object[]|Object} [toAdd] An item, or an array of items to add.\n */\n me.trigger('noChange', {\n index,\n toRemove,\n toAdd\n });\n }\n }\n /**\n * Change the id of an existing member by mutating its {@link #config-idProperty}.\n * @param {String|Number|Object} item The item or id of the item to change.\n * @param {String|Number} newId The id to set in the existing member.\n */\n changeId(item, newId) {\n const me = this,\n {\n idProperty\n } = me,\n oldId = keyTypes[typeof item] ? item : item[idProperty],\n member = me.get(oldId);\n if (member) {\n const existingMember = me.get(newId);\n if (existingMember && member !== existingMember) {\n throw new Error(`Attempt to set item ${oldId} to already existing member's id ${newId}`);\n }\n me.removeIndexEntry(item, idProperty, oldId);\n me.addIndexEntry(item, idProperty, newId);\n // Last on purpose, onItemMutation would fail to find the item if its id was changed prior to the call\n member[idProperty] = newId;\n }\n }\n /**\n * Returns the item with the passed `id`. By default, filtered are honoured, and\n * if the item with the requested `id` is filtered out, nothing will be returned.\n *\n * To return the item even if it has been filtered out, pass the second parameter as `true`.\n * @param {*} id The `id` to find.\n * @param {Boolean} [ignoreFilters=false] Pass `true` to return an item even if it is filtered out.\n * @returns {Object} The found item, or `undefined`.\n */\n get(id, ignoreFilters = false) {\n return this.getBy(this.idProperty, id, ignoreFilters);\n }\n getAt(index, ignoreFilters = false) {\n if (this.isFiltered && !ignoreFilters) {\n return this._filteredValues[index];\n } else {\n return this._values[index];\n }\n }\n /**\n * Returns the item with passed property name equal to the passed value. By default,\n * filtered are honoured, and if the item with the requested `id` is filtered out,\n * nothing will be returned.\n *\n * To return the item even if it has been filtered out, pass the third parameter as `true`.\n * @param {String} propertyName The property to test.\n * @param {*} value The value to find.\n * @param {Boolean} [ignoreFilters=false] Pass `true` to return an item even if it is filtered out.\n * @returns {Object} The found item, or `undefined`.\n */\n getBy(propertyName, value, ignoreFilters = false) {\n return this.findItem(propertyName, value, this.isFiltered && ignoreFilters);\n }\n /**\n * The number of items in this collection. Note that this honours filtering.\n * See {@link #property-totalCount};\n * @property {Number}\n * @readonly\n */\n get count() {\n return this.values.length;\n }\n /**\n * The number of items in this collection regardless of filtering.\n * @property {Number}\n * @readonly\n */\n get totalCount() {\n return this._values.length;\n }\n /**\n * The property name used to extract item `id`s from added objects.\n * @member {String} idProperty\n */\n updateIdProperty(idProperty) {\n this.addIndex({\n property: idProperty,\n unique: true\n });\n }\n //endregion\n //region Sorting\n /**\n * The Collection of {@link Core.util.CollectionSorter Sorters} for this Collection.\n * @member {Core.util.Collection} sorters\n */\n changeSorters(sorters) {\n return new Collection({\n values: ArrayHelper.asArray(sorters),\n listeners: {\n change: 'onSortersChanged',\n thisObj: this\n }\n });\n }\n /**\n * Adds a Sorter to the Collection of Sorters which are operating on this Collection.\n *\n * A Sorter may be specified as an instantiated {@link Core.util.CollectionSorter}, or a config object for a\n * CollectionSorter of the form\n *\n * {\n * property : 'age',\n * direction : 'desc'\n * }\n *\n * Note that by default, a Sorter *replaces* a Sorter with the same `property` to make\n * it easy to change existing Sorters. A Sorter's `id` is its `property` by default. You\n * can avoid this and add multiple Sorters for one property by configuring Sorters with `id`s.\n *\n * A Sorter may also be specified as a function which compares two objects eg:\n *\n * (lhs, rhs) => lhs.customerDetails.age - rhs.customerDetails.age\n *\n * @param {Object} sorter A Sorter configuration object to add to the Collection\n * of Sorters operating on this Collection.\n * @returns {Core.util.CollectionSorter} The resulting Sorter to make it easy to remove Sorters.\n */\n addSorter(sorter) {\n const result = sorter instanceof CollectionSorter ? sorter : new CollectionSorter(sorter);\n this.sorters.add(result);\n return result;\n }\n /**\n * A flag which is `true` if this Collection has active {@link #property-sorters}.\n * @property {Boolean}\n * @readonly\n */\n get isSorted() {\n var _this$_sorters;\n return Boolean((_this$_sorters = this._sorters) === null || _this$_sorters === void 0 ? void 0 : _this$_sorters.count);\n }\n onSortersChanged() {\n const me = this;\n delete me._sortFunction;\n me._values.sort(me.sortFunction);\n me.trigger('change', sortEvent);\n }\n /**\n * A sorter function which encapsulates the {@link Core.util.CollectionSorter Sorters}\n * for this Collection.\n * @property {Function}\n * @readonly\n */\n get sortFunction() {\n if (!this._sortFunction) {\n if (this.isSorted) {\n this._sortFunction = CollectionSorter.generateSortFunction(this.sorters.values);\n } else {\n this._sortFunction = return0;\n }\n }\n return this._sortFunction;\n }\n //endregion\n //region Filtering\n /**\n * The Collection of {@link Core.util.CollectionFilter Filters} for this Collection.\n * @property {Core.util.Collection}\n * @readonly\n */\n get filters() {\n if (!this._filters) {\n this._filters = new Collection({\n listeners: {\n change: 'onFiltersChanged',\n thisObj: this\n }\n });\n }\n return this._filters;\n }\n /**\n * Adds a Filter to the Collection of Filters which are operating on this Collection.\n *\n * A Filter may be an specified as an instantiated {@link Core.util.CollectionFilter\n * CollectionFilter}, or a config object for a CollectionFilter of the form\n *\n * {\n * property : 'age',\n * operator : '>=',\n * value : 21\n * }\n *\n * Note that by default, a Filter *replaces* a Filter with the same `property` to make\n * it easy to change existing Filters. A Filter's `id` is its `property` by default. You\n * can avoid this and add multiple Filters for one property by configuring Filters with `id`s.\n *\n * A Filter may also be specified as a function which filters candidate objects eg:\n *\n * candidate => candidate.customerDetails.age >= 21\n *\n * @param {Object} filter A Filter or Filter configuration object to add to the Collection\n * of Filters operating on this Collection.\n * @returns {Core.util.CollectionFilter} The resulting Filter to make it easy to remove Filters.\n */\n addFilter(filter) {\n const result = filter instanceof CollectionFilter ? filter : new CollectionFilter(filter);\n this.filters.add(result);\n return result;\n }\n removeFilter(filter) {\n const {\n filters\n } = this;\n if (!filter.isCollectionFilter) {\n filter = filters.get(filter);\n }\n filters.remove(filter);\n }\n clearFilters() {\n this.filters.clear();\n }\n /**\n * A flag which is `true` if this Collection has active {@link #property-filters}.\n * @property {Boolean}\n * @readonly\n */\n get isFiltered() {\n return Boolean(this._filters && this._filters.count);\n }\n onFiltersChanged({\n action,\n removed: gone,\n oldCount\n }) {\n const me = this,\n oldDataset = oldCount || action === 'clear' && gone.length ? me._filteredValues : me._values;\n me._filterFunction = null;\n me._filteredValues = me._values.filter(me.filterFunction);\n me._indicesInvalid = true;\n const {\n toAdd: added,\n toRemove: removed\n } = ArrayHelper.delta(me._filteredValues, oldDataset, true);\n me.trigger('change', _objectSpread2(_objectSpread2({}, filterEvent), {}, {\n added,\n removed\n }));\n }\n /**\n * A filter function which encapsulates the {@link Core.util.CollectionFilter Filters}\n * for this Collection.\n * @property {Function}\n * @readonly\n */\n get filterFunction() {\n if (!this._filterFunction) {\n if (this.isFiltered) {\n this._filterFunction = CollectionFilter.generateFiltersFunction(this.filters.values);\n } else {\n this._filterFunction = FunctionHelper.returnTrue;\n }\n }\n return this._filterFunction;\n }\n //endregion\n //region Indexing\n changeExtraKeys(extraKeys) {\n const keys = ArrayHelper.asArray(extraKeys);\n // Normalize to always be an array of index configs\n return keys.map(config => {\n if (typeof config === 'string') {\n return {\n property: config,\n unique: true\n };\n }\n return config;\n });\n }\n updateExtraKeys(extraKeys) {\n for (let i = 0; i < extraKeys.length; i++) {\n this.addIndex(extraKeys[i]);\n }\n }\n /**\n * Adds a lookup index for the passed property name or index config. The index is built lazily when an index is\n * searched\n * @internal\n * @param {Object} indexConfig An index config\n * @param {String} indexConfig.property The property name to add an index for\n * @param {Boolean} [indexConfig.unique] Specify `false` to allow multiple entries of the same index, turning\n * entries into sets\n * @param {Object} [indexConfig.dependentOn] The properties that make the key\n */\n addIndex(indexConfig) {\n const me = this;\n // Combo without valueField used in some tests -> addIndex(undefined). Safeguarding here\n if (indexConfig) {\n (me._indices || (me._indices = {}))[indexConfig.property] = new Map();\n // Piggyback the index config\n Object.assign(me._indices[indexConfig.property], indexConfig);\n // Indices need a rebuild now.\n me.invalidateIndices();\n if (indexConfig.dependentOn) {\n me.hasCompositeIndex = true;\n }\n /**\n * this.indices is keyed by the property name, and contains the keys linked to an item in the _values array.\n * So collection.add({id : foo, name : 'Nige'}, {id : 'bar', name : 'Faye'}) where collection has had an index\n * added for the \"name\" property would result in:\n *\n * {\n * id : Map({\n * foo : nige,\n * bar : faye\n * }),\n * name : Map({\n * Nige : nige,\n * Faye : faye\n * })\n * }\n */\n }\n }\n /**\n * Return the index of the item with the specified key having the specified value.\n *\n * By default, filtering is taken into account and this returns the index in the filtered dataset if present. To\n * bypass this, pass the third parameter as `true`.\n *\n * Only useful for indices configured with `unique: true`.\n *\n * @param {String} propertyName The name of the property to test.\n * @param {*} value The value to test for.\n * @param {Boolean} [ignoreFilters=false] Pass `true` to return the index in\n * the original data set if the item is filtered out.\n * @returns {Number} The index of the item or `-1` if not found for unique indices\n */\n findIndex(propertyName, value, ignoreFilters = false) {\n const item = this.findItem(propertyName, value, ignoreFilters);\n if (!item) {\n return -1;\n }\n const values = this.isFiltered && !ignoreFilters ? this._filteredValues : this._values;\n return values.indexOf(item);\n }\n /**\n * Return the item with the specified key having the specified value.\n *\n * By default, filtering is taken into account. To bypass this, pass the third parameter as `true`.\n *\n * For indices configured with `unique: false`, a Set of items will be returned.\n *\n * @param {String} propertyName The name of the property to test.\n * @param {*} value The value to test for.\n * @param {Boolean} [ignoreFilters=false] Pass `true` to return the index in\n * the original data set if the item is filtered out.\n * @returns {Object|Set} The found item or Set of items or null\n */\n findItem(propertyName, value, ignoreFilters = false) {\n const me = this,\n {\n isFiltered\n } = me,\n index = isFiltered && !ignoreFilters ? me.indices[filteredIndicesProperty][propertyName] : me.indices[propertyName];\n if (index) {\n var _index$get;\n // If the key is a numeric string, cast it to a number and find.\n // Store's idRegister is an object which treats numeric keys as strings\n // but Maps are more picky, so we have to work round that.\n const item = (_index$get = index.get(value)) !== null && _index$get !== void 0 ? _index$get : typeof value === 'string' && value.length && !isNaN(value) && index.get(Number(value)) || null;\n if (item != null) {\n return item;\n }\n } else {\n // Search the filtered values if we are filtered and not ignoring filters\n const values = isFiltered && !ignoreFilters ? me._filteredValues : me._values,\n count = values.length;\n for (let i = 0; i < count; i++) {\n const item = values[i];\n if (item[propertyName] == value) {\n return item;\n }\n }\n }\n return null;\n }\n removeIndex(propertyName) {\n delete this._indices[propertyName];\n this.hasCompositeIndex = Object.values(this.indices).some(index => index.dependentOn);\n }\n /**\n * Returns the index of the item with the same `id` as the passed item.\n *\n * By default, filtering is honoured, so if the item in question has been added, but is currently filtered out of\n * visibility, `-1` will be returned.\n *\n * To find the index in the master, unfiltered dataset, pass the second parameter as `true`;\n * @param {Object|String|Number} item The item to find, or an `id` to find.\n * @param {Boolean} [ignoreFilters=false] Pass `true` to find the index in the master, unfiltered data set.\n * @returns {Number} The index of the item, or `-1` if not found.\n */\n indexOf(item, ignoreFilters = false) {\n return this.findIndex(this.idProperty, keyTypes[typeof item] ? item : item[this.idProperty], ignoreFilters);\n }\n /**\n * Returns `true` if this Collection includes an item with the same `id` as the passed item.\n *\n * By default, filtering is honoured, so if the item in question has been added,\n * but is currently filtered out of visibility, `false` will be returned.\n *\n * To query inclusion in the master, unfiltered dataset, pass the second parameter as `true`;\n * @param {Object|String|Number} item The item to find, or an `id` to find.\n * @param {Boolean} [ignoreFilters=false] Pass `true` to find the index in the master, unfiltered data set.\n * @returns {Boolean} True if the passed item is found.\n */\n includes(item, ignoreFilters = false) {\n if (Array.isArray(item)) {\n return item.some(item => this.includes(item));\n }\n return Boolean(this.findItem(this.idProperty, keyTypes[typeof item] ? item : item[this.idProperty], ignoreFilters));\n }\n get indices() {\n if (this._indicesInvalid) {\n this.rebuildIndices();\n }\n return this._indices;\n }\n invalidateIndices() {\n this._indicesInvalid = true;\n }\n /**\n * Called when the Collection is mutated and the indices have been flagged as invalid.\n *\n * Rebuilds the indices object to allow lookup by keys.\n * @internal\n */\n rebuildIndices() {\n const me = this,\n isFiltered = me.isFiltered,\n indices = me._indices || (me._indices = {}),\n keyProps = Object.keys(indices),\n indexCount = keyProps.length,\n values = me._values;\n let filteredIndices;\n if (isFiltered) {\n filteredIndices = indices[filteredIndicesProperty] = {};\n }\n // First, clear indices.\n for (let i = 0; i < indexCount; i++) {\n const index = indices[keyProps[i]];\n index.clear();\n if (isFiltered) {\n let filteredIndex = filteredIndices[keyProps[i]];\n if (filteredIndex) {\n filteredIndex.clear();\n } else {\n filteredIndex = filteredIndices[keyProps[i]] = new Map();\n // Piggyback config\n filteredIndex.unique = index.unique;\n }\n }\n }\n doRebuildIndices(values, indices, keyProps, indexCount);\n // Create a parallel lookup structure into the _filteredValues\n if (isFiltered) {\n doRebuildIndices(me._filteredValues, filteredIndices, keyProps, indexCount);\n }\n me._indicesInvalid = false;\n }\n // Returns an array with [indices] or [indices, filteredIndices] if filtering is used\n getIndices(propertyName) {\n const indices = [this.indices[propertyName]];\n if (this.isFiltered) {\n indices.push(this.indices[filteredIndicesProperty][propertyName]);\n }\n return indices;\n }\n /**\n * Add an item to all indices\n * @param {*} item Item already available in the Collection\n * @private\n */\n addToIndices(item) {\n Object.keys(this.indices).forEach(propertyName => {\n this.addIndexEntry(item, propertyName, item[propertyName]);\n });\n }\n /**\n * Remove an item from all indices\n * @param {*} item Item already available in the Collection\n * @private\n */\n removeFromIndices(item) {\n Object.keys(this.indices).forEach(propertyName => {\n this.removeIndexEntry(item, propertyName, item[propertyName]);\n });\n }\n /**\n * Remove an entry from an index, and if filtering is used also from the filtered index.\n * @param {*} item Item already available in the Collection\n * @param {String} propertyName Property of the item, will be matched with configured indices\n * @param {*} oldValue Value to remove\n * @private\n */\n removeIndexEntry(item, propertyName, oldValue) {\n this.getIndices(propertyName).forEach(index => removeItemFromIndex(item, index, oldValue));\n }\n /**\n * Add a new entry to an index, and if filtering is used also to the filtered index.\n * @param {*} item Item already available in the Collection\n * @param {String} propertyName Property of the item, will be matched with configured indices\n * @param {*} value Value to store\n * @private\n */\n addIndexEntry(item, propertyName, value) {\n this.getIndices(propertyName).forEach(index => addItemToIndex(item, index, value));\n }\n /**\n * Call externally to update indices on item mutation (from Store)\n * @param {*} item Item already available in the Collection\n * @param {Object} wasSet Uses the `wasSet` format from Store, `{ field : { oldValue, newValue } }`\n * @internal\n */\n onItemMutation(item, wasSet) {\n const me = this;\n // Iterate over changes if we have extra indices defined, keeping those indices up to date\n if (!me._indicesInvalid && Object.keys(me.indices).length > 1) {\n Object.keys(wasSet).forEach(propertyName => {\n const indexConfig = me.indices[propertyName];\n if (indexConfig) {\n const {\n value,\n oldValue\n } = wasSet[propertyName];\n me.removeIndexEntry(item, propertyName, oldValue);\n me.addIndexEntry(item, propertyName, value);\n } else if (me.hasCompositeIndex) {\n // Now check if any composite index depends on the property that was changed\n const dependentIndex = Object.values(me.indices).find(index => {\n var _index$dependentOn;\n return (_index$dependentOn = index.dependentOn) === null || _index$dependentOn === void 0 ? void 0 : _index$dependentOn[propertyName];\n });\n if (dependentIndex) {\n const keysAndOldValues = {};\n for (const o in dependentIndex.dependentOn) {\n var _wasSet$o;\n keysAndOldValues[o] = ((_wasSet$o = wasSet[o]) === null || _wasSet$o === void 0 ? void 0 : _wasSet$o.oldValue) || item[o];\n }\n const oldIndex = item.buildIndexKey(keysAndOldValues);\n me.removeIndexEntry(item, dependentIndex.property, oldIndex);\n me.addIndexEntry(item, dependentIndex.property, item[dependentIndex.property]);\n }\n }\n });\n }\n }\n //endregion\n}\nCollection._$name = 'Collection';\n\nconst nonPrimitives = new WeakMap(),\n safeIndexKey = value => {\n if (value && typeof value === 'object') {\n let substitute = nonPrimitives.get(value);\n if (substitute === undefined) {\n substitute = Symbol('bscik'); // Bryntum safe collection index key\n nonPrimitives.set(value, substitute);\n }\n value = substitute;\n }\n return value;\n };\n/**\n * @module Core/util/Bag\n */\n/**\n * A simple collection class to contain unique, keyed items.\n * @internal\n */\nclass Bag {\n constructor(config) {\n const me = this;\n me.generation = 0;\n me.items = new Set();\n me.idMap = {};\n me.idProperty = 'id';\n if (config) {\n if (config.idProperty) {\n me.idProperty = config.idProperty;\n }\n if (config.values) {\n me.values = config.values;\n }\n }\n }\n /**\n * Returns the item with the passed `id`.\n *\n * @param {*} id The `id` to find.\n * @returns {Object} The found item, or `undefined`.\n */\n get(key) {\n return this.idMap[safeIndexKey(key)];\n }\n /**\n * The number of items in this Bag.\n * @property {Number}\n * @readonly\n */\n get count() {\n return this.items.size;\n }\n /**\n * Adds the passed item(s) to this Bag. Existing items with the same ID\n * will be replaced.\n * @param {Object|Object[]} toAdd Item(s) to add.\n */\n add(...toAdd) {\n if (toAdd.length === 1 && Array.isArray(toAdd[0])) {\n toAdd = toAdd[0];\n }\n const me = this,\n {\n items,\n idMap,\n idProperty\n } = me,\n len = toAdd.length;\n for (let i = 0; i < len; i++) {\n const item = toAdd[i],\n key = keyTypes[typeof item] ? item : safeIndexKey(item[idProperty]),\n existingItem = idMap[key];\n // Not already present\n if (existingItem == null) {\n idMap[key] = item;\n items.add(item);\n me.generation++;\n }\n // Already present, replace it if different. No generational change.\n // IDs rule.\n else if (existingItem !== item) {\n idMap[key] = item;\n items.delete(existingItem);\n items.add(item);\n }\n }\n }\n /**\n * Returns `nth` item in this Bag.\n * @param {Number} nth The index of the matching item. Negative numbers index for the last item. For example, -1\n * returns the last item, -2 the 2nd to last item etc.\n * @returns {Object} The matched item, or `undefined`.\n */\n at(nth) {\n let item, ret;\n if (nth < 0) {\n nth += this.count; // ex: count=10 ... -1 -> 9, -2 -> 8, -3 -> 7, ... -9 -> 1, -10 -> 0\n }\n\n for (item of this.items) {\n if (!nth--) {\n ret = item;\n break;\n }\n }\n return ret;\n }\n /**\n * Removes the passed item(s) from this Bag.\n * @param {Object|Object[]} toRemove Item(s) to remove.\n */\n remove(toRemove) {\n toRemove = ArrayHelper.asArray(toRemove);\n const {\n items,\n idMap,\n idProperty\n } = this,\n len = toRemove.length;\n for (let i = 0; i < len; i++) {\n const item = toRemove[i],\n key = keyTypes[typeof item] ? item : safeIndexKey(item[idProperty]),\n existingItem = idMap[key];\n // Found match, so delete it\n if (existingItem != null) {\n items.delete(existingItem);\n delete idMap[key];\n this.generation++;\n }\n }\n }\n clear() {\n this.items.clear();\n this.idMap = {};\n this.generation++;\n }\n /**\n * Returns the number of items in this Bag which elicits a truthy return value from the passed function.\n * @param {Function} fn A function, which, when passed an item, returns `true` to select it as the item to return.\n * @returns {Number} The number of matched items.\n */\n countOf(fn) {\n let ret = 0,\n item;\n for (item of this.items) {\n if (fn(item)) {\n ++ret;\n }\n }\n return ret;\n }\n /**\n * Change the id of an existing member by mutating its idProperty.\n * @param {String|Number|Object} item The item or id of the item to change.\n * @param {String|Number} newId The id to set in the existing member.\n */\n changeId(item, newId) {\n const me = this,\n {\n idMap,\n idProperty\n } = me,\n oldId = keyTypes[typeof item] ? item : safeIndexKey(item[idProperty]),\n member = me.get(oldId);\n if (member) {\n const existingMember = me.get(newId);\n if (existingMember && member !== existingMember) {\n throw new Error(`Attempt to set item ${oldId} to already existing member's id ${newId}`);\n }\n member[idProperty] = newId;\n delete idMap[oldId];\n idMap[newId] = member;\n }\n }\n /**\n * Extracts the matching items from this Bag into an array based upon the passed value filter function.\n * @param {Function} fn A function, which, when passed an item, returns a `true` to place into the resulting array.\n * @param {Object} [thisObj] The `this` reference when the function is called.\n * @returns {Object[]} An array of values extracted from this Bag.\n */\n filter(fn, thisObj) {\n const {\n items\n } = this,\n result = [];\n let i = 0;\n items.forEach(item => {\n if (fn.call(thisObj, item, i++, items)) {\n result.push(item);\n }\n });\n return result;\n }\n /**\n * Returns `true` if this Collection includes an item with the same `id` as the passed item.\n *\n * @param {Object|String|Number} item The item to find, or an `id` to find.\n * @returns {Boolean} True if the passed item is found.\n */\n includes(item) {\n const key = keyTypes[typeof item] ? item : safeIndexKey(item[this.idProperty]);\n return Boolean(this.idMap[key]);\n }\n /**\n * Extracts the content of this Bag into an array based upon the passed\n * value extraction function.\n * @param {Function} fn A function, which, when passed an item, returns a value to place into the resulting array.\n * @param {Object} [thisObj] The `this` reference when the function is called.\n * @returns {Object[]} An array of values extracted from this Bag.\n */\n map(fn, thisObj) {\n const {\n items\n } = this,\n result = new Array(items.size);\n // Set has no map\n let i = 0;\n items.forEach(item => {\n result[i] = fn.call(thisObj, item, i++, items);\n });\n return result;\n }\n /**\n * Executes the passed function for each item in this Bag, passing in the item.\n * @param {Function} fn The function to execute.\n * @param {Object} [thisObj] The `this` reference when the function is called.\n */\n forEach(fn, thisObj) {\n return this.items.forEach(fn, thisObj);\n }\n /**\n * Returns `nth` item in this Bag which elicits a truthy return value from the provided matcher function `fn`.\n * @param {Function} fn A function which, when passed an item, returns `true` to select the item as a match.\n * @param {Number} [nth=0] The index of the matching item. By default, 0 returns the first item that matches\n * according to `fn`. Negative numbers index for the last item. For example, -1 returns the last matching item,\n * -2 the 2nd to last matching item etc..\n * @returns {Object} The matched item, or `undefined`.\n */\n find(fn, nth = 0) {\n let item, ret;\n if (nth < 0) {\n nth += this.countOf(fn); // ex: count=10 ... -1 -> 9, -2 -> 8, -3 -> 7, ... -9 -> 1, -10 -> 0\n }\n\n for (item of this.items) {\n if (fn(item) && !nth--) {\n ret = item;\n break;\n }\n }\n return ret;\n }\n /**\n * Iterator that allows you to do for (let item of bag)\n */\n [Symbol.iterator]() {\n return this.items[Symbol.iterator]();\n }\n indexOf(item, matchFn) {\n let index = -1,\n it;\n for (it of this.items) {\n if (!matchFn || matchFn(it)) {\n ++index;\n if (it === item) {\n return index;\n }\n }\n }\n return -1;\n }\n /**\n * The set of values of this Bag.\n *\n * Setting this property replaces the data set.\n * @property {Object[]}\n */\n get values() {\n return [...this.items];\n }\n set values(values) {\n values = ArrayHelper.asArray(values);\n this.clear();\n this.add.apply(this, values);\n this.generation++;\n }\n /**\n * Sort the values of this Bag using the passed comparison function.\n *\n * Setting this property replaces the data set.\n * @param {Function} fn Comparison function which returns -ve, 0, or +ve\n */\n sort(fn) {\n this.values = this.values.sort(fn);\n }\n some(fn, thisObj) {\n return this.values.some(fn, thisObj);\n }\n}\nBag._$name = 'Bag';\n\n/**\n * @module Core/data/StoreBag\n */\nclass StoreBag extends Bag {\n add(...toAdd) {\n if (toAdd.length === 1 && Array.isArray(toAdd[0])) {\n toAdd = toAdd[0];\n }\n // ignore unpersistable records\n return super.add(...toAdd.filter(record => record.isPersistable));\n }\n}\nStoreBag._$name = 'StoreBag';\n\n/**\n * @module Core/data/mixin/StoreCRUD\n */\n/**\n * Mixin for Store that handles modifying records (add, remove etc).\n *\n * @example\n * // add new record to store\n * store.add({ id: 1, team: 'FC Krasnodar' });\n *\n * // remove a record from store, using id\n * store.remove(1);\n *\n * @mixin\n */\nvar StoreCRUD = (Target => class StoreCRUD extends (Target || Base$1) {\n static get $name() {\n return 'StoreCRUD';\n }\n //region Config\n static get defaultConfig() {\n return {\n /**\n * Commit changes automatically\n * @config {Boolean}\n * @default\n * @category Common\n */\n autoCommit: false\n };\n }\n static get properties() {\n return {\n isRemoving: false,\n suspendCount: 0\n };\n }\n //endregion\n //region Events\n /**\n * Fired after removing all records\n * @event removeAll\n * @param {Core.data.Store} source This Store\n */\n /**\n * Fired before committing changes. Return false from handler to abort commit\n * @event beforeCommit\n * @param {Core.data.Store} source This Store\n * @param {Object} changes Modification data\n */\n /**\n * Fired after committing changes\n * @event commit\n * @param {Core.data.Store} source This Store\n * @param {Object} changes Modification data\n */\n /**\n * Fired before records are removed from this store by the {@link #function-remove} or {@link #function-removeAll}.\n * Also fired when removing a child record in a tree store using {@link Core.data.mixin.TreeNode#function-removeChild}.\n * The remove may be vetoed by returning `false` from a handler.\n * @event beforeRemove\n * @param {Core.data.Store} source This Store\n * @param {Core.data.Model[]} records The records which are to be removed.\n * @param {Core.data.Model} parent The record from which children are being removed when using a tree store. Only\n * provided when removing a single node.\n * @param {Boolean} isMove This flag is `true` if the child node is being removed by\n * {@link Core.data.mixin.TreeNode#function-appendChild appendChild} to be moved\n * _within the same tree_.\n * @param {Boolean} removingAll This flag is `true` if the operation is removing the store's entire data set.\n * @preventable\n */\n /**\n * Fired before records are added to this store by the {@link #function-add} or {@link #function-insert}. In a tree\n * store, also fired by {@link Core.data.mixin.TreeNode#function-appendChild} and\n * {@link Core.data.mixin.TreeNode#function-insertChild}. The add or insert may be vetoed by returning `false`\n * from a handler.\n * @event beforeAdd\n * @param {Core.data.Store} source This Store\n * @param {Core.data.Model[]} records The records which are to be added\n * @param {Core.data.Model} parent The parent node when using a tree store\n * @preventable\n */\n /**\n * Fired after adding/inserting record(s). If the record was added to a parent, the `isChild` flag is set on the\n * event. If it was inserted, event contains `index`\n * @event add\n * @param {Core.data.Store} source This Store\n * @param {Core.data.Model[]} records Added records. In case of tree store, if branch is added, only branch root\n * is returned\n * @param {Core.data.Model[]} [allRecords] Flat list of all added records. In case of tree store, if branch is\n * added, all new records are returned, not only branch root\n * @param {Core.data.Model} [parent] If due to an {@link Core/data/mixin/TreeNode#function-appendChild}\n * call, this is the parent node added to.\n * @param {Number} [index] Insertion point in the store's {@link Core.data.Store#config-storage Collection}.\n * @param {Number} [oldIndex] Not used for tree stores. The index of the first record moved.\n * @param {Boolean} [isChild] Flag which is set to true if the records are added to a parent record\n * @param {Boolean} [isExpand] Flag which is set to true if records are added to the store by expanding parent\n * @param {Object} [isMove] An object keyed by the ids of the records which were moved from another\n * position in the store, or from another parent node in the store. The ids of moved records will be\n * property names with a value `true`.\n */\n /**\n * Fired when one or more records are removed\n * @event remove\n * @param {Core.data.Store} source This Store\n * @param {Core.data.Model[]} records Array of removed records. In case of tree store, if branch is removed, only branch root\n * is returned\n * @param {Core.data.Model[]} [allRecords] Flat array of all removed records. In case of tree store, if branch is\n * removed, all removed records are returned, not only branch root\n * @param {Core.data.Model} [parent] If due to a {@link Core.data.mixin.TreeNode#function-removeChild removeChild}\n * call, this is the parent node removed from. Only applicable when removing a single tree node.\n * @param {Number} [index] Visible index at which record was removed. In case the record was removed from a collapsed\n * branch, -1 is returned. For tree store, this is only provided when removing a single node.\n * @param {Boolean} [isChild] Flag which is set to true if the record was removed from a parent record\n * @param {Boolean} [isCollapse] Flag which is set to true if records were removed from the store by collapsing parent\n * @param {Boolean} [isMove] Passed as `true` if the remove was part of a move operation within this Store.\n */\n //endregion\n //region Add, insert & remove\n /**\n * Removes a record from this store. Fires a single {@link #event-remove} event passing the removed records.\n * @param {String|String[]|Number|Number[]|Core.data.Model|Core.data.Model[]} records Record/array of records (or record ids) to remove\n * @param {Boolean} [silent] Specify `true` to suppress events/autoCommit\n * @returns {Core.data.Model[]} Removed records\n * @fires beforeRemove\n * @fires remove\n * @fires change\n * @category CRUD\n */\n remove(records, silent = false) {\n const me = this,\n {\n storage\n } = me;\n // Ensure we have an array of records in case we are passed IDs\n records = ArrayHelper.asArray(records).reduce((result, r) => {\n r = me.getById(r);\n if (r) {\n result.push(r);\n }\n return result;\n }, []);\n if (records.length === 0) {\n return records;\n }\n // Flag that can be checked in linked store to determine if removal is ongoing\n me.isRemoving = true;\n // Ensure that records in collapsed groups are removed and events fired.\n if (me.isGrouped) {\n const oldCount = storage.count,\n recordsInCollapsedGroups = [],\n changedGroupParents = new Set();\n // Collect any records which are in collapsed groups which will not be in the storage\n // Collection, and so will not cause a store change.\n // If we find some, we must fire the event which the store will react to and update itself.\n for (const rec of records) {\n const {\n groupParent\n } = rec.instanceMeta(me);\n if (groupParent.meta.collapsed) {\n recordsInCollapsedGroups.push(rec);\n }\n // Collect group header records which change so they can announce this to cause UI updates.\n ArrayHelper.remove(groupParent.groupChildren, rec);\n groupParent.meta.childCount--;\n changedGroupParents.add(groupParent);\n }\n // The changed group parents must announce their changes, otherwise the group headers\n // in a UI will not refresh to reflect the change.\n for (const groupParent of changedGroupParents) {\n if (groupParent.groupChildren.length > 0) {\n me.onModelChange(groupParent, {}, {});\n }\n }\n // The store must react as if these records in collapsed groups have been removed from storage\n if (recordsInCollapsedGroups.length) {\n storage.trigger('change', {\n action: 'splice',\n removed: recordsInCollapsedGroups,\n added: [],\n replaced: [],\n oldCount\n });\n }\n } else if (me.tree) {\n const allRemovedRecords = [],\n removingMultiple = records.length > 1,\n firstRemoved = records[0],\n // index is only relevant when removing single node\n index = removingMultiple ? undefined : storage.indexOf(firstRemoved),\n // Group all tree nodes by their parent since they might be out of order\n removeChildArgs = records.reduce((result, child) => {\n const {\n parent\n } = child;\n if (parent) {\n if (!result[parent.id]) {\n result[parent.id] = [parent, []];\n }\n result[parent.id][1].push(child);\n }\n return result;\n }, {});\n if (!silent && me.trigger('beforeRemove', {\n records,\n isMove: false,\n parent: removingMultiple ? undefined : firstRemoved.parent\n }) === false) {\n me.isRemoving = false;\n return [];\n }\n // Remove the records each from their correct parent\n for (const argBlock of Object.values(removeChildArgs)) {\n const parent = argBlock[0],\n children = argBlock[1];\n allRemovedRecords.push(...parent.removeChild(children, false, true));\n }\n if (!silent) {\n me.trigger('remove', {\n // parent is only relevant when removing single node\n parent: removingMultiple ? undefined : firstRemoved.parent,\n index,\n isChild: true,\n allRecords: allRemovedRecords,\n isMove: false,\n records\n });\n me.trigger('change', {\n action: 'remove',\n records\n });\n me.isRemoving = false;\n }\n return records;\n }\n // Call model hook to allow taking action before removal (used by ModelLink to remove linked records)\n for (const record of records) {\n record.beforeRemove(records);\n }\n if (records.length === 0) {\n return records;\n }\n // Give chance to veto or take action before records disappear.\n if (!silent && me.trigger('beforeRemove', {\n records\n }) === false) {\n me.isRemoving = false;\n return [];\n }\n if (silent) {\n me.suspendEvents();\n }\n storage.remove(records);\n if (silent) {\n me.resumeEvents();\n }\n if (me.autoCommit) {\n me.doAutoCommit();\n }\n me.isRemoving = false;\n return records;\n }\n /**\n * Clears store data. Used by removeAll, separate function for using with chained stores.\n * @private\n * @category CRUD\n */\n clear(isLoading = false) {\n var _me$rootNode, _me$rootNode$unfilter;\n const me = this,\n {\n storage\n } = me;\n // For tree store, we have to check unfilteredChildren to see if store has contents\n if (me.storage.totalCount || (_me$rootNode = me.rootNode) !== null && _me$rootNode !== void 0 && (_me$rootNode$unfilter = _me$rootNode.unfilteredChildren) !== null && _me$rootNode$unfilter !== void 0 && _me$rootNode$unfilter.length) {\n // Give chance to veto or take action before records disappear.\n if (!isLoading && me.trigger('beforeRemove', {\n records: storage.allValues,\n removingAll: true\n }) === false) {\n return null;\n }\n // For tree scenario, clean up root node too\n if (me.rootNode) {\n // A chained tree store shares root node with its master store\n if (!me.isChained) {\n me.rootNode.clearChildren(isLoading);\n }\n } else if (isLoading) {\n // If we are loading, we suspend events, and Store#onDataChange won't get to\n // do all this stuff.\n const allRecords = me.registeredRecords;\n for (let i = allRecords.length - 1, rec; i >= 0; i--) {\n rec = allRecords[i];\n if (rec && !rec.isDestroyed) {\n rec.unjoinStore(me);\n }\n }\n }\n if (isLoading) {\n me.removed.clear();\n storage.suspendEvents();\n }\n // Clearing the storage will trigger 'removeAll' and 'change' if `removing`\n storage.clear();\n if (isLoading) {\n storage.resumeEvents();\n }\n me.added.clear();\n me.modified.clear();\n }\n }\n /**\n * Removes all records from the store.\n * @param {Boolean} [silent] Specify `true` to suppress events\n * @returns {Boolean} `true` unless the action was prevented, in which case it returns `false`\n * @fires beforeRemove\n * @fires removeAll\n * @fires change\n * @category CRUD\n */\n removeAll(silent = false) {\n const me = this,\n storage = me.storage;\n let result;\n me.isRemoving = true;\n // No reaction to the storage Collection's change event.\n if (silent) {\n storage.suspendEvents();\n // If silent, the storage Collection won't fire the event we react to\n // to unjoin, and we allow the removing flag in remove() to be true,\n // so *it* will not do the unJoin, so if silent, so do it here.\n const allRecords = me.registeredRecords;\n for (let i = allRecords.length - 1, rec; i >= 0; i--) {\n rec = allRecords[i];\n if (rec && !rec.isDestroyed && !rec.isRoot) {\n rec.unjoinStore(me);\n }\n }\n }\n if (me.tree) {\n result = me.rootNode.clear() !== false;\n } else {\n result = me.clear() !== null;\n }\n if (silent) {\n storage.resumeEvents();\n }\n me.isRemoving = false;\n return result;\n }\n /**\n * Add records to store.\n * @param {Core.data.Model|Core.data.Model[]|Object|Object[]} records Array of records/data or a single record/data to add to store\n * @param {Boolean} [silent] Specify `true` to suppress events\n * @returns {Core.data.Model[]} Added records\n * @fires add\n * @fires change\n * @category CRUD\n */\n add(records, silent = false) {\n var _records2;\n const me = this,\n {\n storage\n } = me;\n records = ArrayHelper.asArray(records);\n if (!((_records2 = records) !== null && _records2 !== void 0 && _records2.length)) {\n // Adding zero records, bail out\n return;\n }\n me.tree = me.tree || Boolean(me.autoTree && records[0].children);\n if (me.tree) {\n const\n // Map and not Object to allow keys to keep their type\n parentIdMap = new Map(),\n parentIndexField = me.modelClass.getFieldDataSource('parentIndex'),\n {\n parentIdField\n } = me.modelClass,\n added = [];\n records.forEach(node => {\n const parentId = node[parentIdField];\n if (!parentIdMap.has(parentId)) {\n parentIdMap.set(parentId, {\n append: [],\n insert: []\n });\n }\n const entry = parentIdMap.get(parentId);\n // Allow inserting raw data at specific index when passing a parentIndex, used by\n // ProjectChangeHandlerMixin\n if (!node.isModel && parentIndexField in node) {\n entry.insert.push(node);\n } else {\n entry.append.push(node);\n }\n });\n parentIdMap.forEach(({\n append,\n insert\n }, parentId) => {\n const parentNode = parentId == null ? me.rootNode : me.getById(parentId);\n if (!parentNode) {\n throw new Error(`Parent node with id ${parentId} not found, cannot add children.`);\n }\n // Append all that needs appending in one go\n if (append.length) {\n added.push(...parentNode.appendChild(append, silent));\n }\n // Insertions has to happen one at the time\n if (insert.length) {\n for (const toInsert of insert) {\n added.push(parentNode.insertChild(toInsert, toInsert[parentIndexField], silent));\n }\n }\n });\n return added;\n }\n // Give chance to cancel action before records added.\n if (!silent && me.trigger('beforeAdd', {\n records\n }) === false) {\n return null;\n }\n me.tree = me.tree || Boolean(me.autoTree && records[0].children);\n if (me.tree) {\n return me.rootNode.appendChild(records);\n }\n const added = me.processRecords(records);\n if (silent) {\n me.suspendEvents();\n }\n storage.add(added);\n if (silent) {\n me.resumeEvents();\n }\n if (me.autoCommit) {\n me.doAutoCommit();\n }\n return added;\n }\n processRecords(records, onRecordCreated) {\n return records.map(data => {\n const record = this.processRecord(data.isModel ? data : this.createRecord(data));\n onRecordCreated === null || onRecordCreated === void 0 ? void 0 : onRecordCreated.call(this, record);\n return record;\n });\n }\n /**\n * Insert records to store.\n * @param {Number} index Index to insert at\n * @param {Core.data.Model|Core.data.Model[]|Object|Object[]} records Array of records/data or a single record/data to insert to store\n * @param {Boolean} [silent] Specify `true` to suppress events\n * @returns {Core.data.Model[]} Inserted records\n * @fires add\n * @fires change\n * @category CRUD\n */\n insert(index, records, silent = false) {\n const me = this,\n storage = me.storage,\n insertBefore = me.getAt(index),\n _records = storage.values,\n removeIndices = [];\n records = ArrayHelper.asArray(records);\n // Give chance to cancel action before records added.\n if (!silent && me.trigger('beforeAdd', {\n records\n }) === false) {\n return null;\n }\n let isNoop, start, i;\n // If the records starting at index or (index - 1), are the same sequence\n // that we are being asked to add, this is a no-op.\n if (_records[start = index] === records[0] || _records[start = index - 1] === records[0]) {\n for (isNoop = true, i = 0; isNoop && i < records.length; i++) {\n if (records[i] !== _records[start + i]) {\n isNoop = false;\n }\n }\n }\n if (isNoop) {\n return null;\n }\n const added = me.processRecords(records, record => {\n const removedAtIndex = storage.indexOf(record);\n if (record.children && record.children.length && me.autoTree) {\n me.tree = true;\n }\n // already in store, do some cleanup\n if (removedAtIndex > -1) {\n if (removedAtIndex < index && insertBefore) index--;\n removeIndices.push(removedAtIndex);\n }\n // Store previous index to be able to determine that it is a move, since Collection does not handle that\n record.meta.previousIndex = removedAtIndex;\n });\n if (me.tree) {\n var _root$children;\n const root = me.rootNode;\n return root.insertChild(records, (_root$children = root.children) === null || _root$children === void 0 ? void 0 : _root$children[index], silent);\n }\n // Silently remove them, so that they will be inserted into place.\n // Collection is stable by default, and inserting an existing item\n // is a no-op.\n me.suspendEvents();\n me.storage.remove(removeIndices);\n me.resumeEvents();\n if (silent) {\n me.suspendEvents();\n }\n storage.splice(index, 0, ...added);\n if (silent) {\n me.resumeEvents();\n }\n if (me.autoCommit) {\n me.doAutoCommit();\n }\n return added;\n }\n /**\n * Moves a record, or block of records to another location.\n * @param {Core.data.Model|Core.data.Model[]} records The record(s) to move.\n * @param {Core.data.Model} beforeRecord the record to insert the first record(s) before.\n * @fires change\n * @category CRUD\n */\n move(records, beforeRecord) {\n if (this.isTree) {\n beforeRecord.parent.insertChild(records, beforeRecord);\n } else {\n this.storage.move(records, beforeRecord);\n }\n }\n //endregion\n //region Update multiple\n setMultiple(filterFn, field, value) {\n const me = this,\n records = [],\n changes = [];\n me.forEach(r => {\n if (filterFn(r)) {\n changes.push(r.set(field, value, true));\n records.push(r);\n }\n });\n // TODO: should consolidate with update, make it take an array instead? to only have to listen for one event outside of store?\n me.trigger('updateMultiple', {\n records,\n all: me.records.length === records.length\n });\n me.trigger('change', {\n action: 'updatemultiple',\n records,\n all: me.records.length === records.length\n });\n if (me.reapplyFilterOnUpdate && me.isFiltered) me.filter();\n }\n setAll(field, value) {\n const me = this,\n changes = [];\n me.forEach(r => {\n changes.push(r.set(field, value, true));\n });\n me.trigger('updateMultiple', {\n records: me.records,\n all: true\n });\n me.trigger('change', {\n action: 'updatemultiple',\n records: me.records,\n all: true\n });\n if (me.reapplyFilterOnUpdate && me.isFiltered) me.filter();\n }\n //endregion\n //region Commit\n /**\n * Accepts all changes, resets the modification tracking:\n * * Clears change tracking for all records\n * * Clears added\n * * Clears modified\n * * Clears removed\n * Leaves the store in an \"unmodified\" state.\n * @internal\n */\n acceptChanges() {\n const me = this;\n // Clear record change tracking\n me.added.forEach(r => r.clearChanges(true, false));\n me.modified.forEach(r => r.clearChanges(true, false));\n // Clear store change tracking\n me.added.clear();\n me.modified.clear();\n me.removed.clear();\n }\n /**\n * Commits changes, per default only returns changes and resets tracking.\n * @param {Boolean} [silent] Specify `true` to suppress events\n * @returns {Object} Changes, see {@link #property-changes}\n * @fires beforeCommit\n * @fires commit\n * @category CRUD\n */\n commit(silent = false) {\n // resets stores tracking of changed records, doesn't store changes, only returns them\n const {\n changes\n } = this;\n if (!silent && this.trigger('beforeCommit', {\n changes\n }) === false) {\n return false;\n }\n this.acceptChanges();\n if (!silent) {\n this.trigger('commit', {\n changes\n });\n }\n return changes;\n }\n /**\n * Reverts all changes in the store (adds removed records back, and removes newly added records).\n * @fires change\n * @fires refresh\n * @category CRUD\n */\n revertChanges() {\n const me = this,\n {\n changes\n } = me;\n if (changes) {\n const event = {\n action: 'clearchanges',\n changes\n };\n me.add(me.removed.values, true);\n me.remove(me.added.values, true);\n me.modified.forEach(r => r.revertChanges(true));\n me.added.clear();\n me.modified.clear();\n me.removed.clear();\n me.trigger('change', event);\n me.trigger('refresh', event);\n }\n }\n /**\n * Get uncommitted changes as an object of added/modified/removed arrays of records.\n *\n * ```javascript\n * // Format:\n * {\n * added: [], // array of Core.data.Model\n * modified: [], // array of Core.data.Model\n * removed: [] // array of Core.data.Model\n * }\n * ```\n *\n * @member {Object} changes\n * @property {Core.data.Model[]} changes.added Records that have been added\n * @property {Core.data.Model[]} changes.modified Records that have changes to persistable fields\n * @property {Core.data.Model[]} changes.removed Records that have been removed\n * @readonly\n * @category Records\n */\n get changes() {\n const me = this,\n // Only include modified records that have persistable changes\n modified = me.modified.values.filter(r => r.rawModifications);\n return me.added.count || modified.length || me.removed.count ? {\n // Slicing to have changes intact when triggering commit\n added: me.added.values.slice(),\n modified,\n removed: me.removed.values.slice()\n } : null;\n }\n /**\n * Setting autoCommit to true automatically commits changes to records.\n * @property {Boolean}\n * @category Records\n */\n get autoCommit() {\n return this._autoCommit;\n }\n set autoCommit(auto) {\n this._autoCommit = auto;\n if (auto && this.changes) {\n this.commit();\n }\n }\n /**\n * Suspends automatic commits upon store changes. Can be called multiple times (it uses an internal counter).\n * @category Records\n */\n suspendAutoCommit() {\n this.suspendCount++;\n }\n /**\n * Resumes automatic commits upon store changes. Will trigger commit if the internal counter is 0.\n * @category Records\n */\n resumeAutoCommit(doCommit = true) {\n this.suspendCount--;\n if (this.autoCommit && doCommit) {\n this.doAutoCommit();\n }\n }\n doAutoCommit() {\n if (this.suspendCount <= 0) {\n this.commit();\n }\n }\n //endregion\n});\n\n/**\n * @module Core/data/mixin/StoreChanges\n */\n/**\n * Mixin for Store that handles applying changes (presumable from a backend)\n *\n * @mixin\n */\nvar StoreChanges = (Target => class StoreChanges extends (Target || Base$1) {\n static get $name() {\n return 'StoreChanges';\n }\n /**\n * Applies changes from another store to this store. Useful if cloning records in one store to display in a\n * grid in a popup etc. to reflect back changes.\n * @param {Core.data.Store} otherStore\n * @category CRUD\n */\n applyChangesFromStore(otherStore) {\n const me = this,\n {\n changes\n } = otherStore;\n if (!changes) {\n return;\n }\n if (changes.added) {\n me.add(changes.added);\n }\n if (changes.removed) {\n // Remove using id, otherwise indexOf in remove fn won't yield correct result\n me.remove(changes.removed.map(r => r.id));\n }\n if (changes.modified) {\n changes.modified.forEach(record => {\n const localRecord = me.getById(record.id);\n localRecord.set(record.modifications);\n });\n }\n }\n /**\n * Applies a set of changes (presumable from a backend) expressed as an object matching the format outputted by the\n * {@link Core/data/Store#property-changes} property: `{ added : [], modified/updated : [], removed : [] }`\n *\n * `added` is expected to be an array of raw data objects consumable by the stores model class for records to add to\n * the store (see example snippet below).\n *\n * `modified` (or `updated` for compatibility with Schedulers CrudManager) is expected to have the same format as\n * `added`, but should always include the `id` of the record to update.\n *\n * Records that have been created locally and gets assigned a proper id by the backend are expected to also pass a\n * `phantomId` field (name of the field is configurable using the `phantomIdField` arg, more info on phantom ids\n * below), to match it with the current id of a local record (`id` will contain the new id).\n *\n * Note that it is also possible to pass this `phantomId` -> `id` mapping in the `added` array. When encountering a\n * record in that array that already exists in the local store, it will be treated the same was as a record in the\n * `modified` array.\n *\n * `removed` is expected to be an array of objects with the `{ id : xx }` shape. Any matches on an id in the store\n * will be removed, those and any non matches will also be cleared from the change tracking of the store.\n *\n * As an example, consider a store with the following initial state and some operations performed on it:\n *\n * ```javascript\n * // Load some data into the store\n * store.data = [\n * { id : 1, name : 'Minerva' },\n * { id : 2, name : 'Mars' },\n * { id : 3, name : 'Jupiter' }\n * ];\n * // Add a new record. It gets assigned a generated id,\n * // for example 'generated56'\n * store.add({ name : 'Artemis' });\n * // Remove Jupiter\n * store.remove(3);\n * ```\n *\n * After syncing those operations to a custom backend (however you chose to solve it in your application) we might\n * get the following response (see \"Transforming a response to the correct format\" below if your backend responds\n * in another format):\n *\n * ```javascript\n * const serverResponse = {\n * added : [\n * // Added by the backend, will be added locally\n * { id : 5, name : 'Demeter' }\n * ],\n *\n * updated : [\n * // Will change the name of Minerva -> Athena\n * { id : 1, name : 'Athena' },\n * // Will set proper id 4 for Artemis\n * { $PhantomId : 'generated56', id : 4 }\n * ],\n *\n * removed : [\n * // Confirmed remove of Jupiter\n * { id : 3 },\n * // Removed by the backend, Mars will be removed locally\n * { id : 2 }\n * ]\n * };\n * ```\n *\n * If that response is then passed to this function:\n *\n * ```javascript\n * store.applyChangeSet(serverResponse);\n * ```\n *\n * The end result will be the following data in the store:\n *\n * ```javascript\n * [\n * { id : 1, name : 'Athena' }, // Changed name\n * { id : 4, name : 'Artemis' }, // Got a proper id\n * { id : 5, name : 'Demeter' } // Added by the backend\n * ]\n * ```\n *\n * ### Phantom ids\n *\n * When a record is created locally, it is always assigned a generated id. That id is called a phantom id (note that\n * it is assigned to the normal id field). When passing the new record to the backend, the id is sent with it. When\n * the backend inserts the record into the database, it (normally) gets a proper id assigned. That id then needs to\n * be passed back in the response, to update the local record with the correct id. Making sure that future updates\n * match the correct row in the database.\n *\n * For example a newly created record should be passed similar to this to the backend (pseudo format, up to the\n * application/backend to decide):\n *\n * ```json\n * {\n * \"added\" : {\n * \"id\" : \"generated79\",\n * \"name\" : \"Hercules\",\n * ...\n * }\n * }\n * ```\n *\n * For the backend response to be applicable for this function, it should then respond with:\n *\n * ```json\n * {\n * \"updated\" : {\n * {\n * \"$PhantomId\" : \"generated79\",\n * \"id\" : 465\n * }\n * }\n * }\n * ```\n *\n * (Or, as stated above, it can also be passed in the \"added\" array. Which ever suits your backend best).\n *\n * This function will then change the id of the local record using the phantom id `generated79` to `465`.\n *\n * ### Transforming a response to the correct format\n *\n * This function optionally accepts a `transformFn`, a function that will be called with the `changes`. It is\n * expected to return a changeset in the format described above (`{ added : [], updated : [], removed : [] }`),\n * which then will be used to apply the changes.\n *\n * Consider the following \"non standard\" (made up) changeset:\n *\n * ```javascript\n * const changes = {\n * // Database ids for records previously added locally\n * assignedIds : {\n * 'phantom1' : 10,\n * 'phantom2' : 15\n * },\n * // Ids records removed by the backend\n * removed : [11, 27],\n * // Modified records, keyed by id\n * altered : {\n * 12 : { name : 'Changed' }\n * },\n * // New records, keyed by id\n * inserted : {\n * 20 : { name : 'New' }\n * }\n * }\n * ```\n *\n * Since it does not match the expected format it has to be transformed:\n *\n * ```javascript\n * store.applyChangeset(changes, ({ assignedIds, inserted, altered, removed }) => ({\n * // Convert inserted to [{ id : 20, name : 'New' }]\n * added : Object.entries(inserted).map(([id, data] => ({ id, ...data }),\n * updated : [\n * // Convert assignedIds to [{ $PhantomId : 'phantom1', id : 10 }, ...]\n * ...Object.entries(assignedIds).map(([phantomId, id])) => ({ $PhantomId : phantomId, id }),\n * // Convert altered to [{ id : 12, name : 'Changed' }]\n * ...Object.entries(modified).map(([id, data] => ({ id, ...data })\n * ],\n * // Convert removed to [{ id : 11 }, ...]\n * removed : removed.map(id => ({ id }))\n * }));\n * ```\n *\n * The transform function above would output:\n *\n * ```javascript\n * {\n * added : [\n * { id : 20, name : 'New' }\n * ],\n * updated : [\n * { $PhantomId : 'phantom1', id : 10 },\n * { $PhantomId : 'phantom2', id : 15 },\n * { id : 12, name : 'Changed' }\n * ],\n * removed : [\n * { id : 11 },\n * { id : 12 }\n * ]\n * }\n * ```\n *\n * And that format can then be applied.\n *\n * @param {Object} changes Changeset to apply to the store, see specification above\n * @param {Function} [transformFn] Optional function used to preprocess a changeset in a different format,\n * should return an object with the format expected by this function (see above)\n * @param {String} [phantomIdField] Field used by the backend when communicating a record being assigned a proper id\n * instead of a phantom id (see above)\n * @privateparam {Boolean} [remote] Set to true to indicate changes are from the remote source. Remote changes have\n * precedence over local.\n * @privateparam {Boolean} [logChanges] Used by CrudManager to be able to revert specific changes later\n * @category CRUD\n */\n applyChangeset(changes, transformFn = null, phantomIdField = '$PhantomId', remote = true, logChanges = false) {\n var _transformFn, _ref;\n const me = this,\n {\n added,\n updated,\n modified,\n removed\n } = (_transformFn = transformFn === null || transformFn === void 0 ? void 0 : transformFn(changes, me)) !== null && _transformFn !== void 0 ? _transformFn : changes,\n // To support both updated & modified (store uses modified, CM updated)\n altered = (_ref = updated !== null && updated !== void 0 ? updated : modified) !== null && _ref !== void 0 ? _ref : [],\n idDataSource = me.modelClass.getFieldDataSource('id'),\n log = logChanges ? new Map() : null;\n // Process added records\n if ((added === null || added === void 0 ? void 0 : added.length) > 0) {\n var _me$add;\n const toUpdate = [],\n toAdd = [];\n // Separate actually new records from added records that get a proper id set up, to match more backends\n for (const data of added) {\n var _data$phantomIdField;\n if (me.getById((_data$phantomIdField = data[phantomIdField]) !== null && _data$phantomIdField !== void 0 ? _data$phantomIdField : ObjectHelper.getPath(data, idDataSource))) {\n // we need to keep order of the added records\n // https://github.com/bryntum/support/issues/5189\n toUpdate.push(data);\n } else {\n toAdd.push(data);\n }\n }\n altered.unshift.apply(altered, toUpdate);\n // Create new records in the store, and clear them out of the added bag\n const addedRecords = (_me$add = me.add(toAdd)) !== null && _me$add !== void 0 ? _me$add : [];\n for (const record of addedRecords) {\n log === null || log === void 0 ? void 0 : log.set(record.id, record.data);\n record.clearChanges();\n }\n }\n // Process modified records\n if ((altered === null || altered === void 0 ? void 0 : altered.length) > 0) {\n for (const data of altered) {\n const phantomId = data[phantomIdField],\n id = ObjectHelper.getPath(data, idDataSource),\n record = me.getById(phantomId !== null && phantomId !== void 0 ? phantomId : id);\n // Matching an existing record -> update it\n if (record) {\n const changes = record.applyChangeset(data, phantomIdField, remote);\n log === null || log === void 0 ? void 0 : log.set(id, changes);\n }\n }\n }\n // Process removed records\n if ((removed === null || removed === void 0 ? void 0 : removed.length) > 0) {\n me.applyRemovals(removed);\n }\n return log;\n }\n // Apply removals, removing records and updating the `removed` bag to match.\n //\n // Accepts an array of objects containing an `id` property. Records in the store matching an entry in the array\n // will be removed from the store and the `removed` bag. Unmatched entries will be removed from the `removed` bag.\n applyRemovals(removals) {\n const me = this,\n {\n removed: removedStash\n } = me,\n idDataSource = me.modelClass.getFieldDataSource(me.modelClass.idField),\n toRemove = [];\n for (const removedEntry of removals) {\n const id = ObjectHelper.getPath(removedEntry, idDataSource);\n // Removed locally and confirmed by server, just remove the record from the removed stash\n if (removedStash.includes(id)) {\n removedStash.remove(id);\n }\n // Server driven removal (most likely), collect for removal locally too\n else {\n toRemove.push(id);\n }\n }\n // Remove collected records in one go\n me.remove(toRemove);\n // Leave no trace of them at all\n for (const record of toRemove) {\n removedStash.remove(record);\n }\n }\n});\n\n/**\n * @module Core/data/mixin/StoreFilter\n */\n/**\n * Mixin for Store that handles filtering.\n * Filters are instances of {@link Core/util/CollectionFilter} class.\n *\n * - Adding a filter for the same property will replace the current one (unless a unique {@link Core.util.CollectionFilter#config-id} is specified),\n * but will not clear any other filters.\n * - Adding a filter through the {@link #function-filterBy} function is ultimate.\n * It will clear all the property based filters and replace the current filterBy function if present.\n * - Removing records from the store does not remove filters!\n * The filters will be reapplied if {@link #config-reapplyFilterOnAdd}/{@link #config-reapplyFilterOnUpdate} are true and you add new records or update current.\n *\n * ```\n * // Add a filter\n * store.filter({\n * property : 'score',\n * value : 10,\n * operator : '>'\n * });\n *\n * // Add filter as a function\n * store.filter(record => record.score > 10);\n *\n * // Add named filter as a function\n * store.filter({\n * id : 'my filter',\n * filterBy : record => record.score > 10\n * });\n *\n * // Replace any filter set with new filters\n * store.filter({\n * filters : {\n * property : 'score',\n * value : 10,\n * operator : '>'\n * },\n * replace : true\n * });\n *\n * // Remove this one specific filter, leaving any possible others in place.\n * // A filter's id defaults to the property name that it's filtering on.\n * store.removeFilter('score');\n *\n * // Reapply filters without firing an event.\n * // Use if making multiple data mutations with the\n * // intention of updating UIs when all finished.\n * store.filter({\n * silent : true\n * });\n * ```\n *\n * @mixin\n */\nvar StoreFilter = (Target => class StoreFilter extends (Target || Base$1) {\n static get $name() {\n return 'StoreFilter';\n }\n //region Config\n static get defaultConfig() {\n return {\n /**\n * Specify one or more {@link Core/util/CollectionFilter} config objects to apply initially.\n *\n * For example:\n *\n * ```javascript\n * // Configure the store to filter in clients over the age of 30\n * new Store({\n * ...,\n * filters : [{\n * property : 'age',\n * value : 30,\n * operator : '>'\n * }],\n * ...\n * })\n * ```\n *\n * or:\n *\n * ```javascript\n * // Configure the store to filter based on a complex operation\n * new Store({\n * ...,\n * filters : [{\n * filterBy(record) {\n * // Return true or false for filtering in or out\n * return shouldClientBeVisible(record);\n * }\n * }],\n * ...\n * })\n * ```\n *\n * @config {Object|Object[]}\n * @category Filtering\n */\n filters: null,\n /**\n * Specify true to reapply filters when a record is added to the store.\n * @config {Boolean}\n * @default\n * @category Filtering\n */\n reapplyFilterOnAdd: false,\n /**\n * Specify true to reapply filters when a record is updated in the store.\n * @config {Boolean}\n * @default\n * @category Filtering\n */\n reapplyFilterOnUpdate: false\n };\n }\n //endregion\n //region Events\n /**\n * Fired after applying filters to the store\n * @event filter\n * @param {Core.data.Store} source This Store\n * @param {Core.util.Collection} filters Filters used by this Store\n * @param {Core.data.Model[]} removed The the records which were filtered out by the action.\n * @param {Core.data.Model[]} added The records which were filtered back in by the action.\n * @param {Core.data.Model[]} records Filtered records\n */\n //endregion\n //region Properties\n set reapplyFilterOnAdd(enable) {\n this.storage.autoFilter = enable;\n }\n get reapplyFilterOnAdd() {\n return this.storage.autoFilter;\n }\n /**\n * Currently applied filters. A collection of {@link Core.util.CollectionFilter} instances.\n * @type {Core.util.Collection}\n * @readonly\n * @category Sort, group & filter\n */\n set filters(filters) {\n const me = this,\n collection = me.filters;\n collection.clear();\n // Invalidate the filtersFunction so that it has to be recalculated upon next access\n me._filtersFunction = null;\n // If we are being asked to filter, parse the filters.\n if (filters) {\n if (filters.constructor.name === 'Object') {\n for (const f of Object.entries(filters)) {\n // Entry keys are either a field name with its value being the filter value\n // or, there may be one filterBy property which specifies a filtering function.\n if (f[0] === 'filterBy' && typeof f[1] === 'function') {\n collection.add(new CollectionFilter({\n filterBy: f[1]\n }));\n } else {\n collection.add(new CollectionFilter(f[1].constructor.name === 'Object' ? Object.assign({\n property: f[0]\n }, f[1]) : {\n property: f[0],\n value: f[1]\n }));\n }\n }\n } else if (Array.isArray(filters)) {\n // Make sure we are adding CollectionFilters\n collection.add(...filters.map(filterConfig => {\n if (filterConfig instanceof CollectionFilter) {\n return filterConfig;\n }\n return new CollectionFilter(filterConfig);\n }));\n } else if (filters.isCollection) {\n // Use supplied collection? Opting to use items from it currently\n collection.add(...filters.values);\n } else {\n collection.add(new CollectionFilter({\n filterBy: filters\n }));\n }\n collection.forEach(item => item.owner = me);\n }\n }\n get filters() {\n return this._filters || (this._filters = new Collection({\n extraKeys: ['property']\n }));\n }\n set filtersFunction(filtersFunction) {\n this._filtersFunction = filtersFunction;\n }\n get filtersFunction() {\n const me = this,\n {\n filters,\n isGrouped\n } = me;\n if (!me._filtersFunction) {\n if (filters.count) {\n const generatedFilterFunction = CollectionFilter.generateFiltersFunction(filters);\n me._filtersFunction = candidate => {\n // A group record is filtered in if it has passing groupChildren.\n if (isGrouped && candidate.isSpecialRow) {\n return candidate.groupChildren.some(generatedFilterFunction);\n } else {\n return generatedFilterFunction(candidate);\n }\n };\n } else {\n me._filtersFunction = FunctionHelper.returnTrue;\n }\n }\n return me._filtersFunction;\n }\n /**\n * Check if store is filtered\n * @property {Boolean}\n * @readonly\n * @category Sort, group & filter\n */\n get isFiltered() {\n return this.filters.values.some(filter => !filter.disabled);\n }\n //endregion\n traverseFilter(record) {\n const me = this,\n hitsCurrent = !record.isRoot && me.filtersFunction(record),\n children = record.unfilteredChildren || record.children;\n // leaf, bail out\n if (!children || !children.length) {\n return hitsCurrent;\n }\n if (!record.unfilteredChildren) {\n record.unfilteredChildren = record.children.slice();\n }\n record.children = record.unfilteredChildren.filter(r => {\n return me.traverseFilter(r);\n });\n // unfilteredIndex must be set for child elements\n record.updateChildrenIndices(record.unfilteredChildren, true, true);\n // parentIndex must be set for visible child elements\n record.updateChildrenIndices(record.children, false, true);\n return hitsCurrent || Boolean(record.children.length);\n }\n traverseClearFilter(record) {\n const me = this;\n if (record.unfilteredChildren) {\n record.children = record.unfilteredChildren.slice();\n record.unfilteredChildren = null;\n }\n if (record.children) {\n record.children.forEach(r => me.traverseClearFilter(r));\n record.updateChildrenIndices(record.children, false, true);\n }\n }\n // TODO: Get rid of this.\n // The Filter feature of a Grid pokes around in the Store to ask this question.\n get latestFilterField() {\n return this.filters.last ? this.filters.last.property : null;\n }\n /**\n * Adds a single filter to the {@link #config-filters} collection. By default, filters are reevaluated\n * and a Store change event fired.\n *\n * If the `silent` parameter is passed as `true`, multiple filters can be added without causing data changes.\n *\n * When the filters are as required, call {@link #function-filter} with no parameters\n * to apply the filters to the store.\n *\n * @param {Object|Function} newFilters A {@link Core.util.CollectionFilter filter} config,\n * or a function to use for filtering.\n * @param {Boolean} [silent] Pass `true` to *not* refilter the store immediately. Such as when\n * adding multiple filters.\n * @returns {Core.util.CollectionFilter} The Filter instance that was added.\n * @returns {Promise|Core.util.CollectionFilter} If {@link Core/data/AjaxStore#config-filterParamName} is set on store, this method\n * returns Collection filter inside a `Promise` which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @category Sort, group & filter\n */\n addFilter(filter, silent = false) {\n const me = this;\n filter = filter instanceof CollectionFilter ? filter : new CollectionFilter(filter);\n // We want notification upon change of field, value or operator\n filter.owner = me;\n // Collection will replace any already existing filter on the field, unless it has id specified\n me.filters.add(filter);\n if (!silent) {\n if (me.remoteFilter) {\n return me.filter().then(() => filter);\n } else {\n me.filter();\n }\n }\n return filter;\n }\n /**\n * Filters the store by **adding** the specified filter(s) to the existing filters collection applied to this Store.\n * If a filter has an {@link Core.util.CollectionFilter#config-id id} specified,\n * or a {@link Core.util.CollectionFilter#config-property property} specified,\n * it will search for corresponding filter(s) in the existing filters first and replace it with a new filter.\n * **It will not remove other filters applied to the store!**\n *\n * To **add** a new filter:\n * ```\n * // Filter using simple object\n * store.filter({\n * property : 'age',\n * operator : '>',\n * value : 90\n * });\n *\n * // Filter using function\n * store.filter(r => r.age < 90);\n *\n * // Filter using a named filter as a function\n * store.filter({\n * id : 'my-filter',\n * filterBy : record => record.score > 10\n * });\n * ```\n *\n * To **remove** a specific filter, but keep other filters applied\n * ```\n * // Remove by filter `id` or `property`. Filter `id` defaults to the `property` name.\n * store.removeFilter('age');\n * store.removeFilter('my-filter');\n * ```\n *\n * To **replace** all existing filters with a new filter\n * ```\n * // Remove all filters and filter using simple object\n * store.filter({\n * filters : {\n * property : 'age',\n * operator : '<',\n * value : 90\n * },\n * replace : true\n * });\n *\n * // Remove all filters and filter using function\n * store.filter({\n * filters : r => r.age > 90,\n * replace : true\n * });\n *\n * // Remove all filters and filter using a named filter as a function\n * store.filter({\n * filters : {\n * id : 'my-filter',\n * filterBy : record => record.score > 10\n * },\n * replace : true\n * });\n * ```\n *\n * Basically filters replacing is an equivalent of having two sequenced calls:\n * {@link #function-clearFilters clearFilters} and {@link #function-filter filter}.\n *\n * Call without arguments to reapply filters.\n * ```\n * // Re-filter the store\n * store.filter();\n * ```\n *\n * @param {Object|Object[]|Function} newFilters\n * A {@link Core.util.CollectionFilter filter} config,\n * or an array of {@link Core.util.CollectionFilter filter} configs,\n * or a function to use for filtering,\n * or a special object like: ```{ replace : true, filters : newFilters }```\n * @param {Boolean} [newFilters.replace]\n * A flag, indicating whether or not the previous filters should be removed.\n * @param {Boolean} [newFilters.silent]\n * Set as true to not fire events. UI will not be informed about the changes.\n * @param {Object|Object[]|Function} [newFilters.filters]\n * If `newFilters` is an object and `replace` property is defined in the `newFilters`,\n * it means that special object is used and real filter configuration must be nested down to this `filters` property.\n * It can be:\n * A {@link Core.util.CollectionFilter filter} config,\n * or an array of {@link Core.util.CollectionFilter filter} configs,\n * or a function to use for filtering.\n * @fires filter\n * @fires change\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-filterParamName} is set on store, this method returns Promise\n * which is resolved after data is loaded from remote server, otherwise it returns null value\n * @async\n * @category Sort, group & filter\n */\n filter(newFilters) {\n const me = this;\n let silent = false,\n internal;\n if (newFilters) {\n let fieldType = typeof newFilters;\n if (fieldType === 'object') {\n if ('silent' in newFilters || 'replace' in newFilters || newFilters.filters) {\n silent = newFilters.silent;\n if (newFilters.replace) {\n // If replacing with empty filters (i.e. clearing filters), clearFilters should trigger a re-filter\n me.clearFilters(newFilters.filters.length === 0);\n }\n internal = newFilters.internal;\n newFilters = newFilters.filters;\n fieldType = typeof newFilters;\n }\n }\n // If it was just a config object containing no filters, this will be null\n if (newFilters) {\n const wasFiltered = me.isFiltered;\n // We will not be informed about Filter mutations while configuring.\n me.isConfiguring = true;\n // If we provide array of objects looking like :\n // {\n // property : 'fieldName',\n // value : 'someValue',\n // [operator : '>']\n // }\n // or ...\n // {\n // property : 'fieldName',\n // filterBy : function (value, record) {\n // return value > 50;\n // }\n // }\n if (Array.isArray(newFilters)) {\n newFilters.forEach(f => me.addFilter(f, true), me);\n } else if (fieldType === 'function') {\n const filter = new CollectionFilter(newFilters);\n filter.internal = internal;\n me.addFilter(filter, true);\n }\n // Old signature of field name, value with implicit equality test.\n // Not documented, but still tested.\n else if (fieldType === 'string') {\n me.addFilter({\n property: newFilters,\n value: arguments[1]\n }, true);\n }\n // An object-based filter definition\n else {\n me.addFilter(newFilters, true);\n }\n // Open up to receiving Filter mutation notifications again\n me.isConfiguring = false;\n // We added a disabled filter to either no filters, or all disabled filters, so no change.\n if (!me.isFiltered && !wasFiltered) {\n return null;\n }\n }\n }\n // Invalidate the filtersFunction so that it has to be recalculated upon next access\n me.filtersFunction = null;\n // Implemented here for local filtering.\n // AjaxStore implements for remote and returns a Promise, so MUST return the call value.\n return me.performFilter(silent);\n }\n /**\n * Perform filtering according to the {@link #property-filters} Collection.\n * This is the internal implementation which is overridden in {@link Core.data.AjaxStore} and\n * must not be overridden.\n * @private\n */\n performFilter(silent) {\n const me = this,\n {\n storage,\n filters,\n rootNode\n } = me,\n oldCount = me.count;\n // Private event, did not need it documented or preventable right now\n me.trigger('beforeFilter', {\n filters\n });\n let added, removed;\n if (me.tree) {\n const oldDataset = storage.values;\n if (me.isFiltered) {\n me.traverseFilter(rootNode);\n } else {\n me.traverseClearFilter(rootNode);\n }\n const newDataset = me.collectDescendants(rootNode).visible;\n storage.replaceValues({\n values: newDataset,\n silent: true\n });\n const delta = ArrayHelper.delta(newDataset, oldDataset, true);\n added = delta.toAdd;\n removed = delta.toRemove;\n } else {\n // Collect the added and removed deltas from the filter operation\n storage.on({\n change({\n removed: r,\n added: a\n }) {\n removed = r;\n added = a;\n },\n once: true\n });\n if (me.isFiltered) {\n // Bring collapsed away records in, to be considered in filtering\n me.isGrouped && me.includeCollapsed();\n storage.addFilter({\n id: 'primary-filter',\n // no-sanity\n filterBy: me.filtersFunction\n });\n // Take them back out again after filtering\n me.isGrouped && me.excludeCollapsed();\n } else {\n storage.filters.clear();\n }\n }\n me.afterPerformFilter(silent || me.isRemoteDataLoading ? null : {\n action: 'filter',\n filters,\n oldCount,\n added,\n removed,\n records: me.storage.values\n });\n }\n afterPerformFilter(event) {\n this.resetRelationCache();\n if (event) {\n this.triggerFilterEvent(event);\n }\n }\n get filtered() {\n return this.storage.isFiltered;\n }\n // Used from filter() and StoreCRUD when reapplying filters\n triggerFilterEvent(event) {\n this.trigger('filter', event);\n // Only fire these events if it's a local filter.\n // If we are configured with filterParamName, the loadData will fire them.\n if (!this.remoteFilter) {\n this.trigger('refresh', event);\n this.trigger('change', event);\n }\n }\n /**\n * *Adds* a function used to filter the store. Alias for calling `filter(fn)`. Return `true` from the function to\n * include record in filtered set\n *\n * ```javascript\n * store.filterBy(record => record.age > 25 && record.name.startsWith('A'));\n * ```\n *\n * @param {Function} fn Function used to test records\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-filterParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @category Sort, group & filter\n */\n filterBy(fn) {\n return this.filter(fn);\n }\n /**\n * Removes the passed filter, or the filter by the passed ID from the {@link #config-filters} collection.\n * By default, filters are reevaluated and a Store change event fired.\n *\n * If the `silent` parameter is passed as `true`, multiple filters can be removed without causing data changes.\n *\n * When the filters are as required, call {@link #function-filter} with no parameters\n * to apply the filters to the store.\n *\n * ```javascript\n * // Only view top priority events\n * myEventStore.filter({\n * id : 'priorityFilter',\n * property : 'priority',\n * value : 1,\n * operator : '='\n * });\n *\n * // That individual filter can be removed like this\n * myEventStore.removeFilter('priorityFilter');\n *\n * // Add named filter as a function\n * store.filter({\n * id : 'my filter',\n * filterBy : record => record.score > 10\n * });\n *\n * // Remove named filter function\n * store.removeFilter('my filter');\n * ```\n *\n * @param {String|Core.util.CollectionFilter} idOrInstance Filter to remove, or ID of the filter to remove. By default,\n * filters are reevaluated and a change event fired.\n * @param {Boolean} [silent] Pass `true` to *not* refilter the store immediately. Such as when\n * removing multiple filters.\n * @returns {Promise|Core.util.CollectionFilter} If {@link Core/data/AjaxStore#config-filterParamName} is set on store, this method\n * returns Collection filter inside a `Promise` which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @category Sort, group & filter\n */\n removeFilter(idOrInstance, silent = false) {\n const me = this,\n filter = idOrInstance instanceof CollectionFilter ? idOrInstance : me.filters.get(idOrInstance);\n // If we have such a filter, remove it.\n if (filter) {\n me.filters.remove(filter);\n // Invalidate the filtersFunction so that it has to be recalculated upon next access\n me._filtersFunction = null;\n if (!silent) {\n if (me.remoteFilter) {\n return me.filter().then(() => filter);\n } else {\n me.filter();\n }\n }\n return filter;\n }\n }\n /**\n * Removes all filters from the store.\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-filterParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @category Sort, group & filter\n */\n clearFilters(apply = true) {\n // Remove all non-internal filters (those have to be explicitly removed)\n this.filters.remove(this.filters.values.filter(f => !f.internal));\n if (apply) {\n return this.filter();\n }\n }\n convertFilterToString(field) {\n const filter = this.filters.getBy('property', field);\n return filter && !filter.filterBy ? String(filter) : '';\n }\n doDestroy() {\n var _this$_filters;\n (_this$_filters = this._filters) === null || _this$_filters === void 0 ? void 0 : _this$_filters.destroy();\n super.doDestroy();\n }\n});\n\n/**\n * @module Core/data/mixin/StoreGroup\n */\nconst resortActions = {\n add: 1,\n replace: 1\n};\n/**\n * Mixin for Store that handles grouping.\n *\n * ```javascript\n * // simple grouper\n * store.group('city');\n *\n * // grouper as object, descending order\n * store.group({ field : 'city', ascending : false });\n *\n * // using custom sorting function\n * store.group({\n * field : 'city',\n * fn : (recordA, recordB) => {\n * // apply custom logic, for example:\n * return recordA.city.length < recordB.city.length ? -1 : 1;\n * }\n * });\n * ```\n *\n * Currently grouping is not supported when using pagination, the underlying store cannot group data that is split into pages.\n *\n * @mixin\n */\nvar StoreGroup = (Target => class StoreGroup extends (Target || Base$1) {\n static get $name() {\n return 'StoreGroup';\n }\n //region Config\n static get defaultConfig() {\n return {\n /**\n * Initial groupers, specify to have store grouped automatically after initially setting data\n * @config {Object[]}\n * @category Common\n */\n groupers: null\n };\n }\n static get properties() {\n return {\n collapsedGroups: new Set()\n };\n }\n //endregion\n //region Init\n construct(config) {\n super.construct(config);\n // For handling record mutation, *not* add/remove of records.\n // Sorts dataset if necessary.\n this.on('change', this.onDataChanged, this);\n }\n /**\n * Currently used groupers.\n * To set groupers when remote sorting is enabled by {@link Core/data/AjaxStore#config-sortParamName} you should use\n * {@link #function-setGroupers} instead to be able wait for operation to finish.\n * @property {Object[]}\n * @category Sort, group & filter\n */\n get groupers() {\n return this._groupers;\n }\n set groupers(groupers) {\n this.setGroupers(groupers);\n }\n /**\n * Set groupers.\n * @param {Object[]} groupers Array of groupers to apply to store\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-sortParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @category Sort, group & filter\n */\n setGroupers(groupers) {\n const me = this,\n {\n storage\n } = me;\n let result;\n if (groupers !== null && groupers !== void 0 && groupers.length) {\n me._groupers = groupers;\n } else if (me.groupers) {\n delete me._groupers;\n me.includeCollapsed();\n storage.replaceValues({\n values: me.removeHeadersAndFooters(storage._values),\n filteredValues: storage.isFiltered ? me.removeHeadersAndFooters(storage._filteredValues) : null,\n silent: true\n });\n result = me.group(null, null, null, false);\n }\n // Need to clear the id map so it gets rebuilt next time its accessed\n me._idMap = null;\n return result;\n }\n // Collects group headers/footers on the fly. Not used in any performance sensitive code, but if that need arises\n // it should be cached and invalidated on record remove, add, update, grouping changes, filter and sorting...\n get groupRecords() {\n const groupRecords = [];\n if (this.isGrouped) {\n for (const record of this) {\n if (record.isSpecialRow) {\n groupRecords.push(record);\n }\n }\n }\n return groupRecords;\n }\n // Temporarily include records from collapsed groups, for example prior to filtering\n includeCollapsed() {\n for (const groupId of this.collapsedGroups) {\n this.expand(this.getById(groupId), false);\n }\n }\n // Exclude records in collapsed groups, intended to be used after a call to includeCollapsed()\n excludeCollapsed() {\n for (const groupId of this.collapsedGroups) {\n this.collapse(this.getById(groupId));\n }\n }\n onDataChange({\n source: storage,\n action,\n removed\n }) {\n var _super$onDataChange;\n const me = this,\n {\n groupers\n } = me;\n // Only do grouping transformations if we have groupers to apply.\n // In stores which never use grouping, this code is superfluous and will reduce performance.\n // The else side will simply replace the ungrouped data with itself.\n if (groupers) {\n // When records are added or removed, re-evaluate the group records\n // so that when the events are fired by the super call, the group\n // records are in place.\n if (groupers.length) {\n if (action === 'splice' && removed !== null && removed !== void 0 && removed.length) {\n storage.replaceValues({\n values: me.prepareGroupRecords(),\n silent: true\n });\n }\n }\n // Remove all group headers and footers\n else {\n storage.replaceValues({\n values: me.removeHeadersAndFooters(storage.values),\n silent: true\n });\n }\n }\n (_super$onDataChange = super.onDataChange) === null || _super$onDataChange === void 0 ? void 0 : _super$onDataChange.call(this, ...arguments);\n }\n move(records, beforeRecord) {\n const me = this;\n if (me.isGrouped) {\n if (beforeRecord.isSpecialRow) {\n beforeRecord = me.getPrev(beforeRecord, false, true);\n }\n if (!beforeRecord) {\n // Trying to drag above first group header, no-op\n return;\n }\n const groupField = me.groupers[0].field,\n newGroupValue = beforeRecord[groupField];\n me.beginBatch();\n records.forEach(record => record[groupField] = newGroupValue);\n me.endBatch();\n }\n super.move(...arguments);\n }\n // private function that collapses on the data level\n // TODO: make public and trigger events for grid to react to?\n collapse(groupRecord) {\n if (groupRecord && !groupRecord.meta.collapsed) {\n this.excludeGroupRecords(groupRecord);\n groupRecord.meta.collapsed = true;\n // Track which groups are collapsed\n this.collapsedGroups.add(groupRecord.id);\n return true;\n }\n return false;\n }\n // private function that expands on the data level\n // TODO: make public and trigger events for grid to react to?\n expand(groupRecord, updateMap = true) {\n if (groupRecord !== null && groupRecord !== void 0 && groupRecord.meta.collapsed) {\n this.includeGroupRecords(groupRecord);\n groupRecord.meta.collapsed = false;\n // Optionally track which groups are collapsed (not done when expanding temporarily prior to filtering etc)\n updateMap && this.collapsedGroups.delete(groupRecord.id);\n return true;\n }\n return false;\n }\n removeHeadersAndFooters(records) {\n return records.filter(r => {\n if (r.isSpecialRow) {\n this.unregister(r);\n return false;\n } else {\n return true;\n }\n });\n }\n prepareGroupRecords(sorter) {\n const me = this,\n toCollapse = me.collapsedGroups,\n toExpand = [];\n let records = me.storage.values;\n for (const record of records) {\n if (record.isGroupHeader && (record.meta.collapsed || toCollapse.has(record.id))) {\n toCollapse.add(record.id); // TODO - This line should no longer be needed, try without it when tests pass\n toExpand.push(record);\n }\n }\n for (const record of toExpand) {\n me.includeGroupRecords(record);\n }\n records = me.removeHeadersAndFooters(me.storage.values);\n if (sorter) {\n records = records.sort(sorter);\n }\n if (!me.isGrouped) {\n return records;\n }\n const groupedRecords = [],\n field = me.groupers[0].field;\n let curGroup = null,\n curGroupRecord = null,\n childCount = 0;\n function addFooter() {\n const val = curGroupRecord.meta.groupRowFor,\n id = `group-footer-${typeof val === 'number' ? val : StringHelper.createId(val)}`,\n footer = me.getById(id) || new me.modelClass({\n id\n }, me, {\n specialRow: true,\n groupFooterFor: val,\n groupRecord: curGroupRecord\n });\n // Used by indexOf to determine if part of store\n footer.stores = [me];\n me.register(footer);\n footer.groupChildren = curGroupRecord.groupChildren;\n if (!curGroupRecord.meta.collapsed) {\n groupedRecords.push(footer);\n }\n me.allRecords.push(footer);\n curGroupRecord.groupChildren.push(footer);\n childCount++;\n return footer;\n }\n records.forEach(record => {\n var _record$groupChildren;\n const val = record[field] == undefined ? '__novalue__' : record[field],\n id = `group-header-${typeof val === 'number' ? val : StringHelper.createId(val)}`;\n // A group header or footer record of an empty group.\n // Remove from the data\n if (((_record$groupChildren = record.groupChildren) === null || _record$groupChildren === void 0 ? void 0 : _record$groupChildren.length) === 0) {\n me.unregister(record);\n return;\n }\n if (!ObjectHelper.isEqual(val, curGroup)) {\n if (curGroupRecord) {\n // also add group footer? used by GroupSummary feature\n if (me.useGroupFooters) {\n addFooter();\n }\n curGroupRecord.meta.childCount = childCount;\n }\n curGroupRecord = me.getById(id) || new me.modelClass({\n id\n }, me, {\n specialRow: true,\n groupRowFor: val,\n groupField: field,\n collapsed: toCollapse.has(id)\n });\n // Used by indexOf to determine if part of store\n curGroupRecord.stores = [me];\n me.register(curGroupRecord);\n curGroupRecord.groupChildren = [];\n groupedRecords.push(curGroupRecord);\n me.allRecords.push(curGroupRecord);\n curGroup = val;\n childCount = 0;\n }\n record.instanceMeta(me.id).groupParent = curGroupRecord;\n // Collapse groups that was collapsed earlier\n if (!toCollapse.has(id)) {\n groupedRecords.push(record);\n }\n curGroupRecord.groupChildren.push(record);\n childCount++;\n });\n // misses for last group without this\n if (curGroupRecord) {\n // footer for last group\n if (me.useGroupFooters) {\n addFooter();\n }\n curGroupRecord.meta.childCount = childCount;\n }\n return groupedRecords;\n }\n //endregion\n //region Group and ungroup\n /**\n * Is store currently grouped?\n * @property {Boolean}\n * @readonly\n * @category Sort, group & filter\n */\n get isGrouped() {\n var _this$groupers;\n return Boolean((_this$groupers = this.groupers) === null || _this$groupers === void 0 ? void 0 : _this$groupers.length);\n }\n /**\n * Group records, either by replacing current sorters or by adding to them.\n * A grouper can specify a **_custom sorting function_** which will be called with arguments (recordA, recordB).\n * Works in the same way as a standard array sorter, except that returning `null` triggers the stores\n * normal sorting routine. Grouped store **must** always be sorted by the same field.\n *\n * ```javascript\n * // simple grouper\n * store.group('city');\n *\n * // grouper as object, descending order\n * store.group({ field : 'city', ascending : false });\n *\n * // using custom sorting function\n * store.group({\n * field : 'city',\n * fn : (recordA, recordB) => {\n * // apply custom logic, for example:\n * return recordA.city.length < recordB.city.length ? -1 : 1;\n * }\n * });\n * ```\n *\n * @param {String|Object} field Field to group by.\n * Can also be a config containing a field to group by and a custom sorting function called `fn`.\n * @param {Boolean} [ascending] Sort order of the group titles\n * @param {Boolean} [add] Add a grouper (true) or use only this grouper (false)\n * @param {Boolean} [performSort] Trigger sort directly, which does the actual grouping\n * @param {Boolean} [silent] Set as true to not fire events\n * @category Sort, group & filter\n * @fires group\n * @fires refresh\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-sortParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n */\n group(field, ascending, add = false, performSort = true, silent = false) {\n const me = this;\n let newGrouper, fn;\n if (field && typeof field === 'object') {\n ascending = field.ascending;\n fn = field.fn;\n field = field.field;\n }\n if (add) {\n me.groupers.push(newGrouper = {\n field,\n ascending,\n complexMapping: field.includes('.')\n });\n } else if (field) {\n if (ascending == null) {\n var _me$groupInfo, _me$groupInfo2;\n ascending = ((_me$groupInfo = me.groupInfo) === null || _me$groupInfo === void 0 ? void 0 : _me$groupInfo.field) === field && ((_me$groupInfo2 = me.groupInfo) === null || _me$groupInfo2 === void 0 ? void 0 : _me$groupInfo2.fn) === fn ? !me.groupInfo.ascending : true;\n }\n me.groupInfo = newGrouper = {\n field,\n ascending,\n fn,\n complexMapping: field.includes('.')\n };\n me.groupers = [me.groupInfo];\n }\n if (newGrouper) {\n const {\n prototype\n } = me.modelClass;\n // Create a getter for complex field names like \"get resource.city\"\n if (newGrouper.complexMapping && !Object.prototype.hasOwnProperty.call(prototype, field)) {\n Object.defineProperty(prototype, field, {\n get() {\n return ObjectHelper.getPath(this, field);\n }\n });\n }\n }\n // as far as the store is concerned, grouping is just more sorting. so trigger sort\n if (performSort !== false) {\n if (me.remoteSort && !me.isRemoteDataLoading) {\n return me.sort(null, null, false, true).then(() => me.onAfterGrouping(silent));\n } else {\n me.sort(null, null, false, true);\n }\n }\n me.onAfterGrouping(silent);\n }\n onAfterGrouping(silent) {\n if (silent) {\n return;\n }\n const me = this;\n /**\n * Fired when grouping changes\n * @event group\n * @param {Core.data.Store} source This Store\n * @param {Object[]} groupers Applied groupers\n * @param {Core.data.Model[]} records Grouped records\n */\n me.trigger('group', {\n isGrouped: me.isGrouped,\n groupers: me.groupers,\n records: me.storage.values\n });\n me.trigger('refresh', {\n action: 'group',\n isGrouped: me.isGrouped,\n groupers: me.groupers,\n records: me.storage.values\n });\n }\n // Internal since UI does not support multi grouping yet\n /**\n * Add a grouping level (a grouper).\n * @param {String} field Field to group by\n * @param {Boolean} ascending Group direction\n * @category Sort, group & filter\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-sortParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @internal\n */\n addGrouper(field, ascending = true) {\n return this.group(field, ascending, true);\n }\n // Internal since UI does not support multi grouping yet\n /**\n * Removes a grouping level (a grouper)\n * @param {String} field Grouper to remove\n * @category Sort, group & filter\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-sortParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @internal\n */\n removeGrouper(field) {\n const me = this,\n {\n groupers\n } = me,\n index = groupers.findIndex(grouper => grouper.field === field);\n if (index > -1) {\n groupers.splice(index, 1);\n if (!groupers.length) {\n return me.clearGroupers();\n } else {\n return me.group();\n }\n }\n }\n /**\n * Removes all groupers, turning store grouping off.\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-sortParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @category Sort, group & filter\n */\n clearGroupers() {\n return this.setGroupers(null);\n }\n //endregion\n //region Get and check\n /**\n * Check if a record belongs to a certain group (only for the first grouping level)\n * @param {Core.data.Model} record The Record\n * @param {*} groupValue The group value\n * @returns {Boolean} True if the record belongs to the group, otherwise false\n * @category Sort, group & filter\n */\n isRecordInGroup(record, groupValue) {\n var _this$groupers$;\n if (!this.isGrouped) {\n return null;\n }\n const groupField = (_this$groupers$ = this.groupers[0]) === null || _this$groupers$ === void 0 ? void 0 : _this$groupers$.field;\n return record[groupField] === groupValue && !record.isSpecialRow;\n }\n isInCollapsedGroup(record) {\n const parentGroupRec = record.instanceMeta(this).groupParent;\n return parentGroupRec === null || parentGroupRec === void 0 ? void 0 : parentGroupRec.meta.collapsed;\n }\n /**\n * Returns all records in the group with specified groupValue.\n * @param {*} groupValue\n * @returns {Core.data.Model[]} Records in specified group or null if store not grouped\n * @category Sort, group & filter\n */\n getGroupRecords(groupValue) {\n if (!this.isGrouped) {\n return null;\n }\n return this.storage.values.filter(record => this.isRecordInGroup(record, groupValue));\n }\n /**\n * Get all group titles.\n * @returns {String[]} Group titles\n * @category Sort, group & filter\n */\n getGroupTitles() {\n if (!this.isGrouped) {\n return null;\n }\n return this.getDistinctValues(this.groupers[0].field);\n }\n //endregion\n onDataChanged({\n changes,\n action\n }) {\n if (this.isGrouped && (\n // If an action flagged as requiring resort is performed...\n !changes && resortActions[action] ||\n // ...or if the group field has changes...\n changes && this.groupers.some(grouper => grouper.field in changes))) {\n // ...then re-sort\n this.sort();\n }\n }\n /**\n * Adds or removes records in a group from storage. Used when expanding/collapsing groups.\n * @private\n * @param {Core.data.Model} groupRecord Group which records should be added or removed\n * @param {Boolean} include Include (true) or exclude (false) records\n * @category Grouping\n */\n internalIncludeExcludeGroupRecords(groupRecord, include) {\n const me = this,\n index = me.indexOf(groupRecord),\n {\n id: mapId,\n storage\n } = me,\n {\n meta,\n groupChildren\n } = groupRecord;\n // Skip if group record is not found, otherwise it removes records from wrong position.\n // Also prevent removing from already collapsed and vice versa\n if (index === -1 || meta.collapsed && !include || !meta.collapsed && include) {\n return;\n }\n groupChildren.forEach(child => child.instanceMeta(mapId).hiddenByCollapse = !include);\n if (include) {\n // Avoid adding record duplicates which may already have been reinserted by clearing filters\n const includeChildren = groupChildren.filter(r => !me.isAvailable(r));\n storage.values.splice(index + 1, 0, ...includeChildren);\n } else {\n storage.values.splice(index + 1, groupChildren.length);\n }\n storage._indicesInvalid = true;\n me._idMap = null;\n }\n /**\n * Removes records in a group from storage. Used when collapsing a group.\n * @private\n * @param groupRecord Group which records should be removed\n * @category Grouping\n */\n excludeGroupRecords(groupRecord) {\n this.internalIncludeExcludeGroupRecords(groupRecord, false);\n }\n /**\n * Adds records in a group to storage. Used when expanding a group.\n * @private\n * @param groupRecord Group which records should be added\n * @category Grouping\n */\n includeGroupRecords(groupRecord) {\n this.internalIncludeExcludeGroupRecords(groupRecord, true);\n }\n /**\n * Collects all group headers + children, whether expanded or not\n * @private\n * @param {Boolean} allRecords True to include filtered out records\n * @param {Boolean} includeHeaders True to also include group headers\n * @returns {Core.data.Model[]}\n */\n collectGroupRecords(allRecords, includeHeaders = true) {\n const records = allRecords ? this.storage.allValues : this.storage.values;\n return records.reduce((records, record) => {\n if (record.isSpecialRow) {\n if (includeHeaders) {\n records.push(record);\n }\n if (record.isGroupHeader) {\n records.push.apply(records, record.groupChildren);\n }\n }\n return records;\n }, []);\n }\n});\n\n/**\n * @module Core/data/mixin/StoreProxy\n */\n/**\n * Object-like interaction with a Store by using a Proxy. To enable, configure the store with `objectify : true`.\n *\n * ```javascript\n * const store = new Store({\n * objectify : true,\n * data : [\n * { id : 'batman', name : 'Bruce' }\n * ]\n * });\n * ```\n *\n * Access records using their ids as Store properties:\n * ```javascript\n * console.log(store.batman.name); // logs Bruce\n * ```\n *\n * Add records by assigning properties to the Store:\n * ```javascript\n * store.superman = { name : 'Clark' }; // Id will be 'superman'\n * ```\n *\n * Remove records by removing their property:\n * ```javascript\n * delete store.batman;\n * ```\n *\n * Check if a certain id existing in the store by using `in`:\n * ```javascript\n * console.log('superman' in store): // logs true\n * ```\n *\n * Please note that this approach:\n * * Will affect performance slightly, not recommended for larger datasets.\n * * Uses native Proxy.\n * * Preserves predefined Store properties, records cannot use ids that match those.\n * * Might have other limitations preventing the use of it in some scenarios where a normal Store can be used.\n *\n * @mixin\n */\nvar StoreProxy = (Target => class StoreProxy extends (Target || Base$1) {\n static get configurable() {\n return {\n /**\n * Allow object like interaction with the Store. For example:\n *\n * ```javascript\n * const store = new Store({\n * objectify : true,\n * data : [\n * { id : 'batman', name : 'Bruce' }\n * ]\n * });\n *\n * // retrieve using id as property\n * const record = store.batman;\n *\n * // add as property\n * store.superman = { name : 'Clark' };\n *\n * // delete to remove\n * delete store.batman;\n * ``\n *\n * @config {Boolean}\n * @default false\n */\n objectify: null\n };\n }\n initProxy() {\n if (!globalThis.Proxy) {\n throw new Error('Proxy not supported');\n }\n const proxy = new Proxy(this, {\n // Support getting records using `store[id/index]\n get(target, property) {\n // Stores own properties take precedence\n if (property in target) {\n return target[property];\n }\n // To allow accessing the underlying store\n if (property === '$store') {\n return target;\n }\n // Then ids\n let record = target.getById(property);\n // And finally index\n if (!record && !isNaN(parseInt(property))) {\n record = target.getAt(parseInt(property));\n }\n return record;\n },\n // Support adding/replacing records using `store.id = { ...data }`\n set(target, property, value) {\n // Pass through when using names of existing properties or when destroyed/ing\n if (property in target || target.isDestroying) {\n target[property] = value;\n }\n // Otherwise add/replace a record\n else {\n target.add(_objectSpread2({\n [target.modelClass.idField]: property\n }, value));\n }\n return true;\n },\n // Support deleting records using `delete store.id`\n deleteProperty(target, property) {\n // Properties are deleted on destroy\n if (target.isDestroying) {\n delete target[property];\n return true;\n }\n return Boolean(target.remove(property).length);\n },\n // Support `id in store`\n has(target, property) {\n // Actual property\n if (property in target) {\n return true;\n }\n // Threat { ... } as JSON representation of a record (likely from toString())\n if (property.startsWith('{') && property.endsWith('}')) {\n const data = StringHelper.safeJsonParse(property);\n property = data === null || data === void 0 ? void 0 : data.id;\n }\n return target.includes(property);\n }\n });\n return proxy;\n }\n});\n\n/**\n * @module Core/data/mixin/StoreRelation\n */\n/**\n * Mixin for Store that handles relations with other stores (actually defined on model).\n *\n * @mixin\n * @private\n */\nvar StoreRelation = (Target => class StoreRelation extends (Target || Base$1) {\n static get $name() {\n return 'StoreRelation';\n }\n //region Init\n /**\n * Initialized relations, called from constructor\n * @private\n */\n initRelations(reset) {\n const me = this,\n relations = me.modelClass.relations;\n if (reset && me.modelRelations) {\n // reset will reinit all relations, stop listening for store events on existing ones\n me.modelRelations.forEach(relation => {\n relation.storeDetacher && relation.storeDetacher();\n });\n }\n if ((!me.modelRelations || me.modelRelations.length === 0 || reset) && relations) {\n me.modelRelations = [];\n // foreignKeys is filled when model exposes its properties\n relations && relations.forEach(modelRelationConfig => {\n const config = Object.assign({}, modelRelationConfig),\n relatedStore = typeof config.store === 'string' ? me[config.store] : config.store;\n config.dependentStore = me;\n me.modelRelations.push(config);\n if (relatedStore) {\n config.storeProperty = config.store;\n config.store = relatedStore; // repeated from initRelationStores, needed if stored is assigned late\n const dependentStoreConfigs = relatedStore.dependentStoreConfigs;\n // Add link to dependent store\n if (dependentStoreConfigs.has(me)) {\n const dependentConfigs = dependentStoreConfigs.get(me);\n // Remove existing config on reset\n if (reset) {\n const existingConfig = dependentConfigs.find(c => c.relationName === config.relationName);\n if (existingConfig) {\n ArrayHelper.remove(dependentConfigs, existingConfig);\n }\n }\n dependentConfigs.push(config);\n } else {\n dependentStoreConfigs.set(me, [config]);\n }\n // if foreign key specifies collectionName the related store should also be configured\n if (config.collectionName) {\n relatedStore.initRelationCollection(config, me);\n }\n if (relatedStore.count > 0) {\n relatedStore.updateDependentStores('dataset', relatedStore.records);\n }\n }\n });\n }\n }\n /**\n * Called from other end of an relation when this store should hold a collection of related records.\n * @private\n * @param config\n * @param collectionStore\n */\n initRelationCollection(config, collectionStore) {\n // TODO: parts of this should move to model?\n const me = this,\n name = config.collectionName;\n if (!me.collectionStores) {\n me.collectionStores = {};\n }\n me.collectionStores[name] = {\n store: collectionStore,\n config: config\n };\n if (!me[name + 'Store']) {\n me[name + 'Store'] = collectionStore;\n }\n if (me.count > 0) {\n me.initModelRelationCollection(name, me.records);\n }\n }\n initModelRelationCollection(name, records) {\n const me = this;\n // add collection getter to each model\n records.forEach(record => {\n // Needs to work in trees also, if not a tree traverse just calls fn on self\n record.traverse(node => {\n // Add/replace $relatedAssignments (or similar) if assignments already exists on target\n const useName = name in node ? `$related${StringHelper.capitalize(name)}` : name;\n Object.defineProperty(node, useName, {\n enumerable: true,\n configurable: true,\n get: function () {\n return me.getCollection(this, name);\n },\n set: function (value) {\n return me.setCollection(this, name, value);\n }\n });\n });\n });\n }\n //TODO: Do diff update, this is called on filtering and will be heavy with lots of records\n /**\n * Updates relationCache for all records.\n * @private\n */\n resetRelationCache() {\n this.relationCache = {};\n this.forEach(record => record.initRelations());\n }\n /**\n * Caches related records from related store on the local store.\n * @private\n * @param record Local record\n * @param relations Relations to related store\n */\n updateRecordRelationCache(record, relations) {\n const me = this;\n relations && relations.forEach(relation => {\n // use related records id, or if called before \"binding\" is complete use foreign key\n const foreignId = relation.related ? relation.related.id : record.get(relation.config.fieldName);\n // cache on that id, removing previously cached value if any\n foreignId !== undefined && me.cacheRelatedRecord(record, foreignId, relation.config.relationName, foreignId);\n });\n }\n //endregion\n //region Getters\n /**\n * Returns records the relation cache. Same result as if retrieving the collection on the dependent store, but\n * without the need of accessing that store.\n * @internal\n * @param {String} name\n * @param {Core.data.Model|String|Number} recordOrId\n * @returns {Array}\n */\n getRelationCollection(name, recordOrId) {\n const id = Model.asId(recordOrId);\n return this.relationCache[name] && this.relationCache[name][id] || [];\n }\n /**\n * Returns records from a collection of related records. Not to be called directly, called from Model getter.\n * TODO: Move to Model?\n * @private\n * @param {Core.data.Model} record\n * @param {String} name\n * @returns {Array}\n */\n getCollection(record, name) {\n const {\n config,\n store\n } = this.collectionStores[name];\n return store.relationCache[config.relationName] && store.relationCache[config.relationName][record.id] || [];\n }\n /**\n * Sets a collection of related records. Will updated the related store and trigger events from it. Not to be called\n * directly, called from Model setter.\n * @private\n */\n setCollection(model, name, records) {\n const {\n config,\n store\n } = this.collectionStores[name];\n if (!store.relationCache[config.relationName]) store.relationCache[config.relationName] = {};\n const old = (store.relationCache[config.relationName][model.id] || []).slice(),\n added = [],\n removed = [];\n store.suspendEvents();\n // Remove any related records not in the new collection\n old.forEach(record => {\n if (!records.includes(record)) {\n record[config.fieldName] = null;\n store.remove(record);\n removed.push(record);\n }\n });\n // Add records from the new collection not already in store\n records.forEach(record => {\n if (record instanceof Model) {\n if (!record.stores.includes(store)) {\n store.add(record);\n added.push(record);\n }\n } else {\n [record] = store.add(record);\n added.push(record);\n }\n // Init relation\n record[config.fieldName] = model.id;\n });\n store.resumeEvents();\n if (removed.length) {\n store.trigger('remove', {\n records: removed\n });\n store.trigger('change', {\n action: 'remove',\n records: removed\n });\n }\n if (added.length) {\n store.trigger('add', {\n records: added\n });\n store.trigger('change', {\n action: 'add',\n records: added\n });\n }\n }\n //endregion\n //region Caching\n /**\n * Adds a record to relation cache, optionally removing it if already there.\n * @private\n * @param record\n * @param id\n * @param name\n * @param uncacheId\n */\n cacheRelatedRecord(record, id, name, uncacheId = null) {\n const me = this,\n cache = me.relationCache[name] || (me.relationCache[name] = {});\n if (uncacheId !== null) {\n me.uncacheRelatedRecord(record, name, uncacheId);\n }\n if (id != null) {\n // Only include of not already in relation cache, which might happen when removing and re-adding the same instance\n ArrayHelper.include(cache[id] || (cache[id] = []), record);\n }\n }\n /**\n * Removes a record from relation cache, for a specific relation (specify relation name and id) or for all relations\n * @private\n * @param record Record to remove from cache\n * @param name Optional, relation name\n * @param id Optional, id\n */\n uncacheRelatedRecord(record, name = null, id = null) {\n const me = this;\n function remove(relationName, relatedId) {\n const cache = me.relationCache[relationName],\n oldCache = cache && cache[relatedId];\n // When unjoining a record from a filtered store the relationCache will also be filtered\n // and might give us nothing, in which case we have nothing to clean up and bail out\n if (oldCache) {\n const uncacheIndex = oldCache.indexOf(record);\n uncacheIndex >= 0 && oldCache.splice(uncacheIndex, 1);\n if (oldCache.length === 0) {\n delete cache[relatedId];\n }\n }\n }\n if (id != null) {\n remove(name, id);\n } else {\n if (record.meta.relationCache) {\n Object.entries(record.meta.relationCache).forEach(([relationName, relatedRecord]) => {\n const relatedId = relatedRecord && relatedRecord.id;\n remove(relationName, relatedId);\n });\n }\n }\n }\n /**\n * Updates related stores when store is cleared, a record is removed or added.\n * @private\n * @param {String} action\n * @param {Core.data.Model[]} records\n */\n updateDependentStores(action, records) {\n this.dependentStoreConfigs.forEach(configs => {\n configs.forEach(config => {\n const dependentStore = config.dependentStore,\n cache = dependentStore.relationCache[config.relationName];\n if (action === 'dataset') {\n config.collectionName && this.initModelRelationCollection(config.collectionName, records);\n dependentStore.forEach(record => {\n const foreign = record.initRelation(config);\n foreign && dependentStore.cacheRelatedRecord(record, foreign.id, config.relationName, foreign.id);\n });\n return;\n }\n if (action === 'removeall') {\n dependentStore.forEach(record => {\n record.removeRelation(config);\n });\n delete dependentStore.relationCache[config.relationName];\n return;\n }\n if (action === 'add') {\n config.collectionName && this.initModelRelationCollection(config.collectionName, records);\n }\n if (action === 'add' || action === 'remove') {\n records.forEach(record => {\n const dependentRecords = cache && cache[record.id];\n switch (action) {\n case 'remove':\n // removing related record removes from cache on model and store\n if (dependentRecords) {\n dependentRecords.forEach(dependentRecord => dependentRecord.removeRelation(config));\n // Altered to not delete on self, simplifies taking actions on related records after remove if relation still lives\n //delete cache[relatedRecord.id];\n }\n // TODO: Should removing related set foreign key to null? (removing Team sets Player.teamId to null)\n break;\n case 'add':\n // adding a new record in related store checks if any foreign keys match the new id,\n // and if so it sets up the relation\n dependentStore.forEach(dependentRecord => {\n if (dependentRecord.get(config.fieldName) == record.id) {\n dependentRecord.initRelation(config);\n dependentStore.cacheRelatedRecord(dependentRecord, record.id, config.relationName);\n }\n });\n break;\n }\n });\n }\n });\n });\n }\n /**\n * Updates relation cache and foreign key value when a related objects id is changed.\n * @private\n */\n updateDependentRecordIds(oldValue, value) {\n this.dependentStoreConfigs && this.dependentStoreConfigs.forEach(configs => {\n configs.forEach(config => {\n const dependentStore = config.dependentStore,\n cache = dependentStore.relationCache[config.relationName],\n localRecords = cache && cache[oldValue] && cache[oldValue].slice();\n localRecords && localRecords.forEach(localRecord => {\n // First update cache\n dependentStore.cacheRelatedRecord(localRecord, value, config.relationName, oldValue);\n // Then update & announce, otherwise relations wont be up to date in listeners\n localRecord.set(config.fieldName, value, false, true);\n });\n });\n });\n }\n //endregion\n});\n\n/**\n * @module Core/data/mixin/StoreSum\n */\n/**\n * Mixin for Store that handles summaries.\n *\n * @mixin\n */\nvar StoreSum = (Target => class StoreSum extends (Target || Base$1) {\n static get $name() {\n return 'StoreSum';\n }\n /**\n * Returns sum calculated by adding value of specified field for specified records. Defaults to using all records\n * in store\n * @param {String} field Field to summarize by\n * @param {Core.data.Model[]} records Records to summarize, uses all records if unspecified.\n * @returns {Number}\n * @category Sum\n */\n sum(field, records = this.storage.values) {\n if (!records) return 0;\n return records.reduce((sum, record) => {\n if (record.isSpecialRow) return sum;\n const v = Number(record[field]);\n return isNaN(v) ? sum : sum + v;\n }, 0);\n }\n /**\n * Returns min value for the specified field, can be used with Date or Number values. Defaults to look through all records in store\n * @param {String} field Field to find min value for\n * @param {Core.data.Model[]} records Records to process, uses all records if unspecified\n * @returns {Number|Date}\n * @category Sum\n */\n min(field, records = this.storage.values) {\n if (!records || !records.length) return 0;\n return records.reduce((min, record) => {\n var _record$field;\n const type = typeof ((_record$field = record[field]) === null || _record$field === void 0 ? void 0 : _record$field.valueOf());\n if (type === 'number' && record[field] < min) min = record[field];\n return min;\n }, records[0][field]);\n }\n /**\n * Returns max value for the specified field, can be used with Date or Number values. Defaults to look through all records in store\n * @param {String} field Field to find max value for\n * @param {Core.data.Model[]} records Records to process, uses all records if unspecified\n * @returns {Number|Date}\n * @category Sum\n */\n max(field, records = this.storage.values) {\n if (!records || !records.length) return 0;\n return records.reduce((max, record) => {\n var _record$field2;\n const type = typeof ((_record$field2 = record[field]) === null || _record$field2 === void 0 ? void 0 : _record$field2.valueOf());\n if (type === 'number' && record[field] > max) max = record[field];\n return max;\n }, records[0][field]);\n }\n /**\n * Returns the average value for the specified field. Defaults to look through all records in store\n * @param {String} field Field to calculate average value for\n * @param {Core.data.Model[]} records Records to process, uses all records if unspecified\n * @returns {Number}\n * @category Sum\n */\n average(field, records = this.storage.values) {\n if (!records || !records.length) return 0;\n let count = 0;\n const sum = records.reduce((sum, record) => {\n if (record.isSpecialRow) return sum;\n const v = parseFloat(record[field]);\n if (!isNaN(v)) {\n count++;\n return sum + v;\n } else {\n return sum;\n }\n }, 0);\n return count > 0 ? sum / count : 0;\n }\n /**\n * Returns sum by adding value of specified field for records in the group with the specified groupValue.\n * @param {*} groupValue The group to summarize\n * @param {String} field Field to summarize by\n * @returns {Number} Sum or null if store not grouped\n * @category Sum\n */\n groupSum(groupValue, field) {\n return this.sum(field, this.getGroupRecords(groupValue));\n }\n});\n\n/**\n * @module Core/data/mixin/StoreSearch\n */\nconst findInString = (value, text) => String(value).toLowerCase().includes(text),\n matchFns = {\n string: findInString,\n number: findInString,\n boolean: findInString,\n date: (value, text) => {\n if (value instanceof Date && text instanceof Date) {\n return value - text === 0;\n }\n return String(value.getMonth() + 1).includes(text) || String(value.getDate()).includes(text) || String(value.getFullYear()).includes(text);\n },\n object: (value, text) => value === text,\n // typeof null === object\n undefined: (value, text) => value === text\n };\n/**\n * Mixin for Store that handles searching (multiple records) and finding (single record).\n *\n * @example\n * // find all records that has a field containing the string john\n * let hits = store.search('john');\n *\n * @mixin\n */\nvar StoreSearch = (Target => class StoreSearch extends (Target || Base$1) {\n static get $name() {\n return 'StoreSearch';\n }\n //region Search (multiple hits)\n /**\n * Find all hits matching the specified input\n * @param {String} text Value to search for\n * @param {Object[]} fields Fields to search value in\n * @param {Boolean} [searchAllRecords] True to ignore any applied filters when searching\n * @returns {Object[]} Array of hits, in the format { index: x, data: record }\n * @category Search\n */\n search(text, fields = null, formatters, searchAllRecords) {\n const records = this.getAllDataRecords(searchAllRecords),\n len = records.length,\n found = [];\n if (text == null) {\n return null;\n }\n if (typeof text === 'string') {\n text = text.toLowerCase();\n }\n let i, j, record, value, valueType, comparison;\n for (i = 0; i < len; i++) {\n record = records[i];\n j = 0;\n for (const key of fields || record.fieldNames) {\n var _comparison;\n value = record[key];\n valueType = value instanceof Date ? 'date' : typeof value;\n const formatter = formatters === null || formatters === void 0 ? void 0 : formatters[j];\n if (formatter) {\n value = formatter(value);\n valueType = 'string';\n }\n comparison = matchFns[valueType];\n if (value && (_comparison = comparison) !== null && _comparison !== void 0 && _comparison(value, text)) {\n found.push({\n index: i,\n data: record,\n field: key,\n id: record.id\n });\n }\n j++;\n }\n }\n return found;\n }\n /**\n * Find occurrences of the specified `value` in the specified `field` on all records in the store\n * @param {String} field The record field to search in\n * @param {*} value Value to search for\n * @param {Boolean} distinct True to only return distinct matches, no duplicates\n * @param {Boolean} [searchAllRecords] True to ignore any applied filters when searching\n * @returns {Object[]} Array of hits, in the format { index: x, data: record }\n * @category Search\n */\n findByField(field, value, distinct = false, searchAllRecords = false) {\n const records = this.getAllDataRecords(searchAllRecords),\n len = records.length,\n usedValues = new Set(),\n found = [];\n let i, record, fieldValue;\n if (value != null) {\n value = String(value).toLowerCase();\n }\n for (i = 0; i < len; i++) {\n record = records[i];\n fieldValue = record[field];\n if (!distinct || !usedValues.has(fieldValue)) {\n const type = fieldValue instanceof Date ? 'date' : typeof fieldValue,\n matchFn = matchFns[type];\n if (value == null && fieldValue === value || value && matchFn(fieldValue, value)) {\n found.push({\n id: record.id,\n index: i,\n data: record\n });\n if (distinct) {\n usedValues.add(fieldValue);\n }\n }\n }\n }\n return found;\n }\n //endregion\n //region Find (single hit)\n /**\n * Finds the first record for which the specified function returns true\n * @param {Function} fn Comparison function, called with record as parameter\n * @param {Boolean} [searchAllRecords] True to ignore any applied filters when searching\n * @returns {Core.data.Model} Record or undefined if none found\n *\n * @example\n * store.find(record => record.color === 'blue');\n * @category Search\n */\n find(fn, searchAllRecords = false) {\n return this.getAllDataRecords(searchAllRecords).find(fn);\n }\n /**\n * Finds the first record for which the specified field has the specified value\n * @param {String} fieldName Field name\n * @param {*} value Value to find\n * @param {Boolean} [searchAllRecords] True to ignore any applied filters when searching\n * @returns {Core.data.Model} Record or undefined if none found\n * @category Search\n */\n findRecord(fieldName, value, searchAllRecords = false) {\n const matchFn = r => ObjectHelper.isEqual(r[fieldName], value);\n if (this.isTree) {\n return this.query(matchFn, searchAllRecords)[0];\n }\n return this.getAllDataRecords(searchAllRecords).find(matchFn);\n }\n /**\n * Searches the Store records using the passed function.\n * @param {Function} fn A function that is called for each record. Return true to indicate a match\n * @param {Boolean} [searchAllRecords] True to ignore any applied filters when searching\n * @returns {Core.data.Model[]} An array of the matching Records\n * @category Search\n */\n query(fn, searchAllRecords = false) {\n if (this.isTree) {\n const matches = [];\n this.traverse(node => {\n if (fn(node)) {\n matches.push(node);\n }\n }, undefined, undefined, searchAllRecords);\n return matches;\n }\n return this.getAllDataRecords(searchAllRecords).filter(fn);\n }\n //endregion\n //region Others\n /**\n * Returns true if the supplied function returns true for any record in the store\n * @param {Function} fn A function that should return true to indicate a match\n * @param {Boolean} [searchAllRecords] True to ignore any applied filters when searching\n * @returns {Boolean}\n *\n * @example\n * store.some(record => record.age > 95); // true if any record has age > 95\n * @category Search\n */\n some(fn, searchAllRecords = false) {\n return this.getAllDataRecords(searchAllRecords).some(fn);\n }\n //endregion\n});\n\n/**\n * @module Core/data/mixin/StoreSort\n */\nconst nestedRe = /\\./;\n/**\n * Mixin for Store that handles simple sorting as well as multi-level sorting.\n *\n * ```javascript\n * // single sorter\n * store.sort('age');\n *\n * // single sorter as object, descending order\n * store.sort({ field : 'age', ascending : false });\n *\n * // multiple sorters\n * store.sort(['age', 'name']);\n *\n * // using custom sorting function\n * store.sort({\n * fn : (recordA, recordB) => {\n * // apply custom logic, for example:\n * return recordA.name.length < recordB.name.length ? -1 : 1;\n * }\n * });\n *\n * // using locale specific sort (slow)\n * store.sort({ field : 'name', useLocaleSort : 'sv-SE' });\n * ```\n *\n * @mixin\n */\nvar StoreSort = (Target => class StoreSort extends (Target || Base$1) {\n static get $name() {\n return 'StoreSort';\n }\n //region Config\n static get defaultConfig() {\n return {\n /**\n * Use `localeCompare()` when sorting, which lets the browser sort in a locale specific order. Set to `true`,\n * a locale string or a locale config to enable.\n *\n * Enabling this has big negative impact on sorting\n * performance. For more info on `localeCompare()`, see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare).\n *\n * Examples:\n *\n * ```javascript\n * const store = new Store({\n * // Swedish sorting\n * useLocaleSort : 'sv-SE'\n * });\n *\n * const store = new Store({\n * // Swedish sorting with custom casing order\n * useLocaleSort : {\n * locale : 'sv-SE',\n * caseFirst : 'upper'\n * }\n * });\n * ```\n *\n * Can also be configured on a per sorter basis:\n *\n * ```javascript\n * store.sort({ field: 'name', useLocaleSort : 'sv-SE' });\n * ```\n *\n * @config {Boolean|String|Object}\n * @default false\n * @category Advanced\n */\n useLocaleSort: null\n };\n }\n static get configurable() {\n return {\n /**\n * Initial sorters, format is [{ field: 'name', ascending: false }, ...]\n * @config {Object[]|String[]}\n * @category Common\n */\n sorters: [],\n /**\n * Specify true to sort this store after records are added.\n * @config {Boolean}\n * @default\n * @category Sorting\n */\n reapplySortersOnAdd: false\n };\n }\n //endregion\n //region Events\n /**\n * Fired before sorting\n * @event beforeSort\n * @param {Core.data.Store} source This Store\n * @param {Object[]} sorters Sorter configs\n * @param {Core.data.Model[]} records Records to sort\n */\n /**\n * Fired after sorting\n * @event sort\n * @param {Core.data.Store} source This Store\n * @param {Object[]} sorters Sorter configs\n * @param {Core.data.Model[]} records Sorted records\n */\n //endregion\n //region Properties\n /**\n * Currently applied sorters\n * @member {Object[]} sorters\n * @readonly\n * @category Sort, group & filter\n */\n /**\n * Is store sorted?\n * @property {Boolean}\n * @readonly\n * @category Sort, group & filter\n */\n get isSorted() {\n return Boolean(this.sorters.length) || this.isGrouped;\n }\n changeSorters(sorters) {\n return sorters.map(sorter => this.normalizeSorterConfig(sorter, true));\n }\n updateReapplySortersOnAdd(enable) {\n this.storage.autoSort = enable;\n }\n //endregion\n //region Add & remove sorters\n /**\n * Sort records, either by replacing current sorters or by adding to them.\n * A sorter can specify a **_custom sorting function_** which will be called with arguments (recordA, recordB).\n * Works in the same way as a standard array sorter, except that returning `null` triggers the stores\n * normal sorting routine.\n *\n * ```javascript\n * // single sorter\n * store.sort('age');\n *\n * // single sorter as object, descending order\n * store.sort({ field : 'age', ascending : false });\n *\n * // multiple sorters\n * store.sort(['age', 'name']);\n *\n * // using custom sorting function\n * store.sort((recordA, recordB) => {\n * // apply custom logic, for example:\n * return recordA.name.length < recordB.name.length ? -1 : 1;\n * });\n *\n * // using locale specific sort (slow)\n * store.sort({ field : 'name', useLocaleSort : 'sv-SE' });\n * ```\n *\n * @param {String|Object[]|Object|Function} field Field to sort by.\n * Can also be an array of {@link Core.util.CollectionSorter sorter} config objects, or a sorting function, or a {@link Core.util.CollectionSorter sorter} config.\n * @param {Boolean} [ascending] Sort order.\n * Applicable when the `field` is a string (if not specified and already sorted by the field, reverts direction),\n * or an object and `ascending` property is not specified for the object. `true` by default.\n * Not applicable when `field` is a function. `ascending` is always `true` in this case.\n * @param {Boolean} [add] If `true`, adds a sorter to the sorters collection.\n * Not applicable when `field` is an array. In this case always replaces active sorters.\n * @param {Boolean} [silent] Set as true to not fire events. UI will not be informed about the changes.\n * @category Sort, group & filter\n * @fires beforeSort\n * @fires sort\n * @fires refresh\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-sortParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n */\n sort(field, ascending, add = false, silent = false) {\n const me = this,\n records = me.allRecords,\n currentSorters = me.sorters ? me.sorters.slice() : [];\n let currentDir = null,\n curSort;\n if (field) {\n if (Array.isArray(field)) {\n // array of strings make fields always be sorted ascending\n me.sorters = field.map(sorter => me.normalizeSorterConfig(sorter, typeof sorter === 'string' ? true : ascending));\n } else {\n const sorter = me.normalizeSorterConfig(field, ascending);\n if (add) {\n curSort = me.getCurrentSorterByField(sorter.field);\n // Field already among sorters? change sort direction instead of adding new sorter\n if (curSort) {\n currentDir = curSort.ascending;\n curSort.ascending = sorter.ascending;\n } else {\n me.sorters.push(sorter);\n }\n } else {\n me.sorters = [sorter];\n }\n }\n }\n if (!silent && me.trigger('beforeSort', {\n sorters: me.sorters,\n records,\n currentSorters\n }) === false) {\n // Restore sorters\n me.sorters = currentSorters;\n // Restore sorting direction if toggled\n if (currentDir !== null) {\n curSort.ascending = currentDir;\n }\n return null;\n }\n return me.performSort(silent);\n }\n normalizeSorterConfig(field, ascending) {\n const me = this,\n sorter = {\n ascending\n };\n if (typeof field === 'object') {\n var _field$ascending;\n ObjectHelper.assign(sorter, field);\n if (field.fn) {\n delete sorter.fn;\n sorter.sortFn = field.fn;\n }\n sorter.ascending = (_field$ascending = field.ascending) !== null && _field$ascending !== void 0 ? _field$ascending : ascending;\n } else if (typeof field === 'function') {\n sorter.sortFn = field;\n } else {\n sorter.field = field;\n }\n // sort in opposite direction if not specified and already sorted, default to sorting ascending\n if (sorter.ascending == null) {\n const curSort = me.getCurrentSorterByField(sorter.field);\n sorter.ascending = curSort ? !curSort.ascending : true;\n }\n if (sorter.sortFn == null) {\n var _me$modelClass, _me$modelClass$$meta$;\n const compareItems = (_me$modelClass = me.modelClass) === null || _me$modelClass === void 0 ? void 0 : (_me$modelClass$$meta$ = _me$modelClass.$meta.fields.map[sorter.field]) === null || _me$modelClass$$meta$ === void 0 ? void 0 : _me$modelClass$$meta$.compareItems;\n if (compareItems) {\n // These sorters will be ignored by AjaxStore when remoting...\n sorter.sortFn = compareItems;\n }\n }\n return sorter;\n }\n getCurrentSorterByField(field) {\n return typeof field === 'string' && this.sorters.find(s => s.field === field) || null;\n }\n /**\n * Add a sorting level (a sorter).\n * @param {String|Object[]|Object|Function} field Field to sort by. Can also be an array of sorters, or a sorting\n * function, or a {@link Core.util.CollectionSorter sorter} config.\n * @param {Boolean} [ascending] Sort order (used only if field specified as string)\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-sortParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @category Sort, group & filter\n */\n addSorter(field, ascending = true) {\n return this.sort(field, ascending, true);\n }\n /**\n * Remove a sorting level (a sorter)\n * @param {String|Function} field Stop sorting by this field (or sorter function)\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-sortParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @category Sort, group & filter\n */\n removeSorter(field) {\n const sorterIndex = this.sorters.findIndex(sorter => sorter.field === field || sorter.sortFn === field);\n if (sorterIndex > -1) {\n this.sorters.splice(sorterIndex, 1);\n return this.sort();\n }\n }\n /**\n * Removes all sorters, turning store sorting off.\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-sortParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @category Sort, group & filter\n */\n clearSorters() {\n if (this.sorters.length) {\n this.sorters.length = 0;\n return this.sort();\n }\n }\n //region\n //region Sorting logic\n /**\n * Creates a function used with Array#sort when sorting the store. Override to use your own custom sorting logic.\n * @param {Object[]} sorters An array of sorter config objects\n * @returns {Function}\n * @category Sort, group & filter\n */\n createSorterFn(sorters) {\n const storeLocaleSort = this.useLocaleSort;\n return (lhs, rhs) => {\n for (let i = 0; i < sorters.length; i++) {\n const sorter = sorters[i],\n {\n field,\n ascending = true,\n useLocaleSort = storeLocaleSort\n } = sorter,\n fn = sorter.fn || sorter.sortFn,\n direction = ascending ? 1 : -1;\n if (fn) {\n const val = fn.call(sorter, lhs, rhs);\n if (val !== null) {\n return val * direction;\n }\n }\n const nested = nestedRe.test(field),\n lhsValue = nested ? lhs.get(field) : lhs[field],\n rhsValue = nested ? rhs.get(field) : rhs[field];\n if (lhsValue === rhsValue) {\n continue;\n }\n if (lhsValue == null) {\n return -direction;\n }\n if (rhsValue == null) {\n return direction;\n }\n if (useLocaleSort && typeof lhsValue === 'string') {\n // Use systems locale\n if (useLocaleSort === true) {\n return String(lhsValue).localeCompare(rhsValue) * direction;\n }\n // Use specified locale\n if (typeof useLocaleSort === 'string') {\n return String(lhsValue).localeCompare(rhsValue, useLocaleSort) * direction;\n }\n // Use locale config\n if (typeof useLocaleSort === 'object') {\n return String(lhsValue).localeCompare(rhsValue, useLocaleSort.locale, useLocaleSort) * direction;\n }\n }\n if (lhsValue > rhsValue) {\n return direction;\n }\n if (lhsValue < rhsValue) {\n return -direction;\n }\n }\n return 0;\n };\n }\n /**\n * Perform sorting according to the {@link #config-sorters} configured.\n * This is the internal implementation which is overridden in {@link Core.data.AjaxStore} and\n * must not be overridden.\n * @async\n * @private\n * @category Sort, group & filter\n */\n performSort(silent) {\n const me = this,\n {\n rootNode,\n storage,\n sorters\n } = me,\n // When remoteSort is enabled then always sort by data order received from remote server\n // _remoteSortIndex is set inside store.setStoreData() method\n sorter = me.createSorterFn(me.remoteSort ? [{\n field: '_remoteSortIndex'\n }] : me.isGrouped ? me.groupers.concat(sorters) : sorters);\n if (me.tree) {\n rootNode.traverse(node => {\n if (node.isLoaded && node.isParent) {\n node.children.sort(sorter);\n // Since child nodes change order their parentIndex needs to be updated.\n // Update is silent, records wont be considered modified because of the sort\n node.updateChildrenIndices(node.children, false, true);\n }\n });\n storage.replaceValues({\n values: me.collectDescendants(rootNode).visible,\n silent: true\n });\n } else if (me.isGrouped) {\n storage.replaceValues({\n values: me.prepareGroupRecords(sorter),\n silent: true\n });\n } else {\n storage.replaceValues({\n values: storage.values.sort(sorter),\n silent: true\n });\n }\n me.afterPerformSort(silent || me.isRemoteDataLoading);\n }\n afterPerformSort(silent) {\n if (silent) {\n return;\n }\n const me = this;\n me._idMap = null;\n const event = {\n action: 'sort',\n sorters: me.sorters,\n records: me.allRecords\n };\n me.trigger('sort', event);\n me.trigger('refresh', event);\n }\n //endregion\n});\n\n// TODO: turn into plugin instead?\n/**\n * @module Core/data/mixin/StoreChained\n */\n// Intentionally using one param since we check function.length, don't remove\nconst returnTrue$1 = rec => true;\n/**\n * A chained Store contains a subset of records from a master store. Which records to include is determined by a\n * filtering function, {@link #config-chainedFilterFn}.\n *\n * ```javascript\n * masterStore.chain(record => record.percent < 10);\n *\n * // or\n *\n * new Store({\n * masterStore : masterStore,\n * chainedFilterFn : record => record.percent < 10\n * });\n * ```\n *\n * @mixin\n */\nvar StoreChained = (Target => class StoreChained extends (Target || Base$1) {\n static get $name() {\n return 'StoreChained';\n }\n //region Config\n static get defaultConfig() {\n return {\n /**\n * Function used to filter records in the masterStore into a chained store. If not provided,\n * all records from the masterStore will be included in the chained store.\n * @config {Function}\n * @category Chained store\n */\n chainedFilterFn: null,\n /**\n * Array of field names that should trigger filtering of chained store when the fields are updated.\n * @config {String[]}\n * @category Chained store\n */\n chainedFields: null,\n /**\n * Master store that a chained store gets its records from.\n * @config {Core.data.Store}\n * @category Chained store\n */\n masterStore: null,\n /**\n * Method names calls to which should be relayed to master store.\n * @config {String[]}\n * @category Chained store\n */\n doRelayToMaster: ['add', 'remove', 'insert'],\n /**\n * Method names calls to which shouldn't be relayed to master store.\n * @config {String}\n * @category Chained store\n */\n dontRelayToMaster: [],\n /**\n * Flag showing whether to keep added/removed uncommitted records when filling the store from master.\n * @config {Boolean}\n * @category Chained store\n */\n keepUncommittedChanges: false,\n /**\n * If true, collapsed records in original tree will be excluded from the chained store.\n * @config {Boolean}\n * @category Chained store\n */\n excludeCollapsedRecords: true\n };\n }\n // All props should be predefined to work properly with objectified stores\n static get properties() {\n return {\n chainedStores: null\n };\n }\n //endregion\n construct(config) {\n super.construct(config);\n const me = this,\n {\n masterStore\n } = me,\n sort = me.syncOrder ? 'sort' : '';\n if (masterStore) {\n me.methodNamesToRelay.forEach(fnName => me[fnName] = (...params) => me.relayToMaster(fnName, params));\n me.removeAll = (...params) => {\n masterStore.remove(me.getRange(), ...params);\n };\n // TODO: prevent other functions?\n masterStore.on({\n // HACK to have chained stores react early in a async events scenario (with engine). Could be turned\n // into a config, but this way one does not have to think about it\n changePreCommit: me.onMasterDataChangedPreCommit,\n change: me.onMasterDataChanged,\n [sort]: me.onMasterDataChanged,\n prio: 1,\n thisObj: me\n });\n if (!masterStore.chainedStores) {\n masterStore.chainedStores = [];\n }\n masterStore.chainedStores.push(me);\n me.fillFromMaster();\n }\n }\n //region Properties\n /**\n * Is this a chained store?\n * @property {Boolean}\n * @readonly\n * @category Store\n */\n get isChained() {\n return Boolean(this.masterStore);\n }\n set chainedFilterFn(chainedFilterFn) {\n this._chainedFilterFn = this.thisObj ? chainedFilterFn.bind(this.thisObj) : chainedFilterFn;\n }\n get chainedFilterFn() {\n return this._chainedFilterFn || returnTrue$1;\n }\n get methodNamesToRelay() {\n const doIsArray = Array.isArray(this.doRelayToMaster),\n dontIsArray = Array.isArray(this.dontRelayToMaster);\n return doIsArray && this.doRelayToMaster.filter(name => !dontIsArray || !this.dontRelayToMaster.includes(name)) || [];\n }\n //endregion\n //region Internal\n updateChainedStores() {\n if (this.chainedStores) {\n this.chainedStores.forEach(store => store.fillFromMaster());\n }\n }\n /**\n * Updates records available in a chained store by filtering the master store records using\n * {@link #config-chainedFilterFn}\n * @category Chained store\n */\n fillFromMaster() {\n const me = this,\n {\n masterStore,\n isTree\n } = me,\n // the || is for BW compat since we had public demos using store.chain(() => true)\n isRecordFilter = me.chainedFilterFn.length > 0 || me.chainedFilterFn.toString().length <= 10;\n let records;\n if (!me.isChained) {\n throw new Error('fillFromMaster only allowed on chained store');\n }\n if (me.keepUncommittedChanges) {\n if (isTree) {\n throw new Error('Cannot use keepUncommittedChanges on a chained tree store');\n }\n if (isRecordFilter) {\n records = masterStore.allRecords.filter(r => !me.removed.includes(r) && !me.added.includes(r) && me.chainedFilterFn(r));\n } else {\n records = me.chainedFilterFn().filter(r => !me.removed.includes(r) && !me.added.includes(r));\n }\n records = me.added.values.filter(r => !me.removed.includes(r)).concat(records);\n } else {\n if (isRecordFilter) {\n records = masterStore.allRecords.filter(me.chainedFilterFn);\n } else {\n records = me.chainedFilterFn();\n }\n if (isTree) {\n // All nodes will be registered\n me.idRegister = {};\n me.internalIdRegister = {};\n // *all* owned records have to join, as they would have done if they'd all gone through\n // the appendChild route for this store.\n records.forEach(r => {\n if (r.stores.includes(me)) {\n me.register(r);\n } else {\n r.joinStore(me);\n }\n });\n // We exclude collapsed records by default. It's used in Columns Store.\n // Because grid columns is a tree store when subgrid columns is just a chained store of the columns store.\n // And we don't need to include collapsed column.\n // If we need to show collapsed nodes in Combo we need to chain tree store and set `excludeCollapsedRecords` to `false`.\n if (me.excludeCollapsedRecords) {\n const children = me.getChildren(me.rootNode);\n records = me.doIncludeExclude(children, true);\n }\n }\n }\n me.data = records;\n }\n /**\n * Commits changes back to master.\n * - the records deleted from chained store and present in master will be deleted from master\n * - the records added to chained store and missing in master will added to master\n * Internally calls {Store#function-commit commit()}.\n * @returns {Object} Changes, see Store#changes\n * @internal\n */\n commitToMaster() {\n const me = this,\n master = me.masterStore;\n if (!me.isChained) {\n throw new Error('commitToMaster only allowed on chained store');\n }\n master.beginBatch();\n master.remove(me.removed.values);\n master.add(me.added.values);\n master.endBatch();\n return me.commit();\n }\n /**\n * Relays some function calls to the master store\n * @private\n */\n relayToMaster(fnName, params) {\n return this.masterStore[fnName](...params);\n }\n // HACK, when used with engine the chained store will catch events early (sync) and prevent late (async) listeners\n onMasterDataChangedPreCommit(event) {\n this.onMasterDataChanged(event);\n this.$masterEventhandled = true;\n }\n /**\n * Handles changes in master stores data. Updates the chained store accordingly\n * @private\n */\n onMasterDataChanged({\n action,\n changes,\n $handled,\n isMove\n }) {\n var _this$chainedFields;\n // Handled early in engine store (above), bail out\n if (this.$masterEventhandled) {\n this.$masterEventhandled = false;\n return;\n }\n // 'move' action triggers a remove event first, we wait for the 'add' - no need to fill twice\n if (isMove && action === 'remove') {\n return;\n }\n // if a field not defined in chainedFields is changed, ignore the change.\n // there is no need to refilter the store in such cases, the change will be available anyhow since data is\n // shared\n if (action !== 'update' || (_this$chainedFields = this.chainedFields) !== null && _this$chainedFields !== void 0 && _this$chainedFields.some(field => field in changes)) {\n this.fillFromMaster();\n }\n }\n //endregion\n //region public API\n /**\n * Creates a chained store, a new Store instance that contains a subset of the records from current store.\n * Which records is determined by a filtering function, which is reapplied when data in the base store changes.\n *\n * ```javascript\n * const oldies = store.makeChained(record => record.age > 50);\n * // or use a simple query\n * const ages = store.makeChained(() => store.allRecords.distinct('age')));\n * ```\n *\n * If this store is a {@link Core.data.mixin.StoreTree#property-isTree tree} store, then the resulting chained store\n * will be a tree store sharing the same root node, but only child nodes which pass the `chainedFilterFn` will be\n * considered when iterating the tree through the methods such as\n * {@link Core.data.Store#function-traverse} or {@link Core.data.Store#function-forEach}.\n *\n * @param {Function} [chainedFilterFn] Either a filter function called for every record to determine if it should be\n * included (return true / false), or a query function called with no arguments (see example below). Defaults to\n * including all records (fn always returning true)\n * @param {String[]} [chainedFields] Array of fields that trigger filtering when they are updated\n * @param {Object} [config] Additional chained store configuration. See {@link Core.data.Store#configs}\n * @param {Class} [config.storeClass] The Store class to use if this Store type is not required.\n * @returns {Core.data.Store}\n */\n makeChained(chainedFilterFn = returnTrue$1, chainedFields, config) {\n return new ((config === null || config === void 0 ? void 0 : config.storeClass) || this.constructor)(_objectSpread2(_objectSpread2({}, config || {}), {}, {\n tree: false,\n autoTree: false,\n masterStore: this,\n modelClass: this.modelClass,\n chainedFilterFn,\n chainedFields\n }));\n }\n /**\n * Alias for {@link Core.data.Store#function-makeChained}\n *\n * @param {Function} [chainedFilterFn] Either a filter function called for every record to determine if it should be\n * included (return true / false), or a query function called with no arguments (see example below). Defaults to\n * including all records (fn always returning true)\n * @param {String[]} [chainedFields] Array of fields that trigger filtering when they are updated\n * @param {Object} [config] Additional chained store configuration. See {@link Core.data.Store#configs}\n * @param {Class} [config.storeClass] The Store class to use if this Store type is not required.\n * @returns {Core.data.Store}\n */\n chain() {\n return this.makeChained(...arguments);\n }\n //endregion\n doDestroy() {\n var _this$chainedStores;\n // Destroy chained store on master store destroy\n (_this$chainedStores = this.chainedStores) === null || _this$chainedStores === void 0 ? void 0 : _this$chainedStores.forEach(chainedStore => chainedStore.destroy());\n // Events superclass fires destroy event.\n super.doDestroy();\n }\n});\n\n/**\n * @module Core/data/mixin/StoreState\n */\n/**\n * A Mixin for Store that manages its state.\n * * **sorters**\n * * **groupers**\n * * **filters**: Only serializable filters are saved (filters defined with `property` and `value`).\n * @mixin\n */\nvar StoreState = (Target => class StoreState extends (Target || Base$1) {\n static get $name() {\n return 'StoreState';\n }\n /**\n * Get store state. Used by State-plugin to serialize state\n * @private\n * @returns {{ sorters, groupers }}\n */\n getState() {\n const {\n sorters,\n groupers,\n filters\n } = this,\n state = {};\n if (sorters !== null && sorters !== void 0 && sorters.length) {\n state.sorters = sorters.map(sorter => {\n const clone = ObjectHelper.cleanupProperties(ObjectHelper.clone(sorter));\n // Remove sorting fns\n delete clone.fn;\n delete clone.sortFn;\n return clone;\n });\n }\n if (groupers !== null && groupers !== void 0 && groupers.length) {\n state.groupers = groupers.map(grouper => {\n const clone = ObjectHelper.cleanupProperties(ObjectHelper.clone(grouper));\n // Remove grouping fns\n delete clone.fn;\n return clone;\n });\n }\n if (filters !== null && filters !== void 0 && filters.values.length) {\n state.filters = filters.values.map(filter => {\n const clone = ObjectHelper.cleanupProperties(ObjectHelper.clone(filter.config));\n // Apply value, needed because of filterable fn reusing instance (so not in config)\n clone.value = filter.value;\n // Remove default value, no need to store that in state\n if (clone.caseSensitive) {\n delete clone.caseSensitive;\n }\n // Remove filtering fns\n // delete clone.filterBy; // Cannot remove it, required by export feature\n return clone;\n });\n }\n return state;\n }\n /**\n * Apply store state. Used by State-plugin to restore a previously serialized state\n * @private\n * @param {{ sorters, groupers }} state\n */\n applyState(state) {\n const me = this,\n {\n sorters = [],\n groupers = [],\n filters = []\n } = state;\n me.sorters = sorters.slice();\n me.groupers = groupers.slice();\n me.sort();\n me.filters = filters.filter(filter => filter.property || filter.filterBy);\n me.filter();\n }\n});\n\n/**\n * @module Core/data/mixin/StoreTree\n */\nconst emptyArray$8 = Object.freeze([]);\n/**\n * Mixin for store with tree related functionality. To learn more about working with tree nodes please see the\n * {@link Core/data/mixin/TreeNode} class and [this guide](#Core/guides/data/treedata.md).\n * @mixin\n */\nvar StoreTree = (Target => class StoreTree extends (Target || Base$1) {\n static get $name() {\n return 'StoreTree';\n }\n static get configurable() {\n return {\n /**\n * Set to `true` to on load transform a flat dataset with raw objects containing `parentId` into the format\n * expected for tree data.\n *\n * Example input format:\n *\n * ```javascript\n * [\n * { id : 1, name : 'Parent' },\n * { id : 2, name : 'Child', parentId : 1 }\n * ]\n * ```\n *\n * Will be transformed into:\n *\n * ```javascript\n * [\n * {\n * id : 1,\n * name : 'Parent',\n * children : [\n * { id : 2, name : 'Child', parentId : 1 }\n * ]\n * }\n * ]\n * ```\n *\n * @config {Boolean}\n * @category Tree\n */\n transformFlatData: null\n };\n }\n //region Getters\n /**\n * True if this Store is configured to handle tree data (with `tree : true`) or if this is a\n * {@link Core.data.Store#function-makeChained chained store} and the master store is a tree store.\n * @property {Boolean}\n * @readonly\n * @category Tree\n */\n get isTree() {\n return this.tree || this.masterStore && this.masterStore.tree;\n }\n /**\n * Returns all leaf records in a tree store\n * @property {Core.data.Model[]}\n * @category Tree\n */\n get leaves() {\n const me = this,\n result = [];\n if (me.isTree) {\n me.traverse(record => {\n if (record.isLeaf) {\n result.push(record);\n }\n });\n return result;\n } else {\n me.allRecords.forEach(r => {\n if (r.isLeaf) {\n result.push(r);\n }\n r.traverse(record => {\n if (record.isLeaf) {\n result.push(record);\n }\n }, true);\n });\n }\n return result;\n }\n //endregion\n //region Children\n /**\n * Loads children for a parent node that uses load on demand (when expanding it). Base implementation does nothing,\n * either use AjaxStore which implements it, create your own subclass with an implementation or listen for\n * `toggleNode` and insert records when you have them available.\n * @param {Core.data.Model} parentRecord\n * @returns {Promise} A Promise which will be resolved if the load succeeds, and rejected if the load is\n * vetoed by a {@link Core.data.AjaxStore#event-beforeLoadChildren} handler, or if an {@link Core.data.AjaxStore#event-exception} is detected.\n * The resolved function is passed the event object passed to any event handlers.\n * The rejected function is passed the {@link Core.data.AjaxStore#event-exception} event if an exception occurred,\n * or `false` if the load was vetoed by a {@link Core.data.AjaxStore#event-beforeLoadChildren} handler.\n * @category Tree\n */\n async loadChildren(parentRecord) {}\n /**\n * Called from Model when adding children. Not to be called directly, use Model#appendChild() instead.\n * @internal\n * @param {Core.data.mixin.TreeNode} parent\n * @param {Core.data.mixin.TreeNode[]} children\n * @param {Number} index\n * @param {Object} isMove\n * @param {Boolean} [silent]\n * @fires add\n * @fires change\n * @category Tree\n */\n onNodeAddChild(parent, children, index, isMove, silent = false) {\n const me = this,\n isRootLoad = parent === me.rootNode && parent.isLoading,\n {\n storage\n } = me,\n toAddToUI = [],\n toAdd = [],\n previousSibling = children[0].previousSibling;\n let storeInsertionPoint;\n me.collectDescendants(children, toAddToUI, toAdd, {\n inCollapsedBranch: !(parent.isExpanded(me) && parent.ancestorsExpanded(me))\n });\n // Keep CRUD caches up to date unless it's a root load\n if (!isRootLoad && toAdd.length) {\n for (const record of toAdd) {\n // Only considered an add if not modified or moved\n if (!me.modified.includes(record) && !isMove[record.id]) {\n // If was removed, remove from `removed` list\n if (me.removed.includes(record)) {\n me.removed.remove(record);\n }\n // Else add to `added` list\n else if (!record.isLinked) {\n me.added.add(record);\n }\n }\n }\n }\n // Root node inserted first\n if (isRootLoad && me.rootVisible) {\n toAddToUI.unshift(parent);\n toAdd.unshift(parent);\n }\n if (toAddToUI.length) {\n // Calculate the insertion point into the flat store.\n // If the new node is the first, then it goes after the parent node.\n if (index === 0 || !previousSibling) {\n storeInsertionPoint = storage.indexOf(parent);\n }\n // Otherwise it has to go after the previous visible node which has\n // to be calculated. See indexOfPreviousVisibleNode for explanation.\n else {\n storeInsertionPoint = storage.indexOf(previousSibling) + previousSibling.getDescendantCount(true, me);\n }\n // Insert added child nodes at correct location in storage.\n // We must not react to change - we fire the events here.\n storage.suspendEvents();\n me.storage.splice(++storeInsertionPoint, 0, toAddToUI);\n storage.resumeEvents();\n me._idMap = null;\n }\n // Since we do not pass through Store#onDataChange we have to handle relations manually here. And since they are\n // not tied to flat part of store, use all children\n me.updateDependentStores('add', children);\n // If it's a root level set data op, then signal 'dataset'\n if (isRootLoad && toAddToUI.length) {\n var _me$afterLoadData;\n // If we have initial sorters, perform a silent sort before triggering `dataset`\n // NOTE: Records in toAddToUI will be in the original order, not affected by the sort\n if (me.sorters.length) {\n me.sort(null, null, false, true);\n }\n (_me$afterLoadData = me.afterLoadData) === null || _me$afterLoadData === void 0 ? void 0 : _me$afterLoadData.call(me);\n if (!silent) {\n const event = {\n action: 'dataset',\n data: me._data,\n records: toAddToUI\n };\n me.trigger('refresh', event);\n me.trigger('change', event);\n }\n }\n // Else, continue as before to signal an \"isChild\" add.\n else if (!silent) {\n const event = {\n action: 'add',\n parent,\n isChild: true,\n isMove,\n records: children,\n allRecords: toAdd,\n index: storeInsertionPoint\n };\n me.trigger('add', event);\n me.trigger('change', event);\n // Check if any add is actually a move\n if (Object.values(isMove).some(wasMoved => wasMoved)) {\n const event = {\n newParent: parent,\n records: children.filter(record => isMove[record.id])\n };\n me.trigger('move', event);\n }\n }\n }\n onNodeRemoveChild(parent, children, index, flags = {\n isMove: false,\n silent: false,\n unfiltered: false\n }) {\n const me = this,\n {\n storage\n } = me,\n toRemoveFromUI = [],\n toRemove = [],\n {\n isMove,\n silent,\n unfiltered\n } = flags,\n removeUnfiltered = unfiltered && me.isFiltered,\n childrenToRemove = removeUnfiltered && parent.unfilteredChildren ? parent.unfilteredChildren : children;\n me.collectDescendants(childrenToRemove, toRemoveFromUI, toRemove, {\n inCollapsedBranch: !(parent.isExpanded(me) && parent.ancestorsExpanded(me)),\n unfiltered: removeUnfiltered\n });\n // test StoreTree.t.js should fail if the next line replaces the above line\n // me.collectDescendants(children, toRemoveFromUI, toRemove, { inCollapsedBranch : !(parent.isExpanded(me) && parent.ancestorsExpanded(me)) });\n if (!isMove) {\n // Unjoin is recursive, use flat children array\n for (const record of children) {\n record.unjoinStore(me);\n }\n // Keep CRUD caches up to date\n for (const record of toRemove) {\n // TODO remove this check as unjoinStore already checks (currently makes StoreTree.t.js fail)\n if (record.stores.includes(me)) {\n record.unjoinStore(me);\n }\n // If was newly added, remove from `added` list\n if (me.added.includes(record)) {\n me.added.remove(record);\n }\n // Else add to `removed` list\n else if (!record.isLinked) {\n me.removed.add(record);\n }\n }\n me.modified.remove(toRemove);\n }\n // Remove removed child nodes at correct location in storage\n if (toRemoveFromUI.length) {\n index = storage.indexOf(toRemoveFromUI[0]);\n // We must not react to change - we fire the events here.\n if (index > -1) {\n storage.suspendEvents();\n storage.splice(index, toRemoveFromUI.length);\n storage.resumeEvents();\n me._idMap = null;\n }\n } else {\n // If nothing is removed from UI (storage) return -1, showing that removed node was in a collapsed branch\n index = -1;\n }\n if (!silent) {\n const event = {\n action: 'remove',\n parent,\n isChild: true,\n isMove,\n records: children,\n allRecords: toRemove,\n index\n };\n me.trigger('remove', event);\n me.trigger('change', event);\n }\n return toRemove;\n }\n collectDescendants(node, visible = [], all = [], flags = {\n inCollapsedBranch: false,\n unfiltered: false\n }) {\n const me = this,\n {\n inCollapsedBranch,\n unfiltered\n } = flags,\n children = Array.isArray(node) ? node : me.getChildren(node, unfiltered);\n if (children) {\n for (let i = 0, len = children.length, child; i < len; i++) {\n child = children[i];\n if (!inCollapsedBranch) {\n visible.push(child);\n }\n all.push(child);\n me.collectDescendants(child, visible, all, {\n inCollapsedBranch: inCollapsedBranch || !child.isExpanded(me),\n unfiltered\n });\n }\n }\n return {\n visible,\n all\n };\n }\n /**\n * Returns the children of the passed branch node which this store owns. By default, this\n * is the entire `children` array.\n *\n * **If this store {@link Core.data.mixin.StoreChained#property-isChained isChained}**, then\n * this returns only the subset of children which are filtered into this store by the\n * {@link Core.data.mixin.StoreChained#config-chainedFilterFn chainedFilterFn}.\n * @param {Core.data.Model} parent The node to return the children of.\n * @returns {Core.data.Model[]}\n * @category Tree\n */\n getChildren(parent, unfiltered = false) {\n // In case of chained store we need to apply chainedFilterFn to all records\n const children = (unfiltered || this.isChained) && parent.unfilteredChildren || parent.children;\n return children && children.length ? this.isChained ? children.filter(this.chainedFilterFn) : children : emptyArray$8;\n }\n /**\n * Includes or excludes all records beneath parentRecord in storage. Used when expanding or collapsing\n * nodes.\n * @private\n * @param parentRecord Parent record\n * @param include Include (true) or exclude (false)\n * @category Tree\n */\n internalToggleTreeSubRecords(parentRecord, include) {\n const me = this,\n {\n storage\n } = me,\n index = storage.indexOf(parentRecord),\n children = me.doIncludeExclude(me.getChildren(parentRecord), include);\n // When expanded a parent node while being filtered, need to update the hidden flag of its children\n if (me.isFiltered && include && parentRecord.unfilteredChildren) {\n me.updateChildrenHiddenState(parentRecord);\n }\n // If we expanded a node which is yet to load children, the collected children\n // array will be empty, so do not broadcast any change event.\n // If we are collapsing a record which isn't visible (because parent is collapsed) we won't get an index,\n // which is fine since it is already removed from processedRecords\n if (children.length && index !== false) {\n // We must not react to change - we fire the events here with a flag\n // to tell responders that it's due to an expand or collapse.\n storage.suspendEvents();\n if (include) {\n storage.splice(index + 1, 0, ...children);\n const event = {\n action: 'add',\n isExpand: true,\n records: children,\n index: index + 1\n };\n me.trigger('add', event);\n me.trigger('change', event);\n } else {\n storage.splice(index + 1, children.length);\n const event = {\n action: 'remove',\n isCollapse: true,\n records: children,\n index: index + 1\n };\n me.trigger('remove', event);\n me.trigger('change', event);\n }\n storage.resumeEvents();\n me._idMap = null;\n }\n }\n // Updates the hidden flag of its children while store is filtered\n updateChildrenHiddenState(parentRecord) {\n var _parentRecord$unfilte;\n (_parentRecord$unfilte = parentRecord.unfilteredChildren) === null || _parentRecord$unfilte === void 0 ? void 0 : _parentRecord$unfilte.forEach(child => {\n child.instanceMeta(this.id).hidden = false;\n if (!child.isLeaf) {\n this.updateChildrenHiddenState(child);\n }\n });\n }\n doIncludeExclude(children, include, result = []) {\n const me = this,\n childCount = (children === null || children === void 0 ? void 0 : children.length) || 0;\n for (let i = 0; i < childCount; i++) {\n const child = children[i];\n // Only consider child nodes who we own.\n // If we are a chained store, skip nodes that are not ours.\n if (!me.isChained || me.chainedFilterFn(child)) {\n const mapMeta = child.instanceMeta(me.id);\n if (include || !mapMeta.hidden) {\n // if including sub-records, add those who are not hidden by a collapsed sub parent\n result.push(child);\n }\n mapMeta.hidden = !include;\n if (child.isExpanded(me)) {\n me.doIncludeExclude(me.getChildren(child), include, result);\n }\n }\n }\n return result;\n }\n /**\n * Collapse an expanded record or expand a collapsed. Optionally forcing a certain state.\n * @param {String|Number|Core.data.Model} idOrRecord Record (the record itself) or id of a record to toggle\n * @param {Boolean} [collapse] Force collapse (true) or expand (false)\n * @category Tree\n */\n async toggleCollapse(idOrRecord, collapse) {\n const me = this,\n record = me.getById(idOrRecord),\n meta = record.instanceMeta(me);\n if (collapse === undefined) {\n collapse = !meta.collapsed;\n }\n // Reject if we're in the middle of loading children, or it's a leaf, or it's a no-op\n if (!meta.isLoadingChildren && !record.isLeaf && record.isExpanded(me) === collapse) {\n me.trigger('beforeToggleNode', {\n record,\n collapse\n });\n meta.collapsed = collapse;\n if (meta.collapsed) {\n me.onNodeCollapse(record);\n return true;\n } else {\n me.onNodeExpand(record);\n let success = true;\n // Children not yet loaded, ask store for them.\n // It will append them. Appending to a node which\n // is expanded will insert the children into the UI.\n if (!record.isLoaded) {\n meta.isLoadingChildren = true;\n try {\n await me.loadChildren(record);\n } catch (exception) {\n // Revert to being collapsed\n meta.collapsed = true;\n success = false;\n me.trigger('loadChildrenException', {\n record,\n exception\n });\n } finally {\n meta.isLoadingChildren = false;\n }\n }\n return success;\n }\n }\n }\n /**\n * Remove all records beneath parentRecord from storage.\n * @private\n * @param parentRecord Parent record\n * @category Tree\n */\n onNodeCollapse(parentRecord) {\n // We don't care about collapse if it's inside a collapsed subtree\n if (parentRecord.ancestorsExpanded(this)) {\n return this.internalToggleTreeSubRecords(parentRecord, false);\n }\n }\n /**\n * Add all records beneath parentRecord from storage.\n * @private\n * @param parentRecord Parent record\n * @category Tree\n */\n onNodeExpand(parentRecord) {\n // We don't care about expand if it's inside a collapsed subtree\n if (parentRecord.ancestorsExpanded(this)) {\n return this.internalToggleTreeSubRecords(parentRecord, true);\n }\n }\n //endregion\n //region Transform flat data\n /**\n * Transforms flat data containing parent ids into tree data\n * @param {Object[]} data Flat raw data\n * @returns {Object[]} Tree data\n * @private\n */\n transformToTree(data) {\n const {\n parentIdField,\n idField,\n childrenField\n } = this.modelClass,\n parents = new Map(),\n transformed = [];\n for (const node of data) {\n const parentId = node[parentIdField];\n // Child, find parent\n if (parentId != null) {\n // Detected parents are kept in a map to no have to iterate to find them each time\n let parent = parents.get(parentId);\n // Parent not in map, find it and add it (also adds unmatched parents, to not search for\n // them again)\n if (parent === undefined) {\n var _data$find;\n parent = (_data$find = data.find(node => node[idField] === parentId)) !== null && _data$find !== void 0 ? _data$find : null;\n parents.set(parentId, parent);\n }\n // Parent found, add node as child of it\n if (parent) {\n if (!parent[childrenField]) {\n parent[childrenField] = [];\n }\n parent[childrenField].push(node);\n }\n }\n // Parent, keep\n else {\n transformed.push(node);\n }\n }\n return transformed;\n }\n /**\n * Transforms data into a tree with parent levels based on supplied fields.\n *\n * ```javascript\n * const newRoot = store.treeify(['name', r => r.age % 10]);\n * ```\n *\n * @param {Array} fields The field names, or a function to call to extract a value to create parent\n * nodes for records with the same value.\n * @param {Function} [parentTransform] A function which is called to allow the caller to transform the raw data\n * object of any newly created parent nodes.\n * @param {Boolean} [convertParents] Pass `true` to convert raw new parent data objects to this Store's\n * {@link Core.data.Store#config-modelClass}.\n * @returns {Core.data.Model} New root node\n * @internal\n */\n treeify(fields, parentTransform, convertParents = false) {\n const {\n length\n } = fields,\n parents = [],\n newRoot = {};\n let i, lastParent;\n // New branch nodes are ID'd by their field values concatenated into\n // string form.\n //\n // The key value that was used to create them is their \"key\" property.\n //\n // rootNode : {\n // children : [{\n // id : 'p1',\n // name : 'Parent 1',\n // expanded : true,\n // children : [\n // { id : 700, name : 'Task 700', startDate : '2021-11-26', duration : 3, percentDone : 20 },\n // { id : 500, name : 'Task 500', startDate : '2021-11-22', duration : 5, percentDone : 20 },\n // { id : 300, name : 'Task 300', startDate : '2021-11-24', duration : 3, percentDone : 10 },\n // { id : 100, name : 'Task 100', startDate : '2021-11-22', duration : 5, percentDone : 10 }\n // ]\n // },\n // {\n // id : 'p2',\n // name : 'Parent 2',\n // expanded : true,\n // children : [\n // { id : 600, name : 'Task 600', startDate : '2021-11-22', duration : 6, percentDone : 20 },\n // { id : 800, name : 'Task 800', startDate : '2021-11-26', duration : 2, percentDone : 20 },\n // { id : 400, name : 'Task 400', startDate : '2021-11-24', duration : 2, percentDone : 10 },\n // { id : 200, name : 'Task 200', startDate : '2021-11-22', duration : 6, percentDone : 10 }\n // ]\n // }]\n // }\n //\n // Becomes the following. Note that all records are sorted into ascending\n // order of their field values:\n //\n // rootNode : {\n // children : [{\n // id : '10',\n // key : 10,\n // expanded : true,\n // children : [\n // {\n // id : '10Mon Nov 22 2021 00:00:00 GMT+0100 (Central European Standard Time)',\n // key : new Date(2021, 10, 22),\n // expanded : true,\n // children : [\n // { id : 100, name : 'Task 100', startDate : '2021-11-22', duration : 5, percentDone : 10 },\n // { id : 200, name : 'Task 200', startDate : '2021-11-22', duration : 6, percentDone : 10 }\n // ]\n // },\n // {\n // id : '10Wed Nov 24 2021 00:00:00 GMT+0100 (Central European Standard Time)',\n // key : new Date(2021, 10, 24),\n // expanded : true,\n // children : [\n // { id : 300, name : 'Task 300', startDate : '2021-11-24', duration : 3, percentDone : 10 },\n // { id : 400, name : 'Task 400', startDate : '2021-11-24', duration : 2, percentDone : 10 }\n // ]\n // }\n // ]\n // },\n // {\n // id : '20',\n // key : 20,\n // expanded : true,\n // children : [\n // {\n // id : '20Mon Nov 22 2021 00:00:00 GMT+0100 (Central European Standard Time)',\n // key : new Date(2021, 10, 22),\n // expanded : true,\n // children : [\n // { id : 500, name : 'Task 500', startDate : '2021-11-22', duration : 5, percentDone : 20 },\n // { id : 600, name : 'Task 600', startDate : '2021-11-22', duration : 6, percentDone : 20 }\n // ]\n // },\n // {\n // id : '20Fri Nov 26 2021 00:00:00 GMT+0100 (Central European Standard Time)',\n // key : new Date(2021, 10, 26),\n // expanded : true,\n // children : [\n // { id : 700, name : 'Task 700', startDate : '2021-11-26', duration : 3, percentDone : 20 },\n // { id : 800, name : 'Task 800', startDate : '2021-11-26', duration : 2, percentDone : 20 }\n // ]\n // }\n // ]\n // }]\n // }\n //\n // Convert field definitions to a function which extracts the field]\n // for a simpler field value extraction.\n for (i = 0; i < length; i++) {\n if (!fields[i].call) {\n const field = fields[i];\n fields[i] = n => n[field];\n }\n parents[i] = new Map();\n }\n this.rootNode.traverse(n => {\n lastParent = null;\n if (n.isLeaf) {\n for (i = 0; i < length; i++) {\n var _lastParent;\n const lastParentPath = ((_lastParent = lastParent) === null || _lastParent === void 0 ? void 0 : _lastParent.path) || '',\n nodeMap = parents[i],\n key = fields[i](n),\n path = `${lastParentPath + key}/`,\n id = StringHelper.makeValidDomId(`generated_${path}`, '_'),\n parent = nodeMap.get(id) || nodeMap.set(id, {\n id,\n key,\n path,\n expanded: true,\n readOnly: true,\n children: [],\n generatedParent: true\n }).get(id);\n if (lastParent && !lastParent.children.includes(parent)) {\n lastParent.children.push(parent);\n }\n lastParent = parent;\n }\n lastParent.children.push(n);\n }\n }, true);\n // Call the optional transformer, and if we are configured to do so,\n // convert the new branches into TreeNodes.\n parents.forEach(p => p.forEach((p, id, map) => {\n parentTransform === null || parentTransform === void 0 ? void 0 : parentTransform(p);\n if (convertParents) {\n p = this.createRecord(p);\n map.set(id, p);\n }\n }));\n newRoot.children = [...parents[0].values()];\n // Cascade a sort down so that all \"groups\" are in order.\n const sort = n => {\n if (n.children) {\n n.children.sort((lhs, rhs) => {\n // If it's a leaf, sort by comparing all \"fields\"\n if (lhs.isLeaf) {\n let result;\n for (let i = 0; !result && i < length; i++) {\n const lv = fields[i](lhs),\n rv = fields[i](rhs);\n result = lv < rv ? -1 : rv > lv ? 1 : 0;\n }\n return result;\n }\n // Sort branch nodes by their key values\n else {\n // Sort numbers in strings nicely\n if (typeof lhs.key === 'string' || typeof rhs.key === 'string') {\n return lhs.key.localeCompare(rhs.key, undefined, {\n numeric: true\n });\n }\n return lhs.key < rhs.key ? -1 : lhs.key > rhs.key ? 1 : 0;\n }\n });\n n.children.forEach(sort);\n }\n };\n sort(newRoot);\n return newRoot;\n }\n //endregion\n treeifyFlatData(data) {\n const {\n childrenField,\n parentIdField\n } = this.modelClass;\n let hasParentId = false,\n shouldTransform = true;\n // Configured to transform flat data into tree data, make sure that we have:\n // - raw data without children defined\n // - parentIds\n for (const node of data) {\n if (node.isModel || Array.isArray(node[childrenField])) {\n shouldTransform = false;\n break;\n }\n if (node[parentIdField] != null) {\n hasParentId = true;\n }\n }\n if (shouldTransform && hasParentId) {\n data = this.transformToTree(data);\n }\n return data;\n }\n});\n\n/**\n * @module Core/helper/WalkHelper\n */\n/**\n * Tree walking helper\n * @internal\n */\nclass WalkHelper {\n /**\n * Pre-walks any hierarchical data structure\n *\n * @param {Object} data Walking starting point\n * @param {Function} childrenFn Function to return `data` children entries in an array\n * or null if no children exists for the entry\n * @param {Function} fn Function to call on each entry\n */\n static preWalk(data, childrenFn, fn) {\n const walkStack = [data];\n let node, children;\n while (walkStack.length) {\n node = walkStack.pop();\n fn(node);\n children = childrenFn(node);\n if (children) {\n walkStack.push.apply(walkStack, children.slice().reverse());\n }\n }\n }\n /**\n * Pre-walks any hierarchical data structure, passing along a link to the parent node\n *\n * @param {Object} data Walking starting point\n * @param {Function} childrenFn Function to return `data` children entries in an array\n * or null if no children exists for the entry\n * @param {Function} fn Function to call on each entry, called with `parent` and `node`\n */\n static preWalkWithParent(data, childrenFn, fn) {\n const walkStack = [{\n node: data,\n parent: null\n }];\n while (walkStack.length) {\n const {\n parent,\n node\n } = walkStack.pop();\n fn(parent, node);\n const children = childrenFn(node);\n if (Array.isArray(children)) {\n walkStack.push(...children.slice().reverse().map(child => ({\n node: child,\n parent: node\n })));\n }\n }\n }\n /**\n * Pre-walk unordered.\n *\n * Like {@link #function-preWalk-static} but doesn't reverse children before walk,\n * thus children will be walked last child first - first child last\n *\n * @param {Object} data Walking starting point\n * @param {Function} childrenFn Function to return `data` children entries in an array\n * or null if no children exists for the entry\n * @param {Function} fn Function to call on each entry\n */\n static preWalkUnordered(data, childrenFn, fn) {\n const walkStack = [data];\n let node, children;\n while (walkStack.length) {\n node = walkStack[walkStack.length - 1];\n fn(node);\n children = childrenFn(node);\n if (children) {\n walkStack.splice(walkStack.length - 1, 1, ...children);\n } else {\n walkStack.length = walkStack.length - 1;\n }\n }\n }\n /**\n * Post-walks any hierarchical data structure\n *\n * @param {Object} data Walking starting point\n * @param {Function} childrenFn Function to return `data` children entries in an array\n * or null if no children exists for the entry\n * @param {Function} fn Function to call on each entry\n */\n static postWalk(data, childrenFn, fn) {\n const visited = new Map(),\n walkStack = [data];\n let node, children;\n while (walkStack.length) {\n node = walkStack[walkStack.length - 1];\n if (visited.has(node)) {\n fn(node);\n walkStack.pop();\n } else {\n children = childrenFn(node);\n if (children) {\n walkStack.push(...children.slice().reverse());\n }\n visited.set(node, node);\n }\n }\n }\n /**\n * Pre-/Post-walks any hierarchical data structure calling inFn each node when it walks in,\n * and outFn when it walks out.\n *\n * @param {Object} data Walking starting point\n * @param {Function} childrenFn Function to return `data` children entries in an array\n * or null if no children exists for the entry\n * @param {Function} inFn Function to call on each entry upon enter\n * @param {Function} outFn Function to call on each entry upon exit\n */\n static prePostWalk(data, childrenFn, inFn, outFn) {\n const visited = new Map(),\n walkStack = [data];\n let node, children;\n while (walkStack.length) {\n node = walkStack[walkStack.length - 1];\n if (visited.has(node)) {\n outFn(node);\n walkStack.pop();\n } else {\n inFn(node);\n children = childrenFn(node);\n if (children) {\n walkStack.push(...children.slice().reverse());\n }\n visited.set(node, node);\n }\n }\n }\n}\nWalkHelper._$name = 'WalkHelper';\n\n/**\n * @module Core/data/mixin/StoreSync\n */\n/**\n * Mixin that allows Store to sync a new dataset with its existing records, instead of fully replacing everything.\n * Configure Store with `syncDataOnLoad: true` to activate the functionality. Sync is performed when a new dataset\n * is loaded, either by directly assigning it to `store.data` or by loading it using Ajax (if using an AjaxStore).\n *\n * ```javascript\n * const store = new Store({\n * syncDataOnLoad : true,\n * data : [\n * { id : 1, name : 'Saitama' },\n * { id : 2, name : 'Genos' },\n * { id : 3, name : 'Mumen Rider' }\n * ]\n * });\n *\n * // Sync a new dataset by assigning to data:\n * store.data = [\n * { id : 1, name : 'Caped Baldy' },\n * { id : 4, name : 'Horse-Bone' }\n * ];\n *\n * // Result : Record 1 updated, record 2 & 3 removed, record 4 added\n * ```\n *\n * For more details, please see {@link #config-syncDataOnLoad}.\n *\n * @mixin\n */\nvar StoreSync = (Target => class StoreSync extends (Target || Base$1) {\n static get $name() {\n return 'StoreSync';\n }\n static get configurable() {\n return {\n /**\n * Configure with `true` to sync loaded data instead of replacing existing with a new dataset.\n *\n * By default (or when configured with `false`) assigning to `store.data` replaces the entire dataset\n * with a new one, creating all new records:\n *\n * ```javascript\n * store.data = [ { id : 1, name : 'Saitama' } ];\n *\n * const first = store.first;\n *\n * store.data = [ { id : 1, name : 'One-Punch man' } ];\n *\n * // store.first !== first;\n * ```\n *\n * When configured with `true` the new dataset is instead synced against the old, figuring out what was\n * added, removed and updated:\n *\n * ```javascript\n * store.data = [ { id : 1, name : 'Saitama' } ];\n *\n * const first = store.first;\n *\n * store.data = [ { id : 1, name : 'One-Punch man' } ];\n *\n * // store.first === first;\n * ```\n *\n * After the sync, any configured sorters, groupers and filters will be reapplied.\n *\n * #### Threshold\n *\n * The sync operation has a configurable threshold, above which the operation will be treated as a\n * batch/refresh and only trigger a single `refresh` event. If threshold is not reached, individual events\n * will be triggered (single `add`, `remove` and possible multiple `update`). To enable the threshold,\n * supply a config object with a `threshold` property instead of `true`:\n *\n * ```javascript\n * const store = new Store({\n * syncDataOnLoad : {\n * threshold : '20%'\n * }\n * });\n * ```\n *\n * `threshold` accepts numbers or strings. A numeric threshold means number of affected records, while a\n * string is used as a percentage of the whole dataset (appending `%` is optional). By default no threshold\n * is used.\n *\n * #### Missing fields\n *\n * The value of any field not supplied in the new dataset is by default kept as is (if record is not removed\n * by the sync). This behaviour is configurable, by setting `keepMissingValues : false` in a config object\n * it will reset any unspecified field back to their default values:\n *\n * ```javascript\n * const store = new Store({\n * syncDataOnLoad : {\n * keepMissingValues : false\n * }\n * });\n * ```\n *\n * Considering the following sync operation:\n *\n * ```javascript\n * // Existing data\n * { id : 1, name : 'Saitama', powerLevel : 100 }\n * // Sync data\n * { id : 1, name : 'One-Punch Man' }\n * ```\n *\n * The result would by default (or when explicitly configured with `true`) be:\n *\n * ```javascript\n * { id : 1, name : 'One-Punch Man', powerLevel : 100 }\n * ```\n *\n * If configured with `keepMissingValues : false` it would instead be:\n *\n * ```javascript\n * { id : 1, name : 'One-Punch Man' }\n * ```\n *\n * @config {Boolean|Object}\n * @default false\n * @category Common\n */\n syncDataOnLoad: null\n };\n }\n /**\n * Syncs a new dataset against the already loaded one, only applying changes.\n * Not intended to be called directly, please configure store with `syncDataOnLoad: true` and assign to\n * `store.data` as usual instead.\n *\n * ```\n * const store = new Store({\n * syncDataOnLoad : true,\n * data : [\n * // initial data\n * ]\n * });\n *\n * store.data = [ // new data ]; // Difference between initial data and new data will be applied\n * ```\n *\n * @param {Object[]|Core.data.Model[]} data New dataset, an array of records or data objects\n * @private\n */\n syncDataset(data) {\n const me = this,\n {\n storage\n } = me,\n {\n toAdd,\n toRemove,\n toMove,\n updated\n } = me.tree ? me.syncTreeDataset(data) : me.syncFlatDataset(data);\n let {\n threshold\n } = me.syncDataOnLoad,\n surpassed = false;\n // Check if threshold is surpassed\n if (threshold) {\n // Any string is treated as a percentage\n if (typeof threshold === 'string') {\n threshold = parseInt(threshold, 10) / 100 * me.count;\n }\n surpassed = toAdd.length + toRemove.length + toMove.length + updated.length > threshold;\n }\n me.isSyncingDataOnLoad = true;\n if (me.tree) {\n // Flat data is spliced into/out of the collection, but in a tree it has to be added/removed from store\n // to end up on correct parents\n if (toAdd.length) {\n // Add all new nodes in one go, will be added to correct parent using `parentId`. Triggering multiple times\n const added = me.add(toAdd, surpassed);\n // parentId was tucked on in syncTreeDataset() to allow the single flat add above, clean it out\n added.forEach(node => node.clearParentId());\n }\n if (toMove.length) {\n for (const {\n parent,\n node,\n index\n } of toMove) {\n const newParent = me.getById(parent.id);\n newParent.insertChild(node, index);\n }\n }\n // Remove in one go, removing from each parent. Triggering multiple times\n me.remove(toRemove, surpassed);\n } else {\n if (surpassed) {\n me.suspendEvents();\n }\n // Add and remove, will trigger if below threshold/no threshold\n // We cannot simply splice into our Collection because of the extra\n // processing various Store mixins do in add and remove implementations\n me.remove(toRemove);\n me.add(toAdd);\n if (surpassed) {\n me.resumeEvents();\n }\n }\n // Trigger updates if using threshold, but have not surpassed it. If threshold is not used, the updates\n // are triggered when data is set (avoiding another iteration)\n if (threshold && !surpassed) {\n updated.forEach(({\n record,\n toSet,\n wasSet\n }) => me.onModelChange(record, toSet, wasSet));\n }\n // Clear change-tracking\n me.acceptChanges();\n const event = {\n added: toAdd,\n removed: toRemove,\n updated,\n thresholdSurpassed: surpassed\n };\n // Trigger `batch` if threshold is surpassed, more similar to a batch than a full `dataset`\n if (surpassed) {\n me.trigger('refresh', {\n action: 'batch',\n data: data,\n records: storage.values,\n syncInfo: event\n });\n }\n if (me.isFiltered && !me.remoteFilter) {\n // Apply filtering to the next dataset if filtering is local\n me.filter({\n silent: me.isRemoteDataLoading\n });\n }\n if (me.isGrouped) {\n // Announced group\n me.group(null, null, false, true, me.isRemoteDataLoading);\n } else if (me.isSorted) {\n // If we updated records in-place, the order may not match what we sent to\n // the server, so silently sort the collection according to our sorters.\n if (me.remoteSort) {\n storage.replaceValues({\n values: storage.values.sort(me.createSorterFn(me.sorters)),\n silent: true\n });\n }\n // If we are sorting locally, just do a normal sort\n else {\n me.sort();\n }\n }\n me.isSyncingDataOnLoad = false;\n me.trigger('loadSync', event);\n }\n // Used by syncDataset()\n syncFlatDataset(data) {\n if (!data) {\n return {\n toRemove: this.records\n };\n }\n const me = this,\n {\n idField,\n allFields\n } = me.modelClass,\n toRemove = [],\n toAdd = [],\n updated = [],\n usedIds = {};\n const {\n threshold,\n keepMissingValues\n } = me.syncDataOnLoad;\n let hitCount = 0;\n data.forEach(rawData => {\n rawData = rawData.isModel ? rawData.data : rawData;\n const id = rawData[idField],\n record = me.getById(id);\n // Record exists, might be an update\n if (record) {\n // Apply default value for any missing fields if configured to do so\n if (keepMissingValues === false) {\n for (const field of allFields) {\n if (!(field.dataSource in rawData) && field.dataSource in record.data) {\n rawData[field.dataSource] = field.defaultValue;\n }\n }\n }\n // Update silently if using threshold, otherwise trigger away\n const wasSet = record.set(rawData, null, Boolean(threshold));\n if (wasSet) {\n updated.push({\n record,\n wasSet,\n toSet: rawData\n });\n }\n hitCount++;\n }\n // Does not exist, add\n else {\n toAdd.push(me.processRecord(me.createRecord(rawData)));\n }\n usedIds[id] = 1;\n });\n // Check removals, unless all records were visited above\n if (hitCount < me.allCount) {\n me.forEach(record => {\n if (!usedIds[record.id]) {\n toRemove.push(record);\n }\n });\n }\n return {\n toAdd,\n toRemove,\n toMove: [],\n updated\n };\n }\n // Used by syncDataset()\n syncTreeDataset(data) {\n if (!data) {\n return {\n toRemove: this.records\n };\n }\n const me = this,\n {\n idField,\n parentIdField,\n childrenField,\n allFields\n } = me.modelClass,\n {\n keepMissingValues\n } = me.syncDataOnLoad,\n toRemove = [],\n toAdd = [],\n toMove = [],\n updated = [],\n usedIds = {};\n if (me.transformFlatData) {\n data = me.treeifyFlatData(data);\n }\n const {\n threshold\n } = me.syncDataOnLoad;\n WalkHelper.preWalkWithParent({\n isRoot: true,\n id: me.rootNode.id,\n children: data\n }, n => n.children, (parent, rawData) => {\n if (parent) {\n const id = rawData[idField],\n node = me.getById(id);\n // Record exists, might be an update\n if (node) {\n let childrenUpdated;\n const oldChildrenValue = node.children;\n // Edge case: Check for conversion from normal parent to lazy loaded\n if (oldChildrenValue !== true && rawData[childrenField] === true) {\n node.clearChildren();\n node.data[childrenField] = node.children = true;\n delete rawData[childrenField];\n me.toggleCollapse(node, true);\n childrenUpdated = true;\n }\n // Changed parent?\n if (node.parent.id !== parent[idField]) {\n toMove.push({\n node,\n parent,\n index: parent[childrenField].indexOf(rawData)\n });\n }\n // parentIdField has no default value to not pollute flat data,\n // assign to root here if no value specified\n // else if (parent.isRoot && !(parentIdField in rawData)) {\n // rawData[parentIdField] = null;\n // }\n // Apply default value for any missing fields if configured to do so\n if (keepMissingValues === false) {\n for (const field of allFields) {\n // Ignore parentId, handled above since it has no default\n if (field.name !== 'parentId' && !(field.dataSource in rawData) && field.dataSource in node.data) {\n rawData[field.dataSource] = field.defaultValue;\n }\n }\n }\n // Update silently if using threshold, otherwise trigger away\n const wasSet = node.set(rawData, null, Boolean(threshold));\n if (wasSet) {\n updated.push({\n record: node,\n wasSet,\n toSet: rawData\n });\n } else if (childrenUpdated) {\n node.signalNodeChanged({\n [childrenField]: {\n value: true,\n oldValue: oldChildrenValue\n }\n });\n }\n }\n // Does not exist, add\n else {\n rawData[parentIdField] = parent[idField];\n toAdd.push(_objectSpread2(_objectSpread2({}, rawData), Array.isArray(rawData[childrenField]) ? {\n children: []\n } : undefined));\n }\n usedIds[id] = 1;\n }\n });\n me.traverse(node => {\n if (!usedIds[node.id]) {\n toRemove.push(node);\n }\n });\n return {\n toAdd,\n toRemove,\n toMove,\n updated\n };\n }\n});\n\n/**\n * @module Core/data/stm/mixin/StoreStm\n */\nconst STM_PROP = Symbol('STM_PROP');\n/**\n * Store mixin to make it compatible with {@link Core/data/stm/StateTrackingManager}.\n * @mixin\n */\nvar StoreStm = (Target => class StoreStm extends (Target || Base$1) {\n static get $name() {\n return 'StoreStm';\n }\n static get defaultConfig() {\n return {\n /**\n * Reference to STM manager\n *\n * @config {Core.data.stm.StateTrackingManager}\n * @default\n * @category Advanced\n */\n stm: null\n };\n }\n get stm() {\n return this[STM_PROP];\n }\n set stm(stm) {\n const me = this;\n if (me.stm !== stm) {\n var _me$stm;\n if ((_me$stm = me.stm) !== null && _me$stm !== void 0 && _me$stm.hasStore(me)) {\n me.stm.removeStore(me);\n }\n me[STM_PROP] = stm;\n if (me.stm && !me.stm.hasStore(me)) {\n me.stm.addStore(me);\n }\n }\n }\n // Overridden to notify STM about flat add action\n add(records, silent = false) {\n let result;\n const {\n stm\n } = this;\n // Tree adding is routed via rootNode.appendChild() it has it's own\n // STM override thus if the store is tree we ignore the action\n if (!this.tree && stm !== null && stm !== void 0 && stm.enabled) {\n var _result;\n // Flat adding here only, the only data needed to undo/redo the action\n // is the list of records added.\n result = super.add(records, silent);\n // If adding wasn't vetoed and something has been added then\n // notifying the STM about the fact.\n if ((_result = result) !== null && _result !== void 0 && _result.length) {\n stm.onStoreModelAdd(this, result, silent);\n }\n } else {\n result = super.add(records, silent);\n }\n return result;\n }\n // Overridden to notify STM about flat insert action\n insert(index, records, silent = false) {\n let result;\n const {\n stm\n } = this;\n // Tree inserting is routed via rootNode.insertChild() it has it's own\n // STM override thus if the store is tree we ignore the action\n if (!this.tree && stm !== null && stm !== void 0 && stm.enabled) {\n var _result2;\n // Flat inserting here only, the only data needed to undo/redo the action is:\n // - the list of record inserted\n // - index they are inserted at\n // - index they have been at if they are part of this store already and are moved\n // Here we are getting indices of records which are in this store already\n // not all records might be from this store, some might be new or from another store\n const context = (Array.isArray(records) ? records : [records]).reduce((context, r) => {\n const index = r instanceof Model ? this.indexOf(r) : undefined;\n if (index !== undefined && index !== -1) {\n context.set(r, index);\n }\n return context;\n }, new Map());\n // Result here is the array of Models inserted or undefined,\n // and it might be different from `records` we received as argument.\n result = super.insert(index, records);\n // Here we check if anything has been actually inserted.\n // The insertion action might be vetoed by event handler or something\n if ((_result2 = result) !== null && _result2 !== void 0 && _result2.length) {\n // We can't rely on `index` we've got as argument since `result` might\n // differ from records.\n index = this.indexOf(result[0]);\n // Notifying STM manager about the insertion action providing all\n // the required data to undo/redo.\n stm.onStoreModelInsert(this, index, result, context, silent);\n }\n } else {\n result = super.insert(index, records, silent);\n }\n return result;\n }\n // Overridden to notify STM about flat removing action\n remove(recordsOrIds, silent = false, fromRemoveChild) {\n let result;\n const {\n stm\n } = this;\n // Tree removing is routed via rootNode.removeChild() it has it's own\n // STM override thus if the store is tree we ignore the action\n if (!this.tree && stm !== null && stm !== void 0 && stm.enabled) {\n var _result3;\n // Flat removing here only, the only date needed to undo/redo the actions is:\n // - the list of records removed\n // - their original index to re-insert them back correctly\n const recordsOrIdsNormalized = (Array.isArray(recordsOrIds) ? recordsOrIds : [recordsOrIds]).map(r => this.getById(r)).filter(r => !!r);\n const context = recordsOrIdsNormalized.reduce((context, r) => {\n const index = this.indexOf(r);\n if (index !== undefined && index !== -1) {\n context.set(r, index);\n }\n return context;\n }, new Map());\n // Calling original store method\n result = super.remove(recordsOrIds, silent, fromRemoveChild);\n // Here we check if anything has been actually removed.\n // The removing action might be vetoed by event handler or something\n if ((_result3 = result) !== null && _result3 !== void 0 && _result3.length) {\n stm.onStoreModelRemove(this, result, context, silent);\n }\n } else {\n result = super.remove(recordsOrIds, silent, fromRemoveChild);\n }\n return result;\n }\n // Overridden to notify STM about flat clear action\n removeAll(silent) {\n const {\n stm\n } = this;\n let result;\n if (stm !== null && stm !== void 0 && stm.enabled) {\n // Here we are to detect if anything has been removed\n // the only way is to check if store has anything before removing all\n // and has nothing after.\n const {\n tree,\n rootNode,\n allRecords\n } = this,\n wasNotEmpty = allRecords.length,\n // need to store children/records before super method call, otherwise those would report empty list\n records = tree ? rootNode.children.slice() : allRecords.slice();\n result = super.removeAll(silent);\n // The trick here is to distinguish tree and flat case\n // For the flat case it's simple we just store all records\n // For the tree we are to store root node children only\n // Upon restoring store.add() will do the right thing for the flat case and tree case regardless.\n if (wasNotEmpty && this.count === 0) {\n stm.onStoreRemoveAll(this, records, silent);\n }\n } else {\n result = super.removeAll(silent);\n }\n return result;\n }\n});\n\n/* eslint-disable no-unused-expressions */\n/**\n * @module Core/data/Store\n */\nconst dataAddRemoveActions$2 = {\n splice: 1,\n clear: 1\n};\n/**\n * The Store represents a data container which holds flat data or tree structures. An item in the Store is often called\n * a ´record´ and it is simply an instance of the {@link Core.data.Model} (or any subclass thereof).\n *\n * Typically you load data into a store to display it in a Grid or a ComboBox. The Store is the backing data component\n * for any component that is showing data in a list style UI.\n *\n * ## Data format\n * Data is store in a JSON array the Store offers an API to edit, filter, group and sort the records.\n *\n * ## Store with flat data\n * To create a flat store simply provide an array of objects that describe your records\n *\n * ```javascript\n * const store = new Store({\n * data : [\n * { id : 1, name : 'ABBA', country : 'Sweden' },\n * { id : 2, name : 'Beatles', country : 'UK' }\n * ]\n * });\n *\n * // retrieve record by id\n * const beatles = store.getById(2);\n * ```\n *\n * ## Store with tree data\n * To create a tree store use `children` property for descendant records\n *\n * ```javascript\n * const store = new Store({\n * tree: true,\n * data : [\n * { id : 1, name : 'ABBA', country : 'Sweden', children: [\n * { id: 2, name: 'Agnetha' },\n * { id: 3, name: 'Bjorn' },\n * { id: 4, name: 'Benny' },\n * { id: 5, name: 'Anni-Frid' }\n * ]},\n * ]\n * });\n *\n * // retrieve record by id\n * let benny = store.getById(4);\n * ```\n *\n * Optionally a tree store can consume a flat dataset with nodes that have a `parentId` property. By configuring the\n * store with `tree : true` and `transformFlatData : true`, the flat data is transformed into tree data:\n *\n * ```javascript\n * const store = new Store({\n * tree : true,\n * transformFlatData : true,\n * data : [\n * { id : 1, name : 'ABBA', country : 'Sweden' },\n * { id : 2, name : 'Agnetha', parentId : 1 },\n * { id : 3, name : 'Bjorn', parentId : 1 },\n * { id : 4, name : 'Benny', parentId : 1 },\n * { id : 5, name : 'Anni-Frid', parentId : 1 }\n * ]\n * });\n * ```\n *\n * ### Retrieving and consuming JSON\n * For both flat stores or tree stores it is possible to retrieve the data of all records in JSON format:\n *\n * ```javascript\n * const jsonString = store.json;\n *\n * // or\n *\n * const jsonArray = store.toJSON();\n * ```\n *\n * To plug the JSON data back in later:\n *\n * ```javascript\n * store.data = JSON.parse(jsonString);\n *\n * // or\n *\n * store.data = jsonArray;\n * ```\n *\n * ## Sharing stores\n * You cannot directly share a Store between widgets, but the data in a Store can be shared. There are two different\n * approaches depending on your needs, sharing data and chaining stores:\n *\n * ### Shared data\n * To create 2 widgets that share data, you can create 2 separate stores and pass records of the first store as the\n * dataset of the second store.\n *\n * ```javascript\n * let combo1 = new Combo({\n * appendTo : document.body,\n * store : new Store({\n * data : [\n * { id : 1, name : 'ABBA', country : 'Sweden' },\n * { id : 2, name : 'Beatles', country : 'UK' }\n * ]\n * }),\n * valueField : 'id',\n * displayField : 'name'\n * });\n *\n * let combo2 = new Combo({\n * appendTo : document.body,\n * store : new Store({\n * data : combo1.store.records\n * }),\n * valueField : 'id',\n * displayField : 'name'\n * });\n *\n * combo1.store.first.name = 'foo';\n * combo2.store.first.name; // \"foo\"\n * ```\n *\n * ### Chained stores\n * Another more powerful option to share data between widgets is to create {@link Core.data.mixin.StoreChained chained}\n * stores. The easiest way to create a chained store is to call {@link #function-chain} function.\n *\n * ```javascript\n * let combo1 = new Combo({\n * appendTo : document.body,\n * store : new Store({\n * data : [\n * { id : 1, name : 'ABBA', country : 'Sweden' },\n * { id : 2, name : 'Beatles', country : 'UK' }\n * ]\n * }),\n * valueField : 'id',\n * displayField : 'name'\n * });\n *\n * let combo2 = new Combo({\n * appendTo : document.body,\n * store : combo1.store.chain(),\n * valueField : 'id',\n * displayField : 'name'\n * });\n *\n * combo1.store.first.name = 'foo';\n * combo2.store.first.name; // \"foo\"\n * ```\n *\n * A chained store can optionally be created with a filtering function, to only contain a subset of the records from\n * the main store. In addition, the chained store will reflect record removals/additions to the master store, something\n * the shared data approach will not.\n *\n * @mixes Core/mixin/Events\n * @mixes Core/data/mixin/StoreFilter\n * @mixes Core/data/mixin/StoreChanges\n * @mixes Core/data/mixin/StoreCRUD\n * @mixes Core/data/mixin/StoreSum\n * @mixes Core/data/mixin/StoreSearch\n * @mixes Core/data/mixin/StoreSort\n * @mixes Core/data/mixin/StoreGroup\n * @mixes Core/data/mixin/StoreChained\n * @mixes Core/data/mixin/StoreState\n * @mixes Core/data/mixin/StoreTree\n * @mixes Core/data/stm/mixin/StoreStm\n * @mixes Core/data/mixin/StoreSync\n *\n * @extends Core/Base\n */\nclass Store extends Base$1.mixin(Identifiable, Events, Pluggable, State, StoreFilter, StoreChanges, StoreCRUD, StoreRelation,\n// Private\nStoreSum, StoreSearch, StoreSort, StoreGroup, StoreChained, StoreState, StoreTree, StoreStm, StoreSync, StoreProxy // Private for now, thus not mentioned in @mixes block above\n) {\n //region Config & properties\n static get $name() {\n return 'Store';\n }\n static get properties() {\n return {\n relationCache: {},\n dependentStoreConfigs: new Map()\n };\n }\n static get configurable() {\n return {\n /**\n * Store's unique identifier.\n *\n * @member {String|Number} id\n * @readonly\n * @category Common\n */\n /**\n * Store's unique identifier. When set the store is added to a store map accessible through\n * `Store.getStore(id)`.\n *\n * @config {String|Number}\n * @category Common\n */\n id: true,\n /**\n * Class used to represent records in the store, should be a subclass of {@link Core.data.Model}. Only\n * applies when supplying data to the store (load, add), any supplied record instances are kept as is.\n *\n * ```javascript\n * class MyModel extends Model {\n * static get fields() {\n * return [\n * 'name',\n * 'city',\n * 'company'\n * ]\n * }\n * }\n *\n * const store = new Store({\n * modelClass : MyModel,\n * data : [\n * { id : 1, name : 'Mark', city : 'London', company : 'Cool inc' },\n * ...\n * ]\n * });\n * ```\n *\n * @config {Core.data.Model}\n * @default\n * @typings {typeof Model}\n * @category Common\n */\n modelClass: Model,\n /**\n * Verify that loaded data does not contain any generated ids. If it does, a warning is logged on console.\n *\n * Set this to `false` to disable the check and give a very minor performance boost.\n *\n * @prp {Boolean}\n * @default\n */\n verifyNoGeneratedIds: true\n };\n }\n static get defaultConfig() {\n return {\n /**\n * An array of field definitions used to create a {@link Core.data.Model} (modelClass) subclass. Optional.\n * If the Model already has fields defined, these fields will extend those.\n *\n * ```javascript\n * const store = new Store({\n * fields : ['name', 'city', 'company'],\n * data : [\n * { id : 1, name : 'Mark', city : 'London', company : 'Cool inc' },\n * ...\n * ]\n * });\n * ```\n *\n * See {@link Core.data.Model} for more info on defining fields, changing data source and mapping fields to\n * nested objects.\n *\n * Note that pre-created record instances supplied to the store are kept as is and thus these fields will\n * not apply to them.\n *\n * @config {String[]|Object[]|Core.data.field.DataField[]}\n * @category Common\n */\n fields: null,\n /**\n * Automatically detect from set data if used as tree store or flat store\n * @config {Boolean}\n * @default\n * @category Tree\n */\n autoTree: true,\n /**\n * Raw data to load initially.\n *\n * Expects an array of JavaScript objects, with properties matching store's fields (defined on its\n * {@link #config-modelClass model} or in the {@link #config-fields} config).\n *\n * ```javascript\n * const store = new Store({\n * data : [\n * { id : 1, name : 'Linda', city : 'NY' },\n * { id : 2, name : 'Olivia', city : 'Paris' },\n * ...\n * ]\n * });\n * ```\n *\n * @config {Object[]|Core.data.Model[]}\n * @category Common\n */\n data: null,\n /**\n * `true` to act as a tree store.\n * @config {Boolean}\n * @category Tree\n */\n tree: false,\n callOnFunctions: true,\n /**\n * A {@link Core/util/Collection}, or Collection config object\n * to use to contain this Store's constituent records.\n * @config {Core.util.Collection|Object}\n * @category Advanced\n */\n storage: null,\n /**\n * Retools the loaded data objects instead of making shallow copies of them. This increases performance but\n * pollutes the incoming data and does not allow remapping of fields (dataSource).\n *\n * Also allows disabling certain steps in data loading, to further improve performance. Either accepts an\n * object with the params described below or `true` which equals `disableDuplicateIdCheck` and\n * `disableTypeConversion`.\n *\n * ```javascript\n * // No duplicate id checking, no type conversions\n * new Store({ useRawData : true });\n *\n * new Store({\n * // No type conversions only\n * useRawData : {\n * disableTypeConversion : true\n * }\n * });\n * ```\n *\n * @config {Boolean|Object}\n * @param {Boolean} [disableDuplicateIdCheck] Data must not contain duplicate ids, check is bypassed.\n * @param {Boolean} [disableDefaultValue] Default values will not be applied to record fields.\n * @param {Boolean} [disableTypeConversion] No type conversions will be performed on record data.\n * @category Advanced\n */\n useRawData: false,\n /**\n * Specify `false` to prevent loading records without ids, a good practise to enforce when syncing with a\n * backend.\n *\n * By default Store allows loading records without ids, in which case a generated id will be assigned.\n *\n * @config {Boolean}\n * @default true\n * @category Advanced\n */\n allowNoId: true,\n /**\n * Prevent dynamically subclassing the modelClass. It does so by default to not pollute it when exposing\n * properties. Should rarely need to be used.\n * @config {Boolean}\n * @default false\n * @private\n * @category Advanced\n */\n preventSubClassingModel: null\n };\n }\n static get identifiable() {\n return {\n registerGeneratedId: false\n };\n }\n /**\n * Class used to represent records. Defaults to class Model.\n * @member {Core.data.Model} modelClass\n * @typings {typeof Model}\n * @category Records\n */\n //endregion\n //region Events\n /**\n * Fired when the id of a record has changed\n * @event idChange\n * @param {Core.data.Store} source This Store\n * @param {Core.data.Model} record Modified record\n * @param {String|Number} oldValue Old id\n * @param {String|Number} value New id\n */\n /**\n * Fired before record is modified in this store.\n * Modification may be vetoed by returning `false` from a handler.\n * @event beforeUpdate\n * @param {Core.data.Store} source This Store\n * @param {Core.data.Model} record Modified record\n * @param {Object} changes Modification data\n */\n /**\n * Fired when a record is modified\n * @event update\n * @param {Core.data.Store} source This Store\n * @param {Core.data.Model} record Modified record\n * @param {Object} changes Modification data\n */\n /**\n * Fired when one of this Store's constituent records is modified while in\n * {@link Core.data.Model#function-beginBatch batched} state. This may be used to keep\n * UIs up to date while \"tentative\" changes are made to a record which must not be synced with a server.\n * @event batchedUpdate\n * @private\n */\n /**\n * Fired when the root node is set\n * @event rootChange\n * @param {Core.data.Store} source This Store\n * @param {Core.data.Model} oldRoot The old root node.\n * @param {Core.data.Model} rootNode The new root node.\n */\n /**\n * Data in the store was changed. This is a catch-all event which is fired for all changes\n * which take place to the store's data.\n *\n * This includes mutation of individual records, adding and removal of records, as well as\n * setting a new data payload using the {@link #property-data} property, sorting, filtering,\n * and calling {@link Core.data.mixin.StoreCRUD#function-removeAll}.\n *\n * Simple databound widgets may use to the `change` event to refresh their UI without having to add multiple\n * listeners to the {@link #event-update}, {@link Core.data.mixin.StoreCRUD#event-add},\n * {@link Core.data.mixin.StoreCRUD#event-remove}, {@link #event-refresh} and\n * {@link Core.data.mixin.StoreCRUD#event-removeAll} events.\n *\n * A more complex databound widget such as a grid may use the more granular events to perform less\n * destructive updates more appropriate to each type of change. The properties will depend upon the value of the\n * `action` property.\n *\n * @event change\n * @param {Core.data.Store} source This Store.\n * @param {'remove'|'removeAll'|'add'|'updatemultiple'|'clearchanges'|'filter'|'update'|'dataset'|'replace'} action\n * Name of action which triggered the change. May be one of the options listed above\n * @param {Core.data.Model} record Changed record, for actions that affects exactly one record (`'update'`)\n * @param {Core.data.Model[]} records Changed records, passed for all actions except `'removeAll'`\n * @param {Object} changes Passed for the `'update'` action, info on which record fields changed\n */\n // NOTE: When updating params above, also update change event in ProjectModelMixin and dataChange in ProjectConsumer\n /**\n * Data in the store has completely changed, such as by a filter, or sort or load operation.\n * @event refresh\n * @param {Core.data.Store} source This Store.\n * @param {Boolean} batch Flag set to `true` when the refresh is triggered by ending a batch\n * @param {'dataset'|'sort'|'clearchanges'|'filter'|'create'|'update'|'delete'|'group'} action Name of\n * action which triggered the change. May be one of the options listed above.\n */\n //endregion\n /* break doc comment from next method */\n //region Init\n constructor(...args) {\n super(...args);\n // When using a Proxy, the Proxy is returned instead of the actual Store\n if (this.objectify) {\n return this.initProxy();\n }\n }\n construct(config = {}) {\n const me = this;\n Object.assign(me, {\n added: new StoreBag(),\n removed: new StoreBag(),\n modified: new StoreBag(),\n idRegister: {},\n internalIdRegister: {},\n oldIdMap: {}\n });\n if (config.storeId) {\n // avoid changing id when setting storeId:\n config = ObjectHelper.assign({\n id: config.storeId\n }, config);\n // We cannot remove storeId since it can also be inherited and if so, it will override the id above:\n // delete config.storeId;\n }\n\n super.construct(config);\n me.initRelations();\n }\n /**\n * Retrieves/creates a store based on the passed config.\n *\n * | Type | Result |\n * |-------------------|------------------------------------------------------------------------|\n * | Core.data.Store | Returns supplied store as is |\n * | String | Retrieves an existing store by id |\n * | Object | Creates a new store using supplied config object |\n * | Object[] | Creates a new store, populated with records created from supplied data |\n * | Core.data.Model[] | Creates a new store, populated with supplied records |\n *\n *\n * @param {Core.data.Store|Object|String|Object[]|Core.data.Model[]} config\n * @param {Object} [defaults] Config object to apply when creating a new store for passed data\n * @param {Function} [converterFn] Function called for each data object prior to creating a record from it. The\n * return value is used to create a record.\n * @private\n */\n static from(config, defaults = {}, converterFn = null) {\n // null and store instances pass through\n if (config && !config.isStore) {\n // Passed a string, get store by id\n if (typeof config === 'string') {\n config = Store.getStore(config);\n }\n // Passed something else, create a store using the input as its data\n else {\n // Array of records or data, pass to converterFn if one is supplied\n if (Array.isArray(config)) {\n if (converterFn) {\n config = config.map(data => data.isModel ? data : converterFn(data));\n }\n config = ObjectHelper.assign({}, defaults, {\n data: config\n });\n }\n config = new Store(config);\n }\n }\n return config;\n }\n doDestroy() {\n var _me$_storage, _me$stm, _me$stm$removeStore;\n const me = this,\n allRecords = me.registeredRecords;\n for (let i = allRecords.length - 1, rec; i >= 0; i--) {\n var _rec;\n rec = allRecords[i];\n if (!((_rec = rec) !== null && _rec !== void 0 && _rec.isDestroyed)) {\n rec.unjoinStore(me);\n }\n }\n (_me$_storage = me._storage) === null || _me$_storage === void 0 ? void 0 : _me$_storage.destroy();\n // Remove from STM if added there (STM might also have gotten destroyed before us)\n (_me$stm = me.stm) === null || _me$stm === void 0 ? void 0 : (_me$stm$removeStore = _me$stm.removeStore) === null || _me$stm$removeStore === void 0 ? void 0 : _me$stm$removeStore.call(_me$stm, me);\n if (!me.isChained) {\n var _me$rootNode;\n (_me$rootNode = me.rootNode) === null || _me$rootNode === void 0 ? void 0 : _me$rootNode.destroy();\n }\n // Events superclass fires destroy event.\n super.doDestroy();\n //TODO abort any ongoing loads\n }\n /**\n * Stops this store from firing events until {@link #function-endBatch} is called. Multiple calls to `beginBatch`\n * stack up, and will require an equal number of `endBatch` calls to resume events.\n *\n * Upon call of {@link #function-endBatch}, a {@link #event-refresh} event is triggered to allow UIs to\n * update themselves based upon the new state of the store.\n *\n * This is extremely useful when making a large number of changes to a store. It is important not to trigger\n * too many UI updates for performance reasons. Batching the changes ensures that UIs attached to this\n * store are only updated once at the end of the updates.\n */\n beginBatch() {\n this.suspendEvents();\n }\n /**\n * Ends event suspension started by {@link #function-beginBatch}. Multiple calls to {@link #function-beginBatch}\n * stack up, and will require an equal number of `endBatch` calls to resume events.\n *\n * Upon call of `endBatch`, a {@link #event-refresh} event with `action: batch` is triggered to allow UIs to update\n * themselves based upon the new state of the store.\n *\n * This is extremely useful when making a large number of changes to a store. It is important not to trigger\n * too many UI updates for performance reasons. Batching the changes ensures that UIs attached to this\n * store are only updated once at the end of the updates.\n */\n endBatch() {\n if (this.resumeEvents()) {\n this.trigger('refresh', {\n action: 'batch',\n data: this.storage.values,\n records: this.storage.values\n });\n }\n }\n set storage(storage) {\n const me = this;\n if (storage !== null && storage !== void 0 && storage.isCollection) {\n me._storage = storage;\n } else {\n me._storage = new Collection(storage);\n }\n me._storage.autoFilter = me.reapplyFilterOnAdd;\n me._storage.autoSort = me.reapplySortersOnAdd;\n // Join all the constituent records to this Store\n for (const r of me._storage) {\n r.joinStore(me);\n }\n me._storage.on({\n change: 'onDataChange',\n thisObj: me\n });\n }\n get storage() {\n if (!this._storage) {\n this.storage = {};\n }\n return this._storage;\n }\n /**\n * Returns all records (ignoring any filters) from the store.\n * @property {Core.data.Model[]}\n * @readonly\n * @category Records\n */\n get allRecords() {\n const me = this;\n if (me.isTree) {\n const result = me.collectDescendants(me.rootNode, undefined, undefined, {\n unfiltered: true\n }).all;\n if (me.rootVisible) {\n result.unshift(me.rootNode);\n }\n return result;\n } else {\n return me.isGrouped ? me.collectGroupRecords() : me.storage.allValues;\n }\n }\n // All records except special rows such group headers etc\n getAllDataRecords(searchAllRecords) {\n return this.isGrouped ? this.collectGroupRecords(searchAllRecords, false) : searchAllRecords ? this.storage.allValues : this.storage.values;\n }\n /**\n * Called by owned record when the record has its {@link Core.data.Model#property-isCreating}\n * property toggled.\n * @param {Core.data.Model} record The record that is being changed.\n * @param {Boolean} isCreating The new value of the {@link Core.data.Model#property-isCreating} property.\n * @internal\n */\n onIsCreatingToggle(record, isCreating) {\n const me = this,\n newlyPersistable = record.isPersistable && !isCreating;\n // If it's a transient \"isCreating\" record, waiting to be confirmed as a new entry\n // into the store, then it should *not* be in the added Bag as a syncable record.\n // If we are upgrading it to a permanent record, it *should* be in the added Bag.\n me.added[newlyPersistable ? 'add' : 'remove'](record);\n // If the record is newly persistable...\n if (newlyPersistable) {\n /**\n * Fired when a temporary record with the {@link Core.data.Model#property-isCreating} property set\n * has been confirmed as a part of this store by having its {@link Core.data.Model#property-isCreating}\n * property cleared.\n * @event addConfirmed\n * @param {Core.data.Store} source This Store.\n * @param {Core.data.Model} record The record confirmed as added.\n */\n me.trigger('addConfirmed', {\n record\n });\n // AjaxStore to commit confirmed new record\n if (me.autoCommit) {\n me.doAutoCommit();\n }\n }\n }\n // Join added records to store, not called when loading\n joinRecordsToStore(records) {\n const {\n allCount\n } = this;\n for (let i = 0; i < records.length; i++) {\n const record = records[i];\n // Set a parentIndex on newly added records, based on count prior to the add\n record.setData('parentIndex', allCount + i - records.length);\n record.joinStore(this);\n }\n }\n /**\n * Responds to mutations of the underlying storage Collection\n * @param {Object} event\n * @protected\n */\n onDataChange({\n source: storage,\n action,\n added,\n removed,\n replaced,\n oldCount,\n items,\n from,\n to\n }) {\n const me = this,\n isAddRemove = dataAddRemoveActions$2[action],\n // The \"filter\" action's removed and added are not processed as adds and removes.\n // In a filter operation the records are still members of the store.\n addedCount = isAddRemove && (added === null || added === void 0 ? void 0 : added.length),\n removedCount = isAddRemove && (removed === null || removed === void 0 ? void 0 : removed.length);\n let filtersWereReapplied, sortersWereReapplied;\n me._idMap = null;\n if (addedCount) {\n me.joinRecordsToStore(added);\n }\n replaced === null || replaced === void 0 ? void 0 : replaced.forEach(([oldRecord, newRecord]) => {\n oldRecord.unjoinStore(me, true);\n newRecord.joinStore(me);\n });\n // Allow mixins to mutate the storage before firing events.\n // StoreGroup does this to introduce group records into the mix.\n super.onDataChange(...arguments);\n // Join/unjoin incoming/outgoing records unless its as a result of TreeNode operations.\n // If we are a tree, joining is done when nodes are added/removed\n // as child nodes of a joined parent.\n if (!me.isTree) {\n if (addedCount) {\n for (const record of added) {\n // If was removed, remove from `removed` list\n if (me.removed.includes(record)) {\n me.removed.remove(record);\n }\n // Else add to `added` list\n else if (!record.isLinked) {\n me.added.add(record);\n }\n }\n // Re-evaluate the current *local* filter set silently so that the\n // information we are broadcasting below is up to date.\n filtersWereReapplied = !me.remoteFilter && me.filtered && me.reapplyFilterOnAdd;\n if (filtersWereReapplied) {\n me.filter({\n silent: true\n });\n }\n // if sortParamName not defined, is not remote sort\n sortersWereReapplied = !me.remoteSort && me.isSorted && me.reapplySortersOnAdd;\n if (sortersWereReapplied) {\n me.sort(null, null, false, true);\n }\n }\n if (removedCount) {\n for (const record of removed) {\n // If app was in the middle of a batched update, cancel the update.\n record.cancelBatch();\n record.unjoinStore(me);\n // If was newly added, remove from `added` list\n if (me.added.includes(record)) {\n me.added.remove(record);\n }\n // Else add to `removed` list\n // Unless it's StateTrackingManager reverting the record insertion.\n // Also unless it's a record which was a transient record created by the UI\n // and then the create was canceled at the edit stage.\n else if (!record._undoingInsertion && !record.isCreating && !record.isLinked) {\n me.removed.add(record);\n }\n }\n me.modified.remove(removed);\n // Re-evaluate the current *local* filter set silently so that the\n // information we are broadcasting below is up to date.\n filtersWereReapplied = !me.remoteFilter && me.filtered;\n if (filtersWereReapplied) {\n me.filter({\n silent: true\n });\n }\n }\n }\n switch (action) {\n case 'clear':\n // Clear our own relationCache, since we will be empty\n me.relationCache = {};\n // Signal to stores that depend on us\n me.updateDependentStores('removeall');\n me.trigger('removeAll');\n me.trigger('change', {\n action: 'removeall'\n });\n break;\n case 'splice':\n if (addedCount) {\n me.updateDependentStores('add', added);\n const\n // Collection does not handle moves, figure out if and where a record was moved from by checking\n // previous index value stored in meta\n oldIndex = added.reduce((lowest, record) => {\n const {\n previousIndex\n } = record.meta;\n if (previousIndex > -1 && previousIndex < lowest) lowest = previousIndex;\n return lowest;\n }, added[0].meta.previousIndex),\n index = storage.indexOf(added[0], !storage.autoFilter),\n params = {\n records: added,\n index\n };\n // Only include param oldIndex when used\n if (oldIndex > -1) {\n params.oldIndex = oldIndex;\n }\n me.trigger('add', params);\n me.trigger('change', Object.assign({\n action: 'add'\n }, params));\n if (filtersWereReapplied) {\n me.triggerFilterEvent({\n action: 'filter',\n filters: me.filters,\n oldCount,\n records: me.storage.allValues\n });\n }\n if (sortersWereReapplied) {\n me.trigger('sort', {\n action: 'sort',\n sorters: me.sorters,\n records: me.storage.allValues\n });\n }\n }\n if (removed.length) {\n me.updateDependentStores('remove', removed);\n me.trigger('remove', {\n records: removed\n });\n me.trigger('change', {\n action: 'remove',\n records: removed\n });\n }\n if (replaced.length) {\n me.trigger('replace', {\n records: replaced,\n all: me.records.length === replaced.length\n });\n me.trigger('change', {\n action: 'replace',\n replaced,\n all: me.records.length === replaced.length\n });\n }\n break;\n case 'filter':\n // Reapply grouping/sorting to make sure unfiltered records get sorted correctly\n if (me.isGrouped || me.isSorted) {\n me.performSort(true);\n }\n break;\n case 'move':\n // silently update parentIndex of records affected\n for (let allRecords = me.storage.allValues, i = Math.min(from, to); i <= Math.max(from, to); i++) {\n allRecords[i].setData('parentIndex', i);\n }\n /**\n * Fired when a block of records has been moved within this Store\n * @event move\n * @param {Core.data.Store} source This Store\n * @param {Core.data.Model} record (DEPRECATED) The first record moved (The\n * {@link Core.data.mixin.StoreCRUD#function-move} API now accepts an array of records to move).\n * @param {Core.data.Model[]} records The records moved.\n * @param {Number} from The index from which the record was removed (applicable only for flat store).\n * @param {Number} to The index at which the record was inserted (applicable only for flat store).\n * @param {Core.data.Model} newParent The new parent record for the dragged records (applicable only for tree stores)\n */\n me.trigger('move', {\n record: items[0],\n records: items,\n from,\n to\n });\n // The move was in real data. If we are filtered, the\n // filtered set has to be refreshed.\n if (me.isFiltered) {\n me.performFilter();\n }\n me.trigger('change', {\n action,\n record: items[0],\n records: items,\n from,\n to\n });\n break;\n }\n }\n onDataReplaced(action, data) {\n var _me$afterLoadData;\n const me = this,\n {\n storage\n } = me,\n all = storage.allValues,\n sorted = Boolean(me.sorters.length > 0);\n for (let i = 0; i < all.length; i++) {\n all[i].joinStore(me);\n }\n // Need to update group records info (headers and footers)\n const groupRecords = me.prepareGroupRecords();\n // The three operations below, filter, store and sort, all are passed\n // the \"silent\" parameter meaning they do not fire their own events.\n // The 'refresh' and 'change' events after are used to update UIs.\n if (!me.remoteFilter && me.isFiltered) {\n me.filter({\n silent: true\n });\n }\n if (me.remoteSort) {\n if (me.isGrouped) {\n storage.replaceValues({\n values: groupRecords,\n silent: true\n });\n }\n } else {\n // TODO: groupers must just be promoted to be the primary sorters.\n if (me.isGrouped) {\n me.group(null, null, false, !sorted, true);\n }\n // Only request sorting of arriving data if sorting is not remote.\n if (sorted) {\n me.sort(null, null, false, true);\n }\n }\n // Check for duplicate ids, unless user guarantees data validity\n if (!me.useRawData.disableDuplicateIdCheck) {\n const {\n idMap\n } = me;\n if (Object.keys(idMap).length < storage.values.length) {\n // idMap has fewer entries than expected, a duplicate id was used. pick idMap apart to find out which\n const collisions = [];\n storage.values.forEach(r => idMap[r.id] ? delete idMap[r.id] : collisions.push(r));\n throw new Error(`Id collision on ${collisions.map(r => r.id)}`);\n }\n }\n const event = {\n action,\n data,\n records: storage.values\n };\n me.updateDependentStores(action, event.records);\n // Allow subclasses to postprocess a new dataset\n (_me$afterLoadData = me.afterLoadData) === null || _me$afterLoadData === void 0 ? void 0 : _me$afterLoadData.call(me);\n if (!me.isRemoteDataLoading) {\n me.trigger('refresh', event);\n }\n me.trigger('change', event);\n }\n /**\n * This is called from Model after mutating any fields so that Stores can take any actions necessary at that point,\n * and distribute mutation event information through events.\n * @param {Core.data.Model} record The record which has just changed\n * @param {Object} toSet A map of the field names and values that were passed to be set\n * @param {Object} wasSet A map of the fields that were set. Each property is a field name, and\n * the property value is an object containing two properties: `oldValue` and `value` eg:\n * ```javascript\n * {\n * name {\n * oldValue : 'Rigel',\n * value : 'Nigel'\n * }\n * }\n *\n * @param {Boolean} silent Do not trigger events\n * @param {Boolean} fromRelationUpdate Update caused by a change in related model\n * @private\n */\n onModelChange(record, toSet, wasSet, silent, fromRelationUpdate) {\n const me = this,\n event = {\n record,\n records: [record],\n changes: wasSet,\n // Cannot use isBatching, since change is triggered when batching has reached 0\n // (but before it is set to null)\n batch: record.batching != null,\n fromRelationUpdate\n },\n committable = record.ignoreBag || record.isLinked ? false : me.updateModifiedBagForRecord(record);\n // Inform underlying collection of the changes, allowing it to keep any indices up to date\n me.storage.onItemMutation(record, wasSet);\n // Always update indices, otherwise they will be left out of date (was previously skipped when silent)\n if ('id' in wasSet) {\n const {\n oldValue,\n value\n } = toSet.id;\n me.updateDependentRecordIds(oldValue, value);\n me.onRecordIdChange({\n record,\n oldValue,\n value\n });\n }\n if (!silent) {\n if ('id' in wasSet) {\n const {\n oldValue,\n value\n } = toSet.id;\n me.trigger('idChange', {\n store: me,\n record,\n oldValue,\n value\n });\n }\n me.onUpdateRecord(record, wasSet);\n me.trigger('update', event);\n me.trigger('change', Object.assign({\n action: 'update'\n }, event));\n }\n if (me.autoCommit && committable) {\n me.doAutoCommit();\n }\n }\n updateModifiedBagForRecord(record) {\n const me = this;\n let addedToBag = false;\n // Add or remove from our modified Bag\n if (record.isModified) {\n if (!me.modified.includes(record) && !me.added.includes(record) && record.isPartOfStore(me) && !record.isAutoRoot) {\n // When we add a new model first time and the model is not persistable (for example when the model is not valid),\n // it is not added to the \"added\" collection (StoreBag), but only joined to the store.\n // So if the record is not added neither to \"modified\" nor \"added\",\n // need to check if this record is phantom. If so, add it to the \"added\", otherwise to the \"modified\".\n if (record.isPhantom) {\n me.added.add(record);\n } else {\n me.modified.add(record);\n }\n addedToBag = true;\n }\n } else {\n me.modified.remove(record);\n }\n return addedToBag;\n }\n get idMap() {\n const me = this,\n needsRebuild = !me._idMap,\n idMap = me._idMap || (me._idMap = {});\n if (needsRebuild) {\n const processedRecords = me.storage.values;\n for (let record, index = 0, visibleIndex = 0; index < processedRecords.length; index++) {\n record = processedRecords[index];\n idMap[record.id] = {\n index,\n visibleIndex,\n record\n };\n if (!record.isSpecialRow) {\n visibleIndex++;\n }\n }\n }\n return idMap;\n }\n changeModelClass(ClassDef) {\n const {\n fields\n } = this;\n this.originalModelClass = ClassDef;\n let ClassDefEx = ClassDef;\n // Ensure our modelClass is exchanged for an extended of modelClass decorated with any configured fields.\n if (fields !== null && fields !== void 0 && fields.length) {\n ClassDefEx = class extends ClassDef {\n static get fields() {\n return fields;\n }\n };\n }\n // If we expose properties on Model we will pollute all other models, use internal subclass instead\n else if (!this.preventSubClassingModel) {\n ClassDefEx = class extends ClassDef {};\n }\n // Need to properly expose relations on this new subclass\n ClassDefEx.initClass();\n return ClassDefEx;\n }\n //endregion\n //region Store id & map\n // Deprecated.\n // TODO: Remove in 2.0 when all references have been removed from Scheduler and Gantt\n set storeId(storeId) {\n this.id = storeId;\n }\n get storeId() {\n return this.id;\n }\n changeId(id, oldId) {\n return super.changeId(id !== true && id, oldId);\n }\n updateId(id, oldId) {\n // Store code always did just evict any other instance by that ID.\n // TODO: Should we tighten this up?\n const duplicate = Store.getById(id);\n duplicate && Store.unregisterInstance(duplicate);\n super.updateId(id, oldId);\n }\n generateAutoId() {\n return Store.generateId(`store-`);\n }\n get tree() {\n return this._tree;\n }\n set tree(tree) {\n this._tree = tree;\n if (tree && !this.rootNode) {\n this.rootNode = this.buildRootNode();\n this.rootNode.isAutoRoot = true;\n }\n }\n // a hook to build a customized root node\n buildRootNode() {\n return {};\n }\n /**\n * Get a store from the store map by id.\n * @param {String|Number|Object[]} id The id of the store to retrieve, or an array of objects\n * from which to create the contents of a new Store.\n * @returns {Core.data.Store} The store with the specified id\n */\n static getStore(id, storeClass) {\n if (id instanceof Store) {\n return id;\n }\n if (this.getById(id)) {\n return this.getById(id);\n }\n if (Array.isArray(id)) {\n let storeModel;\n const storeData = id.map(item => {\n if (item instanceof Model) {\n storeModel = item.constructor;\n } else if (typeof item === 'string') {\n item = {\n text: item\n };\n } else ;\n return item;\n });\n id = {\n autoCreated: true,\n data: storeData,\n modelClass: storeModel || class extends Model {},\n allowNoId: true // String items have no id and are not guaranteed to be unique\n };\n\n if (!storeClass) {\n storeClass = Store;\n }\n }\n if (storeClass) {\n return new storeClass(id);\n }\n }\n /**\n * Get all registered stores\n * @property {Core.data.Store[]}\n */\n static get stores() {\n return Store.registeredInstances;\n }\n //endregion\n //region Data\n /**\n * The invisible root node of this tree.\n * @property {Core.data.Model}\n * @readonly\n * @category Tree\n */\n get rootNode() {\n return this.masterStore ? this.masterStore.rootNode : this._rootNode;\n }\n set rootNode(rootNode) {\n var _rootNode$children;\n const me = this,\n oldRoot = me._rootNode;\n // No change\n if (rootNode === oldRoot) {\n return;\n }\n if (oldRoot) {\n me.clear(true);\n }\n if (rootNode instanceof Model) {\n // We insist that the rootNode is expanded otherwise no children will be added\n rootNode.instanceMeta(me).collapsed = false;\n me._rootNode = rootNode;\n } else {\n me._rootNode = rootNode = new me.modelClass(Object.assign({\n expanded: true,\n [me.modelClass.idField]: `${me.id}-rootNode`\n }, rootNode), me, null, true);\n }\n me._tree = true;\n rootNode.isRoot = true;\n rootNode.joinStore(me);\n // If there are nodes to be inserted into the flat storage\n // then onNodeAddChild knows how to do that and what events\n // to fire based upon rootNode.isLoading.\n if ((_rootNode$children = rootNode.children) !== null && _rootNode$children !== void 0 && _rootNode$children.length || me.rootVisible) {\n rootNode.isLoading = true;\n me.onNodeAddChild(rootNode, rootNode.children || [], 0);\n rootNode.isLoading = false;\n }\n me.trigger('rootChange', {\n oldRoot,\n rootNode\n });\n }\n /**\n * Sets data in the store.\n *\n * Expects an array of JavaScript objects, with properties matching store's fields (defined on its\n * {@link #config-modelClass model} or in the {@link #config-fields} config).\n *\n * Called on initialization if data is in config otherwise call it yourself after ajax call etc. Can also be used to\n * get the raw original data.\n *\n * ```javascript\n * store.data = [\n * { id : 1, name : 'Linda', city : 'NY' },\n * { id : 2, name : 'Olivia', city : 'Paris' },\n * ...\n * ];\n * ```\n *\n * @property {Object[]}\n * @fires refresh\n * @fires change\n * @category Records\n */\n set data(data) {\n this.setStoreData(data);\n }\n // For overridability in engine\n setStoreData(data) {\n var _data, _data2;\n const me = this,\n {\n idField,\n childrenField\n } = me.modelClass;\n // Take a peek at first data row, and clone data if we are provided immutable objects\n if (me.transformFlatData && ((_data = data) === null || _data === void 0 ? void 0 : _data.length) > 0 && !Object.isExtensible(data[0])) {\n // Avoid cloning object again in Model\n me.useRawData = me.useRawData || {\n disableDuplicateIdCheck: false,\n disableDefaultValue: false,\n disableTypeConversion: false\n };\n data = ObjectHelper.clone(data);\n }\n // Make sure that if the plugins have not been processed yet, we call\n // the temporary property getter which configuration injects to\n // process plugins at this point. Some plugins are required to\n // operate on incoming data.\n me.getConfig('plugins');\n // In case data is loaded during configuration before configuredListeners have been processed\n me.processConfiguredListeners();\n // Allow data as a \"named object\", using keys as ids\n if (data && !Array.isArray(data)) {\n data = ObjectHelper.transformNamedObjectToArray(data, idField);\n }\n // Convert to being a tree store if any of the new rows have a children property\n me.tree = !me.isChained && (me.tree || Boolean(me.autoTree && ((_data2 = data) === null || _data2 === void 0 ? void 0 : _data2.some(r => r[childrenField]))));\n // Store received data order to preserve on sort if remote data loading enabled\n if (data && (me.remoteSort || me.remoteFilter)) {\n for (let i = 0; i < data.length; i++) {\n data[i]._remoteSortIndex = i;\n }\n }\n // Always load a new dataset initially\n if (!me.syncDataOnLoad || !me._data) {\n me._data = data;\n // This means load the root node\n if (me.tree) {\n if (me.transformFlatData) {\n data = me.treeifyFlatData(data);\n }\n const root = me.rootNode;\n root.isLoading = true;\n // Remove data parentId before clearing\n me._data.forEach(record => delete record.parentId);\n // clear silently without marking as removed\n me.clear(true);\n // Append child will detect that this is a dataset operation and trigger sort + events needed\n root.appendChild(data);\n me.updateDependentStores('dataset', [root]);\n root.isLoading = false;\n if (data.length === 0) {\n const event = {\n action: 'dataset',\n data: [],\n records: []\n };\n me.trigger('refresh', event);\n me.trigger('change', event);\n }\n // we must re-apply filters for the filtered tree store\n else if (me.isFiltered) {\n me.filter();\n }\n } else {\n me.loadData(data);\n }\n // loading the store discards all tracked changes\n me.added.clear();\n me.removed.clear();\n me.modified.clear();\n }\n // Sync dataset if configured to do so\n else {\n me.syncDataset(data);\n }\n }\n loadData(data, action = 'dataset') {\n const me = this,\n {\n storage,\n allowNoId\n } = me,\n idField = me.modelClass.fieldMap.id.dataSource;\n let warnGenerated = me.verifyNoGeneratedIds;\n // Need to unregister all groups\n me.removeHeadersAndFooters(me.storage.values);\n me._idMap = null;\n me.oldIdMap = {};\n if (data) {\n const isRaw = !(data[0] instanceof Model);\n if (isRaw) {\n me.modelClass.exposeProperties(data[0]);\n const count = data.length,\n records = new Array(count);\n for (let i = 0; i < count; i++) {\n var _recordData$idField, _recordData$idField$s, _recordData$idField2;\n const recordData = data[i];\n if (!allowNoId && recordData[idField] == null) {\n throw new Error(`Id required but not found on row ${i}`);\n }\n if (warnGenerated && (_recordData$idField = recordData[idField]) !== null && _recordData$idField !== void 0 && (_recordData$idField$s = (_recordData$idField2 = _recordData$idField).startsWith) !== null && _recordData$idField$s !== void 0 && _recordData$idField$s.call(_recordData$idField2, '_generated')) {\n console.warn(`Generated id found in data: ${recordData[idField]}. Generated ids are temporary and should be replaced with real ids by the backend`);\n warnGenerated = false;\n }\n records[i] = me.processRecord(me.createRecord(recordData, true), true);\n records[i].setData('parentIndex', i);\n }\n // clear without marking as removed\n me.clear(true);\n // Allow Collection's own filters to work on the Collection by\n // passing the isNewDataset param as true.\n // The storage Collection may have been set up with its own filters\n // while we are doing remote filtering. An example is ComboBox\n // with filterSelected: true. Records which are in the selection are\n // filtered out of visibility using a filter directly in the Combobox's\n // Store's Collection.\n storage.replaceValues({\n values: records,\n isNewDataset: true,\n silent: true\n });\n } else {\n // clear without marking as removed\n me.clear(true);\n storage.replaceValues({\n values: data.slice(),\n isNewDataset: true,\n silent: true\n });\n }\n me._data = data;\n me.onDataReplaced(action, data);\n } else {\n // clear without marking as removed\n me.clear(true);\n me._data = null;\n }\n me.isSyncingDataOnLoad = false;\n }\n get data() {\n return this._data;\n }\n /**\n * Creates an array of records from this store from the `start` to the `end' - 1\n * @param {Number} [start] The index of the first record to return\n * @param {Number} [end] The index *after* the last record to return `(start + length)`\n * @returns {Core.data.Model[]} The requested records.\n * @category Records\n */\n getRange(start, end, all = true) {\n return (all ? this.storage.allValues : this.storage.values).slice(start, end);\n }\n /**\n * Creates a model instance, used internally when data is set/added. Override this in a subclass to do your own custom\n * conversion from data to record.\n * @param {Object} data Json data\n * @param {Boolean} [skipExpose] Supply true when batch setting to not expose properties multiple times\n * @category Records\n */\n createRecord(data, skipExpose = false, rawData = false) {\n return new this.modelClass(data, this, null, skipExpose, false, rawData);\n }\n processRecord(record, isDataset = false) {\n return record;\n }\n refreshData() {\n this.filter();\n this.sort();\n }\n onRecordIdChange({\n record,\n oldValue,\n value\n }) {\n const me = this,\n idMap = me._idMap,\n {\n idRegister,\n oldIdMap\n } = me;\n me.storage._indicesInvalid = true;\n // Remember the record used to have this identifier\n // this is used by STM to understand when a foreign key\n // value update really means targeting other record or\n // it's just a reaction to the target record id change\n oldIdMap[oldValue] = record;\n // Update idMap to reflect the changed id. Some code paths (auto syncing changes with CrudManager) will lead to\n // idMap already being up-to-date when we get here\n if (idMap && !idMap[value]) {\n const entry = idMap[oldValue];\n delete idMap[oldValue];\n idMap[value] = entry;\n }\n me.added.changeId(oldValue, value);\n me.removed.changeId(oldValue, value);\n me.modified.changeId(oldValue, value);\n delete idRegister[oldValue];\n idRegister[value] = record;\n record.index = me.storage.indexOf(record);\n }\n onUpdateRecord(record, changes) {\n const me = this,\n {\n internalId\n } = changes,\n {\n internalIdRegister\n } = me;\n if (internalId) {\n this.storage._indicesInvalid = true;\n delete internalIdRegister[internalId.oldValue];\n internalIdRegister[internalId.value] = record;\n }\n // Reapply filters when records change?\n if (me.reapplyFilterOnUpdate && me.isFiltered) {\n me.filter();\n }\n }\n get useRawData() {\n return this._useRawData;\n }\n set useRawData(options) {\n if (options === true) {\n this._useRawData = {\n enabled: true,\n disableDuplicateIdCheck: true,\n disableTypeConversion: true,\n disableDefaultValue: false\n };\n } else {\n this._useRawData = options ? Object.assign(options, {\n enabled: true\n }) : {\n enabled: false\n };\n }\n }\n //endregion\n //region Count\n /**\n * Number of records in the store\n * @param {Boolean} [countProcessed] Count processed (true) or real records (false)\n * @returns {Number} Record count\n * @category Records\n */\n getCount(countProcessed = true) {\n return countProcessed ? this.count : this.originalCount;\n }\n /**\n * Record count, for data records. Not including records added for group headers etc.\n * @property {Number}\n * @readonly\n * @category Records\n */\n get originalCount() {\n var _this$groupRecords;\n return this.storage.totalCount - (((_this$groupRecords = this.groupRecords) === null || _this$groupRecords === void 0 ? void 0 : _this$groupRecords.length) || 0);\n }\n /**\n * Record count, including records added for group headers etc.\n * @property {Number}\n * @readonly\n * @category Records\n */\n get count() {\n return this.storage.count;\n }\n /**\n * Returns the complete dataset size regardless of tree node collapsing or filtering\n * @property {Number}\n * @readonly\n * @category Records\n */\n get allCount() {\n return this.isTree ? this.rootNode.descendantCount : this.storage.totalCount;\n }\n //endregion\n //region Get record(s)\n // TODO: Implement immutable tag for docs #1206\n /**\n * Returns all \"visible\" records.\n * **Note:** The returned value **may not** be mutated!\n * @property {Core.data.Model[]}\n * @readonly\n * @immutable\n * @category Records\n */\n get records() {\n return this.storage.values;\n }\n /**\n * Get the first record in the store.\n * @property {Core.data.Model}\n * @readonly\n * @category Records\n */\n get first() {\n return this.storage.values[0];\n }\n /**\n * Get the last record in the store.\n * @property {Core.data.Model}\n * @readonly\n * @category Records\n */\n get last() {\n return this.storage.values[this.storage.values.length - 1];\n }\n /**\n * Get the record at the specified index\n * @param {Number} index Index for the record\n * @returns {Core.data.Model} Record at the specified index\n * @category Records\n */\n getAt(index, all = false) {\n // all means include filtered out records\n return this.storage.getAt(index, all);\n }\n // These are called by Model#join and Model#unjoin\n // register a record as a findable member keyed by id and internalId\n register(record) {\n const me = this;\n if (!me.useRawData.disableDuplicateIdCheck) {\n // Test for duplicate IDs on register only when a tree store.\n // loadData does it in the case of a non-tree\n const existingRec = me.isTree && me.idRegister[record.id];\n if (existingRec && existingRec !== record) {\n throw new Error(`Id collision on ${record.id}`);\n }\n }\n me.idRegister[record.id] = record;\n me.internalIdRegister[record.internalId] = record;\n }\n unregister(record) {\n delete this.idRegister[record.id];\n delete this.internalIdRegister[record.internalId];\n }\n get registeredRecords() {\n return Object.values(this.idRegister);\n }\n /**\n * Get a record by id. Find the record even if filtered out, part of collapsed group or collapsed node\n * @param {Core.data.Model|String|Number} id Id of record to return.\n * @returns {Core.data.Model} A record with the specified id\n * @category Records\n */\n getById(id) {\n // In case `id` is a record, we use its ID to try to find the record in the store,\n // because if the record is removed from the store it shouldn't be found.\n // if (id instanceof Model) {\n // id = id.id;\n // }\n if (id !== null && id !== void 0 && id.isModel) {\n const record = id;\n // When asking for a record that has links, we resolve first link if original is not found.\n // This allows `linkedStore.isAvailable(original)` to return true and `linkedStore.getById(original)` to\n // return the linked record.\n if (record.hasLinks && !this.storage.allValues.includes(record)) {\n return record.$links.find(r => this.storage.allValues.includes(r));\n }\n return record;\n }\n //return this.tree ? this.idRegister[id] : this.storage.get(id);\n return this.idRegister[id];\n }\n /**\n * Checks if a record is available, in the sense that it is not filtered out,\n * hidden in a collapsed group or in a collapsed node.\n * @param {Core.data.Model|String|Number} recordOrId Record to check\n * @returns {Boolean}\n * @category Records\n */\n isAvailable(recordOrId) {\n const record = this.getById(recordOrId);\n return record && this.storage.includes(record) || false;\n }\n /**\n * Get a record by internalId.\n * @param {Number} internalId The internalId of the record to return\n * @returns {Core.data.Model} A record with the specified internalId\n * @category Records\n */\n getByInternalId(internalId) {\n return this.internalIdRegister[internalId];\n }\n /**\n * Checks if the specified record is contained in the store\n * @param {Core.data.Model|String|Number} recordOrId Record, or `id` of record\n * @returns {Boolean}\n * @category Records\n */\n includes(recordOrId) {\n if (this.isTree) {\n return this.idRegister[Model.asId(recordOrId)] != null;\n }\n return this.indexOf(recordOrId) > -1;\n }\n //endregion\n //region Get index\n /**\n * Returns the index of the specified record/id, or `-1` if not found.\n * @param {Core.data.Model|String|Number} recordOrId Record, or `id` of record to return the index of.\n * @param {Boolean} [visibleRecords] Pass `true` to find the visible index.\n * as opposed to the dataset index. This omits group header records.\n * @returns {Number} Index for the record/id, or `-1` if not found.\n * @category Records\n */\n indexOf(recordOrId, visibleRecords = false) {\n // Only check records actually in the store ($store is for objectify scenario)\n if (recordOrId !== null && recordOrId !== void 0 && recordOrId.isModel && !recordOrId.stores.includes(this.$store || this)) {\n // When asking for a record that has links, we resolve first link if original is not found.\n // This allows finding index for links using relations to original records (dep -> event for example)\n const linkedRecord = recordOrId.$links.find(r => this.storage.allValues.includes(r));\n if (linkedRecord) {\n return this.indexOf(linkedRecord, visibleRecords);\n }\n return -1;\n }\n // When a tree, indexOf is always in the visible records - filtering is different in trees.\n if (this.isTree) {\n // Cheaper than this.storage.indexOf() which takes a detour to result in the same call\n return this.storage.values.indexOf(this.getById(recordOrId));\n }\n const id = Model.asId(recordOrId);\n if (id == null) {\n return -1;\n }\n const found = this.idMap[id];\n return found ? found[visibleRecords ? 'visibleIndex' : 'index'] : -1;\n }\n allIndexOf(recordOrId) {\n if (this.isTree) {\n const record = this.getById(recordOrId);\n let result = -1;\n // Use the tree structure to get the index in tree walk order\n if (record) {\n record.bubble(n => {\n if (n.parent) {\n result += n.parentIndex + 1;\n } else if (n === this.rootNode && this.rootVisible) {\n result += 1;\n }\n });\n }\n return result;\n } else {\n return this.storage.indexOf(recordOrId, true);\n }\n }\n //endregion\n //region Get values\n /**\n * Returns an array of distinct values for the specified field.\n *\n * ```javascript\n * store.getDistinctValues('age'); // Returns an array of the unique age values\n * ```\n *\n * @param {String} field Field to extract values for\n * @param {Boolean} [searchAllRecords] True to ignore any applied filters\n * @returns {Array} Array of values\n * @category Values\n */\n getDistinctValues(field, searchAllRecords = false) {\n const me = this,\n values = [],\n keys = {};\n let value;\n me.forEach(r => {\n if (!r.isSpecialRow && !r.isRoot) {\n value = r.get(field);\n const primitiveValue = value instanceof Date ? value.getTime() : value;\n if (!keys[primitiveValue]) {\n values.push(value);\n keys[primitiveValue] = 1;\n }\n }\n }, me, searchAllRecords);\n return values;\n }\n /**\n * Counts how many times specified value appears in the store\n * @param {String} field Field to look in\n * @param {*} value Value to look for\n * @returns {Number} Found count\n * @category Values\n */\n getValueCount(field, value) {\n let count = 0;\n this.forEach(r => {\n if (ObjectHelper.isEqual(r.get(field), value)) count++;\n });\n return count;\n }\n //endregion\n //region JSON & console\n /**\n * Retrieve or set the data of all records as a JSON string\n *\n * ```javascript\n * const store = new Store({\n * data : [\n * { id : 1, name : 'Superman' },\n * { id : 2, name : 'Batman' }\n * ]\n * });\n *\n * const jsonString = store.json;\n *\n * //jsonString:\n * '[{\"id\":1,\"name\":\"Superman\"},{\"id\":2,\"name\":\"Batman\"}]\n * ```\n *\n * @property {String}\n */\n set json(json) {\n if (typeof json === 'string') {\n json = StringHelper.safeJsonParse(json);\n }\n this.data = json;\n }\n get json() {\n return StringHelper.safeJsonStringify(this);\n }\n /**\n * Pretty printed version of {@link #property-json}\n * @readonly\n * @property {String}\n */\n get formattedJSON() {\n return StringHelper.safeJsonStringify(this, null, 4);\n }\n /**\n * Retrieve the data of all (unfiltered) records as an array of JSON objects.\n *\n * ```javascript\n * const store = new Store({\n * data : [\n * { id : 1, name : 'Superman' },\n * { id : 2, name : 'Batman' }\n * ]\n * });\n *\n * const jsonArray = store.toJSON();\n *\n * //jsonArray:\n * [{id:1,name:\"Superman\"},{id:2,name:\"Batman\"}]\n * ```\n *\n * @returns {Object[]}\n */\n toJSON() {\n // extract entire structure.\n // If we're a tree, then that consists of the payload of the rootNode.\n return (this.isTree ? this.rootNode.unfilteredChildren || this.rootNode.children || [] : this.allRecords).map(record => record.toJSON());\n }\n //endregion\n //region Extract config\n // These functions are not meant to be called by any code other than Base#getCurrentConfig()\n preProcessCurrentConfigs(configs) {\n super.preProcessCurrentConfigs(configs);\n delete configs.project;\n }\n // Extract current data for all accessible records\n getInlineData(options) {\n const data = [];\n if (this.tree) {\n var _this$rootNode$childr;\n (_this$rootNode$childr = this.rootNode.children) === null || _this$rootNode$childr === void 0 ? void 0 : _this$rootNode$childr.forEach(r => data.push(r.getCurrentConfig(options)));\n } else {\n this.forEach(r => data.push(r.getCurrentConfig(options)));\n }\n return data;\n }\n // Extract current configs and data\n getCurrentConfig(options) {\n const result = super.getCurrentConfig(options),\n {\n state\n } = this;\n if (result) {\n var _result$modelClass;\n // Replace initial data with values from current records\n if (result.data) {\n result.data = this.getInlineData(options);\n }\n // Never include project or stm\n delete result.project;\n delete result.stm;\n delete result.asyncEvents;\n // Exclude default modelClass, gets added to config by engine, spam\n if (((_result$modelClass = result.modelClass) === null || _result$modelClass === void 0 ? void 0 : _result$modelClass.$meta.hierarchy[result.modelClass.$meta.hierarchy.length - 2]) === this.constructor.defaultConfig.modelClass) {\n delete result.modelClass;\n }\n // Pollution from grid\n if (!this.tree) {\n delete result.tree;\n }\n // Include current state\n if (state) {\n Object.assign(result, state);\n }\n }\n return result;\n }\n //endregion\n //region Iteration & traversing\n /**\n * Iterates over all normal records in store. Omits group header and footer records if this store is grouped.\n * @param {Function} fn A function that is called for each record. Returning `false` from that function cancels\n * iteration. It is called with the following arguments:\n * @param {Core.data.Model} fn.record Current record\n * @param {Number} fn.index Current index\n * @param {Object} [thisObj] `this` reference for the function\n * @param {Object|Boolean} [options] A boolean for `includeFilteredOutRecords`, or detailed options for\n * exclude/include records\n * @param {Boolean} [options.includeFilteredOutRecords] `true` to also include filtered out records\n * @param {Boolean} [options.includeCollapsedGroupRecords] `true` to also include records from collapsed groups of\n * grouped store\n * @category Iteration\n */\n forEach(fn, thisObj = this, options) {\n // backward compatibility to support includeFilteredOutRecords parameter instead of options\n options = options === undefined ? false : options;\n // TODO clean up and remove boolean option\n if (typeof options === 'boolean') {\n options = {\n includeFilteredOutRecords: options,\n includeCollapsedGroupRecords: false\n };\n }\n const callback = (r, i) => {\n if (!r.isRoot && !r.isSpecialRow) {\n return fn.call(thisObj, r, i);\n }\n };\n if (this.isTree) {\n this.rootNode.traverseWhile(callback, false, options.includeFilteredOutRecords);\n } else {\n // native forEach cannot be aborted by returning false, have to loop \"manually\"\n const records = options.includeFilteredOutRecords ? this.storage.allValues : this.storage.values;\n // grouped store has own tree-like structure, but cannot be handled like a regular tree\n if (this.isGrouped && options.includeCollapsedGroupRecords) {\n for (let i = 0; i < records.length; i++) {\n const record = records[i];\n if (record.groupChildren && record.meta.collapsed === true) {\n for (let j = 0; j < record.groupChildren.length; j++) {\n const rec = record.groupChildren[j];\n if (callback(rec, j) === false) {\n return;\n }\n }\n } else if (callback(record, i) === false) {\n return;\n }\n }\n } else {\n for (let i = 0; i < records.length; i++) {\n if (callback(records[i], i) === false) {\n return;\n }\n }\n }\n }\n }\n /**\n * Equivalent to Array.map(). Creates a new array with the results of calling a provided function on every record\n * @param {Function} fn\n * @returns {Array}\n * @category Iteration\n */\n map(fn, thisObj = this) {\n return this.storage.values.map(fn, thisObj);\n }\n /**\n * Equivalent to Array.every(). Returns `true` if every call of the provided function\n * on each record yields a truthy value.\n * @param {Function} fn\n * @param {Function} fn.record The record to test.\n * @param {Object} [thisObj] The `this` reference to call the function with. Defaults to this Store.\n * @param {Boolean} [ignoreFilters] Pass `true` to iterate all records including filtered out ones.\n * @returns {Array}\n * @category Iteration\n */\n every(fn, thisObj = this, ignoreFilters) {\n return this.storage[ignoreFilters ? 'allValues' : 'values'].every(fn, thisObj);\n }\n /**\n * Equivalent to Array.reduce(). Applies a function against an accumulator and each record (from left to right) to\n * reduce it to a single value.\n * @param {Function} fn\n * @param {*} initialValue\n * @returns {*}\n * @category Iteration\n */\n reduce(fn, initialValue = [], thisObj = this) {\n if (thisObj !== this) {\n fn = fn.bind(thisObj);\n }\n return this.storage.values.reduce(fn, initialValue, thisObj);\n }\n /**\n * Iterator that allows you to do for (let record of store)\n * @category Iteration\n */\n [Symbol.iterator]() {\n return this.storage.values[Symbol.iterator]();\n }\n /**\n * Traverse all tree nodes (only applicable for Tree Store)\n * @param {Function} fn The function to call on visiting each node.\n * @param {Core.data.Model} [topNode=this.rootNode] The top node to start the traverse at.\n * @param {Boolean} [skipTopNode] Pass true to not call `fn` on the top node, but proceed directly to its children.\n * @param {Object|Boolean} [options] A boolean for includeFilteredOutRecords, or detailed options for exclude/include records\n * @param {Boolean} [options.includeFilteredOutRecords] True to also include filtered out records\n * @param {Boolean} [options.includeCollapsedGroupRecords] True to also include records from collapsed groups of grouped store\n * @category Traverse\n */\n traverse(fn, topNode = this.rootNode, skipTopNode = topNode === this.rootNode, options) {\n // backward compatibility to support includeFilteredOutRecords parameter instead of options\n options = options === undefined ? false : options;\n // TODO remove boolean option\n if (typeof options === 'boolean') {\n options = {\n includeFilteredOutRecords: options,\n includeCollapsedGroupRecords: false\n };\n }\n const me = this;\n if (me.isTree) {\n // Allow store.traverse(fn, true) to start from rootNode\n if (typeof topNode === 'boolean') {\n skipTopNode = topNode;\n topNode = me.rootNode;\n }\n if (me.isChained) {\n const passedFn = fn;\n fn = node => {\n if (me.chainedFilterFn(node)) {\n passedFn(node);\n }\n };\n }\n topNode.traverse(fn, skipTopNode, options.includeFilteredOutRecords);\n } else {\n me.forEach(rec => rec.traverse(fn, false, options.includeFilteredOutRecords), me, options);\n }\n }\n /**\n * Traverse all tree nodes while the passed `fn` returns true\n * @param {Function} fn The function to call on visiting each node. Returning `false` from it stops the traverse.\n * @param {Core.data.Model} [topNode=this.rootNode] The top node to start the traverse at.\n * @param {Boolean} [skipTopNode] Pass true to not call `fn` on the top node, but proceed directly to its children.\n * @category Traverse\n */\n traverseWhile(fn, topNode = this.rootNode, skipTopNode = topNode === this.rootNode) {\n const me = this;\n if (me.isTree) {\n // Allow store.traverse(fn, true) to start from rootNode\n if (typeof topNode === 'boolean') {\n skipTopNode = topNode;\n topNode = me.rootNode;\n }\n if (me.isChained) {\n const passedFn = fn;\n fn = node => {\n if (me.chainedFilterFn(node)) {\n passedFn(node);\n }\n };\n }\n topNode.traverseWhile(fn, skipTopNode);\n } else {\n for (const record of me.storage) {\n if (record.traverse(fn) === false) {\n break;\n }\n }\n }\n }\n /**\n * Finds the next record.\n * @param {Core.data.Model|String|Number} recordOrId Current record or its id\n * @param {Boolean} [wrap=false] Wrap at start/end or stop there\n * @param {Boolean} [skipSpecialRows=false] True to not return specialRows like group headers\n * @returns {Core.data.Model} Next record or null if current is the last one\n * @category Traverse\n */\n getNext(recordOrId, wrap = false, skipSpecialRows = false) {\n const me = this,\n records = me.storage.values;\n let idx = me.indexOf(recordOrId);\n if (idx >= records.length - 1) {\n if (wrap) {\n idx = -1;\n } else {\n return null;\n }\n }\n const record = records[idx + 1];\n // Skip the result if it's a specialRow and we are told to skip them\n if (skipSpecialRows && record && record.isSpecialRow) {\n return me.getNext(records[idx + 1], wrap, true);\n }\n return record;\n }\n /**\n * Finds the previous record.\n * @param {Core.data.Model|String|Number} recordOrId Current record or its id\n * @param {Boolean} [wrap=false] Wrap at start/end or stop there\n * @param {Boolean} [skipSpecialRows=false] True to not return specialRows like group headers\n * @returns {Core.data.Model} Previous record or null if current is the last one\n * @category Traverse\n */\n getPrev(recordOrId, wrap = false, skipSpecialRows = false) {\n const me = this,\n records = me.storage.values;\n let idx = me.indexOf(recordOrId);\n if (idx === 0) {\n if (wrap) {\n idx = records.length;\n } else {\n return null;\n }\n }\n const record = records[idx - 1];\n // Skip the result if it's a specialRow and we are told to skip them\n if (skipSpecialRows && record && record.isSpecialRow && idx > 0) {\n return me.getPrev(records[idx - 1], wrap, true);\n }\n return record;\n }\n /**\n * Gets the next or the previous record. Optionally wraps from first -> last and vice versa\n * @param {String|Core.data.Model} recordOrId Record or records id\n * @param {Boolean} next Next (true) or previous (false)\n * @param {Boolean} wrap Wrap at start/end or stop there\n * @param {Boolean} [skipSpecialRows=false] True to not return specialRows like group headers\n * @returns {Core.data.Model}\n * @category Traverse\n * @internal\n */\n getAdjacent(recordOrId, next = true, wrap = false, skipSpecialRows = false) {\n return next ? this.getNext(recordOrId, wrap, skipSpecialRows) : this.getPrev(recordOrId, wrap, skipSpecialRows);\n }\n /**\n * Finds the next record among leaves (in a tree structure)\n * @param {Core.data.Model|String|Number} recordOrId Current record or its id\n * @param {Boolean} [wrap] Wrap at start/end or stop there\n * @returns {Core.data.Model} Next record or null if current is the last one\n * @category Traverse\n * @internal\n */\n getNextLeaf(recordOrId, wrap = false) {\n const me = this,\n records = me.leaves,\n record = me.getById(recordOrId);\n let idx = records.indexOf(record);\n if (idx >= records.length - 1) {\n if (wrap) {\n idx = -1;\n } else {\n return null;\n }\n }\n return records[idx + 1];\n }\n /**\n * Finds the previous record among leaves (in a tree structure)\n * @param {Core.data.Model|String|Number} recordOrId Current record or its id\n * @param {Boolean} [wrap] Wrap at start/end or stop there\n * @returns {Core.data.Model} Previous record or null if current is the last one\n * @category Traverse\n * @internal\n */\n getPrevLeaf(recordOrId, wrap = false) {\n const me = this,\n records = me.leaves,\n record = me.getById(recordOrId);\n let idx = records.indexOf(record);\n if (idx === 0) {\n if (wrap) {\n idx = records.length;\n } else {\n return null;\n }\n }\n return records[idx - 1];\n }\n /**\n * Gets the next or the previous record among leaves (in a tree structure). Optionally wraps from first -> last and\n * vice versa\n * @param {String|Core.data.Model} recordOrId Record or record id\n * @param {Boolean} [next] Next (true) or previous (false)\n * @param {Boolean} [wrap] Wrap at start/end or stop there\n * @returns {Core.data.Model}\n * @category Traverse\n * @internal\n */\n getAdjacentLeaf(recordOrId, next = true, wrap = false) {\n return next ? this.getNextLeaf(recordOrId, wrap) : this.getPrevLeaf(recordOrId, wrap);\n }\n //endregion\n}\n\nStore.initClass();\nStore._$name = 'Store';\n\n/**\n * @module Core/data/AjaxStore\n */\n/**\n * Http methods used by the AjaxStore in restful mode.\n * @typedef {Object} HttpMethods\n * @property {'POST'|'PUT'} create\n * @property {'GET'|'POST'} read\n * @property {'PATCH'|'POST'|'PUT'} update\n * @property {'DELETE'|'POST'} delete\n */\nconst processParamEntry = (paramArray, entry) => {\n if (Array.isArray(entry[1])) {\n entry[1].forEach(value => paramArray.push(encodeURIComponent(entry[0]) + '=' + encodeURIComponent(value)));\n } else {\n paramArray.push(encodeURIComponent(entry[0]) + '=' + encodeURIComponent(entry[1]));\n }\n return paramArray;\n },\n immediatePromise$6 = Promise.resolve();\n/**\n * Store that uses the [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) to read data\n * from a remote server, and optionally sends synchronization requests to the server containing information about\n * locally created, modified and deleted records.\n *\n * ## Create\n * Posts array of JSON data for newly added records to {@link #config-createUrl}, expects response containing an array\n * of JSON objects in same order with id set (uses Model#idField as id).\n *\n * ## Read\n * Reads array of JSON data from the data packet returned from the {@link #config-readUrl}. Unique id for each row is\n * required.\n *\n * By default looks in field 'id' but can be configured by setting {@link Core.data.Model#property-idField-static}.\n *\n * ## Update\n * Posts array of JSON data containing modified records to {@link #config-updateUrl}. By default, only changed fields\n * and any fields configured with {@link Core.data.field.DataField#config-alwaysWrite} are sent.\n * If you want all fields to always be sent, please see {@link #config-writeAllFields}\n *\n * ## Delete\n * Posts to {@link #config-deleteUrl} with removed records ids (for example id=1,4,7).\n *\n * ```javascript\n * new AjaxStore({\n * createUrl : 'php/create',\n * readUrl : 'php/read',\n * updateUrl : 'php/update',\n * deleteUrl : 'php/delete',\n * modelClass : Customer\n * });\n * ```\n *\n * ## Pagination\n * Configuring an `AjaxStore` with {@link #config-pageParamName} or {@link #config-pageStartParamName} means that the\n * store requests **pages** of data from the remote source, sending the configured {@link #config-pageParamName} or\n * {@link #config-pageStartParamName} to request the page along with the {@link #config-pageSizeParamName}.\n *\n * If `pageParamName` is set, that is passed with the requested page number **(one based)**, along with the\n * {@link #config-pageSizeParamName}.\n *\n * If `pageStartParamName` is set, that is passed with the requested page starting record index **(zero based)**, along\n * with the {@link #config-pageSizeParamName}.\n *\n * ## Remote filtering\n * To specify that filtering is the responsibility of the server, configure the store with\n * `{@link #config-filterParamName}: 'nameOfFilterParameter'`\n *\n * When this is set, any {@link Core.data.mixin.StoreFilter#function-filter} operation causes the store to reload\n * itself, encoding the filters as JSON representations in the {@link #config-filterParamName} HTTP parameter.\n *\n * The filters will look like this:\n * ```javascript\n * {\n * \"field\": \"country\",\n * \"operator\": \"=\",\n * \"value\": \"sweden\",\n * \"caseSensitive\": false\n * }\n * ```\n *\n * The encoding may be overridden by configuring an implementation of {@link #function-encodeFilterParams}\n * into the store which returns the value for the {@link #config-filterParamName} when passed an _Iterable_ of filters.\n *\n * ## Remote sorting\n * To specify that sorting is the responsibility of the server, configure the store with\n * `{@link #config-sortParamName}: 'nameOfSortParameter'`\n *\n * When this is set, any {@link Core.data.mixin.StoreSort#function-sort} operation causes the store to\n * reload itself, encoding the sorters as JSON representations in the {@link #config-sortParamName} HTTP\n * parameter.\n *\n * The sorters will look like this:\n * ```javascript\n * {\n * \"field\": \"name\",\n * \"ascending\": true\n * }\n * ```\n *\n * The encoding may be overridden by configuring an implementation of {@link #function-encodeSorterParams}\n * into the store which returns the value for the {@link #config-sortParamName} when passed an _Iterable_ of sorters.\n *\n * ## Passing HTTP headers\n * As mentioned above `AjaxStore` uses the Fetch API under the hood. Specify {@link #config-fetchOptions} and/or\n * {@link #config-headers} to have control over the options passed with all fetch calls. For example to pass along an\n * authorization header:\n *\n * ```javascript\n * const store = new AjaxStore({\n * headers : {\n * Authorization : 'auth-contents-goes-here'\n * }\n * });\n * ```\n *\n * Learn more about the Fetch API over at [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch).\n *\n * @extends Core/data/Store\n */\nclass AjaxStore extends Store {\n // region Events\n /**\n * Fired when a remote request fails, either at the network level, or the server returns a failure, or an invalid\n * response.\n *\n * Note that when a {@link #function-commit} fails, more than one exception event will be triggered. The individual\n * operation, `create`, `update` or `delete` will trigger their own `exception` event, but the encapsulating commit\n * operation will also trigger an `exception` event when all the operations have finished, so if exceptions are\n * going to be handled gracefully, the event's `action` property must be examined, and the constituent operations of\n * the event must be examined.\n * @event exception\n * @param {Core.data.Store} source This Store\n * @param {Boolean} exception `true`\n * @param {'create'|'read'|'update'|'delete'|'commit'} action Action that failed, `'create'`, `'read'`,\n * `'update'` or `'delete'`. May also be fired with '`commit'` to indicate the failure of an aggregated `create`,\n * `update` and `delete` operation. In this case, the event will contain a property for each operation of the commit\n * named `'create'`, `'update'` and `'delete'`, each containing the individual `exception` events.\n * @param {'network'|'failure'} exceptionType The type of failure, `'network'` or `'server'`\n * @param {Response} response the `Response` object\n * @param {Object} json The decoded response object *if the exceptionType is `'server'`*\n */\n /**\n * Fired after committing added records\n * @event commitAdded\n * @param {Core.data.Store} source This Store\n */\n /**\n * Fired after committing modified records\n * @event commitModified\n * @param {Core.data.Store} source This Store\n */\n /**\n * Fired on successful load\n * @event load\n * @param {Core.data.Store} source This Store\n * @param {Object[]} data Data loaded\n * @param {Response} response the `Response` object\n * @param {Object} json The decoded response object.\n */\n /**\n * Fired on successful load of remote child nodes for a tree node.\n * @event loadChildren\n * @param {Core.data.Store} source This Store\n * @param {Object[]} data Data loaded\n * @param {Object} json The decoded response object.\n */\n /**\n * Fired after committing removed records\n * @event commitRemoved\n * @param {Core.data.Store} source This Store\n */\n /**\n * Fired before loading starts. Allows altering parameters and is cancelable\n * @event beforeLoad\n * @preventable\n * @param {Core.data.Store} source This Store\n * @param {Object} params An object containing property/name pairs which are the parameters.\n * This may be mutated to affect the parameters used in the Ajax request.\n */\n /**\n * Fired before loading of remote child nodes of a tree node starts. Allows altering parameters and is cancelable\n * @event beforeLoadChildren\n * @preventable\n * @param {Core.data.Store} source This Store\n * @param {Object} params An object containing property/name pairs which are the parameters.\n * This may be mutated to affect the parameters used in the Ajax request.\n */\n /**\n * When the store {@link #property-isPaged is paged}, this is fired before loading a page and is cancelable\n * @event beforeLoadPage\n * @preventable\n * @param {Core.data.Store} source This Store\n * @param {Object} params An object containing property/name pairs which are the parameters.\n * This may be mutated to affect the parameters used in the Ajax request.\n */\n /**\n * Fired when loading is beginning. This is not cancelable. Parameters in the event may still be\n * mutated at this stage.\n * @event loadStart\n * @param {Core.data.Store} source This Store\n * @param {Object} params An object containing property/name pairs which are the parameters.\n * This may be mutated to affect the parameters used in the Ajax request.\n */\n /**\n * Fired when loading of remote child nodes into a tree node is beginning. This is not cancelable. Parameters in the\n * event may still be mutated at this stage.\n * @event loadChildrenStart\n * @param {Core.data.Store} source This Store\n * @param {Object} params An object containing property/name pairs which are the parameters.\n * This may be mutated to affect the parameters used in the Ajax request.\n */\n /**\n * Fired before any remote request is initiated.\n * @event beforeRequest\n * @param {Core.data.Store} source This Store\n * @param {Object} params An object containing key/value pairs that are passed on the request query string\n * @param {Object} body The body of the request to be posted to the server.\n * @param {'create'|'read'|'update'|'delete'} action Action that is making the request, `'create'`,\n * `'read'`, `'update'` or `'delete'`\n */\n /**\n * Fired after any remote request has finished whether successfully or unsuccessfully.\n * @event afterRequest\n * @param {Boolean} exception `true`. *Only present if the request triggered an exception.*\n * @param {'create'|'read'|'update'|'delete'} action Action that has finished, `'create'`, `'read'`,\n * `'update'` or `'delete'`\n * @param {'network'|'failure'} exceptionType The type of failure, `'network'` or `'server'`. *Only present\n * if the request triggered an exception.*\n * @param {Response} response The `Response` object\n * @param {Object} json The decoded response object if there was no `'network'` exception.\n */\n // endregion\n //region Config\n static get defaultConfig() {\n return {\n /**\n * A string keyed object containing the HTTP headers to add to each server request issued by this store.\n *\n * `AjaxStore` uses the Fetch API under the hood, read more about headers on\n * [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#headers)\n *\n * Example usage:\n *\n * ```javascript\n * const store = new AjaxStore({\n * headers : {\n * Authorization : 'auth-contents-goes-here'\n * }\n * });\n * ```\n *\n * @config {Object}\n * @category Remote\n */\n headers: null,\n /**\n * An object containing the Fetch options to pass to each server request issued by this store. Use this to\n * control if credentials are sent and other options, read more at\n * [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#supplying_request_options).\n *\n * Example usage:\n *\n * ```javascript\n * const store = new AjaxStore({\n * fetchOptions : {\n * credentials : 'omit',\n * redirect : 'error'\n * }\n * });\n * ```\n *\n * @config {Object}\n * @category Remote\n */\n fetchOptions: null,\n /**\n * Specify `true` to send payloads as form data, `false` to send as regular JSON.\n * @config {Boolean}\n * @default false\n * @category Remote\n */\n sendAsFormData: null,\n /**\n * Specify `true` to send all model fields when committing modified records (as opposed to just the\n * modified fields)\n * @config {Boolean}\n * @default false\n * @category Remote\n */\n writeAllFields: null,\n /**\n * The name of the HTTP parameter passed to this Store's {@link #config-readUrl} to indicate the node `id`\n * to load when loading child nodes on demand if the node being expanded was created with data containing\n * `children: true`.\n * @config {String}\n * @default\n * @category Remote\n */\n parentIdParamName: 'id',\n /**\n * The optional property name in JSON responses from the server that contains a boolean\n * success/fail status.\n * ```json\n * {\n * \"responseMeta\" : {\n * {\n * \"success\" : true,\n * \"count\" : 100\n * },\n * // The property name used here should match that of 'responseDataProperty'\n * \"data\" : [\n * ...\n * ]\n * }\n * ```\n *\n * The store would be configured with:\n * ```javascript\n * {\n * ...\n * successDataProperty : 'responseMeta.success',\n * responseTotalProperty : 'responseMeta.count'\n * ...\n * }\n *\n * ```\n * @config {String}\n * @default\n * @category Remote\n */\n responseSuccessProperty: 'success',\n /**\n * The property name in JSON responses from the server that contains the data for the records\n * ```json\n * {\n * \"success\" : true,\n * // The property name used here should match that of 'responseDataProperty'\n * \"data\" : [\n * ...\n * ]\n * }\n * ```\n * @config {String}\n * @default\n * @category Remote\n */\n responseDataProperty: 'data',\n /**\n * The property name in JSON responses from the server that contains the dataset total size\n * **when this store {@link #property-isPaged is paged}**\n * ```json\n * {\n * \"success\" : true,\n * // The property name used here should match that of 'responseDataProperty'\n * \"data\" : [\n * ...\n * ],\n * // The property name used here should match that of 'responseTotalProperty'\n * \"total\" : 65535\n * }\n * ```\n * @config {String}\n * @default\n * @category Remote\n */\n responseTotalProperty: 'total',\n /**\n * The name of the HTTP parameter to use to pass any encoded filters when loading data from the server and a\n * filtered response is required.\n *\n * **Note:** When this is set, filters must be defined using a field name, an operator and a value\n * to compare, **not** a comparison function.\n * @config {String}\n * @category Remote\n */\n filterParamName: null,\n /**\n * Set this flag to true if you are filtering remote using restful URLs (e.g.\n * https://nominatim.openstreetmap.org/search/paris?format=json)\n *\n * **Note:** When this is set, the filter string is appended to the readUrl.\n * @config {Boolean}\n * @category Remote\n */\n restfulFilter: false,\n /**\n * The name of the HTTP parameter to use to pass any encoded sorters when loading data from the server and a\n * sorted response is required.\n *\n * **Note:** When this is set, sorters must be defined using a field name and an ascending flag,\n * **not** a sort function.\n * @config {String}\n * @category Remote\n */\n sortParamName: null,\n /**\n * The name of the HTTP parameter to use when requesting pages of data using the **one based** page number\n * required.\n * @config {String}\n * @category Paging\n */\n pageParamName: null,\n /**\n * The name of the HTTP parameter to use when requesting pages of data using the **zero based** index of the\n * required page's starting record.\n * @config {String}\n * @category Paging\n */\n pageStartParamName: null,\n /**\n * The name of the HTTP parameter to use when requesting pages of data using the **zero based** index of the\n * required page's starting record.\n * @config {String}\n * @default\n * @category Paging\n */\n pageSizeParamName: 'pageSize',\n /**\n * When paging of data is requested by setting _either_ the {@link #config-pageParamName} _or_ the\n * {@link #config-pageStartParamName}, this is the value to send in the {@link #config-pageSizeParamName}.\n * @config {Number}\n * @default\n * @category Paging\n */\n pageSize: 50,\n /**\n * Set to ´true´ to use restful {@link #config-httpMethods}\n * @config {Boolean}\n * @default false\n * @category Remote\n */\n useRestfulMethods: null,\n /**\n * The HTTP methods to use for CRUD requests when {@link #config-useRestfulMethods} is enabled.\n *\n * ```javascript\n * new AjaxStore({\n * useRestfulMethods : true,\n * httpMethods : {\n * create : 'POST',\n * read : 'POST',\n * update : 'PATCH',\n * delete : 'DELETE'\n * }\n * });\n *\n * ```\n * @config {HttpMethods}\n * @default\n * @category Remote\n */\n httpMethods: {\n create: 'POST',\n read: 'GET',\n update: 'PUT',\n delete: 'DELETE'\n }\n };\n }\n static get configurable() {\n return {\n /**\n * An object containing key/value pairs that are passed on the request query string.\n * @member {Object} params\n * @category Remote\n */\n /**\n * An object containing key/value pairs that are passed on the request query string.\n * @config {Object}\n * @category Remote\n */\n params: null\n };\n }\n /**\n * Url to post newly created records to.\n *\n * The response must be in the form:\n *\n * {\n * \"success\": true,\n * \"data\": [{\n * \"id\": 0, \"name\": \"General Motors\"\n * }, {\n * \"id\": 1, \"name\": \"Apple\"\n * }]\n * }\n *\n * Just the array of data may be returned, however that precludes the orderly handling of errors encountered at the\n * server.\n *\n * If the server encountered an error, the packet would look like this:\n *\n * {\n * \"success\": false,\n * \"message\": \"Some kind of database error\"\n * }\n *\n * And that packet would be available in the {@link #event-exception} handler in the `response` property of the\n * event.\n *\n * The `success` property may be omitted, it defaults to `true`.\n *\n * @prp {String} createUrl\n * @category CRUD\n */\n /**\n * Url to read data from.\n *\n * The response must be in the form:\n *\n * {\n * \"success\": true,\n * \"data\": [{\n * \"id\": 0, \"name\": \"General Motors\"\n * }, {\n * \"id\": 1, \"name\": \"Apple\"\n * }]\n * }\n *\n * If the store {@link #property-isPaged is paged}, the total dataset size must be returned in the\n * {@link #config-responseTotalProperty} property:\n *\n * {\n * \"success\": true,\n * \"data\": [{\n * \"id\": 0, \"name\": \"General Motors\"\n * }, {\n * \"id\": 1, \"name\": \"Apple\"\n * }],\n * \"total\": 65535\n * }\n *\n * Just the array of data may be returned, however that precludes the orderly handling of errors encountered at the\n * server.\n *\n * If the server encountered an error, the packet would look like this:\n *\n * {\n * \"success\": false,\n * \"message\": \"Some kind of database error\"\n * }\n *\n * And that packet would be available in the {@link #event-exception} handler in the `response` property of the\n * event.\n *\n * The `success` property may be omitted, it defaults to `true`.\n *\n * @prp {String} readUrl\n * @category CRUD\n */\n /**\n * Url to post record modifications to.\n *\n * The response must be in the form:\n *\n * {\n * \"success\": true,\n * \"data\": [{\n * \"id\": 0, \"name\": \"General Motors\"\n * }, {\n * \"id\": 1, \"name\": \"Apple\"\n * }]\n * }\n *\n * Just the array of data may be returned, however that precludes the orderly handling of errors encountered at the\n * server.\n *\n * If the server encountered an error, the packet would look like this:\n *\n * {\n * \"success\": false,\n * \"message\": \"Some kind of database error\"\n * }\n *\n * And that packet would be available in the {@link #event-exception} handler in the `response` property of the\n * event.\n *\n * The `success` property may be omitted, it defaults to `true`.\n *\n * @prp {String} updateUrl\n * @category CRUD\n */\n /**\n * Url for deleting records.\n *\n * The response must be in the form:\n *\n * {\n * \"success\": true\n * }\n *\n * If the server encountered an error, the packet would look like this:\n *\n * {\n * \"success\": false,\n * \"message\": \"Some kind of database error\"\n * }\n *\n * And that packet would be available in the {@link #event-exception} handler in the `response` property of the\n * event.\n *\n * The `success` property may be omitted, it defaults to `true`.\n *\n * @prp {String} deleteUrl\n * @category CRUD\n */\n /**\n * True to initiate a load when the store is instantiated\n * @config {Boolean} autoLoad\n * @category Common\n */\n //endregion\n afterConstruct(config) {\n super.afterConstruct(config);\n if (this.autoLoad) {\n this.load().catch(() => {});\n }\n }\n /**\n * Returns true if the Store is currently loading\n * @property {Boolean}\n * @readonly\n * @category CRUD\n */\n get isLoading() {\n return this._isLoading;\n }\n /**\n * Returns true if the Store is currently committing\n * @property {Boolean}\n * @readonly\n * @category CRUD\n */\n get isCommitting() {\n return Boolean(this.commitPromise);\n }\n set pageParamName(pageParamName) {\n if (this.tree) {\n throw new Error('Paging cannot be supported for tree stores');\n }\n if (this.pageStartParamName) {\n throw new Error('Configs pageStartParamName and pageParamName are mutually exclusive');\n }\n this._pageParamName = pageParamName;\n }\n get pageParamName() {\n return this._pageParamName;\n }\n set pageStartParamName(pageStartParamName) {\n if (this.tree) {\n throw new Error('Paging cannot be supported for tree stores');\n }\n if (this.pageParamName) {\n throw new Error('Configs pageParamName and pageStartParamName are mutually exclusive');\n }\n this._pageStartParamName = pageStartParamName;\n }\n get pageStartParamName() {\n return this._pageStartParamName;\n }\n /**\n * Yields true if this Store is loaded page by page. This yields `true` if either of the\n * {@link #config-pageParamName} of {@link #config-pageStartParamName} configs are set.\n * @property {Boolean}\n * @readonly\n * @category Paging\n */\n get isPaged() {\n return this.pageParamName || this.pageStartParamName;\n }\n /**\n * Yields the complete dataset size. If the store is {@link #property-isPaged is paged} this is the value\n * returned in the last loaded data block in the {@link #config-responseTotalProperty} property. Otherwise it is\n * the number of records in the store's underlying storage collection.\n * @property {Number}\n * @readonly\n * @category Paging\n */\n get allCount() {\n return 'remoteTotal' in this ? this.remoteTotal : super.allCount;\n }\n /**\n * **If the store {@link #property-isPaged is paged}**, yields the highest page number in the dataset as calculated\n * from the {@link #config-responseTotalProperty}\n * returned in the last page data block loaded.\n * @property {Number}\n * @readonly\n * @category Paging\n */\n get lastPage() {\n if (this.isPaged) {\n return Math.floor((this.allCount + this.pageSize - 1) / this.pageSize);\n }\n }\n buildQueryString(url, ...paramObjects) {\n const hasParamsInUrl = url.includes('?'),\n queryString = Object.entries(Object.assign({}, ...paramObjects)).reduce(processParamEntry, []).join('&');\n return queryString ? (hasParamsInUrl ? '&' : '?') + queryString : '';\n }\n /**\n * Internal sort method.\n * Should not be used in application code directly.\n * @param silent\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-sortParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @internal\n */\n performSort(silent) {\n const me = this;\n if (me.remoteSort && !me.isRemoteDataLoading) {\n // Flag store data loading state to not get into loop when data is sorted internally after request\n me.isRemoteDataLoading = true;\n // TODO: Should we cache lastParams from the load call and use them here?\n return me.internalLoad({}, '', event => {\n me.data = event.data;\n me.afterPerformSort(silent);\n me.isRemoteDataLoading = false;\n });\n } else {\n super.performSort(silent);\n }\n }\n /**\n * Internal filter method.\n * Should not be used in application code directly.\n * @param silent\n * @returns {Promise|null} If {@link Core/data/AjaxStore#config-filterParamName} is set on store, this method returns `Promise`\n * which is resolved after data is loaded from remote server, otherwise it returns `null`\n * @async\n * @internal\n */\n performFilter(silent) {\n const me = this;\n // For remote filtering, the dataset cannot be preserved. The size may be completely different.\n // This is a reload operation.\n if (me.remoteFilter && !me.isRemoteDataLoading) {\n // Flag store data loading state to not get into loop when data is sorted internally after request\n me.isRemoteDataLoading = true;\n const oldCount = me.count,\n {\n filters\n } = me;\n // load should default to page 1\n me.currentPage = 1;\n // TODO: Should we cache lastParams from the load call and use them here?\n return me.internalLoad({}, '', event => {\n me.data = event.data;\n event = silent ? null : {\n action: 'filter',\n filters,\n oldCount,\n records: me.storage.values\n };\n me.afterPerformFilter(event);\n me.trigger('refresh', event);\n me.isRemoteDataLoading = false;\n });\n } else {\n super.performFilter(silent);\n }\n }\n /**\n * A provided function which creates an array of values for the {@link #config-filterParamName} to pass\n * any filters to the server upon load.\n *\n * By default, this creates a JSON string containing the following properties:\n *\n * ```javascript\n * [{\n * field : \n * operator : May be: `'='`, `'!='`, `'>'`, `'>='`, `'<'`, `'<='`, `'*'`, `'startsWith'`, `'endsWith'`\n * value : The value to compare\n * caseSensitive : true for case sensitive comparisons\n * }]\n * ```\n * @param {Core.util.CollectionFilter[]} filters The filters to encode.\n */\n encodeFilterParams(filters) {\n const result = [];\n for (const {\n property,\n operator,\n value,\n caseSensitive\n } of filters) {\n result.push({\n field: property,\n operator,\n value,\n caseSensitive\n });\n }\n return JSON.stringify(result);\n }\n /**\n * A provided function which creates an array of values for the {#config-sortParamName} to pass\n * any sorters to the server upon load.\n *\n * By default, this creates a JSON string containing the following properties:\n *\n * ```javascript\n * [{\n * field : \n * ascending : true/false\n * }]\n * ```\n *\n * @param {Object[]} sorters The sorters to encode.\n */\n encodeSorterParams(sorters) {\n return JSON.stringify(sorters.filter(sorter => !sorter.sortFn).map(sorter => sorter));\n }\n buildReadUrl() {\n const {\n readUrl\n } = this;\n if (this.restfulFilter && this.filters.count) {\n const url = readUrl.endsWith('/') ? readUrl : readUrl + '/';\n return url + this.filters.first.value;\n }\n return readUrl;\n }\n /**\n * Internal data loading method.\n * Should not be used in application directly.\n * @returns {Promise|null}\n * @internal\n */\n internalLoad(params, eventName, successFn) {\n const me = this,\n allParams = ObjectHelper.assign({}, me.params, params),\n url = me.buildReadUrl(),\n event = {\n action: 'read' + eventName,\n params: allParams,\n url\n };\n return url ? new Promise((resolve, reject) => {\n if (me.trigger('beforeLoad' + eventName, event) === false) {\n return reject(false); // eslint-disable-line\n }\n\n me._isLoading = true;\n // This may look redundant, but it allows for two levels of event listening.\n // Granular, where the observer observes only the events of interest, and\n // catch-all, where the observer is interested in all requests.\n me.trigger(`load${eventName}Start`, event);\n me.trigger('beforeRequest', event);\n // Add filter information to the request parameters\n if (me.filterParamName && me.isFiltered) {\n allParams[me.filterParamName] = me.encodeFilterParams(me.filters.values);\n }\n // Add sorter information to the request parameters.\n // isSorted includes grouping in its evaluation.\n if (me.remoteSort && me.isSorted) {\n allParams[me.sortParamName] = me.encodeSorterParams(me.groupers ? me.groupers.concat(me.sorters) : me.sorters);\n }\n // Ensure our next page is passed to the server in the params if not already set.\n // Ensure our page size is always passed.\n if (me.isPaged) {\n if (!(me.pageParamName in allParams || me.pageStartParamName in allParams)) {\n const page = Math.min(me.currentPage || 1, me.allCount ? me.lastPage : Infinity);\n if (me.pageParamName) {\n allParams[me.pageParamName] = page;\n } else {\n allParams[me.pageStartParamName] = (page - 1) * me.pageSize;\n }\n }\n allParams[me.pageSizeParamName] = me.pageSize;\n }\n const options = {\n headers: me.headers,\n parseJson: true\n };\n if (me.useRestfulMethods) {\n options.method = me.httpMethods.read;\n // user might define body in case of using custom restful method\n if (event.body) {\n options.body = JSON.stringify(event.body);\n }\n }\n AjaxHelper.get(event.url + me.buildQueryString(event.url, allParams), ObjectHelper.assign(options, me.fetchOptions)).then(async response => {\n const data = response.parsedJson,\n isArray = Array.isArray(data),\n success = isArray || data && ObjectHelper.getPath(data, me.responseSuccessProperty) !== false,\n remoteTotal = isArray ? null : ObjectHelper.getPath(data, me.responseTotalProperty);\n me._isLoading = false;\n event.response = response;\n event.json = data;\n if (success) {\n if (remoteTotal != null) {\n me.remoteTotal = parseInt(remoteTotal, 10);\n }\n // If we are issuing paged requests, work out what page we are on based\n // on the requested page and the size of the dataset declared.\n if (me.isPaged) {\n if (me.remoteTotal >= 0) {\n const requestedPage = me.pageParamName ? allParams[me.pageParamName] : allParams[me.pageStartParamName] / me.pageSize + 1;\n me.currentPage = Math.min(requestedPage, me.lastPage);\n } else {\n throw new Error('A paged store must receive its responseTotalProperty in each data packet');\n }\n }\n event.data = isArray ? data : ObjectHelper.getPath(data, me.responseDataProperty);\n await successFn(event);\n me.trigger('load' + eventName, event);\n resolve(event);\n } else {\n Object.assign(event, {\n exception: true,\n exceptionType: 'server',\n error: data === null || data === void 0 ? void 0 : data.error\n });\n me.trigger('exception', event);\n reject(event);\n }\n // finally\n me.trigger('afterRequest', event);\n }).catch(responseOrError => {\n me._isLoading = false;\n event.exception = true;\n if (responseOrError instanceof Response) {\n event.exceptionType = responseOrError.ok ? 'server' : 'network';\n event.response = responseOrError;\n event.error = responseOrError.error;\n } else {\n event.exceptionType = 'server';\n event.error = responseOrError;\n }\n me.trigger('exception', event);\n reject(event);\n // finally\n me.trigger('afterRequest', event);\n });\n }) : null;\n }\n /**\n * Load data from the {@link #config-readUrl}.\n * @param {Object} [params] A hash of parameters to append to querystring (will also append Store#params)\n * @returns {Promise} A Promise which will be resolved if the load succeeds, and rejected if the load is\n * vetoed by a {@link #event-beforeLoad} handler, or if an {@link #event-exception} is detected.\n * The resolved function is passed the event object passed to any event handlers.\n * The rejected function is passed the {@link #event-exception} event if an exception occurred,\n * or `false` if the load was vetoed by a {@link #event-beforeLoad} handler.\n * @fires beforeLoad\n * @fires loadStart\n * @fires beforeRequest\n * @fires load\n * @fires exception\n * @fires afterRequest\n * @category CRUD\n */\n async load(params) {\n const me = this;\n if (me.isPaged) {\n return me.loadPage(me.currentPage || 1, params);\n } else {\n return me.internalLoad(params, '', event => {\n // The set Data setter will trigger the refresh event with { action: 'dataset' }\n me.data = event.data;\n });\n }\n }\n /**\n * Loads children into specified parent record. Parent records id is sent as a param (param name configured with\n * {@link #config-parentIdParamName}.\n * @param {Core.data.Model} parentRecord Parent record\n * @returns {Promise} A Promise which will be resolved if the load succeeds, and rejected if the load is\n * vetoed by a {@link #event-beforeLoadChildren} handler, or if an {@link #event-exception} is detected.\n * The resolved function is passed the event object passed to any event handlers.\n * The rejected function is passed the {@link #event-exception} event if an exception occurred,\n * or `false` if the load was vetoed by a {@link #event-beforeLoadChildren} handler.\n * @fires beforeLoadChildren\n * @fires loadChildrenStart\n * @fires beforeRequest\n * @fires loadChildren\n * @fires exception\n * @fires afterRequest\n * @category CRUD\n */\n async loadChildren(parentRecord) {\n return this.internalLoad({\n [this.parentIdParamName]: parentRecord.id\n }, 'Children', event => {\n event.parentRecord = parentRecord;\n if (parentRecord.children.length) {\n parentRecord.clearChildren(true);\n }\n // Append received children\n parentRecord.data[parentRecord.constructor.childrenField] = event.data;\n parentRecord.processChildren(parentRecord.stores);\n });\n }\n /**\n * Loads a page of data from the {@link #config-readUrl}.\n * @param {Number} page The *one based* page number to load.\n * @param {Object} params A hash of parameters to append to querystring (will also append Store#params)\n * @returns {Promise} A Promise which will be resolved if the load succeeds, and rejected if the load is\n * vetoed by a {@link #event-beforeLoadPage} handler, or if an {@link #event-exception} is detected.\n * The resolved function is passed the event object passed to any event handlers.\n * The rejected function is passed the {@link #event-exception} event if an exception occurred,\n * or `false` if the load was vetoed by a {@link #event-beforeLoadPage} handler.\n * @fires beforeLoadPage\n * @fires loadPageStart\n * @fires beforeRequest\n * @fires loadPage\n * @fires exception\n * @fires afterRequest\n * @category CRUD\n */\n async loadPage(page, params) {\n if (this.allCount) {\n page = Math.min(page, this.lastPage);\n }\n const me = this,\n pageParam = me.pageParamName ? {\n [me.pageParamName]: page\n } : {\n [me.pageStartParamName]: (page - 1) * me.pageSize\n };\n pageParam[me.pageSizeParamName] = me.pageSize;\n return me.internalLoad(ObjectHelper.assign(pageParam, params), 'Page', event => {\n // We go directly to loadPage because paging a tree store is unsupportable.\n // loadPage will trigger the refresh event with { action: 'pageLoad' }\n me.loadData(event.data, 'pageLoad');\n });\n }\n /**\n * If this store {@link #property-isPaged is paged}, and is not already at the {@link #property-lastPage}\n * then this will load the next page of data.\n * @fires beforeLoadPage\n * @fires loadPageStart\n * @fires beforeRequest\n * @fires loadPage\n * @fires exception\n * @fires afterRequest\n * @category CRUD\n * @returns {Promise} A promise which is resolved when the Ajax request completes and has been processed.\n */\n async nextPage(params) {\n const me = this;\n return me.isPaged && me.currentPage !== me.lastPage ? me.loadPage(me.currentPage + 1, params) : immediatePromise$6;\n }\n /**\n * If this store {@link #property-isPaged is paged}, and is not already at the first page\n * then this will load the previous page of data.\n * @fires beforeLoadPage\n * @fires loadPageStart\n * @fires beforeRequest\n * @fires loadPage\n * @fires exception\n * @fires afterRequest\n * @category CRUD\n * @returns {Promise} A promise which is resolved when the Ajax request completes and has been processed.\n */\n async previousPage(params) {\n return this.isPaged && this.currentPage !== 1 ? this.loadPage(this.currentPage - 1, params) : immediatePromise$6;\n }\n /**\n * Commits all changes (added, modified and removed) using corresponding urls ({@link #config-createUrl},\n * {@link #config-updateUrl} and {@link #config-deleteUrl})\n * @fires beforeCommit\n * @returns {Promise} A Promise which is resolved only if all pending changes (Create, Update and Delete)\n * successfully resolve. Both the resolve and reject functions are passed a `commitState` object which is stored the\n * {@link #event-afterRequest} event for each request. Each event contains the `exception`, `request` and `response`\n * properties eg:\n *\n * ```javascript\n * {\n * // If *all* commits succeeded\n * success: true,\n * changes: {\n * added: [records...],\n * modified: [records...],\n * removed: [records...],\n * },\n * added: {\n * source: theStore,\n *\n * // Only if the add request triggered an exception\n * exception: true,\n *\n * // Only if the add request triggered an exception\n * exceptionType: 'server', // Or 'network'\n *\n * response: Response,\n * json: parsedResponseObject\n * },\n * // Same format as added\n * modified: {},\n * removed: {}\n * }\n * ```\n *\n * If there were no pending changes, the resolve and reject functions are passed no parameters.\n *\n * Returns `false` if a commit operation is already in progress.\n * The resolved function is passed the event object passed to any event handlers.\n * The rejected function is passed the {@link #event-exception} event if an exception occurred,\n * @category CRUD\n */\n async commit() {\n const me = this,\n {\n changes\n } = me,\n allPromises = [];\n // not allowing additional commits while in progress\n // TODO: should queue\n if (me.commitPromise) {\n return false;\n }\n // No outstanding changes, return a Promise that resolves immediately.\n if (!changes) {\n // Special handling of modified. If only non-persistable fields have been modified, it wont count among\n // `changes`, but still needs to be cleared\n if (me.modified.count) {\n me.modified.forEach(record => record.clearChanges(true, false));\n me.modified.clear();\n }\n return immediatePromise$6;\n }\n if (me.trigger('beforeCommit', {\n changes\n }) !== false) {\n // Flag all affected records as being committed\n [...changes.added, ...changes.modified, ...changes.removed].forEach(record => record.meta.committing = true);\n // Commit was not prevented in beforeCommit listener, so we begin the commit\n me.trigger('commitStart', {\n changes\n });\n const commitState = {\n action: 'commit',\n exception: false,\n changes\n };\n let p = me.commitRemoved(commitState);\n if (p) {\n allPromises.push(p);\n }\n p = me.commitAdded(commitState);\n if (p) {\n allPromises.push(p);\n }\n p = me.commitModified(commitState);\n if (p) {\n allPromises.push(p);\n }\n // If there were no urls configured, behave as a local store\n if (!allPromises.length) {\n me.modified.forEach(r => r.clearChanges(true, false));\n me.modified.clear();\n me.added.forEach(r => r.clearChanges(true, false));\n me.added.clear();\n me.removed.clear();\n me.trigger('commit', {\n changes\n });\n return immediatePromise$6;\n }\n // The Promises from the commit methods all resolve whether the request\n // succeeded or not. They each contribute their afterrequest event to the\n // commitState which can be used to detect overall success or failure\n // and granular inspection of which operations succeeded or failed.\n // If there's only one operation, wait for it.\n // If there's more than one operation, we have to wait for allPromises to resolve.\n p = allPromises.length === 1 ? allPromises[0] : Promise.all(allPromises);\n return me.commitPromise = new Promise((resolve, reject) => {\n p.then(() => {\n me.commitPromise = null;\n if (commitState.exception) {\n me.trigger('exception', commitState);\n reject(commitState);\n } else {\n me.trigger('commit', {\n changes\n });\n resolve(commitState);\n }\n }).catch(() => {\n me.commitPromise = null;\n reject(commitState);\n });\n });\n }\n }\n // Performs background autocommit with reject checking\n doAutoCommit() {\n if (this.suspendCount <= 0) {\n this.commit().catch(commitState => {\n const {\n response\n } = commitState;\n // Skip throw if response is `ok` or `status` is 500 or 404 and request is successfully parsed\n // These errors are notified by API events\n if (!(response && (response.ok && response.parsedJson || [500, 404].includes(response.status)))) {\n throw commitState;\n }\n });\n }\n }\n // TODO: need a way to abort commits\n /**\n * Commits added records by posting to {@link #config-createUrl}.\n * Server should return a JSON object with a 'success' property indicating whether the operation was successful.\n * @param {Object} commitState An object into which is added a `delete` property being the\n * {@link #event-afterRequest} event.\n * @returns {Promise|null} If there are added records, a Promise which will be resolved whether the commit\n * succeeds or fails. The resulting event is placed into the `add` property of the passed `commitState`\n * parameter. If there are no added records, `null` is returned.\n * The resolved function is passed the event object passed to any event handlers.\n * @async\n * @private\n * @fires beforeRequest\n * @fires commitAdded\n * @fires refresh\n * @fires exception\n * @fires afterRequest\n */\n commitAdded(commitState) {\n const me = this,\n added = me.added,\n event = {\n action: 'create',\n params: me.params\n };\n return added.count && me.createUrl ? new Promise(resolve => {\n const toAdd = added.values.map(r => r.persistableData);\n commitState.create = event;\n event.body = {\n data: toAdd\n };\n me.trigger('beforeRequest', event);\n let dataToSend = event.body;\n if (me.sendAsFormData) {\n const formData = new FormData();\n formData.append('data', JSON.stringify(toAdd));\n dataToSend = formData;\n }\n const options = {\n headers: me.headers,\n parseJson: true\n },\n url = me.createUrl + me.buildQueryString(me.createUrl, me.params);\n if (me.useRestfulMethods) {\n options.method = me.httpMethods.create;\n }\n AjaxHelper.post(url, dataToSend, ObjectHelper.assign(options, me.fetchOptions)).then(response => {\n const data = response.parsedJson,\n isArray = Array.isArray(data),\n success = isArray || data && data.success !== false;\n commitState.response = response;\n event.json = data;\n event.response = response;\n if (success) {\n // Copy updated fields and updated ID back into records.\n // This also calls clearChanges on each record.\n me.processReturnedData(added.values, isArray ? data : ObjectHelper.getPath(data, me.responseDataProperty));\n // Clear down added records cache\n added.clear();\n me.trigger('commitAdded');\n // We must signal a full refresh because any number of records could have received any number of field updates\n // back from the server, so a refresh is more efficient than picking through the received updates.\n me.trigger('refresh', event);\n resolve(commitState);\n } else {\n // Clear committing flag\n added.forEach(r => r.meta.committing = false);\n commitState.exception = event.exception = true;\n commitState.exceptionType = event.exceptionType = 'server';\n me.trigger('exception', event);\n resolve(commitState);\n }\n // finally\n me.trigger('afterRequest', event);\n }).catch(responseOrError => {\n // Clear committing flag\n added.forEach(r => r.meta.committing = false);\n commitState.exception = event.exception = true;\n if (responseOrError instanceof Response) {\n commitState.response = responseOrError;\n event.exceptionType = responseOrError.ok ? 'server' : 'network';\n event.response = responseOrError;\n event.error = responseOrError.error;\n } else {\n event.exceptionType = 'server';\n event.error = responseOrError;\n }\n me.trigger('exception', event);\n resolve(commitState);\n // finally\n me.trigger('afterRequest', event);\n });\n }) : null;\n }\n /**\n * Commits modified records by posting to {@link #config-updateUrl}.\n * Server should return a JSON object with a 'success' property indicating whether the operation was successful.\n * @param {Object} commitState An object into which is added a `delete` property being the\n * {@link #event-afterRequest} event.\n * @returns {Promise|null} If there are added records, a Promise which will be resolved whether the commit\n * succeeds or fails. The resulting event is placed into the `update` property of the passed `commitState`\n * parameter. If there are no added records, `null` is returned.\n * The resolved function is passed the event object passed to any event handlers.\n * @async\n * @private\n * @fires beforeRequest\n * @fires commitModified\n * @fires refresh\n * @fires exception\n * @fires afterRequest\n */\n commitModified(commitState) {\n const me = this,\n // Only include persistable changes\n {\n modified\n } = me.changes,\n event = {\n action: 'update',\n params: me.params\n },\n result = modified.length && me.updateUrl ? new Promise(resolve => {\n // Use the record's modificationData, not modifications.\n // modifications returns a map using *field names*\n // The server will expect a map using the original dataSource properties.\n const modifications = modified.map(record => {\n if (me.writeAllFields) {\n return record.persistableData;\n } else {\n return record.modificationDataToWrite;\n }\n }).filter(el => !ObjectHelper.isEmpty(el));\n // Check if modifications are empty and don't make request\n if (modifications.length === 0) {\n me.modified.clear();\n modified.forEach(r => r.meta.committing = false);\n resolve();\n return;\n }\n commitState.update = event;\n event.body = {\n data: modifications\n };\n me.trigger('beforeRequest', event);\n let dataToSend = event.body;\n if (me.sendAsFormData) {\n const formData = new FormData();\n formData.append('data', JSON.stringify(modifications));\n dataToSend = formData;\n }\n const options = {\n headers: me.headers,\n parseJson: true\n };\n if (me.useRestfulMethods) {\n options.method = me.httpMethods.update;\n }\n AjaxHelper.post(me.updateUrl + me.buildQueryString(me.updateUrl, me.params), dataToSend, ObjectHelper.assign(options, me.fetchOptions)).then(response => {\n const data = response.parsedJson,\n isArray = Array.isArray(data),\n success = isArray || data && data.success !== false;\n commitState.response = response;\n event.json = data;\n event.response = response;\n if (success) {\n // Copy updated fields and updated ID back into records.\n // This also calls clearChanges on each record.\n me.processReturnedData(modified, isArray ? data : ObjectHelper.getPath(data, me.responseDataProperty), true);\n // Clear down modified records cache\n me.modified.clear();\n me.trigger('commitModified');\n // We must signal a full refresh because any number of records could have received any number of\n // field updates back from the server, so a refresh is more efficient than picking through the\n // received updates.\n me.trigger('refresh', event);\n resolve(commitState);\n } else {\n // Clear committing flag\n modified.forEach(r => r.meta.committing = false);\n commitState.exception = event.exception = true;\n event.exceptionType = 'server';\n me.trigger('exception', event);\n resolve(commitState);\n }\n // finally\n me.trigger('afterRequest', event);\n }).catch(responseOrError => {\n // Clear committing flag\n modified.forEach(r => r.meta.committing = false);\n commitState.exception = event.exception = true;\n if (responseOrError instanceof Response) {\n commitState.response = responseOrError;\n event.exceptionType = responseOrError.ok ? 'server' : 'network';\n event.response = responseOrError;\n event.error = responseOrError.error;\n } else {\n event.exceptionType = 'server';\n event.error = responseOrError;\n }\n me.trigger('exception', event);\n resolve(commitState);\n // finally\n me.trigger('afterRequest', event);\n });\n }) : null;\n // Also clear non-persistable changes\n if (!modified.length && me.modified.count) {\n me.modified.clear();\n }\n return result;\n }\n processReturnedData(localRecords, returnedData, isUpdating = false) {\n const me = this,\n Model = me.modelClass,\n idDataSource = Model.fieldMap.id.dataSource;\n returnedData.forEach((recData, i) => {\n const record = localRecords[i];\n // Must clear changed state before syncId goes through store.onModelChange\n record.clearChanges(true, false);\n // Using syncId to update record's id with no flagging the property as modified.\n record.syncId(recData[idDataSource]);\n // When updating, only want to apply the actual changes and not reapply defaults. When adding, also\n // apply the defaults\n Object.assign(localRecords[i].data, Model.processData(recData, isUpdating));\n });\n }\n /**\n * Commits removed records by posting to {@link #config-deleteUrl}.\n * Server should return a JSON object with a 'success' property indicating whether the operation was successful.\n * @param {Object} commitState An object into which is added a `delete` property being the\n * {@link #event-afterRequest} event.\n * @returns {Promise|null} If there are added records, a Promise which will be resolved whether the commit\n * succeeds or fails. The resulting event is placed into the `delete` property of the passed `commitState`\n * parameter. If there are no added records, `null` is returned.\n * The resolved function is passed the event object passed to any event handlers.\n * @async\n * @private\n * @fires beforerequest\n * @fires commitremoved\n * @fires refresh\n * @fires exception\n * @fires afterrequest\n */\n commitRemoved(commitState) {\n const me = this,\n removed = me.removed,\n event = {\n action: 'delete',\n params: me.params\n };\n return removed.count && me.deleteUrl ? new Promise(resolve => {\n commitState.delete = event;\n event.body = {\n ids: removed.map(r => r.id)\n };\n me.trigger('beforeRequest', event);\n let dataToSend = event.body;\n if (me.sendAsFormData) {\n const formData = new FormData();\n formData.append('id', JSON.stringify(dataToSend.ids));\n dataToSend = formData;\n }\n const options = {\n headers: me.headers,\n parseJson: true\n };\n if (me.useRestfulMethods) {\n options.method = me.httpMethods.delete;\n }\n AjaxHelper.post(me.deleteUrl + me.buildQueryString(me.deleteUrl, me.params), dataToSend, ObjectHelper.assign(options, me.fetchOptions)).then(response => {\n const data = response.parsedJson,\n isArray = Array.isArray(data),\n success = isArray || data && data.success !== false;\n commitState.response = response;\n event.json = data;\n event.response = response;\n if (success) {\n removed.forEach(record => record.meta.committing = false); // In case used by other store etc.\n removed.clear();\n me.trigger('commitRemoved');\n me.trigger('refresh', event);\n resolve(commitState);\n } else {\n // Clear committing flag\n removed.forEach(r => r.meta.committing = false);\n commitState.exception = event.exception = true;\n event.exceptionType = 'server';\n me.trigger('exception', event);\n resolve(commitState);\n }\n // finally\n me.trigger('afterRequest', event);\n }).catch(responseOrError => {\n // Clear committing flag\n removed.forEach(r => r.meta.committing = false);\n commitState.exception = event.exception = true;\n if (responseOrError instanceof Response) {\n commitState.response = responseOrError;\n event.exceptionType = responseOrError.ok ? 'server' : 'network';\n event.response = responseOrError;\n event.error = responseOrError.error;\n } else {\n event.exceptionType = 'server';\n event.error = responseOrError;\n }\n me.trigger('exception', event);\n resolve(commitState);\n // finally\n me.trigger('afterRequest', event);\n });\n }) : null;\n }\n get remoteFilter() {\n return Boolean(this.filterParamName || this.restfulFilter);\n }\n get remoteSort() {\n return Boolean(this.sortParamName);\n }\n}\n_defineProperty(AjaxStore, \"$name\", 'AjaxStore');\nAjaxStore._$name = 'AjaxStore';\n\n/**\n * @module Core/data/DomDataStore\n */\n/**\n * Stores data on a dom element (by setting element._domData).\n * Instead of using HTML5:s element.dataset, which turned out to be slow.\n * @internal\n */\nclass DomDataStore {\n /**\n * Get data that is connected to specified element.\n * @param {HTMLElement} element DOM element\n * @param {String} [key] The name of the property in the element data to return\n * @returns {Object} Data\n */\n static get(element, key) {\n const result = element._domData || (element._domData = {});\n return key != null ? result[key] : result;\n }\n /**\n * Remove data connected to specified element.\n * @param {HTMLElement} element DOM element\n * @param {String} key The name of the property in the element data to remove.\n */\n static remove(element, key) {\n const {\n _domData\n } = element,\n was = _domData === null || _domData === void 0 ? void 0 : _domData[key];\n _domData === null || _domData === void 0 ? true : delete _domData[key];\n return was;\n }\n /**\n * Set data connected to specified element (completely replacing any existing).\n * To update data, use DomDataStore#assign instead.\n * @param {HTMLElement} element DOM element\n * @param {Object|String} data Data object to set, or property name to set\n * @param {*} [value] If the previous parameter was a property name, this is the value to set.\n */\n static set(element, data, value) {\n if (arguments.length === 3) {\n (element._domData || (element._domData = {}))[data] = value;\n } else {\n element._domData = data;\n }\n }\n /**\n * Updates data connected to specified element.\n * @param {HTMLElement} element DOM element\n * @param {Object} data Data to assign\n */\n static assign(element, data) {\n Object.assign(element._domData || (element._domData = {}), data);\n }\n}\nDomDataStore._$name = 'DomDataStore';\n\n/**\n * @module Core/data/stm/action/ActionBase\n */\nconst throwAbstractMethodCall$1 = () => {\n throw new Error('Abstract method call!');\n};\n/**\n * Base class for STM actions.\n *\n * @abstract\n */\nclass ActionBase extends Base$1 {\n /**\n * Gets the type of the action (stringified class name).\n * @readonly\n * @property {String}\n */\n get type() {\n return this.constructor.name;\n }\n /**\n * Undoes an action\n */\n undo() {\n throwAbstractMethodCall$1();\n }\n /**\n * Redoes an action\n */\n redo() {\n throwAbstractMethodCall$1();\n }\n}\nActionBase._$name = 'ActionBase';\n\n/**\n * @module Core/data/stm/state/StateBase\n */\nconst throwAbstractMethodCall = () => {\n throw new Error('Abstract method call!');\n};\nconst throwInvalidMethodCall = () => {\n throw new Error('Method cannot be called at this state!');\n};\n/**\n * Abstract class for STM states\n *\n * Every on* method should return a state for the STM which it should switch to\n * or throw an exception that this call at this state is illegal.\n *\n * Interface of this class mirrors interface of {@link Core.data.stm.StateTrackingManager}.\n *\n * @abstract\n */\nclass StateBase extends Base$1 {\n canUndo(stm) {\n throwAbstractMethodCall();\n }\n canRedo(stm) {\n throwAbstractMethodCall();\n }\n onUndo(stm) {\n throwAbstractMethodCall();\n }\n onRedo(stm) {\n throwAbstractMethodCall();\n }\n onStartTransaction(stm) {\n throwAbstractMethodCall();\n }\n onStopTransaction(stm) {\n throwAbstractMethodCall();\n }\n onStopTransactionDelayed(stm) {\n throwAbstractMethodCall();\n }\n onRejectTransaction(stm) {\n throwAbstractMethodCall();\n }\n onEnable(stm) {\n throwAbstractMethodCall();\n }\n onDisable(stm) {\n throwAbstractMethodCall();\n }\n onAutoRecordOn(stm) {\n throwAbstractMethodCall();\n }\n onAutoRecordOff(stm) {\n throwAbstractMethodCall();\n }\n onResetQueue(stm) {\n throwAbstractMethodCall();\n }\n onModelUpdate(stm) {\n throwAbstractMethodCall();\n }\n onStoreModelAdd(stm) {\n throwAbstractMethodCall();\n }\n onStoreModelInsert(stm) {\n throwAbstractMethodCall();\n }\n onStoreModelRemove(stm) {\n throwAbstractMethodCall();\n }\n onStoreModelRemoveAll(stm) {\n throwAbstractMethodCall();\n }\n onModelInsertChild(stm) {\n throwAbstractMethodCall();\n }\n onModelRemoveChild(stm) {\n throwAbstractMethodCall();\n }\n}\nStateBase._$name = 'StateBase';\n\n/**\n * @module Core/data/stm/Props.js\n * @internal\n */\nconst STATE_PROP = Symbol('STATE_PROP');\nconst STORES_PROP = Symbol('STORES_PROP');\nconst QUEUE_PROP = Symbol('QUEUE_PROP');\nconst POS_PROP = Symbol('POS_PROP');\nconst TRANSACTION_PROP = Symbol('TRANSACTION_PROP');\nconst TRANSACTION_TIMER_PROP = Symbol('TRANSACTION_TIMER_PROP');\nconst AUTO_RECORD_PROP = Symbol('AUTO_RECORD_PROP');\nObject.freeze([STATE_PROP, STORES_PROP, QUEUE_PROP, POS_PROP, TRANSACTION_PROP, TRANSACTION_TIMER_PROP, AUTO_RECORD_PROP]);\n\n/**\n * @module Core/data/stm/state/Registry\n *\n * Provides map of registered STM states.\n *\n * Needed to remove states circular dependency.\n *\n * @internal\n */\nconst registry = new Map();\n/**\n * Registers STM state class with the given name.\n *\n * @private\n *\n * @param {String} name\n * @param {Core.data.stm.state.StateBase} state\n */\nconst registerStmState = (name, state) => {\n registry.set(name, state);\n};\n/**\n * Resolves STM state class with the given name.\n *\n * @private\n *\n * @param {String} name\n * @returns {Core.data.stm.state.StateBase} state\n */\nconst resolveStmState = state => {\n if (typeof state === 'string') {\n state = registry.get(state);\n }\n return state;\n};\n// UMD/module compatible export\n// NOTE: the most compatible way of exporting is:\n// import registry from './Registry.js';\n// { registerStmState, resolveStmState } = registry;\n// or\n// registry.registerStmState(...);\nvar Registry = {\n registerStmState,\n resolveStmState\n};\n\nconst resetQueue = (stm, options) => {\n const {\n undo,\n redo\n } = options;\n let newProps;\n if (undo && !redo) {\n newProps = {\n [QUEUE_PROP]: stm[QUEUE_PROP].slice(stm.position),\n [POS_PROP]: 0\n };\n } else if (redo && !undo) {\n newProps = {\n [QUEUE_PROP]: stm[QUEUE_PROP].slice(0, stm.position)\n };\n } else {\n newProps = {\n [QUEUE_PROP]: [],\n [POS_PROP]: 0\n };\n }\n return [newProps, () => {\n stm.notifyStoresAboutQueueReset(options);\n }];\n};\n\n/**\n * @module Core/data/stm/state/DisabledState\n */\n/**\n * STM disabled state class.\n *\n * @internal\n */\nclass DisabledStateClass extends StateBase {\n canUndo() {\n return false;\n }\n canRedo() {\n return false;\n }\n onUndo() {\n throwInvalidMethodCall();\n }\n onRedo() {\n throwInvalidMethodCall();\n }\n onEnable(stm) {\n return stm.autoRecord ? 'autoreadystate' : 'readystate';\n }\n onDisable() {\n throwInvalidMethodCall();\n }\n onAutoRecordOn() {\n return {\n [AUTO_RECORD_PROP]: true\n };\n }\n onAutoRecordOff() {\n return {\n [AUTO_RECORD_PROP]: false\n };\n }\n onStartTransaction() {\n throwInvalidMethodCall();\n }\n onStopTransaction() {\n throwInvalidMethodCall();\n }\n onStopTransactionDelayed() {\n throwInvalidMethodCall();\n }\n onRejectTransaction() {\n throwInvalidMethodCall();\n }\n onResetQueue(stm, options) {\n return resetQueue(stm, options);\n }\n onModelUpdate() {}\n onModelInsertChild() {}\n onModelRemoveChild() {}\n onStoreModelAdd() {}\n onStoreModelInsert() {}\n onStoreModelRemove() {}\n onStoreRemoveAll() {}\n}\n/**\n * STM disabled state.\n *\n * @internal\n */\nconst DisabledState = new DisabledStateClass();\nRegistry.registerStmState('disabledstate', DisabledState);\n\n/**\n * @module Core/data/stm/Transaction\n */\nconst ACTION_QUEUE_PROP = Symbol('ACTION_QUEUE_PROP');\n/**\n * STM transaction class, holds list of actions constituting a transaction.\n *\n * A transaction can be undone and redone. Upon undo all the actions being held\n * are undone in reverse order. Upon redo all the actions being held are redone\n * in forward order.\n */\nclass Transaction$1 extends Base$1 {\n get defaultConfig() {\n return {\n /**\n * Transaction title\n *\n * @config {String}\n */\n title: null\n };\n }\n construct(...args) {\n this[ACTION_QUEUE_PROP] = [];\n super.construct(...args);\n }\n /**\n * Gets transaction's actions queue\n *\n * @property {Core.data.stm.action.ActionBase[]}\n */\n get queue() {\n return this[ACTION_QUEUE_PROP].slice(0);\n }\n /**\n * Gets transaction's actions queue length\n *\n * @property {Number}\n */\n get length() {\n return this[ACTION_QUEUE_PROP].length;\n }\n /**\n * Adds an action to the transaction.\n *\n * @param {Core.data.stm.action.ActionBase|Object} action\n */\n addAction(action) {\n this[ACTION_QUEUE_PROP].push(action);\n }\n /**\n * Undoes actions held\n */\n undo() {\n const queue = this[ACTION_QUEUE_PROP];\n for (let i = queue.length - 1; i >= 0; --i) {\n queue[i].undo();\n }\n }\n /**\n * Redoes actions held\n */\n redo() {\n const queue = this[ACTION_QUEUE_PROP];\n for (let i = 0, len = queue.length; i < len; ++i) {\n queue[i].redo();\n }\n }\n}\nTransaction$1._$name = 'Transaction';\n\n/**\n * @module Core/data/stm/state/ReadyState\n */\n/**\n * STM ready state class.\n *\n * @internal\n */\nclass ReadyStateClass extends StateBase {\n canUndo(stm) {\n // v\n // |*|*|\n return 0 < stm.position && stm.position <= stm.length;\n }\n canRedo(stm) {\n // v\n // |*|*|\n return 0 <= stm.position && stm.position < stm.length;\n }\n onUndo(stm, steps) {\n let curPos = stm.position;\n const queue = stm[QUEUE_PROP],\n newPos = Math.max(0, curPos - steps),\n next = () => {\n stm.notifyStoresAboutStateRestoringStart();\n while (curPos !== newPos) {\n queue[--curPos].undo();\n }\n return [stm.autoRecord ? 'autoreadystate' : 'readystate', () => {\n stm.notifyStoresAboutStateRestoringStop();\n }];\n };\n return [{\n [STATE_PROP]: 'restoringstate',\n [POS_PROP]: newPos\n }, next];\n }\n onRedo(stm, steps) {\n let curPos = stm.position;\n const queue = stm[QUEUE_PROP],\n newPos = Math.min(queue.length, curPos + steps);\n const next = () => {\n stm.notifyStoresAboutStateRestoringStart();\n do {\n queue[curPos++].redo();\n } while (curPos !== newPos);\n return [stm.autoRecord ? 'autoreadystate' : 'readystate', () => {\n stm.notifyStoresAboutStateRestoringStop();\n }];\n };\n return [{\n [STATE_PROP]: 'restoringstate',\n [POS_PROP]: newPos\n }, next];\n }\n onEnable() {\n throwInvalidMethodCall();\n }\n onDisable() {\n return 'disabledstate';\n }\n onAutoRecordOn() {\n return {\n [STATE_PROP]: 'autoreadystate',\n [AUTO_RECORD_PROP]: true\n };\n }\n onAutoRecordOff() {\n throwInvalidMethodCall();\n }\n onStartTransaction(stm, title) {\n const transaction = new Transaction$1({\n title: title\n });\n return [{\n [STATE_PROP]: 'recordingstate',\n [TRANSACTION_PROP]: transaction\n }, () => {\n stm.notifyStoresAboutStateRecordingStart(transaction);\n }];\n }\n onStopTransaction() {\n throwInvalidMethodCall();\n }\n onStopTransactionDelayed() {\n throwInvalidMethodCall();\n }\n onRejectTransaction() {\n throwInvalidMethodCall();\n }\n onResetQueue(stm, options) {\n return resetQueue(stm, options);\n }\n onModelUpdate() {}\n onModelInsertChild() {}\n onModelRemoveChild() {}\n onStoreModelAdd() {}\n onStoreModelInsert() {}\n onStoreModelRemove() {}\n onStoreRemoveAll() {}\n}\n/**\n * STM ready state.\n *\n * @internal\n */\nconst ReadyState = new ReadyStateClass();\nRegistry.registerStmState('readystate', ReadyState);\n\n/**\n * @module Core/data/stm/state/RecordingState\n */\n/**\n * STM recording state class.\n *\n * @internal\n */\nclass RecordingStateClass extends StateBase {\n canUndo() {\n return false;\n }\n canRedo() {\n return false;\n }\n onEnable() {}\n onDisable(stm) {\n const transaction = stm[TRANSACTION_PROP];\n stm.notifyStoresAboutStateRecordingStop(transaction, {\n disabled: true\n });\n return {\n [STATE_PROP]: 'disabledstate',\n [TRANSACTION_PROP]: null\n };\n }\n onAutoRecordOn(stm) {\n return [{\n [STATE_PROP]: 'autorecordingstate',\n [AUTO_RECORD_PROP]: true\n }, () => {\n stm.stopTransactionDelayed();\n }];\n }\n onAutoRecordOff() {\n throwInvalidMethodCall();\n }\n onStartTransaction() {\n throwInvalidMethodCall();\n }\n onStopTransaction(stm, title) {\n const transaction = stm[TRANSACTION_PROP],\n queue = stm[QUEUE_PROP];\n let position = stm[POS_PROP];\n if (transaction.length) {\n if (!transaction.title && !title && stm.getTransactionTitle) {\n transaction.title = stm.getTransactionTitle(transaction);\n } else if (title) {\n transaction.title = title;\n }\n queue[position] = transaction;\n queue.length = ++position;\n }\n return [{\n [STATE_PROP]: 'readystate',\n [POS_PROP]: position,\n [TRANSACTION_PROP]: null\n }, () => {\n stm.notifyStoresAboutStateRecordingStop(transaction, {\n stop: true\n });\n }];\n }\n onRejectTransaction(stm) {\n const transaction = stm[TRANSACTION_PROP];\n return [{\n [STATE_PROP]: 'restoringstate',\n [TRANSACTION_PROP]: null\n }, () => {\n if (transaction.length) {\n transaction.undo();\n }\n return ['readystate', () => {\n stm.notifyStoresAboutStateRecordingStop(transaction, {\n rejected: true\n });\n }];\n }];\n }\n onStopTransactionDelayed() {\n throwInvalidMethodCall();\n }\n onResetQueue(stm, options) {\n return resetQueue(stm, options);\n }\n onModelUpdate(stm, model, newData, oldData) {\n const transaction = stm[TRANSACTION_PROP];\n transaction.addAction(stm.makeModelUpdateAction(model, newData, oldData));\n }\n onModelInsertChild(stm, parentModel, index, childModel, previousParent, previousIndex) {\n const transaction = stm[TRANSACTION_PROP];\n transaction.addAction(stm.makeModelInsertChildAction(parentModel, index, childModel, previousParent, previousIndex));\n }\n onModelRemoveChild(stm, parentModel, childModels, context) {\n const transaction = stm[TRANSACTION_PROP];\n transaction.addAction(stm.makeModelRemoveChildAction(parentModel, childModels, context));\n }\n onStoreModelAdd(stm, store, models, silent) {\n const transaction = stm[TRANSACTION_PROP];\n transaction.addAction(stm.makeStoreModelAddAction(store, models, silent));\n }\n onStoreModelInsert(stm, store, index, models, context, silent) {\n const transaction = stm[TRANSACTION_PROP];\n transaction.addAction(stm.makeStoreModelInsertAction(store, index, models, context, silent));\n }\n onStoreModelRemove(stm, store, models, context, silent) {\n const transaction = stm[TRANSACTION_PROP];\n transaction.addAction(stm.makeStoreModelRemoveAction(store, models, context, silent));\n }\n onStoreRemoveAll(stm, store, allRecords, silent) {\n const transaction = stm[TRANSACTION_PROP];\n transaction.addAction(stm.makeStoreRemoveAllAction(store, allRecords, silent));\n }\n}\n/**\n * STM recording state.\n *\n * @internal\n */\nconst RecordingState = new RecordingStateClass();\nRegistry.registerStmState('recordingstate', RecordingState);\n\n/**\n * @module Core/data/stm/state/RestoringState\n */\n/**\n * STM restoring state class.\n *\n * @internal\n */\nclass RestoringStateClass extends StateBase {\n static get $name() {\n return 'RestoringStateClass';\n }\n canUndo() {\n return false;\n }\n canRedo() {\n return false;\n }\n onUndo() {\n throwInvalidMethodCall();\n }\n onRedo() {\n throwInvalidMethodCall();\n }\n onEnable() {\n throwInvalidMethodCall();\n }\n onDisable() {\n throwInvalidMethodCall();\n }\n onAutoRecordOn() {\n return {\n [AUTO_RECORD_PROP]: true\n };\n }\n onAutoRecordOff() {\n return {\n [AUTO_RECORD_PROP]: false\n };\n }\n onStartTransaction() {\n throwInvalidMethodCall();\n }\n onStopTransaction() {\n throwInvalidMethodCall();\n }\n onStopTransactionDelayed() {\n throwInvalidMethodCall();\n }\n onRejectTransaction() {\n throwInvalidMethodCall();\n }\n onQueueReset() {\n throwInvalidMethodCall();\n }\n onModelUpdate() {}\n onModelInsertChild() {}\n onModelRemoveChild() {}\n onStoreModelAdd() {}\n onStoreModelInsert() {}\n onStoreModelRemove() {}\n onStoreRemoveAll() {}\n}\n/**\n * STM restoring state.\n *\n * @internal\n */\nconst RestoringState = new RestoringStateClass();\nRegistry.registerStmState('restoringstate', RestoringState);\n\n/**\n * @module Core/data/stm/state/AutoReadyState\n */\n/**\n * STM transaction autostart ready state class.\n *\n * @internal\n */\nclass AutoReadyStateClass extends ReadyStateClass {\n onAutoRecordOn() {\n throwInvalidMethodCall();\n }\n onAutoRecordOff() {\n return {\n [STATE_PROP]: 'readystate',\n [AUTO_RECORD_PROP]: false\n };\n }\n onStartTransaction(stm, title) {\n const transaction = new Transaction$1({\n title: title\n });\n return [{\n [STATE_PROP]: 'autorecordingstate',\n [TRANSACTION_PROP]: transaction\n }, () => {\n stm.notifyStoresAboutStateRecordingStart(transaction);\n stm.stopTransactionDelayed();\n }];\n }\n onModelUpdate(stm, model, newData, oldData) {\n stm.startTransaction();\n stm.onModelUpdate(model, newData, oldData);\n }\n onModelInsertChild(stm, parentModel, index, childModels, context) {\n stm.startTransaction();\n stm.onModelInsertChild(parentModel, index, childModels, context);\n }\n onModelRemoveChild(stm, parentModel, childModels, context) {\n stm.startTransaction();\n stm.onModelRemoveChild(parentModel, childModels, context);\n }\n onStoreModelAdd(stm, store, models, silent) {\n stm.startTransaction();\n stm.onStoreModelAdd(store, models, silent);\n }\n onStoreModelInsert(stm, store, index, models, context, silent) {\n stm.startTransaction();\n stm.onStoreModelInsert(store, index, models, silent);\n }\n onStoreModelRemove(stm, store, models, context, silent) {\n stm.startTransaction();\n stm.onStoreModelRemove(store, models, context, silent);\n }\n onStoreRemoveAll(stm, store, allRecords, silent) {\n stm.startTransaction();\n stm.onStoreRemoveAll(store, allRecords, silent);\n }\n}\n/**\n * STM transaction autostart ready state.\n *\n * @internal\n */\nconst AutoReadyState = new AutoReadyStateClass();\nRegistry.registerStmState('autoreadystate', AutoReadyState);\n\n/**\n * @module Core/data/stm/state/AutoRecordingState\n */\n/**\n * STM recording state class.\n *\n * @internal\n */\nclass AutoRecordingStateClass extends RecordingStateClass.mixin(Delayable) {\n onDisable(stm) {\n const transaction = stm[TRANSACTION_PROP],\n timer = stm[TRANSACTION_TIMER_PROP];\n if (timer) {\n this.clearTimeout(timer);\n }\n stm.notifyStoresAboutStateRecordingStop(transaction, {\n disabled: true\n });\n return {\n [STATE_PROP]: 'disabledstate',\n [TRANSACTION_PROP]: null,\n [TRANSACTION_TIMER_PROP]: null\n };\n }\n onAutoRecordOn(stm) {\n throwInvalidMethodCall();\n }\n onAutoRecordOff(stm) {\n const timer = stm[TRANSACTION_TIMER_PROP];\n if (timer) {\n this.clearTimeout(timer);\n }\n return {\n [STATE_PROP]: 'recordingstate',\n [AUTO_RECORD_PROP]: false,\n [TRANSACTION_TIMER_PROP]: null\n };\n }\n onStopTransaction(stm, title) {\n const transaction = stm[TRANSACTION_PROP],\n timer = stm[TRANSACTION_TIMER_PROP],\n queue = stm[QUEUE_PROP];\n let position = stm[POS_PROP];\n if (timer) {\n this.clearTimeout(timer);\n }\n if (transaction.length) {\n if (!transaction.title && !title && stm.getTransactionTitle) {\n transaction.title = stm.getTransactionTitle(transaction);\n } else if (title) {\n transaction.title = title;\n }\n queue[position] = transaction;\n queue.length = ++position;\n }\n return [{\n [STATE_PROP]: 'autoreadystate',\n [POS_PROP]: position,\n [TRANSACTION_PROP]: null,\n [TRANSACTION_TIMER_PROP]: null\n }, () => {\n stm.notifyStoresAboutStateRecordingStop(transaction, {\n stop: true\n });\n }];\n }\n onStopTransactionDelayed(stm) {\n let timer = stm[TRANSACTION_TIMER_PROP];\n if (timer) {\n this.clearTimeout(timer);\n }\n timer = this.setTimeout(() => {\n stm.stopTransaction();\n }, stm.autoRecordTransactionStopTimeout);\n return {\n [STATE_PROP]: AutoRecordingState,\n [TRANSACTION_TIMER_PROP]: timer\n };\n }\n onResetQueue(stm, options) {\n return resetQueue(stm, options);\n }\n onRejectTransaction(stm) {\n const transaction = stm[TRANSACTION_PROP],\n timer = stm[TRANSACTION_TIMER_PROP];\n if (timer) {\n this.clearTimeout(timer);\n }\n return [{\n [STATE_PROP]: 'restoringstate',\n [TRANSACTION_PROP]: null,\n [TRANSACTION_TIMER_PROP]: null\n }, () => {\n if (transaction.length) {\n transaction.undo();\n }\n return ['autoreadystate', () => {\n stm.notifyStoresAboutStateRecordingStop(transaction, {\n rejected: true\n });\n }];\n }];\n }\n onModelUpdate(stm, ...rest) {\n super.onModelUpdate(stm, ...rest);\n stm.stopTransactionDelayed();\n }\n onModelInsertChild(stm, ...rest) {\n super.onModelInsertChild(stm, ...rest);\n stm.stopTransactionDelayed();\n }\n onModelRemoveChild(stm, ...rest) {\n super.onModelRemoveChild(stm, ...rest);\n stm.stopTransactionDelayed();\n }\n onStoreModelAdd(stm, ...rest) {\n super.onStoreModelAdd(stm, ...rest);\n stm.stopTransactionDelayed();\n }\n onStoreModelInsert(stm, ...rest) {\n super.onStoreModelInsert(stm, ...rest);\n stm.stopTransactionDelayed();\n }\n onStoreModelRemove(stm, ...rest) {\n super.onStoreModelRemove(stm, ...rest);\n stm.stopTransactionDelayed();\n }\n onStoreRemoveAll(stm, ...rest) {\n super.onStoreRemoveAll(stm, ...rest);\n stm.stopTransactionDelayed();\n }\n}\n/**\n * STM recording state.\n *\n * @internal\n */\nconst AutoRecordingState = new AutoRecordingStateClass();\nRegistry.registerStmState('autorecordingstate', AutoRecordingState);\n\nconst MODEL_PROP = Symbol('MODEL_PROP'),\n NEW_DATA_PROP = Symbol('NEW_DATA_PROP'),\n OLD_DATA_PROP = Symbol('OLD_DATA_PROP');\n/**\n * Action to record the fact that a model has been updated.\n * @extends Core/data/stm/action/ActionBase\n */\nclass UpdateAction extends ActionBase {\n static get defaultConfig() {\n return {\n /**\n * Reference to a model which has been updated.\n *\n * @config {Core.data.Model}\n * @default\n */\n model: undefined,\n /**\n * Map of updated properties with new values.\n *\n * @config {Object}\n * @default\n */\n newData: undefined,\n /**\n * Map of updated properties with old values.\n *\n * @config {Object}\n * @default\n */\n oldData: undefined\n };\n }\n get type() {\n return 'UpdateAction';\n }\n get model() {\n return this[MODEL_PROP];\n }\n set model(value) {\n this[MODEL_PROP] = value;\n }\n get newData() {\n return this[NEW_DATA_PROP];\n }\n set newData(value) {\n this[NEW_DATA_PROP] = _objectSpread2({}, value);\n }\n get oldData() {\n return this[OLD_DATA_PROP];\n }\n set oldData(value) {\n this[OLD_DATA_PROP] = _objectSpread2({}, value);\n }\n undo() {\n const {\n model,\n oldData\n } = this;\n // engine needs the setters to be activated, since there's some additional logic (for example, invalidate\n // dispatcher)\n if (model.$) {\n Object.assign(model, oldData);\n }\n // it seems STM has to use `model.set()` because of `model.inSet` overrides or smth\n // w/o this call, just with `Object.assign()` above, the view is not refreshed\n // Since invoking accessor will just forward change to the engine, we need to pass `skipAccessors = true`\n // to this call to make this change on data level.\n // Covered by TaskEdit.t `autoSync` subtest\n model.set(oldData, null, null, null, true);\n }\n redo() {\n const {\n model,\n newData\n } = this;\n // see comments above\n if (model.$) {\n Object.assign(model, newData);\n }\n model.set(newData, null, null, null, true);\n }\n}\nUpdateAction._$name = 'UpdateAction';\n\n/**\n * @module Core/data/stm/action/InsertChildAction\n */\nconst PARENT_MODEL_PROP$1 = Symbol('PARENT_MODEL_PROP'),\n CHILD_MODELS_PROP$1 = Symbol('CHILD_MODELS_PROP'),\n INSERT_INDEX_PROP$1 = Symbol('INSERT_INDEX_PROP'),\n CONTEXT_PROP$3 = Symbol('CONTEXT_PROP');\n/**\n * Action to record the fact of adding a children models into a parent model.\n * @extends Core/data/stm/action/ActionBase\n */\nclass InsertChildAction extends ActionBase {\n static get defaultConfig() {\n return {\n /**\n * Reference to a parent model a child model has been added to.\n *\n * @config {Core.data.Model}\n * @default\n */\n parentModel: undefined,\n /**\n * Children models inserted.\n *\n * @config {Core.data.Model[]}\n * @default\n */\n childModels: undefined,\n /**\n * Index a children models are inserted at\n *\n * @config {Number}\n * @default\n */\n insertIndex: undefined,\n /**\n * Map having children models as keys and values containing previous parent\n * of each model and index at the previous parent.\n *\n * @config {Object}\n * @default\n */\n context: undefined\n };\n }\n get type() {\n return 'InsertChildAction';\n }\n get parentModel() {\n return this[PARENT_MODEL_PROP$1];\n }\n set parentModel(model) {\n this[PARENT_MODEL_PROP$1] = model;\n }\n get childModels() {\n return this[CHILD_MODELS_PROP$1];\n }\n set childModels(models) {\n this[CHILD_MODELS_PROP$1] = models.slice(0);\n }\n get insertIndex() {\n return this[INSERT_INDEX_PROP$1];\n }\n set insertIndex(index) {\n this[INSERT_INDEX_PROP$1] = index;\n }\n get context() {\n return this[CONTEXT_PROP$3];\n }\n set context(ctx) {\n this[CONTEXT_PROP$3] = ctx;\n }\n undo() {\n const {\n parentModel,\n context,\n childModels\n } = this;\n // Let's sort models by parent index such that models with lesser index\n // were inserted back first, thus making valid parent index of models following.\n childModels.sort((lhs, rhs) => {\n const {\n lhsParent,\n lhsIndex\n } = context.get(lhs) || {},\n {\n rhsParent,\n rhsIndex\n } = context.get(rhs) || {};\n return lhsParent && lhsParent === rhsParent ? lhsIndex - rhsIndex : 0;\n });\n // Now let's re-insert records back to where they were or remove them\n // if they weren't anywhere\n childModels.forEach(m => {\n const {\n parent,\n index\n } = context.get(m) || {};\n if (parent) {\n // If we move within same parent then index must be adjusted\n if (parent === parentModel) {\n let adjustedIndex;\n // we need to increment index if the node was moved up\n adjustedIndex = index > m.parentIndex ? index + 1 : index;\n // null index if we need to move to the end\n adjustedIndex = index === parent.children.length - 1 ? null : adjustedIndex;\n // if insertBefore is undefined the node will be appended to the end\n const insertBefore = parent.children[adjustedIndex];\n parent.insertChild(m, insertBefore);\n } else {\n // Insert at previous index\n parent.insertChild(m, parent.children[index]);\n }\n } else {\n // Just remove\n parentModel.removeChild(m);\n }\n });\n }\n redo() {\n const {\n parentModel,\n insertIndex,\n childModels\n } = this,\n insertBefore = parentModel.children[insertIndex];\n parentModel.insertChild(childModels, insertBefore);\n }\n}\nInsertChildAction._$name = 'InsertChildAction';\n\n/**\n * @module Core/data/stm/action/RemoveChildAction\n */\nconst PARENT_MODEL_PROP = Symbol('PARENT_MODEL_PROP'),\n CHILD_MODELS_PROP = Symbol('CHILD_MODELS_PROP'),\n CONTEXT_PROP$2 = Symbol('CONTEXT_PROP');\n/**\n * Action to record store remove child operation.\n * @extends Core/data/stm/action/ActionBase\n */\nclass RemoveChildAction extends ActionBase {\n static get defaultConfig() {\n return {\n /**\n * Reference to a parent model a child model has been removed to.\n *\n * @config {Core.data.Model}\n * @default\n */\n parentModel: undefined,\n /**\n * Children models removed.\n *\n * @config {Core.data.Model[]}\n * @default\n */\n childModels: undefined,\n /**\n * Map having children models as keys and values containing previous parent\n * index at the parent.\n *\n * @config {Object}\n * @default\n */\n context: undefined\n };\n }\n get type() {\n return 'RemoveChildAction';\n }\n get parentModel() {\n return this[PARENT_MODEL_PROP];\n }\n set parentModel(model) {\n this[PARENT_MODEL_PROP] = model;\n }\n get childModels() {\n return this[CHILD_MODELS_PROP];\n }\n set childModels(models) {\n this[CHILD_MODELS_PROP] = models.slice(0);\n }\n get context() {\n return this[CONTEXT_PROP$2];\n }\n set context(ctx) {\n this[CONTEXT_PROP$2] = ctx;\n }\n undo() {\n const {\n parentModel,\n context,\n childModels\n } = this;\n // Let's sort models by parent index such that models with lesser index\n // were inserted back first, thus making valid parent index of models following.\n childModels.sort((lhs, rhs) => {\n const lhsIndex = context.get(lhs),\n rhsIndex = context.get(rhs);\n return lhsIndex - rhsIndex;\n });\n // Now let's re-insert records back to where they were\n childModels.forEach(m => {\n parentModel.insertChild(m, context.get(m));\n });\n }\n redo() {\n this.parentModel.removeChild(this.childModels);\n }\n}\nRemoveChildAction._$name = 'RemoveChildAction';\n\n/**\n * @module Core/data/stm/action/AddAction\n */\nconst STORE_PROP$3 = Symbol('STORE_PROP'),\n MODEL_LIST_PROP$2 = Symbol('MODEL_LIST_PROP');\n/**\n * Action to record the fact of models adding to a store.\n * @extends Core/data/stm/action/ActionBase\n */\nclass AddAction extends ActionBase {\n static get defaultConfig() {\n return {\n /**\n * Reference to a store models have been added into.\n *\n * @config {Core.data.Store}\n * @default\n */\n store: undefined,\n /**\n * List of models added into the store.\n *\n * @config {Core.data.Model[]}\n * @default\n */\n modelList: undefined,\n /**\n * Flag showing if undo/redo should be done silently i.e. with events suppressed\n *\n * @config {Boolean}\n * @default\n */\n silent: false\n };\n }\n get type() {\n return 'AddAction';\n }\n get store() {\n return this[STORE_PROP$3];\n }\n set store(store) {\n this[STORE_PROP$3] = store;\n }\n get modelList() {\n return this[MODEL_LIST_PROP$2];\n }\n set modelList(list) {\n this[MODEL_LIST_PROP$2] = list.slice(0);\n }\n undo() {\n this.store.remove(this.modelList, this.silent);\n }\n redo() {\n this.store.add(this.modelList, this.silent);\n }\n}\nAddAction._$name = 'AddAction';\n\n/**\n * @module Core/data/stm/action/InsertAction\n */\nconst STORE_PROP$2 = Symbol('STORE_PROP'),\n MODEL_LIST_PROP$1 = Symbol('MODEL_LIST_PROP'),\n INSERT_INDEX_PROP = Symbol('INSERT_INDEX_PROP'),\n CONTEXT_PROP$1 = Symbol('CONTEXT_PROP');\n/**\n * Action to record the fact of models inserting into a store.\n * @extends Core/data/stm/action/ActionBase\n */\nclass InsertAction extends ActionBase {\n static get defaultConfig() {\n return {\n /**\n * Reference to a store models have been inserted into.\n *\n * @config {Core.data.Store}\n * @default\n */\n store: undefined,\n /**\n * List of models inserted into the store.\n *\n * @config {Core.data.Model[]}\n * @default\n */\n modelList: undefined,\n /**\n * Index the models have been inserted at.\n *\n * @config {Number}\n * @default\n */\n insertIndex: undefined,\n /**\n * Models move context (if models has been moved), if any.\n * Map this {@link Core/data/Model} instances as keys and their\n * previous index as values\n *\n * @config {Map}\n * @default\n */\n context: undefined,\n /**\n * Flag showing if undo/redo should be done silently i.e. with events suppressed\n *\n * @config {Boolean}\n * @default\n */\n silent: false\n };\n }\n get type() {\n return 'InsertAction';\n }\n get store() {\n return this[STORE_PROP$2];\n }\n set store(store) {\n this[STORE_PROP$2] = store;\n }\n get modelList() {\n return this[MODEL_LIST_PROP$1];\n }\n set modelList(list) {\n this[MODEL_LIST_PROP$1] = list.slice(0);\n }\n get insertIndex() {\n return this[INSERT_INDEX_PROP];\n }\n set insertIndex(index) {\n this[INSERT_INDEX_PROP] = index;\n }\n get context() {\n return this[CONTEXT_PROP$1];\n }\n set context(context) {\n this[CONTEXT_PROP$1] = context;\n }\n undo() {\n const {\n store,\n modelList,\n context,\n silent\n } = this;\n // Let's sort models by index such that models with lesser index\n // were inserted back first, thus making valid index of models following.\n modelList.sort((lhs, rhs) => {\n const lhsIndex = context.get(lhs),\n rhsIndex = context.get(rhs);\n return lhsIndex !== undefined && rhsIndex !== undefined ? lhsIndex - rhsIndex : 0;\n });\n modelList.forEach(m => {\n const index = context.get(m);\n // Flag the inserted record that we undo to skip adding it to \"store.removed\"\n m._undoingInsertion = true;\n if (index !== undefined) {\n // Insert at previous index\n store.insert(index, m, silent);\n } else {\n // Just remove\n store.remove(m, silent);\n }\n m._undoingInsertion = false;\n });\n }\n redo() {\n const me = this;\n me.store.insert(me.insertIndex, me.modelList, me.silent);\n }\n}\nInsertAction._$name = 'InsertAction';\n\n/**\n * @module Core/data/stm/action/RemoveAction\n */\nconst STORE_PROP$1 = Symbol('STORE_PROP'),\n MODEL_LIST_PROP = Symbol('MODEL_LIST_PROP'),\n CONTEXT_PROP = Symbol('CONTEXT_PROP');\n/**\n * Action to record the fact of models removed from a store.\n * @extends Core/data/stm/action/ActionBase\n */\nclass RemoveAction extends ActionBase {\n static get defaultConfig() {\n return {\n /**\n * Reference to a store models have been removed from.\n *\n * @config {Core.data.Store}\n * @default\n */\n store: undefined,\n /**\n * List of models removed from the store.\n *\n * @config {Core.data.Model[]}\n * @default\n */\n modelList: undefined,\n /**\n * Models removing context.\n *\n * @config {Object}\n * @default\n */\n context: undefined,\n /**\n * Flag showing if undo/redo should be done silently i.e. with events suppressed\n *\n * @config {Boolean}\n * @default\n */\n silent: false\n };\n }\n get type() {\n return 'RemoveAction';\n }\n get store() {\n return this[STORE_PROP$1];\n }\n set store(store) {\n this[STORE_PROP$1] = store;\n }\n get modelList() {\n return this[MODEL_LIST_PROP];\n }\n set modelList(list) {\n this[MODEL_LIST_PROP] = list.slice(0);\n }\n get context() {\n return this[CONTEXT_PROP];\n }\n set context(context) {\n this[CONTEXT_PROP] = context;\n }\n undo() {\n const {\n store,\n context,\n modelList,\n silent\n } = this;\n // Let's sort models by index such that models with lesser index\n // were inserted back first, thus making valid index of models following.\n modelList.sort((lhs, rhs) => {\n const lhsIndex = context.get(lhs),\n rhsIndex = context.get(rhs);\n // Here, in contrast to InsertAction, index is always present\n return lhsIndex - rhsIndex;\n });\n modelList.forEach(m => {\n const index = context.get(m);\n // Insert at previous index\n store.insert(index, m, silent);\n });\n }\n redo() {\n this.store.remove(this.modelList, this.silent);\n }\n}\nRemoveAction._$name = 'RemoveAction';\n\n/**\n * @module Core/data/stm/action/RemoveAllAction\n */\nconst STORE_PROP = Symbol('STORE_PROP'),\n ALL_RECORDS_PROP = Symbol('ALL_RECORDS_PROP');\n/**\n * Action to record store remove all operation.\n * @extends Core/data/stm/action/ActionBase\n */\nclass RemoveAllAction extends ActionBase {\n static get defaultConfig() {\n return {\n /**\n * Reference to a store cleared.\n *\n * @config {Core.data.Store}\n * @default\n */\n store: undefined,\n /**\n * All store records removed\n *\n * @config {Core.data.Model[]}\n * @default\n */\n allRecords: undefined,\n /**\n * Flag showing if undo/redo should be done silently i.e. with events suppressed\n *\n * @config {Boolean}\n * @default\n */\n silent: false\n };\n }\n get type() {\n return 'RemoveAllAction';\n }\n get store() {\n return this[STORE_PROP];\n }\n set store(store) {\n this[STORE_PROP] = store;\n }\n get allRecords() {\n return this[ALL_RECORDS_PROP];\n }\n set allRecords(records) {\n this[ALL_RECORDS_PROP] = records.slice(0);\n }\n undo() {\n const {\n store,\n allRecords,\n silent\n } = this;\n store.add(allRecords, silent);\n }\n redo() {\n this.store.removeAll(this.silent);\n }\n}\nRemoveAllAction._$name = 'RemoveAllAction';\n\n/**\n * @module Core/data/stm/StateTrackingManager\n */\nconst makeModelUpdateAction$1 = (model, newData, oldData) => {\n return new UpdateAction({\n model,\n newData,\n oldData\n });\n};\nconst makeModelInsertChildAction = (parentModel, insertIndex, childModels, context) => {\n return new InsertChildAction({\n parentModel,\n childModels,\n insertIndex,\n context\n });\n};\nconst makeModelRemoveChildAction = (parentModel, childModels, context) => {\n return new RemoveChildAction({\n parentModel,\n childModels,\n context\n });\n};\nconst makeStoreModelAddAction = (store, modelList, silent) => {\n return new AddAction({\n store,\n modelList,\n silent\n });\n};\nconst makeStoreModelInsertAction = (store, insertIndex, modelList, context, silent) => {\n return new InsertAction({\n store,\n insertIndex,\n modelList,\n context,\n silent\n });\n};\nconst makeStoreModelRemoveAction = (store, modelList, context, silent) => {\n return new RemoveAction({\n store,\n modelList,\n context,\n silent\n });\n};\nconst makeStoreRemoveAllAction = (store, allRecords, silent) => {\n return new RemoveAllAction({\n store,\n allRecords,\n silent\n });\n};\nconst stateTransition = (stm, event, ...args) => {\n const oldState = stm.state,\n newState = event.call(stm[STATE_PROP], stm, ...args);\n if (typeof newState === 'string') {\n stm[STATE_PROP] = Registry.resolveStmState(newState);\n } else if (newState instanceof StateBase) {\n stm[STATE_PROP] = newState;\n } else if (Array.isArray(newState)) {\n const [state, next] = newState;\n if (typeof state === 'string') {\n stm[STATE_PROP] = Registry.resolveStmState(state);\n } else if (state instanceof StateBase) {\n stm[STATE_PROP] = state;\n } else if (state && typeof state === 'object') {\n stm = Object.assign(stm, state);\n stm[STATE_PROP] = Registry.resolveStmState(stm[STATE_PROP]);\n }\n if (typeof next === 'function') {\n stateTransition(stm, next, ...args);\n }\n } else if (newState && typeof newState === 'object') {\n stm = Object.assign(stm, newState);\n stm[STATE_PROP] = Registry.resolveStmState(stm[STATE_PROP]);\n }\n if (oldState !== ReadyState && oldState !== AutoReadyState && newState !== ReadyState && newState !== AutoReadyState) {\n stm.trigger('ready');\n }\n};\n/**\n * Tracks the state of every store registered via {@link #function-addStore}. It is {@link #config-disabled} by default\n * so remember to call {@link #function-enable} when your stores are registered and initial dataset is loaded.\n * Use {@link #function-undo} / {@link #function-redo} method calls to restore state to a particular\n * point in time\n *\n * ```javascript\n * stm = new StateTrackingManager({\n * autoRecord : true,\n * listeners : {\n * 'recordingstop' : () => {\n * // your custom code to update undo/redo GUI controls\n * updateUndoRedoControls();\n * },\n * 'restoringstop' : ({ stm }) => {\n * // your custom code to update undo/redo GUI controls\n * updateUndoRedoControls();\n * }\n * },\n * getTransactionTitle : (transaction) => {\n * // your custom code to analyze the transaction and return custom transaction title\n * const lastAction = transaction.queue[transaction.queue.length - 1];\n *\n * if (lastAction instanceof AddAction) {\n * let title = 'Add new record';\n * }\n *\n * return title;\n * }\n * });\n *\n * stm.addStore(userStore);\n * stm.addStore(companyStore);\n * stm.addStore(otherStore);\n *\n * stm.enable();\n * ```\n *\n * **Note:** STM currently does not support undoing server side added and saved records.\n * Therefore it's recommended to {@link #function-resetQueue reset the queue}\n * each time a tracked store(s) loads from or saves its changes to the server.\n * If Crud Manager is used it can be done like this:\n * ```javascript\n * crudManager.on({\n * requestDone() {\n * stm.resetQueue();\n * }\n * });\n * ```\n * and in case individual stores are used:\n * ```javascript\n * ajaxStore.on({\n * afterRequest({ exception }) {\n * if (!exception) {\n * stm.resetQueue();\n * }\n * }\n * });\n * ```\n *\n * @mixes Core/mixin/Events\n * @extends Core/Base\n */\nclass StateTrackingManager$1 extends Events(Base$1) {\n static get defaultConfig() {\n return {\n /**\n * Default manager disabled state\n *\n * @config {Boolean}\n * @default\n */\n disabled: true,\n /**\n * Whether to start transaction recording automatically in case the Manager is enabled.\n *\n * In the auto recording mode, the manager waits for the first change in any store being managed and starts a transaction, i.e.\n * records any changes in its monitored stores. The transaction lasts for {@link #config-autoRecordTransactionStopTimeout} and\n * afterwards creates one undo/redo step, including all changes in the stores during that period of time.\n *\n * In non auto recording mode you have to call {@link #function-startTransaction} / {@link #function-stopTransaction} to start and end\n * a transaction.\n *\n * @config {Boolean}\n * @default\n */\n autoRecord: false,\n /**\n * The transaction duration (in ms) for the auto recording mode {@link #config-autoRecord}\n *\n * @config {Number}\n * @default\n */\n autoRecordTransactionStopTimeout: 100,\n /**\n * Store model update action factory\n *\n * @config {Function}\n * @default\n * @private\n */\n makeModelUpdateAction: makeModelUpdateAction$1,\n /**\n * Store insert child model action factory.\n *\n * @config {Function}\n * @default\n * @private\n */\n makeModelInsertChildAction: makeModelInsertChildAction,\n /**\n * Store remove child model action factory.\n *\n * @config {Function}\n * @default\n * @private\n */\n makeModelRemoveChildAction: makeModelRemoveChildAction,\n /**\n * Store add model action factory.\n *\n * @config {Function}\n * @default\n * @private\n */\n makeStoreModelAddAction: makeStoreModelAddAction,\n /**\n * Store insert model action factory.\n *\n * @config {Function}\n * @default\n * @private\n */\n makeStoreModelInsertAction: makeStoreModelInsertAction,\n /**\n * Store remove model action factory.\n *\n * @config {Function}\n * @default\n * @private\n */\n makeStoreModelRemoveAction: makeStoreModelRemoveAction,\n /**\n * Store remove all models action factory.\n *\n * @config {Function}\n * @default\n * @private\n */\n makeStoreRemoveAllAction: makeStoreRemoveAllAction,\n /**\n * Function to create a transaction title if none is provided.\n *\n * The function receives a transaction and should return a title.\n *\n * @config {Function}\n * @default\n */\n getTransactionTitle: null\n };\n }\n construct(...args) {\n Object.assign(this, {\n [STATE_PROP]: ReadyState,\n [STORES_PROP]: [],\n [QUEUE_PROP]: [],\n [POS_PROP]: 0,\n [TRANSACTION_PROP]: null,\n [TRANSACTION_TIMER_PROP]: null,\n [AUTO_RECORD_PROP]: false\n });\n super.construct(...args);\n }\n // TODO: This destroys the current state, which makes successive tests fail. Not sure what should be done\n // doDestroy() {\n // super.doDestroy();\n // this.destroyProperties(STATE_PROP);\n // }\n /**\n * Gets current state of the manager\n *\n * @property {Core.data.stm.state.StateBase}\n */\n get state() {\n return this[STATE_PROP];\n }\n /**\n * Gets current undo/redo queue position\n *\n * @property {Number}\n */\n get position() {\n return this[POS_PROP];\n }\n /**\n * Gets current undo/redo queue length\n *\n * @property {Number}\n */\n get length() {\n return this[QUEUE_PROP].length;\n }\n /**\n * Gets all the stores registered in STM\n *\n * @property {Core.data.Store[]}\n */\n get stores() {\n return Array.from(this[STORES_PROP]);\n }\n /**\n * Checks if a store has been added to the manager\n *\n * @param {Core.data.Store} store\n * @returns {Boolean}\n */\n hasStore(store) {\n return this[STORES_PROP].includes(store);\n }\n /**\n * Adds a store to the manager\n *\n * @param {Core.data.Store} store\n */\n addStore(store) {\n if (!this.hasStore(store)) {\n this[STORES_PROP].push(store);\n store.stm = this;\n }\n }\n /**\n * Removes a store from the manager\n *\n * @param {Core.data.Store} store\n */\n removeStore(store) {\n if (this.hasStore(store)) {\n this[STORES_PROP] = this[STORES_PROP].filter(s => s !== store);\n store.stm = null;\n }\n }\n /**\n * Calls `fn` for each store registered in STM.\n *\n * @param {Function} fn (store, id) => ...\n */\n forEachStore(fn) {\n this[STORES_PROP].forEach(s => fn(s, s.id));\n }\n /**\n * Get/set manager disabled state\n *\n * @property {Boolean}\n */\n get disabled() {\n return this.state === DisabledState;\n }\n set disabled(val) {\n const me = this;\n if (me.disabled !== val) {\n if (val) {\n stateTransition(me, me.state.onDisable, me);\n } else {\n stateTransition(me, me.state.onEnable, me);\n }\n me.trigger('stmDisabled', {\n disabled: val\n });\n /**\n * Fired when the disabled state of the STM changes\n *\n * @event disabled\n * @param {Core.data.stm.StateTrackingManager} source\n * @param {Boolean} disabled The current disabled state of the STM\n */\n me.trigger('disabled', {\n disabled: val\n });\n }\n }\n get enabled() {\n return !this.disabled;\n }\n /**\n * Enables manager\n */\n enable() {\n this.disabled = false;\n }\n /**\n * Disables manager\n */\n disable() {\n this.disabled = true;\n }\n /**\n * Checks manager ready state\n * @readonly\n * @property {Boolean}\n */\n get isReady() {\n return this.state === ReadyState || this.state === AutoReadyState;\n }\n waitForReadiness() {\n return this.await('ready', false);\n }\n /**\n * Checks manager recording state\n * @readonly\n * @property {Boolean}\n */\n get isRecording() {\n return this.state === RecordingState || this.state === AutoRecordingState;\n }\n /**\n * Gets/sets manager auto record option\n *\n * @property {Boolean}\n */\n get autoRecord() {\n return this[AUTO_RECORD_PROP];\n }\n set autoRecord(value) {\n const me = this;\n if (me.autoRecord != value) {\n if (value) {\n stateTransition(me, me.state.onAutoRecordOn, me);\n } else {\n stateTransition(me, me.state.onAutoRecordOff, me);\n }\n }\n }\n /**\n * Starts undo/redo recording transaction.\n *\n * @param {String} [title]\n */\n startTransaction(title = null) {\n stateTransition(this, this.state.onStartTransaction, title);\n }\n /**\n * Stops undo/redo recording transaction\n *\n * @param {String} [title]\n */\n stopTransaction(title = null) {\n stateTransition(this, this.state.onStopTransaction, title);\n }\n /**\n * Stops undo/redo recording transaction after {@link #config-autoRecordTransactionStopTimeout} delay.\n *\n * @private\n */\n stopTransactionDelayed() {\n stateTransition(this, this.state.onStopTransactionDelayed);\n }\n /**\n * Rejects currently recorded transaction.\n */\n rejectTransaction() {\n stateTransition(this, this.state.onRejectTransaction);\n }\n /**\n * Gets currently recording STM transaction.\n * @readonly\n * @property {Core.data.stm.Transaction}\n */\n get transaction() {\n return this[TRANSACTION_PROP];\n }\n /**\n * Gets titles of all recorded undo/redo transactions\n * @readonly\n * @property {String[]}\n */\n get queue() {\n return this[QUEUE_PROP].map(t => t.title);\n }\n /**\n * Gets manager restoring state.\n * @readonly\n * @property {Boolean}\n */\n get isRestoring() {\n return this.state === RestoringState;\n }\n /**\n * Checks if the manager can undo.\n *\n * @property {Boolean}\n */\n get canUndo() {\n return this.state.canUndo(this);\n }\n /**\n * Checks if the manager can redo.\n *\n * @property {Boolean}\n */\n get canRedo() {\n return this.state.canRedo(this);\n }\n /**\n * Undoes current undo/redo transaction.\n * @param {Number} [steps=1]\n * @returns {Promise} A promise which is resolved when undo action has been performed\n */\n async undo(steps = 1) {\n if (!this.isReady) {\n await this.waitForReadiness();\n }\n stateTransition(this, this.state.onUndo, steps);\n }\n /**\n * Undoes all transactions.\n * @returns {Promise} A promise which is resolved when undo actions has been performed\n */\n async undoAll() {\n if (!this.isReady) {\n await this.waitForReadiness();\n }\n this.undo(this.length);\n }\n /**\n * Redoes current undo/redo transaction.\n *\n * @param {Number} [steps=1]\n * @returns {Promise} A promise which is resolved when redo action has been performed\n */\n async redo(steps = 1) {\n if (!this.isReady) {\n await this.waitForReadiness();\n }\n stateTransition(this, this.state.onRedo, steps);\n }\n /**\n * Redoes all transactions.\n * @returns {Promise} A promise which is resolved when redo actions has been performed\n */\n async redoAll() {\n if (!this.isReady) {\n await this.waitForReadiness();\n }\n this.redo(this.length);\n }\n /**\n * Resets undo/redo queue.\n */\n resetQueue( /* private */options = {\n undo: true,\n redo: true\n }) {\n stateTransition(this, this.state.onResetQueue, options);\n }\n /**\n * Resets undo queue.\n */\n resetUndoQueue() {\n this.resetQueue({\n undo: true\n });\n }\n /**\n * Resets redo queue.\n */\n resetRedoQueue() {\n this.resetQueue({\n redo: true\n });\n }\n notifyStoresAboutStateRecordingStart(transaction) {\n this.forEachStore(store => {\n var _store$onStmRecording;\n return (_store$onStmRecording = store.onStmRecordingStart) === null || _store$onStmRecording === void 0 ? void 0 : _store$onStmRecording.call(store, this, transaction);\n });\n /**\n * Fired upon state recording operation starts.\n *\n * @event recordingStart\n * @param {Core.data.stm.StateTrackingManager} stm\n * @param {Core.data.stm.Transaction} transaction\n */\n this.trigger('recordingStart', {\n stm: this,\n transaction\n });\n }\n notifyStoresAboutStateRecordingStop(transaction, reason) {\n this.forEachStore(store => {\n var _store$onStmRecording2;\n return (_store$onStmRecording2 = store.onStmRecordingStop) === null || _store$onStmRecording2 === void 0 ? void 0 : _store$onStmRecording2.call(store, this, transaction, reason);\n });\n /**\n * Fired upon state recording operation stops.\n *\n * @event recordingStop\n * @param {Core.data.stm.StateTrackingManager} stm\n * @param {Core.data.stm.Transaction} transaction\n * @param {Object} reason Transaction stop reason\n * @param {Boolean} reason.stop Transaction recording has been stopped in a normal way.\n * @param {Boolean} reason.disabled Transaction recording has been stopped due to STM has been disabled.\n * @param {Boolean} reason.rejected Transaction recording has been stopped due to transaction has been rejected.\n */\n this.trigger('recordingStop', {\n stm: this,\n transaction,\n reason\n });\n }\n notifyStoresAboutStateRestoringStart() {\n this.forEachStore(store => {\n var _store$onStmRestoring;\n return (_store$onStmRestoring = store.onStmRestoringStart) === null || _store$onStmRestoring === void 0 ? void 0 : _store$onStmRestoring.call(store, this);\n });\n /**\n * Fired upon state restoration operation starts.\n *\n * @event restoringStart\n * @param {Core.data.stm.StateTrackingManager} stm\n */\n this.trigger('restoringStart', {\n stm: this\n });\n }\n notifyStoresAboutStateRestoringStop() {\n this.forEachStore(store => {\n var _store$onStmRestoring2;\n return (_store$onStmRestoring2 = store.onStmRestoringStop) === null || _store$onStmRestoring2 === void 0 ? void 0 : _store$onStmRestoring2.call(store, this);\n });\n /**\n * Fired upon state restoration operation stops.\n *\n * @event restoringStop\n * @param {Core.data.stm.StateTrackingManager} stm\n */\n this.trigger('restoringStop', {\n stm: this\n });\n }\n notifyStoresAboutQueueReset(options) {\n this.forEachStore(store => {\n var _store$onStmQueueRese;\n return (_store$onStmQueueRese = store.onStmQueueReset) === null || _store$onStmQueueRese === void 0 ? void 0 : _store$onStmQueueRese.call(store, this, options);\n });\n /**\n * Fired upon state undo/redo queue reset.\n *\n * @event queueReset\n * @param {Core.data.stm.StateTrackingManager} stm\n */\n this.trigger('queueReset', {\n stm: this,\n options\n });\n }\n /**\n * Method to call from model STM mixin upon model update\n *\n * @param {Core.data.Model} model\n * @param {Object} newData\n * @param {Object} oldData\n *\n * @private\n */\n onModelUpdate(model, newData, oldData) {\n stateTransition(this, this.state.onModelUpdate, model, newData, oldData);\n }\n /**\n * Method to call from model STM mixin upon tree model child insertion\n *\n * @param {Core.data.Model} parentModel Parent model\n * @param {Number} index Insertion index\n * @param {Core.data.Model[]} childModels Array of models inserted\n * @param {Map} context Map with inserted models as keys and objects with previous parent,\n * and index at previous parent.\n *\n * @private\n */\n onModelInsertChild(parentModel, index, childModels, context) {\n stateTransition(this, this.state.onModelInsertChild, parentModel, index, childModels, context);\n }\n /**\n * Method to call from model STM mixin upon tree model child removal\n *\n * @param {Core.data.Model} parentModel\n * @param {Core.data.Model[]} childModels\n * @param {Map} context\n *\n * @private\n */\n onModelRemoveChild(parentModel, childModels, context) {\n stateTransition(this, this.state.onModelRemoveChild, parentModel, childModels, context);\n }\n /**\n * Method to call from store STM mixin upon store models adding\n *\n * @param {Core.data.Store} store\n * @param {Core.data.Model[]} models\n * @param {Boolean} silent\n *\n * @private\n */\n onStoreModelAdd(store, models, silent) {\n stateTransition(this, this.state.onStoreModelAdd, store, models, silent);\n }\n /**\n * Method to call from store STM mixin upon store models insertion\n *\n * @param {Core.data.Store} store\n * @param {Number} index\n * @param {Core.data.Model[]} models\n * @param {Map} context\n * @param {Boolean} silent\n *\n * @private\n */\n onStoreModelInsert(store, index, models, context, silent) {\n stateTransition(this, this.state.onStoreModelInsert, store, index, models, context, silent);\n }\n /**\n * Method to call from store STM mixin upon store models removal\n *\n * @param {Core.data.Store} store\n * @param {Core.data.Model[]} models\n * @param {Object} context\n * @param {Boolean} silent\n *\n * @private\n */\n onStoreModelRemove(store, models, context, silent) {\n stateTransition(this, this.state.onStoreModelRemove, store, models, context, silent);\n }\n /**\n * Method to call from store STM mixin upon store clear\n *\n * @param {Core.data.Store} store\n * @param {Core.data.Model[]} allRecords\n * @param {Boolean} silent\n *\n * @private\n */\n onStoreRemoveAll(store, allRecords, silent) {\n stateTransition(this, this.state.onStoreRemoveAll, store, allRecords, silent);\n }\n // UI key event handling\n onUndoKeyPress(event) {\n const me = this;\n if (me.enabled) {\n if (event.shiftKey) {\n if (me.canRedo) {\n event.preventDefault();\n me.redo();\n }\n } else if (me.canUndo) {\n event.preventDefault();\n me.undo();\n }\n }\n }\n}\nStateTrackingManager$1._$name = 'StateTrackingManager';\n\n/**\n * @module Core/helper/DomSync\n */\nconst arraySlice = Array.prototype.slice,\n emptyArray$7 = Object.freeze([]),\n emptyObject$8 = Object.freeze({}),\n htmlRe = /[&<]/,\n // tests if setInnerText is equivalent to innerHTML\n {\n getPrototypeOf\n } = Object,\n {\n toString\n } = Object.prototype,\n {\n isEqual,\n isObject\n } = ObjectHelper,\n // Attributes used during creation that should not be compared\n checkEqualityIgnore = {\n parent: 1,\n elementData: 1,\n ns: 1,\n syncOptions: 1\n },\n makeCheckEqualityOptions = () => ({\n ignore: checkEqualityIgnore,\n refsFound: new Set()\n }),\n isClass = {\n class: 1,\n className: 1,\n classname: 1\n },\n simpleTypes = {\n bigint: 1,\n boolean: 1,\n function: 1,\n number: 1,\n // object\n string: 1,\n symbol: 1\n // undefined\n },\n // Attributes to ignore on sync\n syncIgnoreAttributes = {\n tag: 1,\n html: 1,\n text: 1,\n children: 1,\n tooltip: 1,\n parent: 1,\n nextSibling: 1,\n ns: 1,\n reference: 1,\n elementData: 1,\n retainElement: 1,\n compareHtml: 1,\n syncOptions: 1,\n listeners: 1,\n isReleased: 1,\n null: 1,\n '': 1,\n keepChildren: 1\n };\nconst addAndCacheCls = (cls, lastDomConfig) => {\n const propertyName = 'className' in lastDomConfig ? 'className' : 'class',\n propertyValue = lastDomConfig[propertyName];\n if (propertyValue) {\n if (typeof propertyValue === 'string') {\n const value = propertyValue.split(' ');\n if (!value.includes(cls)) {\n value.push(cls);\n lastDomConfig[propertyName] = value.join(' ');\n }\n } else if (Array.isArray(propertyValue)) {\n if (!propertyValue.includes(cls)) {\n propertyValue.push(cls);\n }\n } else if (propertyValue.isDomClassList) {\n propertyValue.add(cls);\n } else if (ObjectHelper.isObject(propertyValue)) {\n propertyValue[cls] = 1;\n }\n }\n};\nconst removeAndUncacheCls = (cls, lastDomConfig) => {\n const propertyName = 'className' in lastDomConfig ? 'className' : 'class',\n propertyValue = lastDomConfig[propertyName];\n if (propertyValue) {\n if (typeof propertyValue === 'string') {\n const value = propertyValue.split(' ');\n if (value.includes(cls)) {\n value.splice(value.indexOf(cls), 1);\n lastDomConfig[propertyName] = value.join(' ');\n }\n } else if (Array.isArray(propertyValue)) {\n if (propertyValue.includes(cls)) {\n propertyValue.splice(propertyValue.indexOf(cls), 1);\n }\n } else if (propertyValue.isDomClassList) {\n propertyValue.remove(cls);\n } else if (ObjectHelper.isObject(propertyValue)) {\n delete propertyValue[cls];\n }\n }\n};\n/**\n * A utility class for syncing DOM config objects to DOM elements. Syncing compares the new config with the previously\n * used for that element, only applying the difference. Very much like a virtual DOM approach on a per element basis\n * (element + its children).\n *\n * Usage example:\n *\n * ```javascript\n * DomSync.sync({\n * domConfig: {\n * className : 'b-outer',\n * children : [\n * {\n * className : 'b-child',\n * html : 'Child 1',\n * dataset : {\n * custom : true\n * }\n * },\n * {\n * className : 'b-child',\n * html : 'Child 2',\n * style : {\n * fontWeight : 'bold',\n * color : 'blue'\n * }\n * }\n * ]\n * },\n * targetElement : target\n * });\n * ```\n */\nclass DomSync {\n /**\n * Compares two DOM configs or properties of such objects for equality.\n * @param {Object} is The new value.\n * @param {Object} was The old value.\n * @param {Object} options An object with various options to control the comparison.\n * @param {Object} options.ignore An object containing names of attributes to ignore having `true` value.\n * @param {Map} options.equalityCache A map that can be used to record equality results for objects to avoid\n * recomputing the result for the same objects.\n * @param {Set} options.refsFound A Set that must be populated with the values of any `reference` properties found.\n * @param {Boolean|String} [ignoreRefs] Pass `true` to ignore `reference` properties on domConfigs. Pass `'children'`\n * to ignore `reference` properties only on child element configs.\n * @returns {Boolean}\n * @private\n */\n static checkEquality(is, was, options, ignoreRefs) {\n if (is === was) {\n return true;\n }\n // For purposes of DomSync, null and undefined are equivalent\n if (is == null) {\n return was == null;\n }\n if (!is || !was) {\n return false; // false since is !== was and is != null (we get here if was == null)\n }\n\n const typeA = typeof is,\n typeB = typeof was;\n if (typeA !== typeB || simpleTypes[typeA]) {\n // only test simpleTypes[typeA] since typeA === typeB\n return false;\n }\n // a and b are distinct objects or maybe arrays\n let cache = options.equalityCache || (options.equalityCache = new Map()),\n ignoreChildRefs = Boolean(ignoreRefs),\n equal,\n i,\n ignore,\n ignoreRefOpt,\n key,\n syncOptions,\n val;\n // We must cache results based on both sides of the comparison. If we only cache the result of \"is\" vs\n // any other value, we get failures in SchedulerWithAutoCommitStore.t.js\n cache = cache.get(is) || cache.set(is, new Map()).get(is);\n equal = cache.get(was);\n if (equal === undefined) {\n equal = true;\n if (getPrototypeOf(is) !== getPrototypeOf(was) || is instanceof Node) {\n // Two Nodes are not equal since they are !==\n equal = false;\n } else if (Array.isArray(is)) {\n // Since we have === prototypes, we know that \"was\" is also an array\n i = is.length;\n if (i !== was.length) {\n equal = false;\n } else {\n while (i-- > 0) {\n if (!DomSync.checkEquality(is[i], was[i], options, ignoreChildRefs)) {\n equal = false;\n break;\n }\n }\n }\n } else {\n var _syncOptions;\n syncOptions = is.syncOptions;\n ignoreRefOpt = (_syncOptions = syncOptions) === null || _syncOptions === void 0 ? void 0 : _syncOptions.ignoreRefs;\n if (ignoreRefOpt) {\n ignoreChildRefs = true;\n ignoreRefs = ignoreRefOpt !== 'children';\n }\n ignore = options.ignore || emptyObject$8;\n // We have 2 objects w/same prototype and that are not HTML nodes\n // https://jsbench.me/n2kgfre1r5/1 - profiles for-in-object loops vs for loop over keys array\n // fwiw, the smaller the object, the greater the benefit of for-in loop\n for (key in was) {\n if (!ignore[key] && !(key in is) && !(ignoreRefs && key === 'reference')) {\n equal = false;\n break;\n }\n }\n if (equal) {\n if (toString.call(was) === '[object Date]') {\n // Since we have === prototypes, we know that \"was\" is also a Date\n equal = is.getTime() === was.getTime();\n } else {\n for (key in is) {\n if (!ignore[key] && !(ignoreRefs && key === 'reference')) {\n if (!(key in was)) {\n equal = false;\n break;\n }\n val = is[key];\n // Per Johan:\n // Not sure we still use DocumentFragment. Used to be part of event rendering earlier,\n // but I think I have refactored it away. Worth checking\n // ...\n // Not finding any usages\n //\n // DocumentFragment, compare separately supplied html\n // if (key === 'html' && typeof val !== 'string' && `compareHtml` in is) {\n // if (is.compareHtml === was.compareHtml) {\n // continue;\n // }\n // }\n if (!DomSync.checkEquality(val, was[key], options, ignoreChildRefs)) {\n equal = false;\n break;\n }\n }\n }\n }\n }\n }\n if (!ignoreRefs && isObject(is) && is.reference) {\n var _options$refsFound;\n // We need to track object w/reference properties to know what reference elements may have\n // been removed since we may skip synchronizing them.\n (_options$refsFound = options.refsFound) === null || _options$refsFound === void 0 ? void 0 : _options$refsFound.add(is.reference);\n }\n cache.set(was, equal);\n }\n return equal;\n }\n /**\n * Sync a DOM config to a target element\n * @param {Object} options Options object\n * @param {DomConfig} options.domConfig A DOM config object\n * @param {HTMLElement} options.targetElement Target element to apply to\n * @param {Boolean} [options.strict=false] Specify `true` to limit synchronization to only the values set by\n * previous calls. Styles and classes placed directly on the DOM elements by other means will not be affected.\n * @param {String} [options.syncIdField] Field in dataset to use to match elements for re-usage\n * @param {String|String[]} [options.affected] The references affected by a partial sync.\n * @param {Function} [options.callback] A function that will be called on element re-usage, creation and similar\n * @param {Boolean} [options.configEquality] A function that will be called to compare an incoming config to\n * the last config applied to the `targetElement`. This function returns `true` if the passed values are equal and\n * `false` otherwise.\n * @returns {HTMLElement} Returns the updated target element (which is also updated in place)\n */\n static sync(options) {\n const optionsIn = options,\n {\n refOwner\n } = options,\n refsWas = refOwner === null || refOwner === void 0 ? void 0 : refOwner.byRef,\n checkEqualityOptions = makeCheckEqualityOptions();\n let affected = options.affected,\n i,\n ref,\n targetNode,\n lastDomConfig;\n if (typeof affected === 'string') {\n affected = [affected];\n }\n // NOTE: it is possible to reenter this method in at least the following way:\n // - sync() causes a focus change by manipulating the activeElement.\n // - a focus/blur/focusin/out event causes a widget config to initiate a recompose.\n // - the event also triggers code that forces the recompose to flush (e.g., by using a reference el).\n options = _objectSpread2(_objectSpread2({}, options), {}, {\n checkEqualityOptions\n });\n if (refOwner) {\n // We always rebuild the byRef map on each call\n refOwner.byRef = {};\n if (affected) {\n // We need to preserve all previously rendered refs that are not going to be affected by this partial\n // update...\n for (ref in refsWas) {\n if (!affected.includes(ref)) {\n refOwner.byRef[ref] = refsWas[ref];\n }\n }\n }\n options.refsWas = refsWas;\n }\n // performSync() returns false if nothing was done because the configs were equal... we bend the rules on\n // modifying input objects so we can return this potentially important detail to our caller:\n optionsIn.changed = DomSync.performSync(options, options.targetElement);\n if (refOwner) {\n if (!affected) {\n affected = Object.keys(refsWas);\n }\n for (i = 0; i < affected.length; ++i) {\n ref = affected[i];\n targetNode = refsWas[ref];\n if (checkEqualityOptions.refsFound.has(ref) || targetNode.retainElement) {\n refOwner.byRef[ref] = targetNode;\n } else {\n lastDomConfig = targetNode.lastDomConfig;\n targetNode.remove();\n refOwner.detachRef(ref, targetNode, lastDomConfig);\n }\n }\n }\n return options.targetElement;\n }\n static performSync(options, targetElement) {\n const {\n domConfig,\n callback\n } = options,\n {\n lastDomConfig\n } = targetElement,\n configIsEqual = options.configEquality || DomSync.checkEquality;\n if (!configIsEqual(domConfig, lastDomConfig, options.checkEqualityOptions, options.ignoreRefs)) {\n if (domConfig) {\n // Sync without affecting the containing element?\n if (!domConfig.onlyChildren) {\n DomSync.syncAttributes(domConfig, targetElement, options);\n DomSync.syncContent(domConfig, targetElement);\n }\n if (!domConfig.keepChildren) {\n DomSync.syncChildren(options, targetElement);\n }\n }\n // Allow null to clear html\n else {\n targetElement.innerHTML = null;\n targetElement.syncIdMap = null;\n }\n // Cache the config on the target for future comparison\n targetElement.lastDomConfig = !(domConfig !== null && domConfig !== void 0 && domConfig.onlyChildren && lastDomConfig) ? domConfig : _objectSpread2(_objectSpread2({}, lastDomConfig), {}, {\n children: domConfig.children\n });\n return true;\n } else {\n // Sync took no action, notify the world\n callback === null || callback === void 0 ? void 0 : callback({\n action: 'none',\n domConfig,\n targetElement\n });\n }\n return false;\n }\n //region Attributes\n static syncDataset(domConfig, targetElement) {\n const {\n lastDomConfig\n } = targetElement,\n sameConfig = domConfig === lastDomConfig,\n source = Object.keys(domConfig.dataset),\n target = lastDomConfig && lastDomConfig.dataset && Object.keys(lastDomConfig.dataset),\n delta = ArrayHelper.delta(source, target);\n let attr, i, name, value;\n // New attributes in dataset\n for (i = 0; i < delta.onlyInA.length; i++) {\n attr = delta.onlyInA[i];\n value = domConfig.dataset[attr];\n // Prevent data-property=\"null\" or data-property=\"undefined\"\n if (value != null) {\n targetElement.setAttribute(`data-${StringHelper.hyphenate(attr)}`, value);\n }\n }\n // Might have changed\n for (i = 0; i < delta.inBoth.length; i++) {\n attr = delta.inBoth[i];\n value = domConfig.dataset[attr];\n // Intentional != since dataset is always string but want numbers to match\n // noinspection EqualityComparisonWithCoercionJS\n if (sameConfig || value != lastDomConfig.dataset[attr]) {\n name = `data-${StringHelper.hyphenate(attr)}`;\n if (value == null) {\n targetElement.removeAttribute(name);\n } else {\n targetElement.setAttribute(name, value);\n }\n }\n }\n // Removed\n for (i = 0; i < delta.onlyInB.length; i++) {\n targetElement.removeAttribute(`data-${StringHelper.hyphenate(delta.onlyInB[i])}`);\n }\n }\n /**\n * Adds CSS classes to the element and to the cache.\n * @param {Core.helper.util.DomClassList|String|String[]|Object} cls\n * @param {HTMLElement} targetElement A previously DomSynced element\n * @internal\n */\n static addCls(cls, targetElement) {\n const {\n lastDomConfig\n } = targetElement;\n cls = DomClassList.normalize(cls, 'array');\n cls.forEach(cls => {\n targetElement.classList.add(cls);\n addAndCacheCls(cls, lastDomConfig);\n });\n }\n /**\n * Adds CSS classes from the element and from the cache.\n * @param {Core.helper.util.DomClassList|String|String[]|Object} cls\n * @param {HTMLElement} targetElement A previously DomSynced element\n * @internal\n */\n static removeCls(cls, targetElement) {\n const {\n lastDomConfig\n } = targetElement;\n cls = DomClassList.normalize(cls, 'array');\n cls.forEach(cls => {\n targetElement.classList.remove(cls);\n removeAndUncacheCls(cls, lastDomConfig);\n });\n }\n static syncClassList(domConfig, targetElement, lastDomConfig) {\n let cls = domConfig.className || domConfig.class,\n c,\n currentClasses,\n i,\n k,\n keep,\n last;\n if (lastDomConfig) {\n // NOTE: The following reads the DOM to determine classes that may have been added by other means. This\n // diff is only enabled when \"strict\" is used (see our callers)\n currentClasses = DomClassList.normalize(targetElement, 'array');\n cls = DomClassList.normalize(cls, 'object');\n last = DomClassList.normalize(lastDomConfig.className || lastDomConfig.class, 'object');\n keep = [];\n for (i = 0, k = currentClasses.length; i < k; ++i) {\n c = currentClasses[i];\n // We want to keep classes not in cls if we didn't add them last time\n if (cls[c] || !(c in last)) {\n last[c] = 1;\n keep.push(c);\n }\n }\n for (c in cls) {\n if (!last[c]) {\n keep.push(c);\n }\n }\n cls = keep.join(' ');\n } else {\n cls = DomClassList.normalize(cls); // to string\n }\n\n targetElement.setAttribute('class', cls);\n }\n // Attributes as map { attr : value, ... }\n static getSyncAttributes(domConfig) {\n const attributes = {},\n // Attribute names, simplifies comparisons and calls to set/removeAttribute\n names = [];\n // On a first sync, there are no domConfig on the target element yet\n if (domConfig) {\n Object.keys(domConfig).forEach(attr => {\n if (!syncIgnoreAttributes[attr]) {\n const name = attr.toLowerCase();\n attributes[name] = domConfig[attr];\n names.push(name);\n }\n });\n }\n return {\n attributes,\n names\n };\n }\n static syncAttributes(domConfig, targetElement, options) {\n const {\n lastDomConfig\n } = targetElement,\n // If the same config has come through, due to configEquality, we must update all attrs.\n sameConfig = domConfig === lastDomConfig,\n sourceSyncAttrs = DomSync.getSyncAttributes(domConfig),\n // Extract attributes from elements (sourceElement might be a config)\n {\n attributes: sourceAttributes,\n names: sourceNames\n } = sourceSyncAttrs,\n {\n attributes: targetAttributes,\n names: targetNames\n } = sameConfig ? sourceSyncAttrs : DomSync.getSyncAttributes(lastDomConfig),\n // Intersect arrays to determine what needs adding, removing and syncing\n {\n onlyInA: toAdd,\n onlyInB: toRemove,\n inBoth: toSync\n } = sameConfig ? {\n onlyInA: emptyArray$7,\n onlyInB: emptyArray$7,\n inBoth: sourceNames\n } : ArrayHelper.delta(sourceNames, targetNames);\n let attr, i;\n // Add new attributes\n for (i = 0; i < toAdd.length; i++) {\n attr = toAdd[i];\n const sourceAttr = sourceAttributes[attr];\n // Style requires special handling\n if (attr === 'style' && sourceAttr != null) {\n // TODO: Do diff style apply also instead of this replace\n DomHelper.applyStyle(targetElement, sourceAttr, true);\n }\n // So does dataset\n else if (attr === 'dataset') {\n DomSync.syncDataset(domConfig, targetElement);\n }\n // And class, which might be an object\n else if (isClass[attr]) {\n DomSync.syncClassList(domConfig, targetElement);\n }\n // Other attributes are set using setAttribute (since it calls toString() DomClassList works fine),\n // unless they are undefined in which case they are ignored to not get `href=\"undefined\"` etc\n else if (sourceAttr != null) {\n targetElement.setAttribute(attr, sourceAttr);\n }\n }\n // Removed no longer used attributes\n for (i = 0; i < toRemove.length; i++) {\n targetElement.removeAttribute(toRemove[i]);\n }\n // TODO: toAdd and toSync are growing very alike, consider merging\n // Sync values for all other attributes\n for (i = 0; i < toSync.length; i++) {\n attr = toSync[i];\n const sourceAttr = sourceAttributes[attr],\n targetAttr = targetAttributes[attr];\n // Attribute value null means remove attribute\n if (sourceAttr == null) {\n targetElement.removeAttribute(attr);\n }\n // Set all attributes that has changed, with special handling for style.\n else if (attr === 'style') {\n if (options.strict) {\n if (sameConfig) {\n DomSync.syncStyles(targetElement, sourceAttr);\n } else if (!isEqual(sourceAttr, targetAttr, true)) {\n DomSync.syncStyles(targetElement, sourceAttr, targetAttr);\n }\n } else if (sameConfig || !isEqual(sourceAttr, targetAttr, true)) {\n DomHelper.applyStyle(targetElement, sourceAttr, true);\n }\n }\n // And dataset\n else if (attr === 'dataset') {\n DomSync.syncDataset(domConfig, targetElement);\n }\n // And class, which might be an object\n else if (isClass[attr]) {\n DomSync.syncClassList(domConfig, targetElement, options.strict && targetElement.lastDomConfig);\n } else if (sameConfig || sourceAttr !== targetAttr) {\n targetElement.setAttribute(attr, sourceAttr);\n }\n }\n }\n static syncStyles(targetElement, sourceAttr, targetAttr) {\n let styles, key, value;\n if (!targetAttr) {\n styles = sourceAttr;\n } else {\n styles = {};\n // Style could be a string so we parse it to object to iterate over it's properties correctly\n sourceAttr = DomHelper.parseStyle(sourceAttr);\n targetAttr = DomHelper.parseStyle(targetAttr);\n if (sourceAttr) {\n for (key in sourceAttr) {\n value = sourceAttr[key];\n if (targetAttr[key] !== value) {\n styles[key] = value;\n }\n }\n }\n for (key in targetAttr) {\n if (!(key in sourceAttr)) {\n styles[key] = '';\n }\n }\n }\n DomHelper.applyStyle(targetElement, styles);\n }\n //endregion\n //region Content\n static syncContent(domConfig, targetElement) {\n const {\n html,\n text\n } = domConfig,\n content = text !== null && text !== void 0 ? text : html;\n // elementData holds custom data that we want to attach to the element (not visible in dom)\n if (domConfig.elementData) {\n targetElement.elementData = domConfig.elementData;\n }\n // Apply html from config\n if (content instanceof DocumentFragment) {\n // If given a DocumentFragment, replace content with it\n if (targetElement.childNodes.length === 1 && DomHelper.getChildElementCount(targetElement) === 0 && content.childNodes.length === 1 && DomHelper.getChildElementCount(content) === 0) {\n // Syncing a textNode to a textNode? Use shortcut\n DomHelper.setInnerText(targetElement, content.firstChild.data);\n } else {\n targetElement.innerHTML = '';\n targetElement.appendChild(content);\n }\n }\n // If content is likely html we set innerHTML\n else if (html != null && htmlRe.test(html)) {\n targetElement.innerHTML = String(html); // convert numbers to strings\n } else if (content != null) {\n var _lastDomConfig$childr;\n const {\n lastDomConfig\n } = targetElement;\n // If element had children or actual html content in last sync we force innerHTML to get rid of them\n if (lastDomConfig !== null && lastDomConfig !== void 0 && (_lastDomConfig$childr = lastDomConfig.children) !== null && _lastDomConfig$childr !== void 0 && _lastDomConfig$childr.length || lastDomConfig !== null && lastDomConfig !== void 0 && lastDomConfig.html && htmlRe.test(targetElement.lastDomConfig.html)) {\n targetElement.innerHTML = content;\n }\n // Otherwise we try to update the text as cheaply as possible (node data if possible)\n else {\n DomHelper.setInnerText(targetElement, String(content));\n }\n }\n }\n static insertTextNode(text, targetElement, callback, refOwner, beforeElement = null) {\n const newNode = document.createTextNode(text);\n targetElement.insertBefore(newNode, beforeElement);\n if (refOwner) {\n newNode.$refOwnerId = refOwner.id;\n }\n callback === null || callback === void 0 ? void 0 : callback({\n action: 'newNode',\n domConfig: text,\n targetElement: newNode\n });\n }\n static insertElement(domConfig, targetElement, targetNode, refOwner, syncIdMap, syncId, options) {\n var _options$callback;\n // Create a new element\n const newElement = options.ns ? document.createElementNS(options.ns, domConfig.tag || 'svg') : document.createElement(domConfig.tag || 'div');\n // Insert (or append if no targetNode)\n targetElement.insertBefore(newElement, targetNode);\n // Sync to it\n DomSync.performSync(options, newElement);\n if (syncId != null) {\n syncIdMap[syncId] = newElement;\n }\n // ARIA. In the absence of a defined role or the elememnt being hidden from ARIA,\n // omit unfocusable elements from the accessibility tree.\n if (!domConfig.role && !domConfig['aria-hidden'] && !DomHelper.isFocusable(newElement, true) && !newElement.htmlFor) {\n newElement.setAttribute('role', 'presentation');\n }\n if (refOwner) {\n newElement.$refOwnerId = refOwner.id;\n if (syncId) {\n newElement.$reference = syncId;\n refOwner.attachRef(syncId, newElement, domConfig);\n }\n }\n (_options$callback = options.callback) === null || _options$callback === void 0 ? void 0 : _options$callback.call(options, {\n action: 'newElement',\n domConfig,\n targetElement: newElement,\n syncId\n });\n }\n //endregion\n //region Children\n static syncChildren(options, targetElement) {\n var _domConfig$html, _syncOptions$ignoreRe;\n let {\n // eslint-disable-next-line prefer-const\n domConfig,\n syncIdField,\n callback,\n releaseThreshold,\n configEquality,\n ns,\n refOwner,\n refsWas,\n strict,\n checkEqualityOptions,\n ignoreRefs\n } = options,\n syncOptions = domConfig.syncOptions || {},\n // eslint-disable-line prefer-const\n cleanupNodes = null,\n index,\n nextNode,\n syncId;\n // Having specified html or text replaces all inner content, no point in syncing\n if ((_domConfig$html = domConfig.html) !== null && _domConfig$html !== void 0 ? _domConfig$html : domConfig.text) {\n return;\n }\n // This will affect the whole subtree since this goes into syncChildOptions (we convert 'children' to true\n // here because we are only processing the children):\n ignoreRefs = Boolean((_syncOptions$ignoreRe = syncOptions.ignoreRefs) !== null && _syncOptions$ignoreRe !== void 0 ? _syncOptions$ignoreRe : ignoreRefs);\n if (ignoreRefs) {\n refOwner = refsWas = null;\n }\n if ('strict' in syncOptions) {\n strict = syncOptions.strict;\n }\n const\n // Always repopulate the map, since elements might get used by other syncId below\n newSyncIdMap = refOwner ? refOwner.byRef : {},\n sourceConfigs = arraySlice.call(domConfig.children || []),\n targetNodes = arraySlice.call(targetElement.childNodes),\n syncIdMap = refsWas || targetElement.syncIdMap || {},\n releasedIdMap = targetElement.releasedIdMap || {},\n nextTarget = remove => {\n // Recursive calls to performSync can teleport elements around the DOM tree (when we are given\n // the DOM nodes in the domConfig), so be sure to skip over any elements that are no longer children\n // of our targetElement\n while (targetNodes.length && targetNodes[0].parentNode !== targetElement) {\n targetNodes.shift();\n }\n return (remove ? targetNodes.shift() : targetNodes[0]) || null;\n };\n // Each level can optionally specify its own syncIdField, strict and callback, if left out parent levels will be used\n syncIdField = syncOptions.syncIdField || syncIdField;\n strict = syncOptions.strict || strict;\n callback = syncOptions.callback || callback;\n configEquality = syncOptions.configEquality || configEquality;\n // Make sure releaseThreshold 0 is respected...\n releaseThreshold = 'releaseThreshold' in syncOptions ? syncOptions.releaseThreshold : releaseThreshold;\n if (syncIdField) {\n targetElement.syncIdMap = newSyncIdMap;\n }\n // Settings to use in all syncs below\n const syncChildOptions = {\n checkEqualityOptions: checkEqualityOptions || makeCheckEqualityOptions(),\n ignoreRefs,\n refOwner,\n refsWas,\n strict,\n syncIdField,\n releaseThreshold,\n callback,\n configEquality\n };\n while (sourceConfigs.length) {\n const sourceConfig = sourceConfigs.shift();\n syncId = null;\n // Allowing null, convenient when using Array.map() to generate children\n if (!sourceConfig) {\n continue;\n }\n if (sourceConfig instanceof Node) {\n nextNode = nextTarget();\n // Widgets may supply the element of another widget in their rendering... just insert it and move on\n if (sourceConfig !== nextNode) {\n targetElement.insertBefore(sourceConfig, nextNode);\n }\n index = targetNodes.indexOf(sourceConfig);\n if (index > -1) {\n targetNodes.splice(index, 1);\n }\n continue;\n }\n const isTextNode = typeof sourceConfig === 'string';\n // Used in all syncs\n syncChildOptions.domConfig = sourceConfig;\n syncChildOptions.ns = sourceConfig.ns || ns;\n if (!isTextNode) {\n // If syncIdField was supplied, we should first try to reuse element with\n // matching \"id\"\n if (refOwner) {\n syncId = sourceConfig.reference;\n } else if (syncIdField && sourceConfig.dataset) {\n syncId = sourceConfig.dataset[syncIdField];\n }\n // We have an id to look for\n if (syncId != null && !sourceConfig.unmatched) {\n // Find any matching element, either in use or previously released\n const syncTargetElement = syncIdMap[syncId] || releasedIdMap[syncId];\n if (syncTargetElement) {\n const {\n lastDomConfig\n } = syncTargetElement;\n // Just relink if flagged with `retainElement` (for example during dragging)\n if (syncTargetElement.retainElement) ;\n // Otherwise sync with the matched element\n else if (DomSync.performSync(syncChildOptions, syncTargetElement)) {\n var _callback;\n // Sync took some action, notify the world\n (_callback = callback) === null || _callback === void 0 ? void 0 : _callback({\n action: 'reuseOwnElement',\n domConfig: sourceConfig,\n targetElement: syncTargetElement,\n lastDomConfig,\n syncId\n });\n }\n // Since it wont sync above when flagged to be retained, we need to apply the flag here\n if (sourceConfig.retainElement) {\n syncTargetElement.retainElement = true;\n }\n // Cache the element on the syncIdMap for faster retrieval later\n newSyncIdMap[syncId] = syncTargetElement;\n // Remove target from targetElements & release tracking, no-one else is allowed to sync with it\n ArrayHelper.remove(targetNodes, syncTargetElement);\n delete releasedIdMap[syncId];\n syncTargetElement.isReleased = false;\n nextNode = nextTarget();\n if (syncTargetElement.parentNode !== targetElement || strict && syncTargetElement.nextSibling !== nextNode) {\n targetElement.insertBefore(syncTargetElement, nextNode);\n }\n } else if (strict) {\n DomSync.insertElement(sourceConfig, targetElement, nextTarget(), refOwner, newSyncIdMap, syncId, syncChildOptions);\n } else {\n // No match, move to end of queue to not steal some one else's element\n sourceConfigs.push(sourceConfig);\n // Also flag as unmatched to know that when we reach this element again\n sourceConfig.unmatched = true;\n }\n // Node handled, carry on with next one\n continue;\n }\n // Avoid polluting the config object when done\n if (sourceConfig.unmatched) {\n delete sourceConfig.unmatched;\n }\n }\n // Skip over any retained elements\n let beforeNode = null,\n targetNode = null,\n cleanupNode;\n while (!targetNode && (cleanupNode = nextTarget(true))) {\n if (refOwner) {\n // When syncing for a refOwner, foreign elements are skipped.\n if (cleanupNode.$refOwnerId !== refOwner.id) {\n continue;\n }\n if (cleanupNode.$reference) {\n // In refOwner mode we always pass strict:true, so this won't happen... but if it did, the\n // idea is that ref els do not get cleaned up until the end of the sync process.\n if (!strict) {\n continue;\n }\n // Since we want to maintain DOM order, this ref el marks the spot where to insert. We also\n // don't want to put it into cleanupNodes (see above). We cannot reuse ref els.\n beforeNode = cleanupNode;\n break;\n }\n // The element is owned by this refOwner and not assigned a reference...\n // We can reuse it\n targetNode = cleanupNode;\n } else if (!cleanupNode.retainElement) {\n targetNode = cleanupNode;\n }\n if (!targetNode) {\n (cleanupNodes || (cleanupNodes = [])).push(cleanupNode);\n }\n }\n if (beforeNode || !targetNode) {\n if (isTextNode) {\n DomSync.insertTextNode(sourceConfig, targetElement, callback, refOwner, beforeNode);\n } else {\n // Will append if beforeNode === null\n DomSync.insertElement(sourceConfig, targetElement, beforeNode, refOwner, newSyncIdMap, syncId, syncChildOptions);\n }\n }\n // We have targets left\n else {\n // Matching element tag, sync it\n if (!isTextNode && targetNode.nodeType === Node.ELEMENT_NODE && (sourceConfig.tag || 'div').toLowerCase() === targetNode.tagName.toLowerCase()) {\n var _lastDomConfig$datase, _callback2;\n const {\n lastDomConfig\n } = targetNode,\n result = DomSync.performSync(syncChildOptions, targetNode);\n // Remove reused element from release tracking\n if (syncIdField && (lastDomConfig === null || lastDomConfig === void 0 ? void 0 : (_lastDomConfig$datase = lastDomConfig.dataset) === null || _lastDomConfig$datase === void 0 ? void 0 : _lastDomConfig$datase[syncIdField]) != null) {\n delete releasedIdMap[lastDomConfig.dataset[syncIdField]];\n }\n if (syncId != null) {\n newSyncIdMap[syncId] = targetNode;\n }\n targetNode.isReleased = false;\n // Only use callback if sync succeeded (anything changed)\n result && ((_callback2 = callback) === null || _callback2 === void 0 ? void 0 : _callback2({\n action: 'reuseElement',\n domConfig: sourceConfig,\n targetElement: targetNode,\n lastDomConfig,\n syncId\n }));\n }\n // Text node to text node, change text :)\n else if (isTextNode && targetNode.nodeType === Node.TEXT_NODE) {\n targetNode.data = sourceConfig;\n // Not using callback for updating text of node, have no usecase for it currently\n }\n // Not matching, replace it\n else {\n if (isTextNode) {\n DomSync.insertTextNode(sourceConfig, targetElement, callback, refOwner, targetNode);\n } else {\n // Will insert\n DomSync.insertElement(sourceConfig, targetElement, targetNode, refOwner, newSyncIdMap, syncId, syncChildOptions);\n }\n targetNode.remove();\n }\n }\n } // while (sourceConfigs.length)\n // Out of source nodes, remove remaining target nodes\n while (nextNode = nextTarget(true)) {\n // Any remaining nodes that belong to this refOwner need to be cleaned up. If\n // they have an assigned reference, however, they will be handled at the very\n // end of the sync process since those elements can move in the node hierarchy.\n if (!refOwner || nextNode.$refOwnerId === refOwner.id && !nextNode.$reference) {\n (cleanupNodes || (cleanupNodes = [])).push(nextNode);\n }\n }\n if (cleanupNodes) {\n DomSync.syncChildrenCleanup(targetElement, cleanupNodes, newSyncIdMap, callback, refOwner, releaseThreshold, syncIdField);\n }\n }\n static syncChildrenCleanup(targetElement, cleanupNodes, newSyncIdMap, callback, refOwner, releaseThreshold, syncIdField) {\n let releaseCount = 0,\n ref;\n for (const targetNode of cleanupNodes) {\n const {\n lastDomConfig\n } = targetNode;\n // Element might be retained, hands off (for example while dragging)\n if (!targetNode.retainElement) {\n // When using syncId to reuse elements, \"release\" left over elements instead of removing them, up to a\n // limit specified as releaseThreshold, above which elements are removed instead\n if (!refOwner && syncIdField && (releaseThreshold == null || releaseCount < releaseThreshold)) {\n // Prevent releasing already released element\n if (!targetNode.isReleased) {\n targetNode.className = 'b-released';\n targetNode.isReleased = true;\n // Store released element in syncIdMap, to facilitate reusing it for self later\n if (lastDomConfig !== null && lastDomConfig !== void 0 && lastDomConfig.dataset) {\n if (!targetElement.releasedIdMap) {\n targetElement.releasedIdMap = {};\n }\n targetElement.releasedIdMap[lastDomConfig.dataset[syncIdField]] = targetNode;\n }\n callback === null || callback === void 0 ? void 0 : callback({\n action: 'releaseElement',\n domConfig: lastDomConfig,\n lastDomConfig,\n targetElement: targetNode\n });\n // Done after callback on purpose, to allow checking old className\n if (lastDomConfig) {\n // Make sure lastDomConfig differs even from the same domConfig applied again\n // Do not want to discard it completely since it is needed for diff when reused later\n lastDomConfig.isReleased = true;\n // To force reapply of classes on reuse\n if (lastDomConfig.className) {\n lastDomConfig.className = 'b-released';\n }\n if (lastDomConfig.class) {\n lastDomConfig.class = 'b-released';\n }\n // Same for style\n // (for elements positioned using style, when moved in a non DomSync way, aka EventDrag)\n if (lastDomConfig.style) {\n lastDomConfig.style = null;\n }\n }\n }\n releaseCount++;\n }\n // In normal sync mode, remove left overs\n else {\n targetNode.remove();\n if (refOwner) {\n ref = targetNode.$reference;\n if (ref) {\n refOwner.detachRef(ref, targetNode, lastDomConfig);\n }\n }\n // Remove from \"release tracking\"\n if (targetElement.releasedIdMap && syncIdField && lastDomConfig !== null && lastDomConfig !== void 0 && lastDomConfig.dataset) {\n delete targetElement.releasedIdMap[lastDomConfig.dataset[syncIdField]];\n }\n callback === null || callback === void 0 ? void 0 : callback({\n action: 'removeElement',\n domConfig: targetNode.lastDomConfig,\n lastDomConfig: targetNode.lastDomConfig,\n targetElement: targetNode\n });\n }\n } else if (syncIdField) {\n // Keep retained element in map\n if (lastDomConfig) {\n newSyncIdMap[targetNode.dataset[syncIdField]] = targetNode;\n }\n }\n }\n }\n /**\n * Remove a child element without syncing, for example when dragging an element to some other parent.\n * Removes it both from DOM and the parent elements syncMap\n * @param {HTMLElement} parentElement\n * @param {HTMLElement} childElement\n */\n static removeChild(parentElement, childElement) {\n if (parentElement.contains(childElement)) {\n const syncIdMap = parentElement.syncIdMap;\n if (syncIdMap) {\n const index = Object.values(syncIdMap).indexOf(childElement);\n if (index > -1) {\n delete syncIdMap[Object.keys(syncIdMap)[index]];\n }\n }\n parentElement.removeChild(childElement);\n }\n }\n /**\n * Adds a child element without syncing, making it properly available for later syncs. Useful for example\n * when dragging and dropping an element from some other parent.\n * @param {HTMLElement} parentElement\n * @param {HTMLElement} childElement\n * @param {String|Number} syncId\n */\n static addChild(parentElement, childElement, syncId) {\n parentElement.appendChild(childElement);\n if (!parentElement.syncIdMap) {\n parentElement.syncIdMap = {};\n }\n parentElement.syncIdMap[syncId] = childElement;\n }\n /**\n * Get a child element using a dot separated syncIdMap path.\n *\n * ```javascript\n * DomSync.getChild(eventWrap, 'event.percentBar');\n * ```\n *\n * @param {HTMLElement} element \"root\" element, under which the path starts\n * @param {String} path Dot '.' separated path of syncIdMap entries\n * @returns {HTMLElement} Child element or `null` if path did not match any element\n */\n static getChild(element, path) {\n const syncIds = String(path).split('.');\n for (const id of syncIds) {\n var _element, _element$syncIdMap;\n element = (_element = element) === null || _element === void 0 ? void 0 : (_element$syncIdMap = _element.syncIdMap) === null || _element$syncIdMap === void 0 ? void 0 : _element$syncIdMap[id];\n if (!element) {\n return null;\n }\n }\n return element;\n }\n //endregion\n}\n\nDomSync._$name = 'DomSync';\n\n/**\n * @module Core/helper/util/Fullscreen\n */\n/**\n * Encapsulates the functionality related to switching cross-browser to full screen view and back.\n */\nclass Fullscreen {\n static init() {\n const fnNames = ['fullscreenEnabled', 'requestFullscreen', 'exitFullscreen', 'fullscreenElement'],\n // turns fnNames into function calls to prefixed functions, fullscreenEnabled -> document.mozFullscreenEnabled\n prefixFn = prefix => fnNames.map(fn => {\n let result = prefix + StringHelper.capitalize(fn);\n // fullscreenEnabled in Firefox is called fullScreenEnabled\n if (prefix === 'moz') {\n result = result.replace('screen', 'Screen');\n // #6555 - Crash when clicking full screen button twice\n // firefox doesn't support exitFullScreen method\n if ('mozCancelFullScreen' in document && fn === 'exitFullscreen') {\n result = 'mozCancelFullScreen';\n }\n }\n return result;\n });\n this.functions = 'fullscreenEnabled' in document && fnNames || 'webkitFullscreenEnabled' in document && prefixFn('webkit') || 'mozFullScreenEnabled' in document && prefixFn('moz') || 'msFullscreenEnabled' in document && prefixFn('ms') || [];\n const eventNames = ['fullscreenchange', 'fullscreenerror'],\n msEventNames = ['MSFullscreenChange', 'MSFullscreenError'],\n prefixEvt = prefix => eventNames.map(eventName => prefix + StringHelper.capitalize(eventName));\n this.events = 'fullscreenEnabled' in document && eventNames || 'webkitFullscreenEnabled' in document && prefixEvt('webkit') || 'mozFullscreenEnabled' in document && prefixEvt('moz') || 'msFullscreenEnabled' in document && msEventNames || [];\n }\n /**\n * True if the fullscreen mode is supported and enabled, false otherwise\n * @property {Boolean}\n */\n static get enabled() {\n return Boolean(this.functions[0] && document[this.functions[0]]);\n }\n /**\n * Request entering the fullscreen mode.\n * @param {HTMLElement} element Element to be displayed fullscreen\n * @returns {Promise} A promise which is resolved with a value of undefined when the transition to full screen is complete.\n */\n static async request(element) {\n return this.functions[1] && (element === null || element === void 0 ? void 0 : element[this.functions[1]]());\n }\n /**\n * Exit the previously entered fullscreen mode.\n * @returns {Promise} A promise which is resolved once the user agent has finished exiting full-screen mode\n */\n static async exit() {\n return this.functions[2] && document[this.functions[2]]();\n }\n /**\n * True if fullscreen mode is currently active, false otherwise\n * @property {Boolean}\n */\n static get isFullscreen() {\n return !!this.element;\n }\n static get element() {\n return this.functions[3] && document[this.functions[3]];\n }\n /**\n * Installs the passed listener to fullscreenchange event\n * @param {Function} fn The listener to install\n */\n static onFullscreenChange(fn) {\n if (this.events[0]) {\n document.addEventListener(this.events[0], fn);\n }\n }\n /**\n * Uninstalls the passed listener from fullscreenchange event\n * @param {Function} fn\n */\n static unFullscreenChange(fn) {\n if (this.events[0]) {\n document.removeEventListener(this.events[0], fn);\n }\n }\n}\nFullscreen.init();\nFullscreen._$name = 'Fullscreen';\n\n/* globals ResizeObserver: true */\nlet resizeFireTimer = null;\nconst resizedQueue = [],\n isAbsolutelyPositioned = n => {\n var _n$ownerDocument$defa;\n return n.nodeType === n.ELEMENT_NODE && ((_n$ownerDocument$defa = n.ownerDocument.defaultView) === null || _n$ownerDocument$defa === void 0 ? void 0 : _n$ownerDocument$defa.getComputedStyle(n).getPropertyValue('position')) === 'absolute';\n };\n/**\n * @module Core/helper/ResizeMonitor\n */\n/**\n * Allows size monitoring of elements (or optionally a Window instance).\n *\n * ```\n * ResizeMonitor.addResizeListener(\n * myElement,\n * element => {\n * console.log(element, ' changed size');\n * }\n * );\n * ```\n *\n * @internal\n */\nclass ResizeMonitor {\n /**\n * Adds a resize listener to the passed element which is called when the element\n * is resized by layout.\n * @param {HTMLElement} element The element to listen for resizing.\n * @param {Function} handler The handling function. Will be passed the element.\n */\n static addResizeListener(element, handler) {\n const me = this;\n if (element === document || element === globalThis) {\n element = document.body;\n }\n if (element.nodeType === element.DOCUMENT_FRAGMENT_NODE) {\n element = element.host;\n }\n if (!element.classList.contains('b-resize-monitored')) {\n element.classList.add('b-resize-monitored');\n element._bResizemonitor = {\n handlers: []\n };\n }\n // If we're looking at the document, or body, use a window resize listener.\n if (element === document.body) {\n if (!me.hasWindowResizeListener) {\n // Throttle the reaction to window resize to only fire once every 100ms\n globalThis.addEventListener('resize', me.onWindowResize);\n me.hasWindowResizeListener = true;\n }\n }\n // Regular element - use ResizeObserver by preference\n else if (globalThis.ResizeObserver) {\n if (!me.resizeObserver) {\n me.resizeObserver = new ResizeObserver(me.onElementResize);\n }\n me.resizeObserver.observe(element);\n }\n // Polyfill ResizeObserver\n else {\n element.classList.add('b-no-resizeobserver');\n const [monitors, expand, shrink] = DomHelper.createElement({\n parent: element,\n className: 'b-resize-monitors',\n children: [{\n className: 'b-resize-monitor-expand'\n }, {\n className: 'b-resize-monitor-shrink'\n }]\n }, {\n returnAll: true\n });\n expand.scrollLeft = expand.scrollTop = shrink.scrollLeft = shrink.scrollTop = 1000000;\n expand.addEventListener('scroll', me.onSizeMonitorScroll, true);\n shrink.addEventListener('scroll', me.onSizeMonitorScroll, true);\n // Also need to fake a resize-scroll on DOM mutation\n (handler.targetMutationMonitor = new MutationObserver(m => {\n const addedNodes = [],\n removedNodes = [];\n // MutationObserver may report a mutation which consists of removing a node and adding it back again.\n // We need to filter such nodes\n for (const mr of m) {\n if (mr.type === 'childList') {\n addedNodes.push.apply(addedNodes, mr.addedNodes);\n removedNodes.push.apply(removedNodes, mr.removedNodes);\n }\n }\n const changedNodes = [...addedNodes.filter(r => !removedNodes.includes(r)), ...removedNodes.filter(r => !addedNodes.includes(r))];\n if (changedNodes.length === 0) {\n return;\n }\n // If the changed nodes were absolutely positioned, then they won't\n // cause a resize, so return\n if (changedNodes.length > 0 && changedNodes.every(isAbsolutelyPositioned)) {\n return;\n }\n // We only want the size monitor listener to trigger, so this event must NOT bubble\n // to any application or other framework listeners.\n expand.dispatchEvent(new CustomEvent('scroll', {\n bubbles: false\n }));\n })).observe(element, {\n childList: true,\n subtree: true\n });\n // store reference for easier cleanup later\n handler.monitorElement = monitors;\n }\n element._bResizemonitor.handlers.push(handler);\n }\n /**\n * Removes a resize listener from the passed element.\n * @param {HTMLElement} element The element to listen for resizing.\n * @param {Function} handler The handling function to remove.\n */\n static removeResizeListener(element, handler) {\n if (element) {\n if (element === document || element === globalThis) {\n element = document.body;\n }\n const resizeMonitor = element._bResizemonitor;\n let listenerCount = 0;\n if (resizeMonitor && resizeMonitor.handlers) {\n ArrayHelper.remove(resizeMonitor.handlers, handler);\n // See if we should unobserve the element\n listenerCount = resizeMonitor.handlers.length;\n }\n // Down to no listeners.\n if (!listenerCount) {\n element.classList.remove('b-resize-monitored');\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(element);\n }\n // Remove the polyfill resize listeners\n else {\n // remove any added elements\n if (handler.monitorElement) {\n handler.monitorElement.remove();\n handler.monitorElement = null;\n }\n // remove the DOM mutation observer\n if (handler.targetMutationMonitor) {\n handler.targetMutationMonitor.disconnect();\n }\n }\n }\n }\n }\n static onElementResize(entries) {\n for (const resizeObserverEntry of entries) {\n const resizedElement = resizeObserverEntry.target,\n resizeMonitor = resizedElement._bResizemonitor,\n newRect = resizeObserverEntry.contentRect || resizedElement.getBoundingClientRect();\n if (hasLayout(resizedElement)) {\n if (!resizeMonitor.rectangle || newRect.width !== resizeMonitor.rectangle.width || newRect.height !== resizeMonitor.rectangle.height) {\n const oldRect = resizeMonitor.rectangle;\n resizeMonitor.rectangle = newRect;\n for (const resizeHandler of resizeMonitor.handlers) {\n resizeHandler(resizedElement, oldRect, newRect);\n }\n }\n }\n }\n }\n static onSizeMonitorScroll(e) {\n var _document$body;\n // If no body exists or the element has gone, ignore the event; the listener will be removed automatically.\n if ((_document$body = document.body) !== null && _document$body !== void 0 && _document$body.contains(e.target)) {\n e.stopImmediatePropagation();\n const monitorNode = e.target.parentNode,\n resizedElement = monitorNode.parentNode,\n resizeMonitor = resizedElement._bResizemonitor,\n newRect = resizedElement.getBoundingClientRect();\n if (!resizeMonitor.rectangle || newRect.width !== resizeMonitor.rectangle.width || newRect.height !== resizeMonitor.rectangle.height) {\n resizedQueue.push([resizedElement, resizeMonitor.rectangle, newRect]);\n resizeMonitor.rectangle = newRect;\n if (!resizeFireTimer) {\n resizeFireTimer = requestAnimationFrame(ResizeMonitor.fireResizeEvents);\n }\n }\n monitorNode.firstChild.scrollLeft = monitorNode.firstChild.scrollTop = monitorNode.childNodes[1].scrollTop = monitorNode.childNodes[1].scrollLeft = 1000000;\n }\n }\n static onWindowResize(e) {\n const resizedElement = document.body,\n resizeMonitor = resizedElement._bResizemonitor,\n oldRect = resizeMonitor.rectangle;\n resizeMonitor.rectangle = document.documentElement.getBoundingClientRect();\n for (const resizeHandler of resizeMonitor.handlers) {\n resizeHandler(resizedElement, oldRect, resizeMonitor.rectangle);\n }\n }\n static fireResizeEvents() {\n for (const resizedEntry of resizedQueue) {\n for (const resizeHandler of resizedEntry[0]._bResizemonitor.handlers) {\n // Checking offsetParent to avoid resizing of elements which are not visible or exist in DOM\n if (resizedEntry[0].offsetParent) {\n resizeHandler.apply(this, resizedEntry);\n }\n }\n }\n resizeFireTimer = null;\n resizedQueue.length = 0;\n }\n}\nResizeMonitor._$name = 'ResizeMonitor';\n\n/**\n * @module Core/helper/util/Scroller\n */\nconst scrollLiterals = {\n auto: 'auto',\n true: 'auto',\n false: 'hidden',\n 'hidden-scroll': 'auto',\n clip: BrowserHelper.supportsOverflowClip ? 'clip' : 'hidden'\n },\n scrollerCls = 'b-widget-scroller',\n defaultScrollOptions$4 = {\n block: 'nearest'\n },\n immediatePromise$5 = Promise.resolve(),\n scrollPromise = element => new Promise(resolve => EventHelper.on({\n element,\n scroll: resolve,\n once: true\n })),\n xAxis$1 = {\n x: 1\n },\n isScrollable = {\n auto: 1,\n scroll: 1\n },\n isScrollableConfig = {\n true: 1,\n auto: 1\n },\n allScroll = {\n overflowX: 'auto',\n overflowY: 'auto'\n },\n normalizeEdgeOffset = edgeOffset => {\n let top, bottom, start, end;\n if (!edgeOffset) {\n top = bottom = start = end = 0;\n } else if (typeof edgeOffset === 'number') {\n top = bottom = start = end = edgeOffset;\n } else {\n var _edgeOffset$top, _edgeOffset$bottom, _edgeOffset$start, _edgeOffset$end;\n top = (_edgeOffset$top = edgeOffset.top) !== null && _edgeOffset$top !== void 0 ? _edgeOffset$top : 0;\n bottom = (_edgeOffset$bottom = edgeOffset.bottom) !== null && _edgeOffset$bottom !== void 0 ? _edgeOffset$bottom : 0;\n start = (_edgeOffset$start = edgeOffset.start) !== null && _edgeOffset$start !== void 0 ? _edgeOffset$start : 0;\n end = (_edgeOffset$end = edgeOffset.end) !== null && _edgeOffset$end !== void 0 ? _edgeOffset$end : 0;\n }\n return {\n top,\n bottom,\n start,\n end\n };\n };\n/**\n * Encapsulates scroll functionality for a Widget. All requests for scrolling and scrolling information\n * must go through a Widget's {@link Core.widget.Widget#config-scrollable} property.\n * @mixes Core/mixin/Events\n * @mixes Core/mixin/Delayable\n * @extends Core/Base\n */\nclass Scroller extends Delayable(Events(Base$1)) {\n static get configurable() {\n return {\n /**\n * The widget which is to scroll.\n * @config {Core.widget.Widget}\n */\n widget: null,\n /**\n * The element which is to scroll. Defaults to the {@link Core.widget.Widget#property-overflowElement} of\n * the configured {@link #config-widget}\n * @config {HTMLElement}\n */\n element: {\n $config: {\n nullify: true\n },\n value: null\n },\n /**\n * The element, or a selector which identifies a descendant element whose size\n * will affect the scroll range.\n * @config {HTMLElement|String}\n */\n contentElement: {\n $config: {\n nullify: true\n },\n value: null\n },\n /**\n * How to handle overflowing in the `X` axis.\n * May be:\n * * `'auto'`\n * * `'visible'`\n * * `'hidden'`\n * * `'scroll'`\n * * `'hidden-scroll'` Meaning scrollable from the UI but with no scrollbar,\n * for example a grid header. Only on platforms which support this feature.\n * * `true` - meaning `'auto'`\n * * `false` - meaning `'hidden'`\n * * `clip` - Uses `clip` where supported. Where not supported it uses\n * `hidden` and rolls back any detected scrolls in this dimension.\n * @config {String|Boolean}\n */\n overflowX: null,\n /**\n * How to handle overflowing in the `Y` axis.\n * May be:\n * * `'auto'`\n * * `'visible'`\n * * `'hidden'`\n * * `'scroll'`\n * * `'hidden-scroll'` Meaning scrollable from the UI but with no scrollbar.\n * Only on platforms which support this feature.\n * * `true` - meaning `'auto'`\n * * `false` - meaning `'hidden'`\n * * `clip` - Uses `clip` where supported. Where not supported it uses\n * `hidden` and rolls back any detected scrolls in this dimension.\n * @config {String|Boolean}\n */\n overflowY: null,\n /**\n * If configured as `true`, the {@link #config-element} is not scrolled but is translated using CSS\n * transform when controlled by this class's API. Scroll events are fired when the element is translated.\n * @default\n * @config {Boolean}\n */\n translate: null,\n x: 0,\n y: 0,\n rtlSource: null\n };\n }\n static get delayable() {\n return {\n onScrollEnd: {\n type: 'buffer',\n delay: 100\n }\n };\n }\n /**\n * Fired when scrolling happens on this Scroller's element. The event object is a native `scroll` event\n * with the described extra properties injected.\n * @event scroll\n * @param {Core.widget.Widget} widget The owning Widget which has been scrolled.\n * @param {Core.helper.util.Scroller} source This Scroller\n */\n /**\n * Fired when scrolling finished on this Scroller's element. The event object is the last native `scroll` event\n * fires by the element with the described extra properties injected.\n * @event scrollend\n * @param {Core.widget.Widget} widget The owning Widget which has been scrolled.\n * @param {Core.helper.util.Scroller} source This Scroller\n */\n /**\n * The `overflow-x` setting for the widget. `true` means `'auto'`.\n * @member {Boolean|String} overflowX\n */\n /**\n * The `overflow-y` setting for the widget. `true` means `'auto'`.\n * @member {Boolean|String} overflowY\n */\n get isRTL() {\n var _this$rtlSource;\n return Boolean((_this$rtlSource = this.rtlSource) === null || _this$rtlSource === void 0 ? void 0 : _this$rtlSource.rtl);\n }\n syncOverflowState() {\n const me = this,\n {\n element\n } = me,\n classList = new DomClassList(element.classList),\n x = me.hasOverflowX = element.scrollWidth > element.clientWidth,\n y = me.hasOverflowY = element.scrollHeight > element.clientHeight;\n classList.value = element.classList;\n // We use classes to indicate presence of overflow. This carries no rules by default.\n // Widget SASS may or may not attach rules or use these to select elements.\n const changed = classList.toggle('b-horizontal-overflow', x) || classList.toggle('b-vertical-overflow', y);\n if (changed) {\n DomHelper.syncClassList(element, classList);\n if (!me.isConfiguring) {\n /**\n * Fired when either the X or the Y axis changes from not showing a space-consuming scrollbar\n * to showing a space-consuming scrollbar or vice-versa.\n *\n * *_Does not fire on platforms which show overlayed scrollbars_*\n * @event overflowChange\n * @param {Boolean} x `true` if the X axis overflow, `false` otherwise.\n * @param {Boolean} y `true` if the Y axis overflow, `false` otherwise.\n * @internal\n */\n me.trigger('overflowChange', {\n x,\n y\n });\n }\n }\n }\n /**\n * Returns `true` if there is overflow in the specified axis.\n * @param {'x'|'y'} [axis='y'] The axis to check scrollbar for. Note that this is subtly different to asking\n * whether an axis is showing a space-consuming scrollbar, see {@link #function-hasScrollbar}.\n * @internal\n */\n hasOverflow(axis = 'y') {\n const overflowSetting = this[`overflow${axis.toUpperCase()}`],\n otherAxis = this[`overflow${axis === 'y' ? 'x' : 'y'}`];\n // If there are no space-consuming scrollbars, we will not be recording overflow\n // state on change of scrollbars (There will be no resize event when overflow state changes).\n // If we're not overflow:auto in that axis there will be no resize events from overflow state change.\n // If the other axis won't be changing size on scroll change we can't track this.\n // Also, work around Firefox ResizeObserver bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1733042\n // We don't get to update our scroll status when content size causes scrollbar change\n // so FF has to measure each time we're asked about overflow.\n if (!DomHelper.scrollBarWidth || !isScrollableConfig[overflowSetting] || otherAxis === 'hidden-scroll' || BrowserHelper.isFirefox) {\n const dimension = axis === 'y' ? 'Height' : 'Width';\n return this[`scroll${dimension}`] > this[`client${dimension}`];\n } else {\n return this[`hasOverflow${axis.toUpperCase()}`];\n }\n }\n /**\n * Returns `true` if there is a *space-consuming* scrollbar controlling scroll in the specified axis.\n * @param {'x'|'y'} [axis='y'] The axis to check scrollbar for. Note that this is subtly different to asking\n * whether an axis *has any* overflow, see {@link #function-hasOverflow}.\n * @internal\n */\n hasScrollbar(axis = 'y') {\n const {\n element\n } = this;\n if (element && DomHelper.scrollBarWidth) {\n const vertical = axis === 'y',\n dimension = vertical ? 'Width' : 'Height',\n clientSize = element[`client${dimension}`],\n borderSize = parseInt(DomHelper.getStyleValue(element, `border${vertical ? 'Left' : 'Top'}Width`)) + parseInt(DomHelper.getStyleValue(element, `border${vertical ? 'Right' : 'Bottom'}Width`)),\n difference = element[`offset${dimension}`] - borderSize - clientSize;\n // If the difference between the content width and the client width is\n // scrollBarWidth, then we have a scrollbar\n return Math.abs(difference - DomHelper.scrollBarWidth) < 2;\n }\n }\n /**\n * Partners this Scroller with the passed scroller in order to sync the scrolling position in the passed axes\n * @param {Core.helper.util.Scroller} otherScroller\n * @param {String|Object} [axes='x'] `'x'` or `'y'` or `{x: true/false, y: true/false}` axes to sync\n */\n addPartner(otherScroller, axes = xAxis$1) {\n const me = this;\n if (typeof axes === 'string') {\n axes = {\n [axes]: 1\n };\n }\n if (!me.partners) {\n me.partners = {};\n }\n me.partners[otherScroller.id] = {\n scroller: otherScroller,\n axes\n };\n // Initial sync of the other axis to match our current state\n if (axes.x) {\n otherScroller.x = me.x;\n }\n if (axes.y) {\n otherScroller.y = me.y;\n }\n // It's a mutual relationship - the other scroller partners with us.\n if (!otherScroller.isPartneredWith(me)) {\n otherScroller.addPartner(me, axes);\n }\n }\n eachPartner(fn) {\n const {\n partners\n } = this;\n if (partners) {\n Object.values(partners).forEach(fn);\n }\n }\n /**\n * Breaks the link between this Scroller and the passed Scroller set up by the\n * {@link #function-addPartner} method.\n * @param {Core.helper.util.Scroller} otherScroller The Scroller to unlink from.\n */\n removePartner(otherScroller) {\n if (this.isPartneredWith(otherScroller)) {\n delete this.partners[otherScroller.id];\n otherScroller.removePartner(this);\n }\n }\n isPartneredWith(otherScroller) {\n var _this$partners;\n return Boolean((_this$partners = this.partners) === null || _this$partners === void 0 ? void 0 : _this$partners[otherScroller.id]);\n }\n /**\n * Breaks the link between this Scroller and all other Scrollers set up by the\n * {@link #function-addPartner} method.\n * @internal\n */\n clearPartners() {\n if (this.partners) {\n Object.values(this.partners).forEach(otherScroller => otherScroller.scroller.removePartner(this));\n }\n }\n /**\n * Scrolls the passed element or {@link Core.helper.util.Rectangle} into view according to the passed options.\n * @param {HTMLElement|Core.helper.util.Rectangle} element The element or a Rectangle in document space to scroll\n * into view.\n * @param {Object} [options] How to scroll.\n * @param {'start'|'end'|'center'|'nearest'} [options.block] How far to scroll the element.\n * @param {Number} [options.edgeOffset] edgeOffset A margin around the element or rectangle to bring into view.\n * @param {Object|Boolean|Number} [options.animate] Set to `true` to animate the scroll by 300ms,\n * or the number of milliseconds to animate over, or an animation config object.\n * @param {Number} [options.animate.duration] The number of milliseconds to animate over.\n * @param {String} [options.animate.easing] The name of an easing function.\n * @param {Boolean|Function} [options.highlight] Set to `true` to highlight the element when it is in view.\n * May be a function which is called passing the element, to provide customized highlighting.\n * @param {Boolean} [options.focus] Set to `true` to focus the element when it is in view.\n * @param {Boolean} [options.x] Pass as `false` to disable scrolling in the `X` axis.\n * @param {Boolean} [options.y] Pass as `false` to disable scrolling in the `Y` axis.\n * @returns {Promise} A promise which is resolved when the element has been scrolled into view.\n */\n async scrollIntoView(element, options = defaultScrollOptions$4) {\n const me = this,\n {\n isRectangle\n } = element,\n originalRect = isRectangle ? element : Rectangle.from(element),\n {\n xDelta,\n yDelta\n } = me.getDeltaTo(element, options),\n result = me.scrollBy(xDelta, yDelta, options);\n if (options.highlight || options.focus) {\n result.then(() => {\n if (isRectangle) {\n element = originalRect.translate(-xDelta, -yDelta);\n }\n if (options.highlight) {\n // Not coercible to a number means its a function or name of a function\n if (isNaN(options.highlight)) {\n (me.widget || me).callback(options.highlight, null, [element]);\n }\n // Otherwise, it's truthy or falsy\n else {\n DomHelper.highlight(element, me);\n }\n }\n if (options.focus) {\n DomHelper.focusWithoutScrolling(element);\n }\n });\n }\n return result;\n }\n /**\n * Scrolls the passed element into view according to the passed options.\n * @param {HTMLElement} element The element in document space to scroll into view.\n * @param {Object} [options] How to scroll.\n * @param {'start'|'end'|'center'|'nearest'} [options.block] How far to scroll the element.\n * @param {Number} [options.edgeOffset] edgeOffset A margin around the element or rectangle to bring into view.\n * @param {Object|Boolean|Number} [options.animate] Set to `true` to animate the scroll by 300ms,\n * or the number of milliseconds to animate over, or an animation config object.\n * @param {Number} [options.animate.duration] The number of milliseconds to animate over.\n * @param {String} [options.animate.easing] The name of an easing function.\n * @param {Boolean} [options.highlight] Set to `true` to highlight the element when it is in view.\n * @param {Boolean} [options.focus] Set to `true` to focus the element when it is in view.\n * @param {Boolean} [options.x] Pass as `false` to disable scrolling in the `X` axis.\n * @param {Boolean} [options.y] Pass as `false` to disable scrolling in the `Y` axis.\n * @returns {Promise} A promise which is resolved when the element has been scrolled into view.\n */\n static async scrollIntoView(element, options = defaultScrollOptions$4, rtl = false) {\n const target = Rectangle.from(element),\n animate = typeof options === 'object' ? options.animate : options,\n scrollable = Scroller._globalScroller || (Scroller._globalScroller = new Scroller()),\n deltas = [];\n scrollable.rtlSource = {\n rtl\n };\n let totalX = 0,\n totalY = 0,\n result;\n // Build up all the scroll deltas necessary to bring the requested element into view\n for (let ancestor = element.parentNode; ancestor.nodeType === Node.ELEMENT_NODE; ancestor = ancestor.parentNode) {\n if (ancestor === document.body && ancestor !== document.scrollingElement) {\n continue;\n }\n // The element, although it scrolls is overflow:visible by default.\n const style = ancestor === document.scrollingElement ? allScroll : ancestor.ownerDocument.defaultView.getComputedStyle(ancestor);\n // If the ancestor overflows and scrolls in a dimension we are being asked to scroll in\n // Accumulate a scroll command for the ancestor.\n if (options.y !== false && isScrollable[style.overflowY] && ancestor.scrollHeight > ancestor.clientHeight || options.x !== false && isScrollable[style.overflowX] && ancestor.scrollWidth > ancestor.clientWidth) {\n // Global Scrollable\n scrollable.element = ancestor;\n // In case same element used as last time and didn't make it to the updater.\n scrollable.positionDirty = true;\n // See if the target is outside of this ancestor\n const {\n xDelta,\n yDelta\n } = scrollable.getDeltaTo(target, options);\n if (xDelta || yDelta) {\n deltas.push({\n element: ancestor,\n x: ancestor.scrollLeft,\n y: ancestor.scrollTop,\n xDelta,\n yDelta\n });\n target.translate(-xDelta, -yDelta);\n totalX += xDelta;\n totalY += yDelta;\n }\n }\n }\n // If scrolling was found to be necessary\n if (deltas.length) {\n const absX = Math.abs(totalX),\n absY = Math.abs(totalY);\n let duration = animate && (typeof animate === 'number' ? animate : typeof animate.duration === 'number' ? animate.duration : 300);\n // Only go through animation if there is significant scrolling to do.\n if (duration && (absX > 10 || absY > 10)) {\n // For small distances, constrain duration\n if (Math.max(absX, absY) < 50) {\n duration = Math.min(duration, 500);\n }\n result = scrollable.scrollAnimation = FunctionHelper.animate(duration, progress => {\n const isEnd = progress === 1;\n for (const {\n element,\n x,\n y,\n xDelta,\n yDelta\n } of deltas) {\n scrollable.element = element;\n if (xDelta) {\n scrollable.x = Math[rtl ? 'min' : 'max'](x + (isEnd ? xDelta : Math.round(xDelta * progress)), 0);\n }\n if (yDelta) {\n scrollable.y = Math.max(y + (isEnd ? yDelta : Math.round(yDelta * progress)), 0);\n }\n }\n }, null, animate.easing);\n result.then(() => {\n scrollable.scrollAnimation = null;\n });\n }\n // No animation\n else {\n for (const {\n element,\n xDelta,\n yDelta\n } of deltas) {\n element.scrollTop += yDelta;\n element.scrollLeft += xDelta;\n }\n result = scrollPromise(deltas[deltas.length - 1].element);\n }\n } else {\n result = immediatePromise$5;\n }\n // Postprocess element after scroll.\n if (options.highlight || options.focus) {\n result.then(() => {\n if (options.highlight) {\n // Not coercible to a number means it's a function or name of a function\n if (isNaN(options.highlight)) {\n scrollable.callback(options.highlight, null, [element]);\n }\n // Otherwise, it's truthy or falsy\n else {\n DomHelper.highlight(element, scrollable);\n }\n }\n if (options.focus) {\n element.focus();\n }\n });\n }\n return result;\n }\n /**\n * Scrolls by the passed deltas according to the passed options.\n * @param {Number} [xDelta=0] How far to scroll in the X axis.\n * @param {Number} [yDelta=0] How far to scroll in the Y axis.\n * @param {Object|Boolean} [options] How to scroll. May be passed as `true` to animate.\n * @param {Boolean} [options.silent] Set to `true` to suspend `scroll` events during scrolling.\n * @param {Object|Boolean|Number} [options.animate] Set to `true` to animate the scroll by 300ms,\n * or the number of milliseconds to animate over, or an animation config object.\n * @param {Number} [options.animate.duration] The number of milliseconds to animate over.\n * @param {String} [options.animate.easing] The name of an easing function.\n * @returns {Promise} A promise which is resolved when the scrolling has finished.\n */\n async scrollBy(xDelta = 0, yDelta = 0, options = defaultScrollOptions$4) {\n const me = this,\n animate = typeof options === 'object' ? options.animate : options,\n absX = Math.abs(xDelta),\n absY = Math.abs(yDelta);\n if (me.scrollAnimation) {\n me.scrollAnimation.cancel();\n me.scrollAnimation = null;\n }\n // Only set the flag if there is going to be scrolling done.\n // It is cleared by the scrollEnd handler, so there must be scrolling.\n if (xDelta || yDelta) {\n me.silent = options.silent;\n }\n let duration = animate && (typeof animate === 'number' ? animate : typeof animate.duration === 'number' ? animate.duration : 300);\n // Only go through animation if there is significant scrolling to do.\n if (duration && (absX > 10 || absY > 10)) {\n const {\n x,\n y\n } = me;\n let lastX = x,\n lastY = y;\n // For small distances, constrain duration\n if (Math.max(absX, absY) < 50) {\n duration = Math.min(duration, 500);\n }\n me.scrollAnimation = FunctionHelper.animate(duration, progress => {\n const isEnd = progress === 1;\n if (xDelta) {\n // If the user, or another process has changed the position since last time, abort.\n // Unless called with the force option to proceed regardless.\n if (me.x !== lastX && !options.force) {\n var _me$scrollAnimation;\n return (_me$scrollAnimation = me.scrollAnimation) === null || _me$scrollAnimation === void 0 ? void 0 : _me$scrollAnimation.cancel();\n }\n me.x = Math.max(x + (isEnd ? xDelta : Math.round(xDelta * progress)), 0);\n }\n if (yDelta) {\n // If the user, or another process has changed the position since last time, abort.\n // Unless called with the force option to proceed regardless.\n if (me.y !== lastY && !options.force) {\n var _me$scrollAnimation2;\n return (_me$scrollAnimation2 = me.scrollAnimation) === null || _me$scrollAnimation2 === void 0 ? void 0 : _me$scrollAnimation2.cancel();\n }\n me.y = Math.max(y + (isEnd ? yDelta : Math.round(yDelta * progress)), 0);\n }\n // Store actual position from DOM\n lastX = me.x;\n lastY = me.y;\n }, me, animate.easing);\n me.element.classList.add('b-scrolling');\n me.scrollAnimation.then(() => {\n if (!me.isDestroyed) {\n me.element.classList.remove('b-scrolling');\n me.scrollAnimation = null;\n }\n });\n return me.scrollAnimation;\n } else {\n if (xDelta | yDelta) {\n const xBefore = me.x,\n yBefore = me.y;\n me.x += xDelta;\n me.y += yDelta;\n // Another change check for the possibility that setting me.x doesn't really scroll any significant\n // amount of pixels.\n if (me.x !== xBefore || me.y !== yBefore) {\n return scrollPromise(me.element);\n }\n }\n return immediatePromise$5;\n }\n }\n /**\n * Scrolls to the passed position according to the passed options.\n * @param {Number} [toX=0] Where to scroll to in the X axis.\n * @param {Number} [toY=0] Where to scroll to in the Y axis.\n * @param {Object|Boolean} [options] How to scroll. May be passed as `true` to animate.\n * @param {Object|Boolean|Number} [options.animate] Set to `true` to animate the scroll by 300ms,\n * or the number of milliseconds to animate over, or an animation config object.\n * @param {Number} [options.animate.duration] The number of milliseconds to animate over.\n * @param {String} [options.animate.easing] The name of an easing function.\n * @returns {Promise} A promise which is resolved when the scrolling has finished.\n */\n async scrollTo(toX, toY, options) {\n const {\n x,\n y\n } = this,\n xDelta = toX == null ? 0 : toX - x,\n yDelta = toY == null ? 0 : toY - y;\n return this.scrollBy(xDelta, yDelta, options);\n }\n doDestroy() {\n var _me$scrollAnimation3;\n const me = this;\n if (me._element) {\n var _me$wheelListenerRemo;\n me._element.removeEventListener('scroll', me.scrollHandler);\n (_me$wheelListenerRemo = me.wheelListenerRemover) === null || _me$wheelListenerRemo === void 0 ? void 0 : _me$wheelListenerRemo.call(me);\n }\n (_me$scrollAnimation3 = me.scrollAnimation) === null || _me$scrollAnimation3 === void 0 ? void 0 : _me$scrollAnimation3.cancel();\n Object.values(me.partners || {}).forEach(({\n scroller\n }) => scroller.removePartner(me));\n super.doDestroy();\n }\n /**\n * Respond to style changes to monitor scroll *when this Scroller is in `translate: true` mode.*\n * @param {Object[]} mutations The ElementMutation records.\n * @private\n */\n onElMutation(mutations) {\n const me = this,\n [x, y] = DomHelper.getTranslateXY(me.element);\n // If the mutation was due to a change in the translateX/Y styles, this is\n // a scroll event, so inform observers and partners\n if (me._x !== -x || me.y !== -y) {\n const scrollEvent = new CustomEvent('scroll', {\n bubbles: true\n });\n Object.defineProperty(scrollEvent, 'target', {\n get: () => me.element\n });\n me.onScroll(scrollEvent);\n }\n }\n onElResize() {\n const me = this,\n {\n widget\n } = me;\n // If it's not animating its size, sync immediately\n if (!(widget !== null && widget !== void 0 && widget.isAnimating)) {\n me.syncOverflowState();\n }\n // If it's animating, sync chen it's finished\n else if (widget.findListener('animationend', 'onElResize', me) === -1) {\n widget.on({\n animationEnd: 'onElResize',\n thisObj: me,\n once: true\n });\n }\n }\n onScroll(e) {\n const me = this,\n {\n _x,\n _y,\n element\n } = me;\n let vetoed = 0;\n // Until overflow:clip is 100% supported just veto (and rollback) scrolls in clipped axes\n if (me.overflowX === 'clip' && element.scrollLeft !== _x) {\n element.scrollLeft = _x;\n ++vetoed;\n }\n if (me.overflowY === 'clip' && element.scrollTop !== _y) {\n element.scrollTop = _y;\n ++vetoed;\n }\n if (vetoed === 2) {\n return;\n }\n if (!me.widget || !me.widget.isDestroyed) {\n // Don't read the value until we have to. The x & y getters will check this flag\n me.positionDirty = true;\n if (!element.classList.contains('b-scrolling')) {\n element.classList.add('b-scrolling');\n }\n e.widget = me.widget;\n // If we have the scroll silent flag, do not fire the event.\n if (!me.silent) {\n me.trigger('scroll', e);\n }\n // Keep partners in sync\n me.syncPartners();\n // If this scroll impulse was from a controlling partner, clear that now\n me.controllingPartner = null;\n // Buffered method will fire in 100ms, unless another scroll event comes round.\n // In which case execution will be pushed out by another 100ms.\n me.onScrollEnd(e);\n }\n }\n /**\n * Syncs all attached scrolling partners with the scroll state of this Scroller.\n * @param {Boolean} force Allow this to sync a partner which is controlling this via a sync.\n * @param {Boolean} propagate Propagate any change immediately onwards through further linked\n * partners immediately rather than relying on the partner to react to its own scroll event.\n * @internal\n */\n syncPartners(force, propagate) {\n const me = this;\n // Keep partners in sync\n if (me.partners) {\n Object.values(me.partners).forEach(({\n axes,\n scroller\n }) => {\n // Don't feed back to the one who's just told us to scroll here.\n // Unless we have assumed command. For example Scheduler timeline infinite scrolling\n // has reset the scroll position and the partner who thinks it's controlling\n // must stay in sync with that reset.\n if (scroller !== me.controllingPartner || force) {\n // Propagate means update all linked partners immediately rather than scroller reacting\n // to its scroll events to sync its partners. Only bother if the scroller actually changed.\n if (scroller.sync(me, axes) && propagate) {\n scroller.syncPartners(force, propagate);\n }\n }\n });\n }\n }\n onScrollEnd(e) {\n const me = this;\n if (me.silent) {\n me.silent = false;\n }\n me.trigger('scrollEnd', e);\n // Controlling partner is required for scrollable not to change its partners on scroll. This method is buffered\n // and landing here essentially means that no scrolling has occurred during the onScrollEnd buffer\n // time. We can safely cleanup controlling partner here.\n // https://github.com/bryntum/support/issues/1095\n me.controllingPartner = null;\n me.element.classList.remove('b-scrolling');\n }\n /**\n * Returns the xDelta and yDelta values in an object from the current scroll position to the\n * passed element or Rectangle.\n * @param {HTMLElement|Core.helper.util.Rectangle} element The element or a Rectangle to calculate deltas for.\n * @param {Object} [options] How to scroll.\n * @param {'start'|'end'|'center'|'nearest'} [options.block] How far to scroll the element.\n * @param {Number} [options.edgeOffset] A margin around the element or rectangle to bring into view.\n * @param {Boolean} [options.x] Pass as `false` to disable scrolling in the `X` axis.\n * @param {Boolean} [options.y] Pass as `false` to disable scrolling in the `Y` axis.\n * @returns {Object} `{ xDelta, yDelta }`\n * @internal\n */\n getDeltaTo(element, options) {\n const me = this;\n // scroller may belong to a collapsed subgrid widget\n if (!me.viewport) {\n return {\n xDelta: 0,\n yDelta: 0\n };\n }\n const {\n x,\n y,\n scrollWidth,\n scrollHeight,\n isRTL\n } = me,\n elementRect = element instanceof Rectangle ? element : Rectangle.from(element),\n block = options.block || 'nearest',\n scrollerRect = me.viewport,\n edgeOffset = normalizeEdgeOffset(options.edgeOffset),\n // Only include the offset round the target if the viewport is big enough to accommodate it.\n xOffset = scrollerRect.width >= elementRect.width + (edgeOffset.start + edgeOffset.end) ? edgeOffset : {\n start: 0,\n end: 0\n },\n yOffset = scrollerRect.height >= elementRect.height + (edgeOffset.top + edgeOffset.bottom) ? edgeOffset : {\n top: 0,\n bottom: 0\n },\n constrainTo = new Rectangle(isRTL ? scrollerRect.right - -x - scrollWidth : scrollerRect.x - x, scrollerRect.y - y, scrollWidth, scrollHeight),\n elRect = elementRect.clone().adjust(-xOffset.start, -yOffset.top, xOffset.end, yOffset.bottom).constrainTo(constrainTo),\n targetRect = elRect.clone(),\n // X scrolling is always +ve along the X scroll axis\n xFactor = me.isRTL ? -1 : 1;\n let xDelta = 0,\n yDelta = 0;\n if (block === 'start') {\n targetRect.moveTo(scrollerRect.x, scrollerRect.y);\n xDelta = elRect.x - targetRect.x;\n yDelta = elRect.y - targetRect.y;\n } else if (block === 'end') {\n targetRect.translate(scrollerRect.right - targetRect.right, scrollerRect.bottom - targetRect.bottom);\n xDelta = elRect.x - targetRect.x;\n yDelta = elRect.y - targetRect.y;\n } else {\n // Calculate deltas unless the above has done that for non-fitting target\n if (block === 'center') {\n const center = scrollerRect.center;\n targetRect.moveTo(center.x - targetRect.width / 2, center.y - targetRect.height / 2);\n xDelta = xDelta || elRect.x - targetRect.x;\n yDelta = yDelta || elRect.y - targetRect.y;\n }\n // Use \"nearest\"\n else {\n // Can't fit width in, scroll what is possible into view so that start is visible.\n if (targetRect.width > scrollerRect.width) {\n xDelta = targetRect.x - scrollerRect.x;\n }\n // If it's *possible* to scroll to nearest x, calculate the delta\n else {\n if (targetRect.right > scrollerRect.right) {\n xDelta = targetRect.right - scrollerRect.right;\n } else if (targetRect.x < scrollerRect.x) {\n xDelta = targetRect.x - scrollerRect.x;\n }\n }\n // Can't fit height in, scroll what is possible into view so that start is visible.\n if (targetRect.height > scrollerRect.height) {\n yDelta = targetRect.y - scrollerRect.y;\n }\n // If it's *possible* to scroll to nearest y, calculate the delta\n else {\n if (targetRect.bottom > scrollerRect.bottom) {\n yDelta = targetRect.bottom - scrollerRect.bottom;\n } else if (targetRect.y < scrollerRect.y) {\n yDelta = targetRect.y - scrollerRect.y;\n }\n }\n }\n }\n // Ensure x scrolling proceeds in +ve direction in RTL mode\n xDelta = xFactor * Math.round(xDelta);\n yDelta = Math.round(yDelta);\n // Do not allow deltas which would produce -ve scrolling or scrolling past the maxX/Y\n return {\n // When calculating how much delta is necessary to scroll the targetRect to the center\n // constrain that to what is *possible*. If what you are trying to scroll into the\n // center is hard against the right edge of the scroll range, then it cannot scroll\n // to the center, and the result must reflect that even though scroll is self limiting.\n // This is because highlighting the requested \"element\", if that element is in fact\n // a Rectangle, uses a temporary element placed at the requested region which\n // MUST match where the actual scroll has moved the requested region.\n xDelta: options.x === false ? 0 : Math.max(Math.min(xDelta, me.maxX - x), -x),\n yDelta: options.y === false ? 0 : Math.max(Math.min(yDelta, me.maxY - y), -y)\n };\n }\n /**\n * A {@link Core/helper/util/Rectangle} describing the bounds of the scrolling viewport.\n * @property {Core.helper.util.Rectangle}\n */\n get viewport() {\n return Rectangle.client(this.element);\n }\n updateWidget(widget) {\n this.rtlSource = this.owner = widget;\n }\n updateElement(element, oldElement) {\n const me = this;\n // The global Scroller doesn't monitor its element.\n // It's only used for *commanding* scrolls.\n if (me === Scroller._globalScroller) {\n me._element = element;\n me.positionDirty = true;\n return;\n }\n const scrollHandler = me.scrollHandler || (me.scrollHandler = me.onScroll.bind(me)),\n resizeHandler = me.resizeHandler || (me.resizeHandler = me.onElResize.bind(me));\n if (oldElement) {\n if (me.translate) {\n var _me$mutationObserver;\n (_me$mutationObserver = me.mutationObserver) === null || _me$mutationObserver === void 0 ? void 0 : _me$mutationObserver.disconnect(oldElement);\n } else {\n oldElement.removeEventListener('scroll', scrollHandler);\n oldElement.classList.remove(scrollerCls);\n oldElement.style.overflowX = oldElement.style.overflowY = '';\n }\n ResizeMonitor.removeResizeListener(oldElement, resizeHandler);\n }\n if (element) {\n if (me.translate) {\n if (!me.mutationObserver) {\n me.mutationObserver = new MutationObserver(me.mutationHandler || (me.mutationHandler = me.onElMutation.bind(me)));\n }\n me._x = me._y = 0;\n if (document.contains(element)) {\n const [x, y] = DomHelper.getTranslateXY(element);\n me._x = -x;\n me._y = -y;\n }\n me.mutationObserver.observe(element, {\n attributes: true\n });\n } else {\n element.addEventListener('scroll', scrollHandler);\n element.classList.add(scrollerCls);\n }\n ResizeMonitor.addResizeListener(element, resizeHandler);\n if (!me.widget) {\n me.rtlSource = {\n get rtl() {\n return DomHelper.getStyleValue(element, 'direction') === 'rtl';\n }\n };\n }\n if (me.isRTL) {\n element.classList.add('b-rtl');\n }\n // Ensure the overflow configs, which are unable to process themselves\n // in the absence of the element get applied to the newly arrived element.\n if (me.positionDirty) {\n me.updateOverflowX(me.overflowX);\n me.updateOverflowY(me.overflowY);\n }\n // Keep flags synced from the start\n me.syncOverflowState();\n // Apply initially configured scroll position if we have non-zero positions\n if (me.isConfiguring) {\n me._x && me.updateX(me._x);\n me._y && me.updateY(me._y);\n }\n }\n me.positionDirty = true;\n }\n /**\n * The horizontal scroll position of the widget.\n *\n * Note that this is always +ve. Horizontal scrolling using the `X` property akways proceeds\n * in the +ve direction.\n *\n * @property {Number}\n */\n get x() {\n const me = this,\n {\n element\n } = me;\n if (element && me.positionDirty) {\n if (me.translate) {\n const [x, y] = DomHelper.getTranslateXY(element);\n me._x = -x;\n me._y = -y;\n } else {\n // A Scroller's conception is that X is an offset from the origin in whatever the direction is.\n me._x = Math.abs(element.scrollLeft);\n me._y = element.scrollTop;\n }\n me.positionDirty = false;\n }\n return me._x;\n }\n /**\n * The natural DOM horizontal scroll position of the widget.\n *\n * Note that this proceeds from 0 into negative space in RTL mode.\n *\n * @property {Number}\n */\n get scrollLeft() {\n return this.element.scrollLeft;\n }\n changeX(x) {\n // We do not accept the concept of -ve X values.\n // Although scrolling in an RTL element sets scrollLeft to -ve, a Scroller's conception\n // is that X is an offset from the origin in whatever the direction is. So all code should\n // use this concept.\n x = Math.max(x, 0);\n // Only process initial X if we were configured to start at non-zero\n if (!this.isConfiguring || x) {\n return x;\n }\n this._x = x;\n }\n updateContentElement(contentElement) {\n if (contentElement) {\n contentElement = typeof contentElement === 'string' ? this.element.querySelector(contentElement) : contentElement;\n ResizeMonitor.addResizeListener(contentElement, this.resizeHandler);\n }\n }\n updateX(x) {\n var _this$widget;\n const {\n element\n } = this;\n // When element is outside of DOM, this can have no effect\n if (element && !((_this$widget = this.widget) !== null && _this$widget !== void 0 && _this$widget.isConfiguring)) {\n this.trigger('scrollStart', {\n x\n });\n if (this.translate) {\n DomHelper.setTranslateX(element, -x);\n } else {\n element.scrollLeft = this.isRTL ? -x : x;\n }\n }\n // The scroll position will need to be read before we can return it.\n // Do not read it back now, we may not have our element, or if we do,\n // that would cause a forced synchronous layout.\n this.positionDirty = true;\n }\n /**\n * Syncs this Scroller with the passed Scroller in the passed axes.\n * @param {Core.helper.util.Scroller} controllingPartner The Scroller which is dictating our new scroll position.\n * @param {Object} axes `{x : , y : }` which axes to sync.\n * @returns {Boolean} `true` if this Scroller needed the passed axes syncing, `false`\n * if no changes were made.\n * @internal\n */\n sync(controllingPartner, axes) {\n const me = this,\n {\n x,\n y\n } = axes;\n let result = false;\n if (x != null) {\n if (me.x !== controllingPartner.x) {\n // Only set controlling partner when scroll will actually change. This helps to increase stability of\n // state restoring API.\n me.controllingPartner = controllingPartner;\n me.x = controllingPartner.x;\n result = true;\n }\n }\n if (y != null) {\n if (me.y !== controllingPartner.y) {\n me.controllingPartner = controllingPartner;\n me.y = controllingPartner.y;\n result = true;\n }\n }\n // Returns true if the sync was needed\n return result;\n }\n /**\n * The vertical scroll position of the widget.\n * @property {Number}\n */\n get y() {\n const me = this,\n {\n element\n } = me;\n if (element && me.positionDirty) {\n if (me.translate) {\n const [x, y] = DomHelper.getTranslateXY(element);\n me._x = -x;\n me._y = -y;\n } else {\n me._x = element.scrollLeft;\n me._y = element.scrollTop;\n }\n me.positionDirty = false;\n }\n return me._y;\n }\n changeY(y) {\n // Only process initial Y if we were configured to start at non-zero\n if (!this.isConfiguring || y) {\n return y;\n }\n this._y = y;\n }\n updateY(y) {\n const {\n element,\n widget\n } = this;\n // When element is outside of DOM, this can have no effect\n if (element && !(widget !== null && widget !== void 0 && widget.isConfiguring)) {\n this.trigger('scrollStart', {\n y\n });\n if (this.translate) {\n DomHelper.setTranslateY(element, -y);\n } else {\n element.scrollTop = y;\n }\n }\n // The scroll position will need to be read before we can return it.\n // Do not read it back now, we may not have our element, or if we do,\n // that would cause a forced synchronous layout.\n this.positionDirty = true;\n }\n /**\n * The maximum `X` scrollable position of the widget.\n * @property {Number}\n * @readonly\n */\n get maxX() {\n return this.scrollWidth - this.clientWidth;\n }\n /**\n * The maximum `Y` scrollable position of the widget.\n * @property {Number}\n * @readonly\n */\n get maxY() {\n return this.scrollHeight - this.clientHeight;\n }\n /**\n * The furthest possible `scrollLeft` position of the widget. Will be -ve\n * if in writing direction is RTL.\n * @property {Number}\n * @readonly\n */\n get lastScrollLeft() {\n return (this.scrollWidth - this.clientWidth) * (this.isRTL ? -1 : 1);\n }\n updateOverflowX(overflowX, oldOverflowX) {\n const me = this,\n {\n element,\n translate\n } = me,\n {\n style,\n classList\n } = element;\n if (oldOverflowX === 'hidden-scroll') {\n classList.remove('b-hide-scroll');\n }\n // Scroll, but without showing scrollbars.\n // For example a grid header. Only works on platforms which\n // support suppression of scrollbars through CSS.\n if (overflowX === 'hidden-scroll' && !translate) {\n const otherAxisScrollable = isScrollable[style.overflowY];\n // Can't do one axis hidden-scroll, and the other scrollable because the b-hide-scroll\n // class hides \"all\" scrollbars, so we have to make this axis hidden and use a wheel\n // listener to scroll the content.\n if (otherAxisScrollable) {\n overflowX = 'hidden';\n // Adds a wheel listener if we don't already have one.\n me.enableWheel();\n } else {\n classList.add('b-hide-scroll');\n }\n }\n if (!translate) {\n style.overflowX = scrollLiterals[overflowX] || overflowX;\n }\n if (!me.isConfiguring) {\n me.positionDirty = true;\n me.syncOverflowState();\n }\n }\n updateOverflowY(overflowY, oldOverflowY) {\n const me = this,\n {\n element,\n translate\n } = me,\n {\n style,\n classList\n } = element;\n if (oldOverflowY === 'hidden-scroll') {\n classList.remove('b-hide-scroll');\n }\n // Scroll, but without showing scrollbars.\n // For example a grid header.\n // On platforms which show space-consuming scrollbars we hide scrollbars\n // and add a 'wheel' listener.\n if (overflowY === 'hidden-scroll' && !translate) {\n const otherAxisScrollable = isScrollable[style.overflowX];\n // Can't do one axis hidden-scroll, and the other scrollable because the b-hide-scroll\n // class hides \"all\" scrollbars, so we have to make this axis hidden and use a wheel\n // listener to scroll the content.\n if (otherAxisScrollable) {\n overflowY = 'hidden';\n // Adds a wheel listener if we don't already have one.\n me.enableWheel();\n } else {\n classList.add('b-hide-scroll');\n }\n }\n if (!translate) {\n style.overflowY = scrollLiterals[overflowY] || overflowY;\n }\n if (!me.isConfiguring) {\n me.positionDirty = true;\n me.syncOverflowState();\n }\n }\n enableWheel() {\n if (!this.wheelListenerRemover) {\n this.wheelListenerRemover = EventHelper.on({\n element: this.element,\n wheel: 'onWheel',\n thisObj: this\n });\n }\n }\n onWheel(e) {\n if (Math.abs(e.deltaX) > Math.abs(e.deltaY) && this.overflowX === 'hidden-scroll') {\n this.x += e.deltaX;\n } else if (this.overflowY === 'hidden-scroll') {\n this.y += e.deltaY;\n }\n }\n /**\n * The horizontal scroll range of the widget.\n * @property {Number}\n * @readonly\n */\n get scrollWidth() {\n var _this$element$scrollW, _this$element;\n return (_this$element$scrollW = (_this$element = this.element) === null || _this$element === void 0 ? void 0 : _this$element.scrollWidth) !== null && _this$element$scrollW !== void 0 ? _this$element$scrollW : 0;\n }\n set scrollWidth(scrollWidth) {\n const me = this,\n {\n element,\n isRTL\n } = me;\n let stretcher = me.widthStretcher;\n // \"Unsetting\" scrollWidth removes the stretcher\n if (stretcher && scrollWidth == null) {\n stretcher.remove();\n me.widthStretcher = null;\n } else if (scrollWidth) {\n // Although DOM has crazy negative scrollLeft values in RTL, we treat the scrollWidth\n // as a pure magnitude. It is then applied correctly negated if RTL. In this way\n // app code can just use element widths and not consider RTL.\n scrollWidth = Math.abs(scrollWidth);\n if (!stretcher) {\n stretcher = me.widthStretcher = DomHelper.createElement({\n className: 'b-scroller-stretcher b-horizontal-stretcher',\n // Should survive its surroundings being DomSynced\n retainElement: true\n });\n }\n stretcher.style.transform = `translateX(${(scrollWidth - 1) * (isRTL ? -1 : 1)}px)`;\n if (element && !element.contains(stretcher)) {\n element.insertBefore(stretcher, element.firstElementChild);\n }\n }\n // Propagate call to partners so they will establish own scroller stretcher\n if (me.propagate !== false) {\n me.eachPartner(({\n scroller\n }) => {\n // Raise a flag on partner to not propagate changes from it further\n scroller.propagate = false;\n scroller.scrollWidth = scrollWidth;\n delete scroller.propagate;\n });\n }\n me.positionDirty = true;\n me.syncOverflowState();\n }\n get scrollHeight() {\n var _this$element$scrollH, _this$element2;\n return (_this$element$scrollH = (_this$element2 = this.element) === null || _this$element2 === void 0 ? void 0 : _this$element2.scrollHeight) !== null && _this$element$scrollH !== void 0 ? _this$element$scrollH : 0;\n }\n /**\n * The vertical scroll range of the widget. May be set to larger than the actual data\n * height to enable virtual scrolling. This is how the grid extends its scroll range\n * while only rendering a small subset of the dataset.\n * @property {Number}\n */\n set scrollHeight(scrollHeight) {\n const me = this,\n stretcher = me.stretcher || (me.stretcher = DomHelper.createElement({\n className: 'b-scroller-stretcher'\n }));\n stretcher.style.transform = `translateY(${scrollHeight - 1}px)`;\n if (me.element && me.element.lastChild !== stretcher) {\n me.element.appendChild(stretcher);\n }\n me.positionDirty = true;\n me.syncOverflowState();\n }\n /**\n * The client width of the widget.\n * @property {Number}\n * @readonly\n */\n get clientWidth() {\n var _this$element3;\n return ((_this$element3 = this.element) === null || _this$element3 === void 0 ? void 0 : _this$element3.clientWidth) || 0;\n }\n /**\n * The client height of the widget.\n * @property {Number}\n * @readonly\n */\n get clientHeight() {\n var _this$element4;\n return ((_this$element4 = this.element) === null || _this$element4 === void 0 ? void 0 : _this$element4.clientHeight) || 0;\n }\n /**\n * The unique ID of this Scroller\n * @property {String}\n * @readonly\n */\n get id() {\n if (!this._id) {\n if (this.widget) {\n this._id = `${this.widget.id}-scroller`;\n } else {\n this._id = IdHelper.generateId('scroller-');\n }\n }\n return this._id;\n }\n //region Extract configs\n // This function is not meant to be called by any code other than Base#getCurrentConfig().\n preProcessCurrentConfigs(configs) {\n super.preProcessCurrentConfigs();\n delete configs.widget;\n delete configs.element;\n }\n //endregion\n}\n\nScroller._$name = 'Scroller';\n\n//\nconst localeName = 'En',\n localeDesc = 'English',\n locale$4 = {\n localeName,\n localeDesc,\n // Translations for common words and phrases which are used by all classes.\n Object: {\n Yes: 'Yes',\n No: 'No',\n Cancel: 'Cancel',\n Ok: 'OK',\n Week: 'Week' // used in DateHelper and Calendar views\n },\n\n //region Widgets\n Combo: {\n noResults: 'No results',\n recordNotCommitted: 'Record could not be addded',\n addNewValue: value => `Add ${value}`\n },\n FilePicker: {\n file: 'File'\n },\n Field: {\n // native input ValidityState statuses\n badInput: 'Invalid field value',\n patternMismatch: 'Value should match a specific pattern',\n rangeOverflow: value => `Value must be less than or equal to ${value.max}`,\n rangeUnderflow: value => `Value must be greater than or equal to ${value.min}`,\n stepMismatch: 'Value should fit the step',\n tooLong: 'Value should be shorter',\n tooShort: 'Value should be longer',\n typeMismatch: 'Value is required to be in a special format',\n valueMissing: 'This field is required',\n invalidValue: 'Invalid field value',\n minimumValueViolation: 'Minimum value violation',\n maximumValueViolation: 'Maximum value violation',\n fieldRequired: 'This field is required',\n validateFilter: 'Value must be selected from the list'\n },\n DateField: {\n invalidDate: 'Invalid date input'\n },\n DatePicker: {\n gotoPrevYear: 'Go to previous year',\n gotoPrevMonth: 'Go to previous month',\n gotoNextMonth: 'Go to next month',\n gotoNextYear: 'Go to next year'\n },\n NumberFormat: {\n locale: 'en-US',\n currency: 'USD'\n },\n DurationField: {\n invalidUnit: 'Invalid unit'\n },\n TimeField: {\n invalidTime: 'Invalid time input'\n },\n TimePicker: {\n hour: 'Hour',\n minute: 'Minute',\n second: 'Second'\n },\n List: {\n loading: 'Loading...'\n },\n // needed here due to LoadMaskable\n GridBase: {\n loadMask: 'Loading...',\n syncMask: 'Saving changes, please wait...'\n },\n PagingToolbar: {\n firstPage: 'Go to first page',\n prevPage: 'Go to previous page',\n page: 'Page',\n nextPage: 'Go to next page',\n lastPage: 'Go to last page',\n reload: 'Reload current page',\n noRecords: 'No records to display',\n pageCountTemplate: data => `of ${data.lastPage}`,\n summaryTemplate: data => `Displaying records ${data.start} - ${data.end} of ${data.allCount}`\n },\n PanelCollapser: {\n Collapse: 'Collapse',\n Expand: 'Expand'\n },\n Popup: {\n close: 'Close'\n },\n UndoRedo: {\n Undo: 'Undo',\n Redo: 'Redo',\n UndoLastAction: 'Undo last action',\n RedoLastAction: 'Redo last undone action',\n NoActions: 'No items in the undo queue'\n },\n FieldFilterPicker: {\n equals: 'equals',\n doesNotEqual: 'does not equal',\n isEmpty: 'is empty',\n isNotEmpty: 'is not empty',\n contains: 'contains',\n doesNotContain: 'does not contain',\n startsWith: 'starts with',\n endsWith: 'ends with',\n isOneOf: 'is one of',\n isNotOneOf: 'is not one of',\n isGreaterThan: 'is greater than',\n isLessThan: 'is less than',\n isGreaterThanOrEqualTo: 'is greater than or equal to',\n isLessThanOrEqualTo: 'is less than or equal to',\n isBetween: 'is between',\n isNotBetween: 'is not between',\n isBefore: 'is before',\n isAfter: 'is after',\n isToday: 'is today',\n isTomorrow: 'is tomorrow',\n isYesterday: 'is yesterday',\n isThisWeek: 'is this week',\n isNextWeek: 'is next week',\n isLastWeek: 'is last week',\n isThisMonth: 'is this month',\n isNextMonth: 'is next month',\n isLastMonth: 'is last month',\n isThisYear: 'is this year',\n isNextYear: 'is next year',\n isLastYear: 'is last year',\n isYearToDate: 'is year to date',\n isTrue: 'is true',\n isFalse: 'is false',\n selectAProperty: 'Select a property',\n selectAnOperator: 'Select an operator',\n caseSensitive: 'Case-sensitive',\n and: 'and',\n dateFormat: 'D/M/YY',\n selectOneOrMoreValues: 'Select one or more values',\n enterAValue: 'Enter a value',\n enterANumber: 'Enter a number',\n selectADate: 'Select a date'\n },\n FieldFilterPickerGroup: {\n addFilter: 'Add filter'\n },\n //endregion\n //region Others\n DateHelper: {\n locale: 'en-US',\n weekStartDay: 0,\n // Non-working days which match weekends by default, but can be changed according to schedule needs\n nonWorkingDays: {\n 0: true,\n 6: true\n },\n // Days considered as weekends by the selected country, but could be working days in the schedule\n weekends: {\n 0: true,\n 6: true\n },\n unitNames: [{\n single: 'millisecond',\n plural: 'ms',\n abbrev: 'ms'\n }, {\n single: 'second',\n plural: 'seconds',\n abbrev: 's'\n }, {\n single: 'minute',\n plural: 'minutes',\n abbrev: 'min'\n }, {\n single: 'hour',\n plural: 'hours',\n abbrev: 'h'\n }, {\n single: 'day',\n plural: 'days',\n abbrev: 'd'\n }, {\n single: 'week',\n plural: 'weeks',\n abbrev: 'w'\n }, {\n single: 'month',\n plural: 'months',\n abbrev: 'mon'\n }, {\n single: 'quarter',\n plural: 'quarters',\n abbrev: 'q'\n }, {\n single: 'year',\n plural: 'years',\n abbrev: 'yr'\n }, {\n single: 'decade',\n plural: 'decades',\n abbrev: 'dec'\n }],\n // Used to build a RegExp for parsing time units.\n // The full names from above are added into the generated Regexp.\n // So you may type \"2 w\" or \"2 wk\" or \"2 week\" or \"2 weeks\" into a DurationField.\n // When generating its display value though, it uses the full localized names above.\n unitAbbreviations: [['mil'], ['s', 'sec'], ['m', 'min'], ['h', 'hr'], ['d'], ['w', 'wk'], ['mo', 'mon', 'mnt'], ['q', 'quar', 'qrt'], ['y', 'yr'], ['dec']],\n parsers: {\n L: 'MM/DD/YYYY',\n LT: 'HH:mm A',\n LTS: 'HH:mm:ss A'\n },\n ordinalSuffix: number => {\n const hasSpecialCase = ['11', '12', '13'].find(n => number.endsWith(n));\n let suffix = 'th';\n if (!hasSpecialCase) {\n const lastDigit = number[number.length - 1];\n suffix = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd'\n }[lastDigit] || 'th';\n }\n return number + suffix;\n }\n },\n //endregion\n //region Trial\n TrialButton: {\n downloadTrial: 'Download trial'\n },\n TrialPanel: {\n title: 'Please complete fields',\n name: 'Name',\n email: 'Email',\n company: 'Company',\n product: 'Product',\n cancel: 'Cancel',\n submit: 'Submit',\n downloadStarting: 'Download starting, please wait...'\n }\n //endregion\n };\n//\nLocaleManagerSingleton.registerLocale(localeName, {\n desc: localeDesc,\n locale: locale$4\n});\n\n/**\n * @module Core/helper/util/Promissory\n */\n/**\n * Encapsulates a Promise and provides `resolve()` and `reject()` methods.\n *\n * For example:\n * ```\n * load() {\n * this.loading = new Promissory();\n * this.store.load();\n *\n * return this.loading.promise;\n * }\n *\n * onStoreLoad(store, err) {\n * if (err) {\n * this.loading.resolve(this);\n * }\n * else {\n * this.loading.reject(err);\n * }\n * }\n *\n * ```\n * @internal\n */\nclass Promissory {\n constructor(fn) {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n if (fn) {\n fn(this);\n }\n }\n}\nPromissory._$name = 'Promissory';\n\nconst {\n defineProperty: defineProperty$3\n} = Reflect;\n/**\n * @module Core/widget/Renderable\n */\n/**\n * This class provides element rendering and automatic synchronization based on config property changes.\n *```\n * class Label extends Renderable {\n * static get configurable() {\n * return {\n * text : {\n * value: null,\n *\n * $config : 'render'\n * }\n * };\n * }\n *\n * renderDom() {\n * return {\n * tag: 'label',\n * children: [\n * this.text\n * ]\n * };\n * }\n * }\n *```\n * A class can opt to not specify its render configs. In this case, these will be determined automatically, but with\n * some additional cost. This may not be worth considering if only a few instances are ever likely.\n *\n * @private\n */\nclass Renderable extends Base$1.mixin(Localizable, Events, Delayable, Identifiable) {\n static get configurable() {\n return {\n /**\n * The top-level DOM element for this object. This element is produced from the {@link #function-renderDom}\n * method of the derived class. As configs used by `renderDom` change, a synchronization of the DOM is\n * scheduled by calling {@link #function-refreshDom}. This call is made automatically by this class, making\n * it rarely necessary to call `refreshDom` directly.\n * @config {HTMLElement}\n * @category DOM\n */\n element: null\n };\n }\n static get delayable() {\n return {\n refreshDom: 'raf'\n };\n }\n static get identifiable() {\n return {};\n }\n /**\n * Returns the Set of configs defined as `render: true`, that is, the configs that determine the rendering (via\n * `renderDom`). If no such configs are defined, this method returns `null`.\n *\n * @returns {Set}\n * @private\n */\n static get renderConfigs() {\n const me = this,\n meta = me.$meta;\n let renderConfigs = meta.renderConfigs,\n configs,\n name;\n if (renderConfigs === undefined) {\n // if (first time for this class)\n renderConfigs = null;\n configs = meta.configs;\n for (name in configs) {\n if (configs[name].render) {\n (renderConfigs || (renderConfigs = new Set())).add(name);\n }\n }\n // Put $renderConfigs on the prototype so that onConfigChange is as simple as possible:\n meta.renderConfigs = me.prototype.$renderConfigs = renderConfigs;\n }\n return renderConfigs;\n }\n //region Init\n construct(...args) {\n this.$iid = ++Renderable.$idSeed;\n this.byRef = {};\n super.construct(...args);\n if (this.onDraw !== Renderable.prototype.onDraw) {\n this.initDrawable();\n }\n }\n startConfigure(config) {\n this.element = this.renderContext.renderDom(); // calls changeElement()\n super.startConfigure(config);\n }\n //endregion\n //region Configs\n get element() {\n // NOTE: We can replace the getter of a config property\n // Asking for the primary el is a good sign that we need to sync the DOM:\n this.refreshDom.flush();\n return this._element;\n }\n /**\n * This is called when the `element` config is assigned (via the setter).\n * @param {HTMLElement} element The new element being assigned.\n * @param {HTMLElement|null} oldElement The old element (previously assigned) or `null`.\n * @returns {HTMLElement}\n * @private\n */\n changeElement(element, oldElement) {\n const me = this;\n if (oldElement) {\n oldElement.remove();\n }\n if (element) {\n element.id = me.id;\n element = DomHelper.createElement(element, {\n refOwner: me\n });\n }\n return element;\n }\n updateId(id, oldId) {\n const me = this;\n if (oldId) {\n const element = me.element;\n element.id = id;\n me.fixRefOwnerId(element, id, oldId);\n }\n }\n //endregion\n //region Misc\n /**\n * Returns the `classList` of this instance's `element`.\n * @property {DOMTokenList}\n */\n get classes() {\n return this.element.classList;\n }\n /**\n * This method fixes the element's `$refOwnerId` when this instance's `id` is changing.\n * @param {HTMLElement} el The element to fix.\n * @param {String} id The new id being assigned.\n * @param {String} oldId The old id (previously assigned).\n * @private\n */\n fixRefOwnerId(el, id, oldId) {\n if (el.$refOwnerId === oldId) {\n el.$refOwnerId = id;\n const ref = el.$reference;\n if (ref) {\n el.id = `${id}-${ref}`;\n }\n for (const c of el.childNodes) {\n this.fixRefOwnerId(c, id, oldId);\n }\n }\n }\n onConfigChange({\n name\n }) {\n // The $renderConfigs Set is either on our prototype (due to renderConfigs getter) or on our instance (due to\n // renderContext getter):\n if (!this.isConfiguring && this.$renderConfigs.has(name)) {\n this.refreshDom();\n }\n }\n //endregion\n //region Rendering\n /**\n * This method is called by `DomHelper.createElement` and `DomSync.sync` as new reference elements are created.\n * @param {String} name The name of the element, i.e., the value of its `reference` attribute.\n * @param {HTMLElement} el The element instance\n * @param {Object} domConfig The DOM config object.\n * @private\n */\n attachRef(name, el, domConfig) {\n const me = this,\n key = '_' + name,\n {\n listeners\n } = domConfig;\n if (!(key in me)) {\n defineProperty$3(me, name, {\n get() {\n // Asking for a ref el is a good sign that we need to sync the DOM:\n me.refreshDom.flush();\n return me[key];\n },\n set(el) {\n me[key] = el;\n // Key elements contain owner pointer (Not supported on IE SVG).\n // if (el && el.dataset) {\n // el.dataset.ownerCmp = me.id;\n // }\n }\n });\n }\n\n el.id = `${me.id}-${name}`;\n me.byRef[name] = el;\n me[name] = el;\n if (listeners) {\n domConfig.listeners = {\n on: listeners,\n un: EventHelper.on(Object.assign({\n element: el,\n thisObj: me\n }, listeners))\n };\n }\n }\n /**\n * This method is called by `DomSync.sync` as reference elements are removed from the DOM.\n * @param {String} name The name of the element, i.e., the value of its `reference` attribute.\n * @param {HTMLElement} el The element instance\n * @param {Object} domConfig The DOM config object.\n * @private\n */\n detachRef(name, el, domConfig) {\n if (domConfig.listeners) {\n domConfig.listeners.un();\n domConfig.listeners = null;\n }\n this[name] = null;\n delete this.byRef[name];\n }\n /**\n * This method returns a {@link Core.helper.DomHelper#function-createElement-static} config object that describes\n * the desired elements for this instance.\n *\n * This method is called to produce the initial DOM structure and again as necessary to generate the DOM for the\n * current state. The DOM produced by these subsequent calls is then passed through\n * {@link Core.helper.DomSync#function-sync-static DomSync.sync()} to update the DOM.\n * @returns {Object}\n */\n renderDom() {\n // abstract method provided by derived class\n return {};\n }\n /**\n * This property is the object to use when calling the `renderDom` method. It may evaluate to this instance (if\n * the class declares its render configs) or a helper object to track config usage during the `renderDom` call.\n * @property {Object}\n * @private\n */\n get renderContext() {\n const me = this,\n meta = me.$meta,\n C = me.constructor;\n let renderConfigs = meta.renderConfigs || C.renderConfigs,\n context = me;\n // If the class author did not declare any configs as render:true, then we make a proxy-like object that can\n // detect getter calls to build that Set. Since the getters may not all trigger on any given rendering, we\n // cannot share this work across instances since they may take different control paths.\n if (!renderConfigs) {\n context = Object.create(me);\n renderConfigs = new Set();\n for (const name in meta.configs) {\n defineProperty$3(context, name, {\n get() {\n renderConfigs.add(name);\n return me[name];\n }\n });\n }\n // In order to be substitutable for the Renderable, we need the same method name... we just need to run\n // renderDom w/ our context as \"this\":\n context.renderDom = () => {\n return me.renderDom.call(context);\n };\n me.$renderConfigs = renderConfigs;\n }\n // Replace this getter with the actual context so we don't get called again:\n defineProperty$3(me, 'renderContext', {\n value: context\n });\n return context;\n }\n /**\n * This method synchronized the DOM produced by {@link #function-renderDom} with what was previously produced and\n * updates the elements accordingly.\n *\n * This method is buffered such that calls to it do not immediately execute. To perform the refresh immediately,\n * do this:\n *```\n * instance.refreshDom.now();\n *```\n * To flush any potential updates to the DOM (and do nothing if there are none), do this:\n *```\n * instance.refreshDom.flush();\n *```\n * To determine if there are updates to the DOM pending, do this:\n *```\n * if (instance.refreshDom.isPending) {\n * ...\n * }\n *```\n */\n refreshDom() {\n DomSync.sync({\n targetElement: this.element,\n domConfig: this.renderContext.renderDom(),\n refOwner: this,\n // This limits the sync() to only removing the classes and styles added by previous renderings. This\n // allows dynamically added styles and classes to be preserved:\n strict: true\n });\n }\n //endregion\n onListen(eventName) {\n // Only add the b-drawable-el when someone first listens for the draw event since it may never happen...\n if (eventName === 'draw') {\n this.initDrawable();\n }\n }\n initDrawable() {\n const me = this;\n if (!me.intersector) {\n let el = Object.values(me.byRef).find(el => el.classList.contains('b-drawable'));\n if (!el) {\n el = me.element;\n el.classList.add('b-drawable');\n }\n me.intersector = new IntersectionObserver(entries => {\n if (!me.isDestroyed) {\n entries.forEach(ent => {\n if (ent.isIntersecting) {\n me.onDraw({\n count: ++me.drawCounter\n });\n }\n });\n }\n });\n me.intersector.observe(el);\n }\n }\n onDraw(ev) {\n this.trigger('draw', ev);\n }\n}\nRenderable.$idSeed = 0;\nObject.assign(Renderable.prototype, {\n drawCounter: 0,\n hasGeneratedId: false,\n intersector: null\n});\nRenderable._$name = 'Renderable';\n\n//TODO: add loader\n/**\n * @module Core/widget/Mask\n */\n/**\n * Masks a target element (document.body if none is specified). Call static methods for ease of use or make instance\n * for reusability.\n *\n * @example\n * Mask.mask('hello');\n * Mask.unmask();\n *\n * @inlineexample Core/widget/Mask.js\n *\n * @example\n * // Using progress by calling static method\n * let mask = Mask.mask({\n * text:'The task is in progress',\n * progress: 0,\n * maxProgress: 100\n * }, document.body);\n * let timer = setInterval(()=>{\n * mask.progress += 5;\n * if(mask.progress >= mask.maxProgress) {\n * Mask.unmask();\n * clearInterval(timer)\n * }\n * },100)\n *\n * @example\n * // Using progress to mask a Bryntum component\n * scheduler.mask({\n * text:'Loading in progress',\n * progress: 0,\n * maxProgress: 100\n * })\n * let timer = setInterval(()=>{\n * scheduler.masked.progress += 5;\n * if(scheduler.masked.progress >= scheduler.masked.maxProgress) {\n * scheduler.unmask();\n * clearInterval(timer)\n * }\n * },100)\n *\n */\nclass Mask extends Renderable {\n //region Config\n static get $name() {\n return 'Mask';\n }\n // Factoryable type name\n static get type() {\n return 'mask';\n }\n static get configurable() {\n return {\n /**\n * Set this config to trigger an automatic close after the desired delay:\n * ```javascript\n * mask.autoClose = 2000;\n * ```\n * If the mask has an `owner`, its `onMaskAutoClosing` method is called when the close starts and its\n * `onMaskAutoClose` method is called when the close finishes.\n * @config {Number}\n * @private\n */\n autoClose: null,\n /**\n * The portion of the {@link #config-target} element to be covered by this mask. By default, the mask fully\n * covers the `target`. In some cases, however, it may be desired to only cover the `'body'` (for example,\n * in a grid).\n *\n * This config is set in conjunction with `owner` which implements the method `syncMaskCover`.\n *\n * @config {String}\n * @private\n */\n cover: null,\n /**\n * The icon to show next to the text. Defaults to showing a spinner\n * @config {String}\n * @default\n */\n icon: 'b-icon b-icon-spinner',\n errorDefaults: {\n icon: 'b-icon b-icon-warning',\n autoClose: 3000,\n showDelay: 0\n },\n /**\n * The maximum value of the progress indicator\n * @property {Number}\n */\n maxProgress: null,\n /**\n * Mode: bright, bright-blur, dark or dark-blur\n * @config {'bright'|'bright-blur'|'dark'|'dark-blur'}\n * @default\n */\n mode: 'dark',\n /**\n * Number expressing the progress\n * @property {Number}\n */\n progress: null,\n // The owner is involved in the following features:\n //\n // - The `autoClose` timer calls `onMaskAutoClose`.\n // - The `cover` config calls `syncMaskCover`.\n // - If the `target` is a string, that string names the property of the `owner` that holds the\n // `HTMLElement` reference.\n /**\n * The owning widget of this mask. This is required if `target` is a string.\n *\n * @config {Object|Core.widget.Widget}\n */\n owner: {\n $config: 'nullify',\n value: null\n },\n /**\n * The element to be masked. If this config is a string, that string is the name of the property of the\n * `owner` that holds the `HTMLElement` that is the actual target of the mask.\n *\n * NOTE: In prior releases, this used to be specified as the `element` config, but that is now, as with\n * `Widget`, the primary element of the mask.\n *\n * @config {String|HTMLElement}\n */\n target: null,\n /**\n * The text (or HTML) to show in mask\n * @config {String}\n */\n text: null,\n // TODO - perhaps a better way to deal w/multiple reasons to mask something would be a mask FIFO behind\n // the scenes so that only one mask is visible at a time. That would take a bit of tinkering in the\n // hide/show mechanism but feels like a more natural way to go. In which case, this config would go away\n // and multiple masks would simply cooperate. https://github.com/bryntum/support/issues/190\n // This property is used to block trial mask removal\n // https://github.com/bryntum/support/issues/2604\n type: null,\n /**\n * The number of milliseconds to delay before making the mask visible. If set, the mask will have an\n * initial `opacity` of 0 but will function in all other ways as a normal mask. Setting this delay can\n * reduce flicker in cases where load operations are typically short (for example, a second or less).\n *\n * @config {Number}\n */\n showDelay: null,\n useTransition: false\n };\n }\n static get delayable() {\n return {\n deferredClose: 0,\n delayedShow: 0,\n syncCover: {\n type: 'throttle',\n delay: 100\n }\n };\n }\n //endregion\n //region Init\n construct(config) {\n if (config) {\n let el = config.element,\n cfg;\n // Upgrade config -> cfg\n // Treat config as readonly, cfg is lazily copied and writable\n if (el) {\n VersionHelper.deprecate('Core', '4.0.0', 'Mask \"element\" config has been renamed to \"target\"');\n config = cfg = Object.assign({}, config);\n delete cfg.element;\n cfg.target = el;\n }\n el = config.target;\n if (typeof el === 'string') {\n config = cfg = cfg || Object.assign({}, config);\n cfg.target = config.owner[el]; // must supply \"owner\" in this case\n }\n }\n\n super.construct(config);\n if (!this.target) {\n this.target = document.body;\n }\n this.show();\n }\n doDestroy() {\n const me = this,\n {\n element\n } = me;\n // Do not destroy a trial mask\n if (me.type === 'trial') {\n return false;\n }\n if (element) {\n me.element = null;\n if (me.mode.endsWith('blur')) {\n DomHelper.forEachChild(element, child => {\n child.classList.remove(`b-masked-${me.mode}`);\n });\n }\n me.target.classList.remove('b-masked');\n me.target[me.maskName] = null;\n }\n super.doDestroy();\n }\n get maskElement() {\n // TODO log on use of deprecated property?\n return this.element;\n }\n get maskName() {\n const type = this.type;\n return `mask${typeof type === 'string' ? type.trim() : ''}`;\n }\n set error(value) {\n this.setConfig(this.errorDefaults);\n this.text = value;\n }\n renderDom() {\n const me = this,\n {\n maxProgress\n } = me;\n return {\n class: {\n 'b-mask': 1,\n 'b-delayed-show': me.showDelay,\n 'b-widget': 1,\n [`b-mask-${me.mode}`]: 1,\n 'b-progress': maxProgress,\n 'b-prevent-transitions': !me.useTransition\n },\n children: [{\n reference: 'maskContent',\n class: 'b-mask-content b-drawable',\n children: [maxProgress ? {\n reference: 'progressElement',\n class: 'b-mask-progress-bar',\n style: {\n width: `${Math.max(0, Math.min(100, Math.round(me.progress / maxProgress * 100)))}%`\n }\n } : null, {\n reference: 'maskText',\n class: 'b-mask-text',\n html: (me.icon ? `` : '') + me.text\n }]\n }]\n };\n }\n //endregion\n //region Static\n static mergeConfigs(...sources) {\n const ret = {};\n for (const src of sources) {\n if (typeof src === 'string') {\n ret.text = src;\n } else {\n ObjectHelper.assign(ret, src); // not Object.assign!\n }\n }\n\n return ret;\n }\n /**\n * Shows a mask with the specified message\n * @param {String|Object} text Message\n * @param {HTMLElement} target The element to mask\n * @returns {Core.widget.Mask}\n */\n static mask(text, target = document.body) {\n return Mask.new({\n target\n }, typeof text !== 'string' ? _objectSpread2({}, text) : {\n text\n });\n }\n /**\n * Unmask\n * @param {HTMLElement} element Element to unmask\n * @returns {Promise} A promise which is resolved when the mask is gone\n */\n static unmask(element = document.body) {\n var _element$mask;\n return (_element$mask = element.mask) === null || _element$mask === void 0 ? void 0 : _element$mask.close();\n }\n //endregion\n //region Config\n updateAutoClose(delay) {\n const me = this;\n me.deferredClose.cancel();\n if (delay) {\n me.deferredClose.delay = delay;\n me.deferredClose();\n }\n }\n updateCover() {\n this.syncCover();\n }\n syncCover() {\n var _this$owner, _this$owner$syncMaskC;\n (_this$owner = this.owner) === null || _this$owner === void 0 ? void 0 : (_this$owner$syncMaskC = _this$owner.syncMaskCover) === null || _this$owner$syncMaskC === void 0 ? void 0 : _this$owner$syncMaskC.call(_this$owner, this); // pass \"this\" since owner may not yet have assigned us to \"masked\"\n }\n\n onOwnerResize() {\n this.syncCover();\n }\n updateOwner(owner) {\n this.detachListeners('cover');\n owner === null || owner === void 0 ? void 0 : owner.on({\n name: 'cover',\n recompose: 'onOwnerResize',\n resize: 'onOwnerResize',\n thisObj: this\n });\n }\n updateShowDelay(delay) {\n const {\n delayedShow\n } = this;\n delayedShow.delay = delay;\n if (!delay) {\n delayedShow.flush();\n }\n }\n //endregion\n //region Show & hide\n deferredClose() {\n var _owner$onMaskAutoClos2;\n const {\n owner\n } = this;\n this.close().then(() => {\n var _owner$onMaskAutoClos;\n owner === null || owner === void 0 ? void 0 : (_owner$onMaskAutoClos = owner.onMaskAutoClose) === null || _owner$onMaskAutoClos === void 0 ? void 0 : _owner$onMaskAutoClos.call(owner, this);\n });\n owner === null || owner === void 0 ? void 0 : (_owner$onMaskAutoClos2 = owner.onMaskAutoClosing) === null || _owner$onMaskAutoClos2 === void 0 ? void 0 : _owner$onMaskAutoClos2.call(owner, this);\n }\n delayedShow() {\n this.classes.remove('b-delayed-show');\n }\n /**\n * Show mask\n */\n show() {\n const me = this,\n {\n element,\n target,\n hiding,\n maskName\n } = me;\n // We don't do this because we may want to show but automatically close after a\n // brief delay. The order of applying those configs should not be an issue. In\n // other words, to stop the deferredClose, you must set autoClose to falsy.\n // me.deferredClose.cancel();\n if (hiding) {\n // Resolving seems much better than the only other options:\n // 1. Never settling\n // 2. Rejecting\n hiding.resolve();\n // This will be nulled out as the promise resolves but that is a race condition\n // compared to the next hide() call.\n me.hiding = null;\n me.clearTimeout('hide');\n }\n if (me.showDelay) {\n element.classList.add('b-delayed-show');\n me.delayedShow();\n }\n element.classList.add('b-visible');\n element.classList.remove('b-hidden');\n target.classList.add('b-masked');\n if (!target[maskName]) {\n target[maskName] = me;\n target.appendChild(element);\n }\n me.shown = true;\n me.trigger('show');\n // blur has to blur child elements\n if (me.mode.endsWith('blur')) {\n DomHelper.forEachChild(target, child => {\n if (child !== element) {\n child.classList.add(`b-masked-${me.mode}`);\n }\n });\n }\n }\n /**\n * Hide mask\n * @returns {Promise} A promise which is resolved when the mask is hidden, or immediately if already hidden\n */\n hide() {\n const me = this,\n {\n target,\n element\n } = me;\n let {\n hiding\n } = me;\n if (!hiding) {\n if (!me.shown) {\n return Promise.resolve();\n }\n me.hiding = hiding = new Promissory();\n me.shown = false;\n element.classList.remove('b-visible');\n element.classList.add('b-hidden');\n target.classList.remove('b-masked');\n if (me.mode.endsWith('blur')) {\n DomHelper.forEachChild(target, child => {\n if (child !== element) {\n child.classList.remove(`b-masked-${me.mode}`);\n }\n });\n }\n hiding.promise = hiding.promise.then(() => {\n if (me.hiding === hiding) {\n me.hiding = null;\n }\n });\n // TODO: use AnimationHelper when available\n me.setTimeout(() => hiding.resolve(), 500, 'hide');\n }\n return hiding.promise;\n }\n /**\n * Close mask (removes it)\n * @returns {Promise} A promise which is resolved when the mask is closed\n */\n async close() {\n await this.hide();\n this.destroy();\n }\n //endregion\n}\n\nMask._$name = 'Mask';\n\n/**\n * @module Core/widget/mixin/KeyMap\n */\n/**\n * Mixin for widgets that allows for standardized and customizable keyboard shortcuts functionality. Can be configured\n * on any widget or compatible feature.\n *\n * ```javascript\n * const grid = new Grid({\n * keyMap: {\n * // Changing keyboard navigation to respond to WASD keys.\n * w : 'navigateUp',\n * a : 'navigateLeft',\n * s : 'navigateDown',\n * d : 'navigateRight',\n *\n * // Removes mappings for arrow keys.\n * ArrowUp : null,\n * ArrowLeft : null,\n * ArrowDown : null,\n * ArrowRight : null\n * }\n * });\n * ```\n *\n * For more information on how to customize keyboard shortcuts, please see our guide (Guides/Customization/Keyboard\n * shortcuts)\n * @mixin\n */\nvar KeyMap = (Target => {\n var _class;\n return _class = class KeyMap extends (Target || Base$1) {\n get widgetClass() {}\n /**\n * Override to attach the keyMap keydown event listener to something else than this.element\n * @private\n */\n get keyMapElement() {\n return this.element;\n }\n /**\n * Override to make keyMap resolve subcomponent actions to something else than this.features.\n * @private\n */\n get keyMapSubComponents() {\n return this.features;\n }\n /**\n * Called on keyMapElement keyDown\n * @private\n */\n performKeyMapAction(keyEvent) {\n const {\n keyMap\n } = this;\n let actionHandled = false;\n // We ignore if event is marked as handled\n if (keyMap && !keyEvent.handled) {\n // Match a defined key combination, such as `Ctrl + Enter`\n const keyCombination = ObjectHelper.keys(keyMap).find(keyString => {\n const keys = keyString.split('+'),\n requireAlt = keys.includes('Alt'),\n requireShift = keys.includes('Shift'),\n requireCtrl = keys.includes('Ctrl');\n // Last key should be the actual key,\n let actualKey = keys[keys.length - 1].toLowerCase();\n if (actualKey === 'space') {\n actualKey = ' ';\n }\n // Modifiers in any order before the actual key\n return actualKey === keyEvent.key.toLowerCase() && (!keyEvent.altKey && !requireAlt || keyEvent.altKey && requireAlt) && (!keyEvent.ctrlKey && !requireCtrl || keyEvent.ctrlKey && requireCtrl) && (!keyEvent.shiftKey && !requireShift || keyEvent.shiftKey && requireShift);\n });\n // Is there an action (fn to call) for that key combination\n if (keyMap[keyCombination]) {\n // Internally, action can be an array of actions in case of key conflicts\n const actions = ArrayHelper.asArray(keyMap[keyCombination]);\n let preventDefault;\n // The actions will be called in the order they were added to the array.\n for (let action of actions) {\n preventDefault = true;\n // Support for providing a config object as handler function to prevent keyEvent.preventDefault\n if (ObjectHelper.isObject(action)) {\n if (!action.handler) {\n continue;\n }\n if (action.preventDefault === false) {\n preventDefault = false;\n }\n action = action.handler;\n }\n if (typeof action === 'string') {\n var _thisObj$isActionAvai;\n const {\n thisObj,\n handler\n } = this.resolveKeyMapAction(action);\n // Check if action is available, for example widget is enabled\n if (((_thisObj$isActionAvai = thisObj.isActionAvailable) === null || _thisObj$isActionAvai === void 0 ? void 0 : _thisObj$isActionAvai.call(thisObj, keyCombination, action, keyEvent)) !== false) {\n // If action function returns false, that means that it did not handle the action\n if (handler.call(thisObj, keyEvent) !== false) {\n actionHandled = true;\n break;\n }\n }\n } else if (action.call(this) !== false) {\n actionHandled = true;\n break;\n }\n }\n if (actionHandled) {\n if (preventDefault) {\n keyEvent.preventDefault();\n }\n keyEvent.handled = true;\n }\n }\n }\n return actionHandled;\n }\n /**\n * Resolves correct `this` and handler function.\n * If subComponent (action includes a dot) it will resolve in keyMapSubComponents (defaults to this.features).\n *\n * For example, in feature configurable:\n * `keyMap: {\n * ArrowUp: 'navigateUp'\n * }`\n *\n * Will be translated (by InstancePlugin) to:\n * `keyMap: {\n * ArrowUp: 'featureName.navigateUp'\n * }\n *\n * And resolved to correct function path here.\n *\n * Override to change action function mapping.\n * @private\n */\n resolveKeyMapAction(action) {\n const {\n keyMapSubComponents\n } = this;\n if (keyMapSubComponents && action.includes('.')) {\n const [component, actionName] = action.split('.');\n if (component && actionName) {\n return {\n thisObj: keyMapSubComponents[component],\n handler: keyMapSubComponents[component][actionName]\n };\n }\n }\n return {\n thisObj: this,\n handler: this[action]\n };\n }\n updateKeyMap(keyMap) {\n var _this$keyMapDetacher;\n (_this$keyMapDetacher = this.keyMapDetacher) === null || _this$keyMapDetacher === void 0 ? void 0 : _this$keyMapDetacher.call(this);\n if (!ObjectHelper.isEmpty(keyMap)) {\n this.keyMapDetacher = EventHelper.on({\n element: this.keyMapElement,\n keydown: 'keyMapOnKeyDown',\n thisObj: this\n });\n }\n }\n // Hook on to this to catch keydowns before keymap does\n keyMapOnKeyDown(event) {\n this.performKeyMapAction(event);\n }\n /**\n * This function is used for merging two keyMaps with each other. It can be used for example by a Grid's feature to\n * merge the fetature's keyMap into the Grid's with the use of a subPrefix.\n * @param {Object} target - The existing keyMap.\n * @param {Object} source - The keyMap we want to merge into target.\n * @param {Object} subPrefix - If keyMap actions in source should be prefixed, the prefix should be provided here.\n * As example, the prefix * `rowCopyPaste` will give the action 'rowCopyPaste.action'.\n * @private\n */\n mergeKeyMaps(target, source, subPrefix = null) {\n const mergedKeyMap = {};\n if (target) {\n ObjectHelper.assign(mergedKeyMap, target);\n }\n for (const key in source) {\n let newAction;\n // Mapping keymap actions to their corresponding feature's name, like group.toggleGroup\n if (ObjectHelper.isObject(source[key]) && source[key].handler) {\n newAction = ObjectHelper.assignIf({\n handler: (subPrefix ? subPrefix + '.' : '') + source[key].handler\n }, source[key]);\n } else {\n newAction = (subPrefix ? subPrefix + '.' : '') + source[key];\n }\n // If current key already exists in clients keymap\n const currentKeyMapping = target === null || target === void 0 ? void 0 : target[key];\n if (currentKeyMapping) {\n var _newAction$weight;\n const actions = ArrayHelper.asArray(currentKeyMapping),\n weight = ObjectHelper.isObject(newAction) ? (_newAction$weight = newAction.weight) !== null && _newAction$weight !== void 0 ? _newAction$weight : 0 : 0;\n if (!weight) {\n actions === null || actions === void 0 ? void 0 : actions.unshift(newAction);\n } else {\n let index = actions.findIndex(action => (action === null || action === void 0 ? void 0 : action.weight) > weight);\n if (index < 0) {\n index = actions.length;\n }\n actions.splice(index, 0, newAction);\n }\n mergedKeyMap[key] = actions;\n } else {\n mergedKeyMap[key] = newAction;\n }\n }\n return mergedKeyMap;\n }\n }, _defineProperty(_class, \"$name\", 'KeyMap'), _defineProperty(_class, \"configurable\", {\n keyMap: {\n value: null,\n $config: {\n merge: 'objects',\n nullify: true\n }\n }\n }), _class;\n});\n\nvar RTL = (Target => {\n var _class;\n return _class = class RTL extends (Target || Base$1) {\n get widgetClass() {}\n updateRtl(rtl) {\n const {\n element\n } = this;\n if (element) {\n element.classList.toggle('b-rtl', rtl === true);\n element.classList.toggle('b-ltr', rtl === false);\n }\n }\n updateElement(element) {\n const me = this,\n // Pull in the appendTo, insertBefore and insertFirst configs to ascertain our\n // render context which also calculates the host writing direction and sets rtl if necessary.\n [parentElement] = me.getRenderContext();\n // Acquire our rtl setting from our owner, or our parent element unless it's already been set\n if (me.rtl == null) {\n var _me$owner;\n if ((_me$owner = me.owner) !== null && _me$owner !== void 0 && _me$owner.rtl || (parentElement === null || parentElement === void 0 ? void 0 : parentElement.nodeType) === 1 && getComputedStyle(parentElement).getPropertyValue('direction') === 'rtl') {\n me.rtl = true;\n }\n }\n const {\n rtl\n } = me;\n element.classList.toggle('b-rtl', rtl === true);\n element.classList.toggle('b-ltr', rtl === false);\n return element;\n }\n // Render is only called on outer widgets, children read their setting from their owner unless explicitly set\n render(...args) {\n var _this$owner;\n super.render && super.render(...args);\n // TODO: Remove in 6.0\n if (BrowserHelper.isChrome && BrowserHelper.chromeVersion < 87 || BrowserHelper.isFirefox && BrowserHelper.firefoxVersion < 66 || BrowserHelper.isSafari && BrowserHelper.safariVersion < 14.1) {\n this.element.classList.add('b-legacy-inset');\n }\n // Detect if rtl (catches both attribute `dir=\"rtl\"` and CSS `direction: rtl`, as well as if owner uses rtl)\n if (getComputedStyle(this.element).direction === 'rtl' || (_this$owner = this.owner) !== null && _this$owner !== void 0 && _this$owner.rtl) {\n this.rtl = true;\n }\n }\n }, _defineProperty(_class, \"$name\", 'RTL'), _defineProperty(_class, \"configurable\", {\n // Force rtl\n rtl: null\n }), _class;\n});\n\n// TODO: Needs more docs\n/**\n * @module Core/widget/Widget\n */\nconst assignValueDefaults = Object.freeze({\n highlight: false,\n onlyName: false\n }),\n floatRoots = [],\n highlightExternalChange = 'highlightExternalChange',\n isTransparent = /transparent|rgba\\(0,\\s*0,\\s*0,\\s*0\\)/,\n textInputTypes = {\n INPUT: 1,\n TEXTAREA: 1\n },\n addElementListeners = (me, element, domConfig, refName) => {\n var _listeners;\n let listeners = domConfig === null || domConfig === void 0 ? void 0 : domConfig.listeners;\n listeners = ((_listeners = listeners) === null || _listeners === void 0 ? void 0 : _listeners.on) || listeners;\n if (listeners) {\n const un = EventHelper.on(ObjectHelper.assign({\n element,\n thisObj: me\n }, listeners));\n if (refName) {\n // The domConfig for refs gets regenerated on each compose() so we cannot use them to store the un\n // functions.\n (me._refListeners || (me._refListeners = Object.create(null)))[refName] = un;\n } else {\n domConfig.listeners = {\n on: listeners,\n un\n };\n }\n }\n },\n mergeAnim = (value, was) => {\n // The show/hideAnimation objects can only have one animation property, but it is fine to merge if they have\n // the same property.\n return value && was && was[ObjectHelper.keys(value)[0]] ? Config.merge(value, was) : value;\n },\n // Need braces here. MUST NOT return false\n widgetTriggerPaint = w => {\n w.isVisible && w.triggerPaint();\n },\n negationPseudo = /^:not\\((.+)\\)$/,\n nonFlowedPositions = /absolute|fixed/i,\n isScaled = w => w.scale != null,\n {\n hasOwnProperty: hasOwnProperty$2\n } = Object.prototype,\n {\n defineProperty: defineProperty$2\n } = Reflect,\n parseDuration = d => parseFloat(d) * (d.endsWith('ms') ? 1 : 1000),\n immediatePromise$4 = Promise.resolve(),\n alignedClass = ['b-aligned-above', 'b-aligned-right', 'b-aligned-below', 'b-aligned-left'],\n returnFalseProp = {\n configurable: true,\n get() {\n return false;\n }\n },\n localizeRE = /(?:L\\{([^}.]+)\\})/,\n localizeTooltip = (string, part) => 'L{Tooltip.' + part + '}',\n alignSpecRe = /^([trblc])(\\d*)-([trblc])(\\d*)$/i,\n mergeAlign = (oldValue, newValue) => {\n // Promote eg 'l-r' to { align : 'l-r' } so that align configs can merge.\n // But only if they are rectangle align strings. align:'left', align:'start' etc must not change.\n if (alignSpecRe.test(oldValue)) {\n oldValue = {\n align: oldValue\n };\n }\n if (alignSpecRe.test(newValue)) {\n newValue = {\n align: newValue\n };\n }\n return Config.merge(oldValue, newValue);\n };\n/**\n * Base class for other widgets. The Widget base class simply encapsulates an element, and may optionally contain some\n * specified {@link #config-html}.\n *\n * ## Rendering\n *\n * Subclasses should override the {@link #function-compose} method to return their encapsulating element and internal\n * DOM structure. The `compose()` method returns a {@link Core.helper.DomHelper#function-createElement-static} config\n * object that is* used to create the DOM structure, based on its {@link Core.Base#property-configurable-static}\n * properties:\n *\n * ```javascript\n * class Button extends Widget {\n * static get configurable() {\n * return {\n * cls : null,\n * text : null\n * };\n * }\n *\n * compose() {\n * const { cls, text } = this; // collect all relevant configs properties (for auto-detection)\n *\n * return {\n * tag : 'button',\n * class : cls,\n * text\n * };\n * }\n * }\n * ```\n *\n * The config properties used by the `compose()` method are auto-detected when the method is first called for a class.\n * All relevant properties must be read, even if they end up not being used so that future changes to these properties\n * will mark the rendering as dirty.\n *\n * When a config property used by `compose()` is modified, the {@link #function-recompose} method is called. Since\n * `recompose()` is a {@link Core.mixin.Delayable#property-delayable-static delayable} method, calling it schedules a\n * delayed call to `compose()` and a DOM update. Accessing the Widget's primary `element` or any reference element\n * property will force the DOM update to occur immediately.\n *\n * ### Child Elements\n *\n * Unlike typical {@link Core.helper.DomHelper#function-createElement-static DOM config} objects, the object returned\n * by `compose()` can use an object to simplify naming:\n *\n * ```javascript\n * class Button extends Widget {\n * ...\n *\n * compose() {\n * const { cls, iconCls, text } = this; // collect all relevant configs properties (for auto-detection)\n *\n * return {\n * tag : 'button',\n * class : cls,\n *\n * children : {\n * iconElement : iconCls && {\n * class : {\n * 'button-icon' : 1,\n * [iconCls] : 1\n * }\n * },\n *\n * textElement : {\n * text\n * }\n * }\n * };\n * }\n * }\n * ```\n *\n * The keys of the `children` are [iterated](https://2ality.com/2015/10/property-traversal-order-es6.html) to convert\n * the values into the array required by {@link Core.helper.DomHelper#function-createElement-static}. The names of the\n * properties becomes the `reference` of the element.\n *\n * For example, the above is equivalent to the following:\n *\n * ```javascript\n * class Button extends Widget {\n * ...\n *\n * compose() {\n * const { cls, iconCls, text } = this; // collect all relevant configs properties (for auto-detection)\n *\n * return {\n * tag : 'button',\n * class : cls,\n *\n * children : [iconCls && {\n * reference : 'iconElement',\n * class : {\n * 'button-icon' : 1,\n * [iconCls] : 1\n * }\n * }, {\n * reference : 'textElement',\n * text\n * }]\n * };\n * }\n * }\n * ```\n *\n * The object form of `children` is preferred for clarity but also because it facilitates inheritance.\n *\n * ### Inheritance\n *\n * When a derived class implements `compose()`, the object it returns is automatically merged with the object returned\n * by the base class.\n *\n * For example, the following class adds a new child element:\n *\n * ```javascript\n * class MenuButton extends Button {\n * ...\n *\n * compose() {\n * const { menuCls } = this; // collect all relevant configs properties (for auto-detection)\n *\n * return {\n * children : {\n * menuElement : {\n * class : {\n * 'button-menu' : 1,\n * [menuCls] : 1\n * }\n * }\n * }\n * };\n * }\n * }\n * ```\n *\n * ### Listeners\n *\n * Reference elements may also define event `listeners` in the `compose()` method:\n *\n * ```javascript\n * class Button extends Widget {\n * compose() {\n * const { cls, text } = this;\n *\n * return {\n * tag : 'button',\n * class : cls,\n * text,\n *\n * listeners : {\n * click : 'onClick'\n * }\n * };\n * }\n *\n * onClick(event) {\n * // handle click event\n * }\n * }\n * ```\n *\n * ## Resolving properties\n *\n * Values for a Widgets properties can be resolved from the ownership hierarchy. For example a text field in a toolbar\n * can get its initial value from a property on the container owning the toolbar. This is achieved by prefixing the\n * desired property name with 'up.':\n *\n * ```javascript\n * const grid = new Grid((\n * tbar : [{\n * type : 'numberfield',\n * // Fields value will be retrieved from the grids rowHeight property\n * value : 'up.rowHeight'\n * }]\n * });\n * ```\n *\n * NOTE: this is for now a one way one time binding, the value will only be read initially and not kept up to date on\n * later changes.\n *\n * @mixes Core/mixin/Events\n * @mixes Core/localization/Localizable\n * @mixes Core/widget/mixin/KeyMap\n * @extends Core/Base\n * @classType widget\n */\nclass Widget extends Base$1.mixin(Localizable, Events, Delayable, Identifiable, Factoryable, KeyMap, RTL) {\n //region Config\n // Used when a config is a class and internally stored as a DomClassList\n // So that subclasses can add class names.\n static mergeCls(newValue, oldValue) {\n if (oldValue && newValue) {\n newValue = new DomClassList(oldValue).assign(typeof newValue === 'string' ? new DomClassList(newValue) : newValue);\n } else if (newValue && !newValue.isDomClassList) {\n newValue = new DomClassList(newValue);\n }\n return newValue;\n }\n /**\n * Class name getter.\n * Used when original ES6 class name is minified or mangled during production build.\n * Should be overriden in each class which extends Widget or it descendants.\n *\n * ```javascript\n * class MyNewClass extends Widget {\n * static get $name() {\n * return 'MyNewClass';\n * }\n * }\n * ```\n *\n * @static\n * @member {String} $name\n */\n static get $name() {\n return 'Widget';\n }\n /**\n * Widget name alias which you can use in the `items` of a Container widget.\n *\n * ```javascript\n * class MyWidget extends Widget {\n * static get type() {\n * return 'mywidget';\n * }\n * }\n * ```\n *\n * ```javascript\n * const panel = new Panel({\n * title : 'Cool widgets',\n * items : [\n * { type : 'mywidget', html : 'Lorem ipsum dolor sit amet...' }\n * ]\n * });\n * ```\n *\n * @static\n * @member {String} type\n */\n static get type() {\n return 'widget';\n }\n static get configurable() {\n return {\n /**\n * Get this widget's encapsulating HTMLElement, which is created along with the widget but added to DOM at\n * render time.\n * @member {HTMLElement} element\n * @readonly\n * @category DOM\n */\n /**\n * A {@link Core.helper.DomHelper#function-createElement-static} config object or HTML string from which to\n * create the Widget's element.\n * @private\n * @config {Object|String}\n * @category DOM\n */\n element: true,\n /**\n * Set to false to not call onXXX method names (e.g. `onShow`, `onClick`), as an easy way to listen for events.\n *\n * ```javascript\n * const container = new Container({\n * callOnFunctions : true\n *\n * onHide() {\n * // Do something when the 'hide' event is fired\n * }\n * });\n * ```\n * @config {Boolean}\n * @default\n */\n callOnFunctions: true,\n /**\n * Get/set widgets id\n * @member {String} id\n * @category DOM\n */\n /**\n * Widget id, if not specified one will be generated. Also used for lookups through Widget.getById\n * @config {String}\n * @category DOM\n */\n id: '',\n /**\n * The HTML to display initially or a function returning the markup (called at widget construction time)\n * @config {String|Function}\n * @category DOM\n */\n html: null,\n /**\n * Set HTML content safely, without disturbing sibling elements which may have been\n * added to the {@link #property-contentElement} by plugins and features.\n * When specifying html, this widget's element will also have the {@link #config-htmlCls}\n * added to its classList, to allow targeted styling.\n * @member {String} content\n * @category DOM\n */\n /**\n * The HTML content that coexists with sibling elements which may have been added to the\n * {@link #property-contentElement} by plugins and features.\n * When specifying html, this widget's element will also have the {@link #config-htmlCls}\n * class added to its classList, to allow targeted styling.\n * @config {String} content\n * @category DOM\n */\n content: null,\n /**\n * Custom CSS classes to add to element.\n * May be specified as a space separated string, or as an object in which property names\n * with truthy values are used as the class names:\n * ```javascript\n * cls : {\n * 'b-my-class' : 1,\n * [this.extraCls] : 1,\n * [this.activeCls] : this.isActive\n * }\n * ```\n *\n * @prp {String|Object}\n * @category CSS\n */\n cls: {\n $config: {\n merge: 'classList'\n },\n value: null\n },\n /**\n * Custom CSS class name suffixes to apply to the elements rendered by this widget. This may be specified\n * as a space separated string, an array of strings, or as an object in which property names with truthy\n * values are used as the class names.\n *\n * For example, consider a `Panel` with a `ui` config like so:\n *\n * ```javascript\n * new Panel({\n * text : 'OK',\n * ui : 'light'\n * });\n * ```\n * This will apply the CSS class `'b-panel-ui-light'` to the main element of the panel as well as its many\n * child elements. This allows simpler CSS selectors to match the child elements of this particular panel\n * UI:\n *\n * ```\n * .b-panel-content.b-panel-ui-light {\n * background-color : #eee;\n * }\n * ```\n * Using the {@link #config-cls cls config} would make matching the content element more complex, and in\n * the presence of {@link Core.widget.Panel#config-strips docked items} and nested panels, impossible to\n * target accurately.\n *\n * @config {String|Object}\n * @category CSS\n */\n ui: {\n $config: {\n merge: 'classList'\n },\n value: null\n },\n /**\n * Determines how a {@link Core.widget.Panel#config-collapsed} panel will treat this widget if it resides\n * within the panel's header (for example, as one of its {@link Core.widget.Panel#config-strips} or\n * {@link Core.widget.Panel#config-tools}).\n *\n * Valid options are:\n * - `null` : The widget will be moved to the overlay when collapsed (the default).\n * - `false` : The widget will be unaffected when the panel is collapsed.\n * - `'hide'` : The widget will be hidden when the panel is collapsed.\n * - `'overlay'` : The widget will only appear in the collapsed panel's overlay header.\n *\n * @config {Boolean|String}\n * @private\n */\n collapsify: null,\n /**\n * Custom CSS classes to add to the {@link #property-contentElement}.\n * May be specified as a space separated string, or as an object in which property names\n * with truthy values are used as the class names:\n * ```javascript\n * cls : {\n * 'b-my-class' : 1,\n * [this.extraCls] : 1,\n * [this.activeCls] : this.isActive\n * }\n * ```\n *\n * @config {String|Object}\n * @category CSS\n */\n contentElementCls: {\n $config: {\n merge: 'classList'\n },\n value: null\n },\n /**\n * Custom CSS classes to add to this widget's `element`. This property is typically used internally to\n * assign default CSS classes while allowing `cls` to alter these defaults. It is not recommended that\n * client code set this config but instead should set `cls`.\n *\n * For example, to remove a class defined by `defaultCls` using `cls`, declare the class name as a key with\n * a falsy value:\n *\n * ```javascript\n * cls : {\n * 'default-class' : false\n * }\n * ```\n * @config {String|Object|String[]}\n * @internal\n */\n defaultCls: {\n $config: {\n merge: 'classList'\n },\n value: null\n },\n /**\n * Controls the placement of this widget when it is added to a {@link Core.widget.Panel panel's }\n * {@link Core.widget.Panel#config-strips strips collection}. Typical values for this config are `'top'`,\n * `'bottom'`, `'left'`, or `'right'`, which cause the widget to be placed on that side of the panel's\n * body. Such widgets are called \"edge strips\".\n *\n * Also accepts direction neutral horizontal values `'start'` and `'end'``.\n *\n * If this config is set to `'header'`, the widget is placed in the panel's header, following the title. If\n * this config is set to `'pre-header'`, the widget is placed before the title. Such widgets are called\n * \"header strips\".\n *\n * @config {'top'|'bottom'|'left'|'right'|'start'|'end'|'header'|'pre-header'|Object} dock\n * @category Layout\n */\n dock: null,\n /**\n * The events to forward from an overflow twin to its origin widget.\n *\n * May be specified as a space separated string, or as an object in which property names\n * with truthy values are used as the class names:\n * ```javascript\n * cls : {\n * 'b-my-class' : 1,\n * [this.extraCls] : 1,\n * [this.activeCls] : this.isActive\n * }\n * ```\n * NOTE: This config cannot be dynamically changed after the `overflowTwin` has been created (see\n * {@link #function-ensureOverflowTwin}.\n * @config {String|String[]|Object}\n * @internal\n */\n forwardTwinEvents: {\n $config: {\n merge: 'classList'\n },\n value: null\n },\n parent: null,\n /**\n * The {@link Core.widget.Tab tab} created for this widget when it is placed in a\n * {@link Core.widget.TabPanel}.\n * @member {Core.widget.Tab} tab\n * @readonly\n * @category Misc\n */\n /**\n * A configuration for the {@link Core.widget.Tab tab} created for this widget when it is placed in a\n * {@link Core.widget.TabPanel}. For example, this config can be used to control the icon of the `tab` for\n * this widget:\n *\n * ```javascript\n * items : [{\n * type : 'panel',\n * // other configs...\n *\n * tab : {\n * icon : 'b-fa-wrench'\n * }\n * }, ... ]\n * ```\n *\n * Another use for this config is to set the tab's {@link Core.widget.mixin.Rotatable#config-rotate} value\n * differently than the default managed by the `TabPanel`:\n *\n * ```javascript\n * items : [{\n * type : 'panel',\n * // other configs...\n *\n * tab : {\n * rotate : false // don't rotate even if tabBar is docked left or right\n * }\n * }, ... ]\n * ```\n *\n * Set this to `false` to prevent the creation of a `tab` for this widget. In this case, this widget must\n * be {@link #function-show shown} explicitly. The {@link Core.widget.TabPanel#config-activeTab} for the\n * tab panel will be -1 in this situation.\n *\n * ```javascript\n * items : [{\n * type : 'panel',\n * tab : false, // no tab for this item\n *\n * // other configs...\n * }, ... ]\n * ```\n *\n * @config {Boolean|Object} tab\n * @category Misc\n */\n tab: null,\n /**\n * An object specifying attributes to assign to the root element of this widget\n * @internal\n * @config {Object}\n * @category Misc\n */\n elementAttributes: null,\n /**\n * The CSS class(es) to add when HTML content is being applied to this widget.\n * @config {String|Object}\n * @category CSS\n */\n htmlCls: {\n $config: {\n merge: 'classList'\n },\n value: {\n 'b-html': 1\n }\n },\n /**\n * Custom style spec to add to element\n * @config {String}\n * @category CSS\n */\n style: null,\n /**\n * Get/set element's disabled state\n * @member {Boolean} disabled\n * @category Misc\n */\n /**\n * Disable or enable the widget. It is similar to {@link #config-readOnly} except a disabled widget\n * cannot be focused, uses a different rendition (usually greyish) and does not allow selecting its value.\n * @default false\n * @config {Boolean}\n * @category Misc\n */\n disabled: null,\n /**\n * Get/set element's readOnly state. This is only valid if the widget is an input\n * field, __or contains input fields at any depth__. Updating this property will trigger\n * a {@link #event-readOnly} event.\n *\n * All descendant input fields follow the widget's setting. If a descendant\n * widget has a readOnly config, that is set.\n * @member {Boolean} readOnly\n * @category Misc\n */\n /**\n * Whether this widget is read-only. This is only valid if the widget is an input\n * field, __or contains input fields at any depth__.\n *\n * All descendant input fields follow the widget's setting. If a descendant\n * widget has a readOnly config, that is set.\n * @default false\n * @config {Boolean}\n * @category Misc\n */\n readOnly: {\n value: null,\n default: false,\n $config: null\n },\n /**\n * Determines if the widgets read-only state should be controlled by its parent.\n *\n * When set to `false`, setting a parent container to read-only will not affect the widget. When set to\n * `true`, it will.\n *\n * @category Misc\n * @config {Boolean}\n * @default false\n */\n ignoreParentReadOnly: null,\n /**\n * Element (or element id) to adopt as this Widget's encapsulating element. The widget's\n * content will be placed inside this element.\n *\n * If this widget has not been configured with an id, it will adopt the id of the element\n * in order to preserve CSS rules which may apply to the id.\n * @config {HTMLElement|String}\n * @default\n * @category DOM\n */\n adopt: null,\n /**\n * Element (or element id) to append this widget's element to.\n * @prp {HTMLElement|String}\n * @category DOM\n */\n appendTo: null,\n /**\n * Element (or element id) to insert this widget before. If provided, {@link #config-appendTo} config is ignored.\n * @prp {HTMLElement|String}\n * @category DOM\n */\n insertBefore: null,\n /**\n * Element (or element id) to append this widget element to, as a first child. If provided, {@link #config-appendTo} config is ignored.\n * @prp {HTMLElement|String}\n * @category DOM\n */\n insertFirst: null,\n /**\n * Object to apply to elements dataset (each key will be used as a data-attribute on the element)\n * @config {Object}\n * @category DOM\n */\n dataset: null,\n /**\n * Tooltip for the widget, either as a string or as a Tooltip config object.\n *\n * By default, the Widget will use a single, shared instance to display its tooltip as configured,\n * reconfiguring it to the specification before showing it. Therefore, it may not be permanently\n * mutated by doing things such as adding fixed event listeners.\n *\n * To have this Widget *own* its own `Tooltip` instance, add the property `newInstance : true`\n * to the configuration. In this case, the tooltip's {@link #property-owner} will be this Widget.\n *\n * __Note that in the absence of a configured {@link #config-ariaDescription}, the tooltip's value\n * will be used to populate an `aria-describedBy` element within this Widget.__\n * @config {String|Object}\n * @category Misc\n */\n tooltip: {\n $config: ['lazy', 'nullify'],\n value: null\n },\n /**\n * Set to false to not show the tooltip when this widget is {@link #property-disabled}\n * @config {Boolean}\n * @default\n * @category Misc\n */\n showTooltipWhenDisabled: true,\n /**\n * Prevent tooltip from being displayed on touch devices. Useful for example for buttons that display a\n * menu on click etc, since the tooltip would be displayed at the same time.\n * @config {Boolean}\n * @default false\n * @category Misc\n */\n preventTooltipOnTouch: null,\n /**\n * Specify true to have widget monitoring its own resize.\n * @config {Boolean}\n * @default false\n * @category Misc\n */\n monitorResize: {\n $config: ['lazy', 'nullify'],\n value: null\n },\n /**\n * Set to `true` to apply the default mask to the widget. Alternatively, this can be the mask message or a\n * {@link Core.widget.Mask} config object.\n * @config {Boolean|String|Object|Core.widget.Mask}\n * @category Misc\n */\n masked: {\n $config: 'nullify',\n value: null\n },\n /**\n * This config object contains the defaults for the {@link Core.widget.Mask} created for the\n * {@link #config-masked} config. Any properties specified in the `masked` config will override these\n * values.\n * @config {Object|Core.widget.Mask}\n * @default\n * @category Misc\n */\n maskDefaults: {\n target: 'element'\n },\n cache: {},\n /**\n * Set to `true` to move the widget out of the document flow and position it\n * absolutely in browser viewport space.\n * @config {Boolean}\n * @default\n * @category Float & align\n */\n floating: null,\n /**\n * Set to `true` when a widget is rendered into another widget's {@link #property-contentElement}, but must not\n * participate in the standard layout of that widget, and must be positioned relatively to that\n * widget's {@link #property-contentElement}.\n *\n * {@link Core.widget.Editor Editor}s are positioned widgets.\n * @config {Boolean}\n * @default\n * @category Float & align\n */\n positioned: null,\n /**\n * Only valid if this Widget is {@link #config-floating}\n * Set to `true` to be able to drag a widget freely on the page. Or set to an object with a ´handleSelector´\n * property which controls when a drag should start.\n *\n * ```javascript\n *\n * draggable : {\n * handleSelector : ':not(button)'\n * }\n *\n * ```\n *\n * @config {Boolean|Object}\n * @default false\n * @category Float & align\n */\n draggable: null,\n /**\n * _Only valid if this Widget is {@link #config-floating}._\n *\n * How to align this element with its target when {@link #function-showBy} is called\n * passing a simple element as an align target.\n *\n * Either a full alignment config object as passed to {@link #function-showBy}, or for simple\n * cases, the edge alignment string to use.\n *\n * When using a simple string, the format is `'[trblc]n-[trblc]n'` and it specifies our edge and\n * the target edge plus optional offsets from 0 to 100 along the edges to align to. Also supports direction\n * independent edges horizontally, `s` for start and `e` for end (maps to `l` and `r` for LTR, `r` and `l`\n * for RTL).\n *\n * See the {@link #function-showBy} function for more details about using the object form.\n *\n * Once set, this is stored internally in object form.\n * @config {Object|String}\n * @category Float & align\n */\n align: {\n $config: {\n merge: mergeAlign\n },\n value: 't-b'\n },\n /**\n * Only valid if this Widget is {@link #config-floating}\n * Set to `true` to centre the Widget in browser viewport space.\n * @config {Boolean}\n * @default\n * @category Float & align\n */\n centered: null,\n /**\n * Only valid if this Widget is {@link #config-floating} and being shown through {@link #function-showBy}.\n * Element, Widget or Rectangle to which this Widget is constrained.\n * @config {HTMLElement|Core.widget.Widget|Core.helper.util.Rectangle}\n * @default document.body\n * @category Float & align\n */\n constrainTo: undefined,\n /**\n * Only valid if this Widget is {@link #config-floating} and being shown through {@link #function-showBy}.\n * `true` to show a connector arrow pointing to the align target.\n * @config {Boolean}\n * @default false\n * @category Float & align\n */\n anchor: null,\n /**\n * The owning Widget of this Widget. If this Widget is directly contained, this will be the containing Widget.\n * If there is a `forElement`, this config will be that element's encapsulating Widget.\n *\n * If this Widget is floating, this config must be specified by the developer.\n * @config {Core.widget.Widget}\n * @category Float & align\n */\n owner: null,\n /**\n * Defines what to do if document is scrolled while Widget is visible (only relevant when floating is set to true).\n * Valid values: ´null´: do nothing, ´hide´: hide the widget or ´realign´: realign to the target if possible.\n * @config {'hide'|'realign'|null}\n * @default\n * @category Float & align\n */\n scrollAction: null,\n /**\n * Only valid if this Widget is {@link #config-floating}. An object which defined which CSS style\n * property should be animated upon hide, and how it should be animated eg:\n *\n * ```javascript\n * {\n * opacity: {\n * to : 0,\n * duration: '10s',\n * delay: '0s'\n * }\n * }\n * ```\n *\n * Set to `'false'` to disable animation.\n *\n * @config {Boolean|Object}\n * @category Float & align\n */\n hideAnimation: {\n $config: {\n merge: mergeAnim\n },\n value: null\n },\n /**\n * Only valid if this Widget is {@link #config-floating}. An object which defined which CSS style\n * property should be animated upon show, and how it should be animated eg:\n *\n * ```javascript\n * {\n * opacity: {\n * to : 1,\n * duration: '10s',\n * delay: '0s'\n * }\n * }\n * ```\n *\n * Set to `'false'` to disable animation.\n *\n * @config {Boolean|Object}\n * @category Float & align\n */\n showAnimation: {\n $config: {\n merge: mergeAnim\n },\n value: null\n },\n /**\n * The x position for the widget.\n *\n * Only valid if this Widget is {@link #config-floating} and not aligned or anchored to an element.\n *\n * @config {Number}\n * @default\n * @category Float & align\n */\n x: null,\n /**\n * The y position for the widget.\n *\n * Only valid if this Widget is {@link #config-floating} and not aligned or anchored to an element.\n *\n * @config {Number}\n * @default\n * @category Float & align\n */\n y: null,\n /**\n * Accessor to the {@link Core.helper.util.Scroller} which can be used\n * to both set and read scroll information.\n * @member {Core.helper.util.Scroller} scrollable\n * @category Layout\n */\n /**\n * Specifies whether (and optionally in which axes) a Widget may scroll. `true` means this widget\n * may scroll in both axes. May be an object containing boolean `overflowX` and `overflowY` properties which are applied\n * to CSS style properties `overflowX` and `overflowY`. If they are boolean, they are translated\n * to CSS overflow properties thus:\n *\n * *`true` -> `'auto'`\n * *`false` -> `'hidden'`\n *\n * After initialization, this property yields a {@link Core.helper.util.Scroller} which may be used\n * to both set and read scroll information.\n *\n * A Widget uses its `get overflowElement` property to select which element is to be scrollable.\n * By default, in the base `Widget` class, this is the Widget's encapsulating element. Subclasses\n * may implement `get overflowElement` to scroll inner elements.\n * @config {Boolean|Object|Core.helper.util.Scroller}\n * @default false\n * @category Scrolling\n */\n scrollable: {\n $config: ['lazy', 'nullify'],\n value: null\n },\n /**\n * The class to instantiate to use as the {@link #config-scrollable}. Defaults to {@link Core.helper.util.Scroller}.\n * @internal\n * @config {Core.helper.util.Scroller}\n * @typings {typeof Scroller}\n * @category Scrolling\n */\n scrollerClass: Scroller,\n /**\n * The name of the property to set when a single value is to be applied to this Widget. Such as when used\n * in a grid WidgetColumn, this is the property to which the column's `field` is applied.\n * @config {String}\n * @default 'html'\n * @category Misc\n */\n defaultBindProperty: 'html',\n /**\n * Event that should be considered the default action of the widget. When that event is triggered the\n * widget is also expected to trigger an `action` event. Purpose is to allow reacting to most widgets in\n * a coherent way.\n * @private\n * @config {String}\n * @category Misc\n */\n defaultAction: null,\n /**\n * When set to `true`, this widget is considered as a whole when processing {@link Core.widget.Toolbar}\n * overflow. When `false`, this widget's child items are considered instead.\n *\n * When set to the string `'none'`, this widget is ignored by overflow processing. This option should be\n * used with caution as it prevents the overflow algorithm from moving such widgets into the overflow\n * popup which may result in not clearing enough space to avoid overflowing the toolbar.\n * @config {Boolean|String}\n * @default true\n * @category Layout\n * @internal\n */\n overflowable: {\n value: null,\n default: true,\n $config: null\n },\n /**\n * Widget's width, used to set element style.width. Either specify a valid width string or a number, which\n * will get 'px' appended. We recommend using CSS as the primary way to control width, but in some cases\n * this config is convenient.\n * @config {String|Number}\n * @category Layout\n */\n width: null,\n /**\n * Widget's height, used to set element style.height. Either specify a valid height string or a number, which\n * will get 'px' appended. We recommend using CSS as the primary way to control height, but in some cases\n * this config is convenient.\n * @config {String|Number}\n * @category Layout\n */\n height: null,\n /**\n * The element's maxHeight. Can be either a String or a Number (which will have 'px' appended). Note that\n * like {@link #config-height}, _reading_ the value will return the numeric value in pixels.\n * @config {String|Number}\n * @category Layout\n */\n maxHeight: null,\n /**\n * The elements maxWidth. Can be either a String or a Number (which will have 'px' appended). Note that\n * like {@link #config-width}, _reading_ the value will return the numeric value in pixels.\n * @config {String|Number}\n * @category Layout\n */\n maxWidth: null,\n /**\n * The elements minWidth. Can be either a String or a Number (which will have 'px' appended). Note that\n * like {@link #config-width}, _reading_ the value will return the numeric value in pixels.\n * @config {String|Number}\n * @category Layout\n */\n minWidth: null,\n /**\n * The element's minHeight. Can be either a String or a Number (which will have 'px' appended). Note that\n * like {@link #config-height}, _reading_ the value will return the numeric value in pixels.\n * @config {String|Number}\n * @category Layout\n */\n minHeight: null,\n // not public, only used by us in docs\n scaleToFitWidth: null,\n allowGrowWidth: true,\n // only used if scaleToFitWidth is true\n /**\n * Get element's margin property. This may be configured as a single number or a `TRBL` format string.\n * numeric-only values are interpreted as pixels.\n * @member {Number|String} margin\n * @category Layout\n */\n /**\n * Widget's margin. This may be configured as a single number or a `TRBL` format string.\n * numeric-only values are interpreted as pixels.\n * @config {Number|String}\n * @category Layout\n */\n margin: null,\n /**\n * Get element's flex property. This may be configured as a single number or a format string:\n *\n * \n *\n * Numeric-only values are interpreted as the `flex-grow` value.\n * @member {Number|String} flex\n * @category Layout\n */\n /**\n * When this widget is a child of a {@link Core.widget.Container}, it will by default be participating in a\n * flexbox layout. This config allows you to set this widget's\n *
flex style.\n * This may be configured as a single number or a ` ` format string.\n * numeric-only values are interpreted as the `flex-grow` value.\n * @config {Number|String}\n * @category Layout\n */\n flex: null,\n /**\n * A widgets weight determines its position among siblings when added to a {@link Core.widget.Container}.\n * Higher weights go further down.\n * @config {Number}\n * @category Layout\n */\n weight: null,\n /**\n * Get/set this widget's `align-self` flexbox setting. This may be set to modify how this widget is aligned\n * within the cross axis of a flexbox layout container.\n * @member {String} alignSelf\n * @category Layout\n */\n /**\n * When this widget is a child of a {@link Core.widget.Container}, it will by default be participating in a\n * flexbox layout. This config allows you to set this widget's\n * align-self style.\n * @config {String}\n * @category Layout\n */\n alignSelf: null,\n /**\n * Configure as `true` to have the component display a translucent ripple when its\n * {@link #property-focusElement}, or {@link #property-element} is tapped *if the\n * current theme supports ripples*. Out of the box, only the Material theme supports ripples.\n *\n * This may also be a config object containing the following properties:\n *\n * - `delegate ` Optional. A CSS selector to filter which child elements trigger ripples. By default\n * the ripple is clipped to the triggering element.\n * - `color ` Optional, default = `#000`. A CSS color name or specification.\n * - `radius ` Optional, default is 100. The ending radius of the ripple.\n * Note that it will be clipped by the target element by default.\n * - `clip ` A string which describes how to clip the ripple if it is not to be clipped to the default\n * element. Either the property of the widget to use as the clipping element, or a selector to\n * allow clipping to the closest matching ancestor to the target element.\n *\n * eg:\n *```\n * columns : [{}...],\n * ripple : {\n * color : 'red',\n * clip : '.b-grid-row'\n * },\n * ...\n *```\n * @config {Boolean|Object}\n * @category Misc\n */\n ripple: null,\n /**\n * A title to display for the widget. Only in effect when inside a container that uses it (such as TabPanel)\n * @default\n * @config {String}\n * @category DOM\n */\n title: null,\n localizableProperties: ['title', 'ariaLabel', 'ariaDescription'],\n // Set this flag to require element to have a size to be considered visible\n requireSize: false,\n /**\n * An identifier by which this widget will be registered in the {@link Core.widget.Container#property-widgetMap}\n * of all ancestor containers.\n *\n * If omitted, this widget will be registered using its {@link #config-id}. In most cases `ref` is\n * preferable over `id` since `id` is required to be globally unique while `ref` is not.\n *\n * The `ref` value is also added to the elements dataset, to allow targeting it using CSS etc.\n * @prp {String}\n * @readonly\n * @category Misc\n */\n ref: null,\n /**\n * Get/set the widget hidden state.\n *\n * Note: `hidden : false` does *not* mean that this widget is definitely visible.\n * To ascertain visibility, use the {@link #property-isVisible} property.\n * @member {Boolean} hidden\n * @category Visibility\n */\n /**\n * Configure with true to make widget initially hidden.\n * @default false\n * @config {Boolean}\n * @category Layout\n */\n hidden: null,\n /**\n * Text alignment: 'left', 'center' or 'right'. Also accepts direction neutral 'start' and 'end'.\n *\n * Applied by adding a `b-text-align-xx` class to the widgets element. Blank by default, which does not add\n * any alignment class.\n *\n * To be compliant with RTL, 'left' yields same result as 'start' and 'right' as 'end'.\n *\n * @config {'left'|'center'|'right'|'start'|'end'}\n * @category Layout\n */\n textAlign: null,\n // When adding our scroll listeners to hide/realign, we ignore events\n // happening too quickly as a result of the show/align action\n ignoreScrollDuration: 500,\n /**\n * The tag name of this Widget's root element\n * @config {String}\n * @default\n * @category DOM\n */\n tag: 'div',\n /**\n * Set this config to `false` to disable batching DOM updates on animation frames for this widget. This\n * has the effect of synchronously updating the DOM when configs affecting the rendered DOM are modified.\n * Depending on the situation, this could simplify code while increasing time spent updating the DOM.\n * @config {Boolean}\n * @default true\n * @internal\n */\n recomposeAsync: null,\n /**\n * If you are rendering this widget to a shadow root inside a web component, set this config to the shadowRoot\n * @config {ShadowRoot}\n * @default\n * @category Misc\n */\n rootElement: null,\n htmlMutationObserver: {\n $config: ['lazy', 'nullify'],\n value: {\n childList: true,\n subtree: true\n }\n },\n role: {\n $config: 'lazy',\n value: 'presentation'\n },\n /**\n * A localizable string (May contain `'L{}'` tokens which resolve in the locale file) to inject as\n * the `aria-label` attribute.\n *\n * This widget is passed as the `templateData` so that functions in the locale file can\n * interrogate the widget's state.\n * @config {String}\n * @category Accessibility\n */\n ariaLabel: {\n $config: 'lazy',\n value: null\n },\n /**\n * A localizable string (May contain `'L{}'` tokens which resolve in the locale file) to inject\n * into an element which will be linked using the `aria-describedby` attribute.\n *\n * This widget is passed as the `templateData` so that functions in the locale file can\n * interrogate the widget's state.\n * @config {String}\n * @category Accessibility\n */\n ariaDescription: {\n $config: 'lazy',\n value: null\n },\n ariaElement: 'element',\n ariaHasPopup: null,\n realignTimeout: 300,\n testConfig: {\n ignoreScrollDuration: 100,\n realignTimeout: 50\n }\n };\n }\n static get prototypeProperties() {\n return {\n /**\n * true if no id was set, will use generated id instead (widget1, ...). Toggle automatically on creation\n * @member {Boolean} hasGeneratedId\n * @private\n * @category Misc\n */\n hasGeneratedId: false,\n /**\n * This readonly property is `true` for normal widgets in the {@link Core.widget.Container#config-items} of\n * a container. It is `false` for special widgets such as a {@link Core.widget.Panel#config-tbar}.\n * @member {Boolean} innerItem\n * @internal\n * @category Misc\n */\n innerItem: true\n };\n }\n static get declarable() {\n return [\n /**\n * This property declares the set of config properties that affect a Widget's rendering, i.e., the configs\n * used by the {@link #function-compose} method.\n *\n * For example:\n * ```javascript\n * class Button extends Widget {\n * static get renderConfigs() {\n * return [ 'cls', 'iconCls', 'text' ];\n * }\n * }\n * ```\n *\n * Alternatively this can be an object:\n *\n * ```javascript\n * class Button extends Widget {\n * static get renderConfigs() {\n * return {\n * cls : true,\n * iconCls : true,\n * text : true\n * };\n * }\n * }\n * ```\n * @member {Object|String[]} renderConfigs\n * @static\n * @category Configuration\n * @internal\n */\n 'renderConfigs'];\n }\n /**\n * An object providing the `record` and `column` for a widget embedded inside a {@link Grid.column.WidgetColumn}\n *\n * ```javascript\n * columns : [\n * {\n * type : 'widget',\n * widgets: [{\n * type : 'button',\n * icon : 'b-fa b-fa-trash',\n * onAction : ({ source : btn }) => btn.cellInfo.record.remove()\n * }]\n * }\n * ]\n * ```\n * @readonly\n * @member {Object} cellInfo\n * @property {Core.data.Model} cellInfo.record\n * @property {Grid.column.Column} cellInfo.column\n * @category Misc\n */\n static get delayable() {\n return {\n recompose: 'raf',\n doHideOrRealign: 'raf'\n };\n }\n static get factoryable() {\n return {\n defaultType: 'widget'\n };\n }\n static get identifiable() {\n return {};\n }\n /**\n * Returns an array containing all existing Widgets. The returned array is generated by this call and is not an\n * internal structure.\n * @property {Core.widget.Widget[]}\n * @readonly\n * @internal\n */\n static get all() {\n return super.all;\n }\n /**\n * Get/set the {@link #config-recomposeAsync} config for all widgets. Setting this value will set the config for\n * all existing widgets and will be the default value for newly created widgets. Set this value to `null` to disable\n * the default setting for new widgets while leaving existing widgets unaffected.\n * @property {Boolean}\n * @internal\n */\n static get recomposeAsync() {\n return Widget._recomposeAsync;\n }\n static set recomposeAsync(value) {\n Widget._recomposeAsync = value;\n if (value != null) {\n const {\n all\n } = Widget;\n for (let i = 0; i < all.length; ++i) {\n if (all[i].isComposable) {\n all[i].recomposeAsync = value;\n }\n }\n }\n }\n isType(type, deep) {\n return Widget.isType(this, type, deep);\n }\n static setupRenderConfigs(cls, meta) {\n let {\n renderConfigs\n } = cls,\n i;\n if (renderConfigs) {\n const obj =\n // Once a class declares renderConfigs, those are inherited and augmented:\n meta.getInherited('renderConfigs', /* create = */false) ||\n // Otherwise, since renderConfigs are declared on this class, we need to create them:\n Object.create(null);\n if (Array.isArray(renderConfigs)) {\n // Ex: renderConfigs: ['cls', 'text']\n for (i = 0; i < renderConfigs.length; ++i) {\n obj[renderConfigs[i]] = true;\n }\n renderConfigs = obj;\n } else {\n // Ex: renderConfigs: { cls : true, text : true }\n renderConfigs = Object.assign(obj, renderConfigs);\n }\n }\n // else a class may declare renderConfigs=null to re-enable auto detection\n meta.renderConfigs = renderConfigs;\n }\n /**\n * Call once per class for custom widgets to have them register with the `Widget` class, allowing them to be created\n * by type.\n *\n * For example:\n * ```javascript\n * class MyWidget extends Widget {\n * static get type() {\n * return 'mywidget';\n * }\n * }\n * MyWidget.initClass();\n * ```\n * @method initClass\n * @static\n * @category Lifecycle\n */\n //endregion\n //region Init & destroy\n construct(config = {}, ...args) {\n const me = this,\n {\n domSyncCallback\n } = me;\n me.configureAriaDescription = config.ariaDescription;\n me._isAnimatingCounter = 0;\n // Flag so we know when our dimensions have been constrained during alignment\n me.alignConstrained = 0;\n me.byRef = Object.create(null);\n me.callRealign = me.realign.bind(me);\n me.onTargetResize = me.onTargetResize.bind(me);\n me.onFullscreenChange = me.onFullscreenChange.bind(me);\n me.domSyncCallback = domSyncCallback.$nullFn ? null : domSyncCallback.bind(me);\n me._isUserAction = false;\n // Base class applies configs.\n super.construct(config, ...args);\n const {\n recomposeAsync\n } = Widget;\n if (recomposeAsync != null && me.recomposeAsync == null) {\n me.recomposeAsync = recomposeAsync;\n }\n me.finalizeInit();\n }\n startConfigure(config) {\n const me = this,\n // This will run the element change/update process if it was not kicked off by a derived class impl of\n // this method:\n {\n adopt,\n element\n } = me;\n if (adopt) {\n // Adopt the preexisting element as our element before configuration proceeds.\n me.adoptElement(element, adopt, config.id);\n me.updateElement(me._element, element);\n }\n super.startConfigure(config);\n }\n /**\n * Called by the Base constructor after all configs have been applied.\n * @internal\n * @category Lifecycle\n */\n finalizeInit() {\n const me = this;\n if (me.insertBefore || me.appendTo || me.insertFirst || me.adopt) {\n me.render();\n }\n }\n doDestroy() {\n const me = this,\n {\n preExistingElements,\n element,\n _refListeners\n } = me;\n if (_refListeners) {\n Object.values(_refListeners, un => un());\n me._refListeners = null;\n }\n if (element) {\n var _Widget$Tooltip, _me$dragEventDetacher, _me$dragOverEventDeta;\n const sharedTooltip = !me._tooltip && me._rootElement && ((_Widget$Tooltip = Widget.Tooltip) === null || _Widget$Tooltip === void 0 ? void 0 : _Widget$Tooltip.getSharedTooltip(me._rootElement, true));\n // If we are current user of the shared tooltip, hide it\n if ((sharedTooltip === null || sharedTooltip === void 0 ? void 0 : sharedTooltip.owner) === me) {\n sharedTooltip.owner = null;\n sharedTooltip.hide();\n }\n me.onExitFullscreen();\n // If we get destroyed very quickly after a call to show,\n // we must kill the timers which add the realign listeners.\n me.clearTimeout(me.scrollListenerTimeout);\n me.clearTimeout(me.resizeListenerTimeout);\n // Remove listeners which are only added during the visible phase.\n // In its own method because it's called on hide and destroy.\n me.removeTransientListeners();\n if (me.floating || me.positioned) {\n // Hide without animation, destruction is sync\n me.hide(false);\n } else {\n me.revertFocus();\n }\n ResizeMonitor.removeResizeListener(element.parentElement, me.onParentElementResize);\n ResizeMonitor.removeResizeListener(element, me.onElementResize);\n // Remove elements *which we own* on destroy,\n if (me.adopt) {\n for (let nodes = Array.from(element.childNodes), i = 0, {\n length\n } = nodes; i < length; i++) {\n const el = nodes[i];\n // If it's not preexisting, and not the floatRoot, remove it\n if (!preExistingElements.includes(el) && el !== me.floatRoot) {\n el.remove();\n }\n }\n element.className = me.adoptedElementClassName;\n element.style.cssText = me.adoptedElementCssText;\n } else {\n element.remove();\n }\n (_me$dragEventDetacher = me.dragEventDetacher) === null || _me$dragEventDetacher === void 0 ? void 0 : _me$dragEventDetacher.call(me);\n (_me$dragOverEventDeta = me.dragOverEventDetacher) === null || _me$dragOverEventDeta === void 0 ? void 0 : _me$dragOverEventDeta.call(me);\n me.dragGhost.remove();\n }\n super.doDestroy();\n }\n //endregion\n //region Values\n get assignValueDefaults() {\n return assignValueDefaults;\n }\n get valueName() {\n return this.name || this.ref || this.id;\n }\n getValueName(onlyName) {\n onlyName = onlyName && typeof onlyName === 'object' ? onlyName.onlyName : onlyName;\n return onlyName ? this.name : this.valueName;\n }\n assignFieldValue(values, key, value) {\n const me = this,\n valueBindProperty = me.defaultBindProperty;\n if (valueBindProperty in me) {\n me[valueBindProperty] = value;\n }\n }\n assignValue(values, options) {\n options = options || assignValueDefaults;\n const me = this,\n hec = me[highlightExternalChange],\n key = me.getValueName(options);\n if (key && (!values || key in values)) {\n if (options.highlight === false) {\n // Don't want a field highlight on mass change\n me[highlightExternalChange] = false;\n }\n // Setting to null when value not matched clears field\n me.assignFieldValue(values, key, values ? values[key] : null);\n me[highlightExternalChange] = hec;\n }\n }\n gatherValue(values) {\n const me = this,\n valueBindProperty = me.defaultBindProperty;\n // TODO find better way to only gather values from **input** fields\n if (me.constructor !== Widget && valueBindProperty in me) {\n values[me.name || me.ref || me.id] = me[valueBindProperty];\n }\n }\n gatherValues(values) {\n this.eachWidget(widget => widget.gatherValue(values), false);\n }\n //endregion\n get forwardTwinEvents() {\n const value = this._forwardTwinEvents;\n return value && ObjectHelper.getTruthyKeys(value);\n }\n /**\n * This widget's twin that is placed in an overflow menu when this widget has been hidden by its owner, typically\n * a {@link Core.widget.Toolbar} due to {@link Core.widget.Toolbar#config-overflow}. The `overflowTwin` is created\n * lazily by {@link #function-ensureOverflowTwin}.\n *\n * @member {Core.widget.Widget} overflowTwin\n * @readonly\n * @internal\n */\n /**\n * This method returns the config object to use for creating this widget's {@link #property-overflowTwin}.\n *\n * @param {Function|Object} [overrides] If an object is passed, it is a set of config properties to override the\n * config object returned by {@link #function-configureOverflowTwin}. If a function is passed, it is called with\n * the config object. The function may either alter the object it is given or return a replacement.\n * @returns {Object} The `overflowTwin` config object\n * @internal\n */\n configureOverflowTwin(overrides) {\n var _me$forwardTwinEvents;\n const me = this;\n let config = ObjectHelper.clone(me.initialConfig);\n // Must not duplicate IDs\n delete config.id;\n // If the initialConfig was hidden, we must override that\n config.hidden = false;\n config.type = me.type;\n config._overflowTwinOrigin = me;\n // These properties are things that may be changed frequently from the initialConfig state.\n config.disabled = me.disabled;\n if ('value' in me) {\n config.value = me.value;\n }\n // Ensure we don't have any onFoo for a forwarded 'foo' event:\n (_me$forwardTwinEvents = me.forwardTwinEvents) === null || _me$forwardTwinEvents === void 0 ? void 0 : _me$forwardTwinEvents.forEach(ev => {\n delete config[`on${StringHelper.capitalize(ev)}`];\n });\n if (overrides) {\n config = typeof overrides === 'function' ? overrides(config) || config : ObjectHelper.assign(config, overrides);\n }\n return config;\n }\n /**\n * This method creates the {@link #property-overflowTwin} for this widget. It is called by\n * {@link #function-ensureOverflowTwin} if the `overflowTwin` does not yet exist.\n *\n * The config for the {@link #property-overflowTwin} is produced by {@link #function-configureOverflowTwin}.\n *\n * @param {Function|Object} [overrides] If an object is passed, it is a set of config properties to override the\n * config object returned by {@link #function-configureOverflowTwin}. If a function is passed, it is called with\n * the config object. The function may either alter the object it is given or return a replacement.\n * @returns {Core.widget.Widget} The `overflowTwin`\n * @internal\n */\n createOverflowTwin(overrides) {\n var _me$forwardTwinEvents2;\n const me = this,\n config = me.configureOverflowTwin(overrides),\n overflowTwin = Widget.create(config);\n (_me$forwardTwinEvents2 = me.forwardTwinEvents) === null || _me$forwardTwinEvents2 === void 0 ? void 0 : _me$forwardTwinEvents2.forEach(ev => {\n overflowTwin.on({\n [ev]: info => {\n // Only forward events if the twin is still connected to its owner\n if (me.overflowTwin === info.source) {\n info = ObjectHelper.assign({}, info);\n // The twin is not the source:\n delete info.source;\n me.trigger(info.type, info);\n }\n }\n });\n });\n return overflowTwin;\n }\n /**\n * This method returns the existing {@link #property-overflowTwin} or creates it, if it has not yet been created\n * (see {@link #function-createOverflowTwin}).\n *\n * @param {Function|Object} [overrides] If an object is passed, it is a set of config properties to override the\n * config object returned by {@link #function-configureOverflowTwin}. If a function is passed, it is called with\n * the config object. The function may either alter the object it is given or return a replacement.\n * @param {Function} [onCreate] A function to call when the `overflowTwin` is initially created.\n * @returns {Core.widget.Widget} The `overflowTwin`\n * @internal\n */\n ensureOverflowTwin(overrides, onCreate) {\n let {\n overflowTwin\n } = this;\n if (!overflowTwin) {\n this.overflowTwin = overflowTwin = this.createOverflowTwin(overrides);\n onCreate === null || onCreate === void 0 ? void 0 : onCreate(overflowTwin);\n }\n return overflowTwin;\n }\n //---------------------------------------------------------------------------------------------------------\n //region Render\n /**\n * Returns `true` if this class uses `compose()` to render itself.\n * @returns {Boolean}\n * @internal\n */\n get isComposable() {\n return !this.compose.$nullFn;\n }\n adoptElement(element, adopt, id) {\n const me = this,\n adoptElement = typeof adopt === 'string' ? document.getElementById(adopt) : adopt,\n previousHolder = Widget.fromElement(adoptElement);\n // If we are taking it over from a previous iteration, destroy the previous holder. This is not officially\n // supported, but CodeEditor relies on it working\n if (previousHolder && previousHolder.adopt && previousHolder !== me) {\n const previousHolderAdopt = typeof previousHolder.adopt === 'string' ? document.getElementById(previousHolder.adopt) : previousHolder.adopt;\n if (previousHolderAdopt === adoptElement) {\n previousHolder.destroy();\n }\n }\n // On destroy, leave these\n me.preExistingElements = Array.from(adoptElement.childNodes);\n me.adoptedElementClassName = adoptElement.className;\n me.adoptedElementCssText = adoptElement.style.cssText;\n // Adopt the host element's id if we don't have one so that we do not override\n // it and invalidate any ad-based CSS rules.\n if (adoptElement.id && !id) {\n me.id = element.id = adoptElement.id;\n }\n DomHelper.syncAttributes(element, adoptElement);\n for (let i = 0, {\n length\n } = element.childNodes; i < length; i++) {\n adoptElement.appendChild(element.childNodes[0]);\n }\n delete me._contentRange;\n // Silently update our element config (do not re-run change/update cycle):\n me._element = adoptElement;\n const domConfig = element.lastDomConfig,\n listeners = domConfig === null || domConfig === void 0 ? void 0 : domConfig.listeners;\n if (listeners && me.isComposable) {\n var _listeners$un;\n (_listeners$un = listeners.un) === null || _listeners$un === void 0 ? void 0 : _listeners$un.call(listeners);\n addElementListeners(me, adoptElement, domConfig);\n }\n // Maintain DomSync internal state from our original element:\n adoptElement.lastDomConfig = domConfig || adoptElement.lastDomConfig;\n adoptElement.$refOwnerId = me.id;\n if (!me.scaleToFitWidth) {\n me.getConfig('monitorResize');\n }\n }\n /**\n * Defines an element reference accessor on the class prototype. This accessor is used to flush any pending DOM\n * changes prior to accessing such elements.\n * @param {String} name\n * @param {String} key\n * @private\n */\n addRefAccessor(name, key) {\n const {\n prototype\n } = this.constructor;\n defineProperty$2(prototype, key, {\n writable: true,\n value: null\n });\n defineProperty$2(prototype, name, {\n get() {\n // Asking for a ref el is a good sign that we need to sync the DOM:\n this.recompose.flush();\n return this[key];\n },\n set(el) {\n this[key] = el;\n }\n });\n }\n /**\n * This method is called by `DomHelper.createElement` and `DomSync.sync` as new reference elements are created.\n * @param {String} name The name of the element, i.e., the value of its `reference` attribute.\n * @param {HTMLElement} el The element instance\n * @param {DomConfig} [domConfig] The DOM config object.\n * @internal\n */\n attachRef(name, el, domConfig) {\n const me = this,\n key = '_' + name;\n // Key elements contain owner pointer if data is supported (Not on IE SVG).\n el.dataset && (el.dataset.ownerCmp = me.id);\n if (me.isComposable) {\n if (!(key in me)) {\n me.addRefAccessor(name, key);\n }\n addElementListeners(me, el, domConfig, name);\n }\n me.byRef[name] = el;\n me[name] = el;\n }\n /**\n * This method is called by `DomSync.sync` as reference elements are removed from the DOM.\n * @param {String} name The name of the element, i.e., the value of its `reference` attribute.\n * @param {HTMLElement} el The element instance\n * @param {DomConfig} domConfig The DOM config object.\n * @internal\n */\n detachRef(name, el, domConfig) {\n const me = this,\n listeners = me._refListeners;\n if (listeners !== null && listeners !== void 0 && listeners[name]) {\n listeners[name]();\n delete listeners[name];\n }\n me[name] = null;\n delete me.byRef[name];\n }\n /**\n * This method is called following an update to the widget's rendered DOM.\n * @internal\n */\n afterRecompose() {\n // empty\n }\n /**\n * Returns a {@link Core.helper.DomHelper#function-createElement-static} config object that defines this widget's\n * DOM structure. This object should be determined using {@link Core.Base#property-configurable-static} properties\n * to ensure this method is called again if these properties are modified.\n *\n * For more information see {@link Core.widget.Widget class documentation}.\n * @returns {DomConfig}\n */\n compose() {\n return {\n class: DomClassList.normalize(this.widgetClassList, 'object')\n };\n }\n /**\n * This method iterates the class hierarchy from Widget down to the class of this instance and calls any `compose`\n * methods implemented by derived classes.\n * @returns {Object}\n * @private\n */\n doCompose() {\n const me = this,\n {\n $meta: meta\n } = me,\n classes = meta.hierarchy;\n let {\n composers\n } = meta,\n domConfig = null,\n c,\n key,\n firstTime,\n i,\n proto,\n renderConfigs;\n me.recompose.suspend();\n if (!composers) {\n firstTime = true;\n meta.composers = composers = [];\n // Widget starts the process w/the widgetClassList\n for (i = classes.indexOf(Widget); i < classes.length; ++i) {\n proto = classes[i].prototype;\n if (hasOwnProperty$2.call(proto, 'compose')) {\n composers.push(proto);\n }\n }\n // See if the class (or a super class) has declared its `renderConfigs`. If so, we use them.\n if (!(renderConfigs = meta.getInherited('renderConfigs', /* create = */false))) {\n // If not, we create a Proxy or proxy-like object that can detect getter calls to determine them. While\n // technically the getters may not all trigger on any given rendering, we ignore this due to the high\n // cost of supporting such arbitrary compose() methods. By convention, compose() must read configs\n // consistently.\n renderConfigs = Object.create(null);\n // On the first composition for this class, watch the config properties that are read to auto populate\n // the renderConfigs:\n me.configObserver = {\n get(name) {\n renderConfigs[name] = true;\n }\n };\n }\n meta.$renderConfigs = renderConfigs;\n }\n // This loop always runs at least once due to Widget base class, so ret will be assigned here:\n for (i = 0; i < composers.length; ++i) {\n c = composers[i].compose.call(me, domConfig);\n domConfig = domConfig ? DomHelper.merge(domConfig, c) : c;\n }\n if (hasOwnProperty$2.call(me, 'compose') && (c = me.compose)) {\n c = c.call(me, domConfig);\n DomHelper.merge(domConfig, c);\n }\n firstTime && delete me.configObserver;\n // When converting a children:{} into an array, we take a moment to ensure we have an accessor defined for\n // the element. This is needed if the element is initially unrendered since we need the accessor to flush a\n // pending recompose through just in time via the reference element getter.\n return DomHelper.normalizeChildren(domConfig, (childName, hoist) => {\n // Only care about refs that should be hoisted up to us\n if (hoist) {\n key = '_' + childName;\n if (!(key in me)) {\n me.addRefAccessor(childName, key);\n }\n }\n });\n }\n get element() {\n // NOTE: We can replace the getter of a config property\n if (this.isComposable && !this.isDestroying) {\n // Asking for the primary el is a good sign that we need to sync the DOM:\n this.recompose.flush();\n }\n return this._element;\n }\n /**\n * Template method called during DOM updates. See {@link Core.helper.DomSync#function-sync-static DomSync.sync()}.\n * @param {Object} info Properties describing the sync action taken.\n * @internal\n */\n domSyncCallback(info) {\n // bound in construct. Override in subclass\n }\n changeElement(element) {\n const me = this,\n compose = me.isComposable;\n if (compose) {\n element = me.doCompose();\n }\n if (typeof element === 'string') {\n element = DomHelper.createElementFromTemplate(element);\n } else if (ObjectHelper.isObject(element)) {\n element = DomHelper.createElement(element, {\n refOwner: me,\n callback: me.domSyncCallback // mimic DomSync callbacks (needed by TaskBoard)\n });\n\n me.recompose.resume();\n compose && addElementListeners(me, element, element.lastDomConfig);\n } else if (element.nodeType !== 1) {\n element = DomHelper.createElementFromTemplate(me.template(me));\n }\n element.id = me.id;\n if (me.elementAttributes) {\n DomHelper.setAttributes(element, me.elementAttributes);\n }\n return element;\n }\n updateElement(element) {\n // Give mixins a look at the element. RTL detection might kick in here\n super.updateElement(...arguments);\n const me = this,\n {\n className\n } = element,\n {\n contentElement,\n contentElementCls,\n isComposable\n } = me,\n hasChildContent = contentElement !== element,\n namedElements = !isComposable && element.querySelectorAll('[data-reference]'),\n // Start with the hierarchy classes, eg ['b-combo b-pickerfield b-textfield b-widget']\n classes = isComposable ? [] : me.widgetClassList; // a dynamic array that we can safely modify\n // The ui classes need to put on the content element even if isComposable, but widgetClassList contains the\n // ui classes, so we don't need to do that if the main element is the contentElement\n let uiClasses = (hasChildContent || !isComposable) && me.uiClasses;\n className && classes.unshift(className);\n me._hidden && classes.push('b-hidden');\n me._readOnly && classes.push('b-readonly');\n // Calling element.remove() when we have the focus can result in a DOMException (notably when a blur/focusout\n // handler reentrancy results in a remove):\n // DOMException: Failed to execute 'remove' on 'Element': The node to be removed is no longer a child\n // of this node. Perhaps it was moved in a 'blur' event handler?\n FunctionHelper.noThrow(element, 'remove' /*, () => { debugger; } /**/); // delete \"/*\" to break on exception\n if (uiClasses) {\n if (contentElementCls !== null && contentElementCls !== void 0 && contentElementCls.value) {\n uiClasses = uiClasses.slice(); // clone cached array\n uiClasses.push(contentElementCls.value);\n }\n uiClasses = uiClasses.join(' ');\n } else {\n uiClasses = contentElementCls === null || contentElementCls === void 0 ? void 0 : contentElementCls.value;\n }\n if (uiClasses) {\n if (hasChildContent) {\n contentElement.className += ' ' + uiClasses;\n } else {\n classes.push(uiClasses);\n }\n }\n // The environmental classes only need to be added to outermost Widgets.\n // If we have a parent container, that will have them.\n if (!me.parent) {\n const {\n defaultCls\n } = me,\n {\n outerCls\n } = Widget;\n classes.push(...(defaultCls ? outerCls.filter(c => !(c in defaultCls) || defaultCls[c]) : outerCls));\n }\n element.className = classes.join(' ');\n if (namedElements) {\n for (let el, i = 0; i < namedElements.length; ++i) {\n el = namedElements[i];\n me.attachRef(el.getAttribute('data-reference'), el);\n el.removeAttribute('data-reference');\n }\n }\n // Mutually exclusive with scaleToFitWidth.\n // Observe container element before the cascade down to descendants.\n // Outer elements are expected to fire resize first.\n // It's a lazy config, so this is the time to flush it through to begin monitoring.\n if (!me.adopt && !me.scaleToFitWidth) {\n me.getConfig('monitorResize');\n }\n // Pull in lazy configs now we have the element.\n me.getConfig('role');\n me.getConfig('ariaLabel');\n me.getConfig('ariaDescription');\n // Ensure our content mutation observer keeps us informed of changes by third parties\n // so that our config system can keep up to date.\n if (me._html) {\n me.getConfig('htmlMutationObserver');\n }\n }\n updateAriaDescription(ariaDescription) {\n const {\n ariaElement\n } = this,\n descElId = `${this.id}-aria-desc-el`;\n if (ariaDescription) {\n const ariaDescEl = this._ariaDescEl || (this._ariaDescEl = DomHelper.createElement({\n className: 'b-aria-desc-element',\n id: descElId,\n parent: ariaElement\n }));\n ariaDescEl.innerText = ariaDescription.match(localizeRE) ? this.L(ariaDescription, this) : ariaDescription;\n ariaElement.setAttribute('aria-describedBy', ariaDescEl.id);\n } else if (ariaElement.getAttribute('aria-describedby') === descElId) {\n ariaElement.removeAttribute('aria-describedBy');\n }\n }\n updateAriaLabel(ariaLabel) {\n DomHelper.setAttributes(this.ariaElement, {\n 'aria-label': ariaLabel !== null && ariaLabel !== void 0 && ariaLabel.match(localizeRE) ? this.L(ariaLabel, this) : ariaLabel\n });\n }\n updateAriaHasPopup(ariaHasPopup) {\n DomHelper.setAttributes(this.ariaElement, {\n 'aria-haspopup': ariaHasPopup\n });\n }\n updateRole(role) {\n if (role) {\n var _this$ariaElement;\n (_this$ariaElement = this.ariaElement) === null || _this$ariaElement === void 0 ? void 0 : _this$ariaElement.setAttribute('role', role);\n } else {\n var _this$ariaElement2;\n (_this$ariaElement2 = this.ariaElement) === null || _this$ariaElement2 === void 0 ? void 0 : _this$ariaElement2.removeAttribute('role');\n }\n }\n get ariaElement() {\n // Ensure element has been created.\n this.getConfig('element');\n const {\n _ariaElement\n } = this;\n // Note that we use ObjectHelper.getPath enabling expressions containing dots.\n // So that widget classes may use `ownedWidget.input` to reference elements inside owned widgets.\n return _ariaElement.nodeType === Node.ELEMENT_NODE ? _ariaElement : ObjectHelper.getPath(this, _ariaElement);\n }\n isCollapsified(collapsed, overlay) {\n const {\n collapsify\n } = this;\n // false => widget is unaffected when the panel is collapsed (always in main header)\n // 'hide' => widget is hidden when the panel is collapsed (but still in main header)\n let ret = !overlay;\n if (collapsify == null) {\n // widget is moved to the overlay when collapsed\n ret = overlay ? collapsed : !collapsed;\n } else if (collapsify === 'overlay') {\n // widget always appears in the overlay\n ret = overlay;\n }\n return Boolean(ret);\n }\n /**\n * Calling this {@link Core.mixin.Delayable#property-delayable-static} method marks this widget as dirty. The DOM\n * will be updated on the next animation frame:\n *\n * ```javascript\n * widget.recompose();\n *\n * console.log(widget.recompose.isPending);\n * > true\n * ```\n *\n * A pending update can be flushed by calling `flush()` (this does nothing if no update is pending):\n *\n * ```javascript\n * widget.recompose.flush();\n * ```\n *\n * This can be combined in one call to force a DOM update without first scheduling one:\n *\n * ```javascript\n * widget.recompose.now();\n * ```\n */\n async recompose() {\n const me = this,\n options = {\n targetElement: me.element,\n domConfig: me.doCompose(),\n refOwner: me,\n callback: me.domSyncCallback,\n // This limits the sync() to only removing the classes and styles added by previous renderings. This\n // allows dynamically added styles and classes to be preserved:\n strict: true\n };\n if (me.transitionRecompose) {\n me.isTransitioningDom = true;\n await DomHelper.transition(ObjectHelper.assign({\n element: me.element,\n action() {\n DomSync.sync(options);\n }\n }, me.transitionRecompose));\n if (me.isDestroyed) {\n return;\n }\n me.isTransitioningDom = false;\n me.trigger('transitionedRecompose');\n } else {\n DomSync.sync(options);\n }\n if (options.changed) {\n me.afterRecompose();\n /**\n * This event is fired after a widget's elements have been synchronized due to a direct or indirect call\n * to {@link #function-recompose}, if this results in some change to the widget's rendered DOM elements.\n *\n * @event recompose\n */\n me.trigger('recompose');\n }\n me.recompose.resume();\n }\n changeElementRef(el) {\n if (typeof el === 'string') {\n const id = el;\n if (!(el = document.getElementById(id))) {\n throw new Error(`No element found with id '${id}'`);\n }\n }\n return el;\n }\n changeAppendTo(appendTo) {\n return this.changeElementRef(appendTo);\n }\n updateAppendTo(appendTo) {\n if (!this.isConfiguring && appendTo) {\n this.render();\n }\n }\n changeInsertBefore(insertBefore) {\n return this.changeElementRef(insertBefore);\n }\n updateInsertBefore(insertBefore) {\n if (!this.isConfiguring && insertBefore) {\n this.render();\n }\n }\n changeInsertFirst(insertFirst) {\n return this.changeElementRef(insertFirst);\n }\n updateInsertFirst(insertFirst) {\n if (!this.isConfiguring && insertFirst) {\n this.render();\n }\n }\n /**\n * Interprets the {@link #config-appendTo}, {@link #config-insertBefore} and {@link #config-insertFirst}\n * configs to return an array containing `[parentElement, insertBefore]`\n * @internal\n * @param {HTMLElement|String} parentElement The parent element, or its id, to insert the widget into.\n * @returns {HTMLElement[]} The `[parentElement, insertBefore]` elements.\n */\n getRenderContext(parentElement = this.appendTo) {\n let insertBefore = this.insertBefore;\n if (this.insertFirst) {\n parentElement = this.insertFirst;\n insertBefore = parentElement.firstChild;\n }\n if (insertBefore) {\n if (!parentElement) {\n parentElement = insertBefore.parentElement;\n }\n }\n // Must use undefined as insertBefore if not configured; DOM insertBefore won't accept null\n return [parentElement, insertBefore || undefined];\n }\n render(renderTo, triggerPaint = true) {\n const me = this,\n {\n element\n } = me,\n [parentElement, insertBefore] = me.getRenderContext(renderTo);\n me.emptyCache();\n if (me.syncElement && me.currentElement) {\n DomHelper.sync(element, me.currentElement);\n } else {\n parentElement === null || parentElement === void 0 ? void 0 : parentElement.insertBefore(element, insertBefore);\n me.currentElement = element;\n }\n // The environmental classes only need to be added to a naked Widget.\n // If we are inside a Widget's element, that will have them.\n if (Widget.fromElement(element.parentElement)) {\n element.classList.remove(...Widget.outerCls);\n }\n super.render(parentElement, triggerPaint);\n me.rendered = true;\n // Now that we have our complete DOM, update our role if we have one.\n me.getConfig('role');\n if (triggerPaint) {\n me.getConfig('contentRange');\n me.triggerPaint();\n }\n me.setupFocusListeners();\n }\n /**\n * A function which, when passed an instance of this Widget, produces a valid HTML string which is compiled\n * to create the encapsulating element for this Widget, and its own internal DOM structure.\n *\n * Note that this just creates the DOM structure that *this* Widget owns. If it contains child widgets\n * (Such as for example a grid), this is not included. The template creates own structure.\n *\n * Certain elements within the generated element can be identified as special elements with a `reference=\"name\"`\n * property. These will be extracted from the element upon creation and injected as the named property into\n * the Widget. For example, a {@link Core.widget.TextField} will have an `input` property which is its\n * `` element.\n * @param {Core.widget.Widget} me The widget for which to produce the initial HTML structure.\n * @internal\n */\n template({\n tag,\n html,\n htmlCls,\n name\n }) {\n const content = html !== null && html !== void 0 && html.call ? html.call(this) : html;\n return `<${tag} class=\"${content ? htmlCls : ''}\" ${name ? `data-name=\"${name}\"` : ''}>${content || ''}`;\n }\n updateRecomposeAsync(async) {\n this.recompose.immediate = !async;\n }\n //endregion\n //---------------------------------------------------------------------------------------------------------\n onConfigChange({\n name\n }) {\n var _this$$meta$$renderCo;\n // The $renderConfigs object is either on our prototype (due to renderConfigs getter) or on our instance (due\n // to \"get composer\") unless we are not using compose(), in which case it will be null:\n if (this._element && !this.isDestroying && (_this$$meta$$renderCo = this.$meta.$renderConfigs) !== null && _this$$meta$$renderCo !== void 0 && _this$$meta$$renderCo[name]) {\n this.recompose();\n }\n }\n //region Extract config\n // These functions are not meant to be called by any code other than Base#getCurrentConfig()\n // Clean up configs\n preProcessCurrentConfigs(configs) {\n super.preProcessCurrentConfigs(configs);\n // Remove link to parent, is set when added\n delete configs.parent;\n }\n // Extract config's current value, special handling for style\n getConfigValue(name, options) {\n // Dont want the full CSSStyleDeclaration object\n if (name === 'style') {\n return this._style;\n }\n return super.getConfigValue(name, options);\n }\n // Extract current value of all initially used configs, special handling for widget type\n getCurrentConfig(options) {\n const result = super.getCurrentConfig(options);\n // Always include type, except for on outermost level\n if ((options === null || options === void 0 ? void 0 : options.depth) > 0) {\n result.type = this.type;\n }\n return result;\n }\n //endregion\n /**\n * Get widgets elements dataset or assign to it\n * @property {Object}\n * @category DOM\n */\n get dataset() {\n return this.element.dataset;\n }\n changeDataset(dataset) {\n Object.assign(this.dataset, dataset);\n }\n get dragGhost() {\n return this.constructor._dragGhost || (this.constructor._dragGhost = DomHelper.createElement({\n // Safari won't allow dragging an empty node\n html: '\\xa0',\n style: 'position:absolute;top:-10000em;left:-10000em'\n }));\n }\n updateParent(parent) {\n const {\n _element: element\n } = this;\n if (element) {\n element.classList[parent ? 'remove' : 'add'](...Widget.outerCls);\n }\n }\n get constrainTo() {\n const ret = this._constrainTo;\n return ret === undefined ? globalThis : (ret === null || ret === void 0 ? void 0 : ret.nodeType) === Node.DOCUMENT_FRAGMENT_NODE ? ret.host || ret.ownerDocument : ret;\n }\n updateCentered(value) {\n const {\n element,\n _anchorElement\n } = this;\n if (value && !this.floating && !this.positioned) {\n throw new Error('`centered` is only relevant when a Widget is `floating` or `positioned`');\n }\n if (value) {\n element.classList.add('b-centered');\n element.style.transform = element.style.left = element.style.top = '';\n _anchorElement === null || _anchorElement === void 0 ? void 0 : _anchorElement.classList.add('b-hide-display');\n element.classList.remove('b-anchored');\n } else {\n element.classList.remove('b-centered');\n }\n }\n /**\n * The child element into which content should be placed. This means where {@link #config-html} should be put,\n * or, for {@link Core.widget.Container Container}s, where child items should be rendered.\n * @property {HTMLElement}\n * @readonly\n * @category DOM\n */\n get contentElement() {\n return this.element;\n }\n get contentRange() {\n const me = this,\n {\n contentElement\n } = me,\n contentRange = me._contentRange || (me._contentRange = new Range());\n // Initialize the contentRange if it's collapsed.\n // It gets collapsed if the widget's element is removed from the DOM.\n if (contentRange.collapsed) {\n contentRange.setStart(contentElement, me.contentRangeStartOffset || 0);\n contentRange.setEnd(contentElement, me.contentRangeEndOffset || contentElement.childNodes.length);\n }\n return contentRange;\n }\n /**\n * This method fixes the element's `$refOwnerId` when this instance's `id` is changing.\n * @param {Node} el The element or DOM node to fix.\n * @param {String} id The new id being assigned.\n * @param {String} oldId The old id (previously assigned).\n * @private\n */\n fixRefOwnerId(el, id, oldId) {\n if (el.$refOwnerId === oldId) {\n el.$refOwnerId = id;\n for (let {\n childNodes\n } = el, i = childNodes.length; i-- > 0;) {\n this.fixRefOwnerId(childNodes[i], id, oldId);\n }\n }\n }\n get placement() {\n const me = this,\n {\n element\n } = me;\n let adjRect, placement, rect;\n if (element !== null && element !== void 0 && element.offsetParent && !nonFlowedPositions.test(DomHelper.getStyleValue(element, 'position'))) {\n const next = element.nextElementSibling,\n previous = element.previousElementSibling,\n last = !next && previous;\n placement = DomHelper.getStyleValue(element.parentElement, 'flex-direction');\n // If used in a flex layout, determine orientation from flex-direction\n if (placement) {\n placement = placement.startsWith('row') ? 'h' : 'v';\n } else {\n var _ref;\n adjRect = (_ref = next || previous) === null || _ref === void 0 ? void 0 : _ref.getBoundingClientRect();\n rect = adjRect && element.getBoundingClientRect();\n placement = adjRect && Math.abs(adjRect.top - rect.top) < Math.abs(adjRect.left - rect.left) ? 'h' : 'v';\n // if there is another item, check for more horz delta than vert and if so, call it a horz container\n }\n\n placement += placement === 'h' ? last ? 'r' : 'l' : last ? 'b' : 't';\n }\n return placement;\n }\n updateId(id, oldId) {\n super.updateId(id, oldId);\n if (oldId) {\n // NOTE this happens when we adopt an element w/an assigned id...\n const {\n byRef,\n element\n } = this;\n for (const ref in byRef) {\n byRef[ref].dataset && (byRef[ref].dataset.ownerCmp = id); // SVG elements have no dataset\n }\n\n element.id = id;\n this.fixRefOwnerId(element, id, oldId);\n }\n }\n /**\n * Get/set widgets elements style. The setter accepts a cssText string or a style config object, the getter always\n * returns a CSSStyleDeclaration\n * @property {CSSStyleDeclaration}\n * @accepts {String|Object|CSSStyleDeclaration}\n * @category DOM\n */\n get style() {\n const {\n element\n } = this;\n return (element === null || element === void 0 ? void 0 : element.ownerDocument.defaultView.getComputedStyle(element)) || this._style;\n }\n updateStyle(style) {\n this.element && DomHelper.applyStyle(this.element, style);\n }\n updateTitle(title) {\n if (this.titleElement) {\n this.titleElement.innerHTML = title;\n }\n }\n //region floating\n // Hook used by Tooltip to handle RTL\n beforeAlignTo(spec) {}\n /**\n * If this Widget is {@link #config-floating} or {@link #config-positioned}, and visible,\n * aligns the widget according to the passed specification. To stop aligning, call this method without arguments.\n * For details, see the {@link #function-showBy} method.\n * @param {Object} [spec] Alignment options. May be an object as processed by the {@link #function-showBy} method,\n * or an `HTMLElement` to align to using this Widget's {@link #config-align} configuration.\n * @category Float & align\n */\n alignTo(spec, yCoord, options) {\n var _anchor;\n const me = this,\n {\n lastAlignSpec,\n element\n } = me,\n {\n offsetParent,\n style,\n classList\n } = element,\n isArray = Array.isArray(spec);\n // We are being asked to align to a point\n if (isArray || typeof spec === 'number') {\n const xy = isArray ? spec : [spec, yCoord];\n spec = Object.assign({\n position: new Point(xy[0] + 1, xy[1] + 1),\n // Override any matchSize that we might have in our align config.\n // Otherwise we are going to be 1px wide/high\n matchSize: false,\n align: 't0-t0'\n }, isArray ? yCoord : options);\n }\n // Hook used by Tooltip to handle RTL\n me.beforeAlignTo(spec);\n if (lastAlignSpec) {\n // Remove intersection observation from our previous align target element.\n lastAlignSpec.monitorIntersection && me.intersectionObserver.unobserve(lastAlignSpec.target);\n // Ensure marker class of previous alignment side is removed.\n if (isFinite(lastAlignSpec.zone)) {\n element.classList.remove(alignedClass[lastAlignSpec.zone]);\n }\n }\n if (!spec) {\n me.removeTransientListeners();\n me.anchor = me.lastAlignSpec = null;\n return;\n }\n // You can \"alignTo\" an element or a Widget or a Point, and allow our align config.\n // property to specify how.\n if (spec.nodeType === Element.ELEMENT_NODE || spec instanceof Widget || spec.$$name === 'Point') {\n spec = {\n target: spec\n };\n }\n // Release size constraints so we can align from scratch each time.\n me.releaseSizeConstraints();\n const {\n scrollable,\n constrainTo\n } = me,\n positioned = me.positioned && DomHelper.getStyleValue(element, 'position') !== 'fixed',\n scale = me.scale || 1,\n passedTarget = spec.target,\n target = passedTarget && (passedTarget.isRectangle ? passedTarget : passedTarget.element || passedTarget),\n myPosition = Rectangle.from(element, positioned ? offsetParent : null, true),\n {\n width: startWidth,\n height: startHeight\n } = myPosition,\n aligningToElement = target && target.nodeType === Element.ELEMENT_NODE;\n spec = spec.realignTarget ? spec : ObjectHelper.assign({\n aligningToElement,\n constrainTo,\n align: 'b-t',\n // we can end up w/o a value for this if an object replaces a string\n axisLock: me.axisLock,\n anchor: me.anchor\n }, me.align, spec);\n // As part of fallback process when fitting within constraints, this may shrink to minima specified\n // either on the align spec or the widget itself.\n const minWidth = spec.minWidth || me.minWidth,\n minHeight = spec.minHeight || me.minHeight;\n // Minima have a different meaning in an alignRectangle.\n // It means that the rectangle is willing to shrink down\n // to that size during constraint, *not* that it can never\n // be smaller than that size.\n myPosition.isAlignRectangle = true;\n minWidth && (myPosition.minWidth = minWidth * scale);\n minHeight && (myPosition.minHeight = minHeight * scale);\n // This is used by the realign call which may be called either when a global scroll is detected\n // or the constraining element is resized.\n me.lastAlignSpec = spec;\n if (aligningToElement) {\n // Cache element, not the widget\n me.lastAlignSpec.target = target;\n }\n if (aligningToElement && hasLayout(target.offsetParent)) {\n // Don't destroy the spec which was cached above with the element in it.\n spec = Object.setPrototypeOf({}, spec);\n // If we are being called from realign, there will be a realignTarget present which is\n // a viewport-based *visible* rectangle. Otherwise translate the element into a browser\n // viewport based Rectangle. Rectangle doesn't have the knowledge that we do to make this\n // decision. Floating alignment all takes place within browser viewport space, not document\n // space.\n spec.target = me.lastAlignSpec.targetRect = spec.realignTarget || (spec.allowTargetOut ? Rectangle.from(target, positioned ? offsetParent : null, !positioned) : DomHelper.isInView(target, false, me));\n // This is the case where the target is scrolled or positioned out of view.\n if (!spec.target) {\n const result = me.hide();\n // The hide method clears this flag.\n // Only this hide invocation must complete with the\n // targetOutOfView flag as true\n // Hiding *might* destroy if autoClose is set.\n if (!me.isDestroyed) {\n me.lastAlignSpec.targetOutOfView = true;\n }\n return result;\n }\n // Force the target to have an area so that intersect works.\n spec.target.height = Math.max(spec.target.height, 1);\n spec.target.width = Math.max(spec.target.width, 1);\n // This is the element which determines our position.\n // This is used in doHideOrRealign to see if a scroll event\n // will have affected our position.\n me.lastAlignSpec.anchoredTo = target;\n }\n if (spec.anchor) {\n spec.anchorSize = me.anchorSize;\n if (!element.contains(me.anchorPathElement)) {\n element.appendChild(me.anchorElement);\n }\n }\n // If we're positioned, any constrainTo must be a Rectangle in our offsetParent's coordinate space\n if (positioned) {\n // We can't be seen outside our offsetParent, so that's the de-facto costrainTo\n // regardless of what is passed.\n if (offsetParent && DomHelper.getStyleValue(offsetParent, 'overflow') === 'hidden') {\n spec.constrainTo = Rectangle.from(offsetParent).moveTo(0, 0);\n } else if (constrainTo && !constrainTo.isRectangle) {\n const isViewport = constrainTo === document || constrainTo === globalThis;\n spec.constrainTo = Rectangle.from(spec.constrainTo, offsetParent);\n if (isViewport) {\n spec.constrainTo.translate(globalThis.pageXOffset, globalThis.pageYOffset);\n }\n }\n }\n // Flag to prevent infinite loop when setting html from a beforeAlign listener\n me.isAligning = true;\n // Allow outside world to modify the suggested position\n me.trigger('beforeAlign', spec);\n me.isAligning = false;\n // This changes the 0% - 100% orientation along horizontal edges\n spec.rtl = me.rtl;\n // Handle direction neutral edges (s & e, asserted in PopupRTL.t.js)\n if (spec.align.includes('s') || spec.align.includes('e')) {\n if (me.rtl) {\n spec.align = spec.align.replace(/s/g, 'r').replace(/e/g, 'l');\n } else {\n spec.align = spec.align.replace(/s/g, 'l').replace(/e/g, 'r');\n }\n }\n // Calculate the best position WRT target rectangle, our rectangle, a constrainTo rectangle\n // and the rectangle of an anchor pointer.\n const result = myPosition.alignTo(spec);\n // May change if constraint changes our shape, and we have to go round again\n let {\n align,\n anchor,\n x,\n y,\n width,\n height,\n overlap\n } = result;\n // Which zone, T=0, R=1, B=2, L=3 the result is in\n me.lastAlignSpec.zone = result.zone;\n // If the alignment specified that we must constrain a dimension in order to\n // fit within our constrainTo, then obey that. If we own a Scroller, then\n // inform it that we do now need to scroll that dimension.\n // These conditions are released upon each alignment call because conditions may change.\n if (height != startHeight) {\n if (!('configuredHeight' in me)) {\n me.configuredHeight = style.height;\n }\n me.height = height / scale;\n me.alignConstrained = me.alignConstrained | 1;\n if (scrollable) {\n scrollable.overflowY = true;\n }\n }\n if (width != startWidth) {\n if (!('configuredWidth' in me)) {\n me.configuredWidth = style.width;\n }\n me.width = width / scale;\n me.alignConstrained = me.alignConstrained | 2;\n if (scrollable) {\n scrollable.overflowX = scrollable.clientWidth > scrollable.scrollWidth;\n }\n }\n // If either dimension has been constrained, we may have changed shape\n // due to text wrapping/overflowing, so we have to realign at the\n // successful align setting.\n if (align && me.alignConstrained) {\n spec.align = align;\n const newResult = Rectangle.from(element, positioned ? offsetParent : null, true).alignTo(spec);\n anchor = newResult.anchor;\n x = newResult.x;\n y = newResult.y;\n width = newResult.width;\n height = newResult.height;\n }\n me.setXY(x, y);\n // Class indicates which edge of the target this is aligned to: 0, 1, 2, or 3 (TRBL)\n if (!result.overlap && isFinite(result.zone)) {\n classList.add(alignedClass[result.zone]);\n }\n // If we asked it to also calculate our anchor position, position our anchor.\n // If we're not edge-to-edge aligned with our target, we cannot anchor.\n if ((_anchor = anchor) !== null && _anchor !== void 0 && _anchor.edge) {\n var _colourSource;\n const {\n edge\n } = anchor,\n {\n anchorElement\n } = me,\n elRect = Rectangle.from(element),\n colorMatchPoint = [];\n // Make the anchor color match the color of the closest adjacent element\n if (edge === 'top' || edge === 'bottom') {\n colorMatchPoint[0] = anchor.x;\n colorMatchPoint[1] = edge === 'top' ? 1 : elRect.height - 1;\n } else {\n // No RTL handling needed here as long as `s` and `e` alignment is used\n colorMatchPoint[0] = edge === 'left' ? 1 : elRect.width - 1;\n colorMatchPoint[1] = anchor.y;\n }\n let colourSource = DomHelper.childFromPoint(element, ...colorMatchPoint);\n // Jump up past inner elements which have hover or focus because that may cause us to read\n // a transient background-color.\n if ((_colourSource = colourSource) !== null && _colourSource !== void 0 && _colourSource.matches(':hover,:focus') && element.compareDocumentPosition(colourSource) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n colourSource = colourSource.parentNode;\n }\n // 2nd check is relevant when stylesheet fails to load\n if (colourSource && colourSource !== document) {\n let fillColour = DomHelper.getStyleValue(colourSource, 'background-color');\n while (fillColour.match(isTransparent) && DomHelper.getStyleValue(colourSource, 'position') !== 'absolute') {\n colourSource = colourSource.parentNode;\n // Ensure stylesheet is loaded\n if (colourSource === document) {\n break;\n }\n fillColour = DomHelper.getStyleValue(colourSource, 'background-color');\n }\n if (fillColour.match(isTransparent)) {\n me.anchorPathElement.setAttribute('fill', me.defaultAnchorBackgroundColor);\n } else {\n me.anchorPathElement.setAttribute('fill', fillColour);\n }\n }\n anchorElement.classList.remove('b-hide-display');\n anchorElement.style.transform = '';\n anchorElement.className = `b-anchor b-anchor-${edge}`;\n // Anchor's position needs boosting if we are scaled down\n anchor.x && (anchor.x /= scale);\n anchor.y && (anchor.y /= scale);\n DomHelper.setTranslateXY(anchorElement, anchor.x, anchor.y);\n classList.add('b-anchored');\n } else if (me._anchorElement) {\n me.anchorElement.classList.add('b-hide-display');\n classList.remove('b-anchored');\n }\n // If we are to hide on scroll, we still need to know if the element we are\n // aligned to moves. If we have not been *explicitly* aligned to an element,\n // Use the element at our display position. For example, when a context menu\n // is shown on a grid header, then is the grid header is moved by a scroll\n // event, then we must hide.\n if (!aligningToElement) {\n // Our element is over the X, Y point now,\n // elementFromPoint must \"see through\" it.\n style.pointerEvents = 'none';\n const el = DomHelper.elementFromPoint(x, y);\n // If we own the element at the point, it means we are already visible\n // and have visible descendants, so we must not update the anchoredTo\n if (!me.owns(el)) {\n me.lastAlignSpec.anchoredTo = el;\n }\n style.pointerEvents = '';\n }\n // If we're aligning to an element, then listen for scrolls so that we can remain aligned.\n // Scrolls can be instigated with no mousedown, so transient floating Widgets can be put\n // out of alignment by scrolls.\n if ((me.scrollAction === 'realign' && aligningToElement || me.scrollAction === 'hide') && !me.documentScrollListener) {\n // Firefox requires a longer timeout to not autohide as the result of a scroll event firing during Menu show\n me.clearTimeout(me.scrollListenerTimeout);\n me.scrollListenerTimeout = me.setTimeout(() => {\n const targetRoot = DomHelper.isElement(target) ? DomHelper.getRootElement(target) : null;\n // Realign if the main document detects a scroll.\n // On raf to avoid scroll syncing other elements causing multiple realigns (grids body and header etc)\n me.documentScrollListener = EventHelper.addListener(document, 'scroll', 'doHideOrRealign', {\n capture: true,\n thisObj: me\n });\n // In case the align target is in a WC, also capture scrolls scoped with in its shadow root\n if (targetRoot && targetRoot !== document) {\n me.targetRootScrollListener = EventHelper.addListener(targetRoot, 'scroll', 'doHideOrRealign', {\n capture: true,\n thisObj: me\n });\n }\n }, me.scrollAction === 'hide' ? me.ignoreScrollDuration : 0);\n }\n // If alignment specified monitorResize add a resize listener to the target so we can stay aligned.\n if (aligningToElement) {\n if (spec.monitorResize && !me.targetResizeListener) {\n ResizeMonitor.addResizeListener(target, me.onTargetResize);\n me.targetResizeListener = true;\n }\n // If configured to monitor intersection, and we are not potentially obscuring\n // it ourselves, and it's not an SVG element, observe its intersection changes.\n // Bug with IntersectionObserver and SVG elements, so omit them:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1159196\n if (spec.monitorIntersection && !(overlap || target.contains(element) || target.ownerSVGElement)) {\n me.intersectionObserver.observe(target);\n }\n }\n // Don't try to listen for window resizes to try realigning on Android.\n // That just means the keyboard has been shown.\n if (!BrowserHelper.isAndroid) {\n if (!me.constrainListeners && !(constrainTo instanceof Rectangle)) {\n // Always observe for changes to window size since aligned things\n // will possibly be out of place after a window resize\n me.clearTimeout(me.resizeListenerTimeout);\n me.resizeListenerTimeout = me.setTimeout(() => {\n me.constrainListeners = true;\n ResizeMonitor.addResizeListener(constrainTo || globalThis, me.callRealign);\n }, me.ignoreScrollDuration);\n }\n }\n }\n get intersectionObserver() {\n return this._intersectionObserver || (this._intersectionObserver = new IntersectionObserver(this.onTargetIntersectionchange.bind(this), {\n root: BrowserHelper.isSafari ? this.rootElement : this.rootElement.ownerDocument\n }));\n }\n onTargetIntersectionchange(entries) {\n if (!this.isDestroyed) {\n // It may go through several states. Only interrogate the latest.\n const e = entries[entries.length - 1];\n if (!e.isIntersecting) {\n this.onAlignTargetOutOfView(e.target);\n }\n }\n }\n onTargetResize() {\n const {\n lastAlignSpec\n } = this;\n if (lastAlignSpec) {\n const {\n width: lastWidth,\n height: lastHeight\n } = lastAlignSpec.targetRect,\n {\n width,\n height\n } = lastAlignSpec.target.getBoundingClientRect();\n // If the target's outer size has changed size since alignTo measured it, realign\n if (width !== lastWidth || height !== lastHeight) {\n this.realign();\n }\n }\n }\n /**\n * This method is called when the {@link #function-alignTo} target element loses intersection with the\n * visible viewport. That means it has been scrolled out of view, or becomes zero size, or hidden or\n * is removed from the DOM.\n *\n * The base class implementation hides by default.\n * @param {HTMLElement} target The alignTo target that is no longer in view.\n * @internal\n */\n onAlignTargetOutOfView(target) {\n this.hide();\n this.lastAlignSpec && (this.lastAlignSpec.targetOutOfView = true);\n }\n /**\n * Called when an element which affects the position of this Widget's\n * {@link #function-alignTo align target} scrolls so that this can realign.\n *\n * If the target has scrolled out of view, then this Widget is hidden.\n * @internal\n */\n realign() {\n const me = this,\n {\n lastAlignSpec\n } = me;\n if (me.isVisible && (me.floating || me.positioned) && lastAlignSpec) {\n if (lastAlignSpec.aligningToElement) {\n const insideTarget = lastAlignSpec.target.contains(this.element),\n realignTarget = DomHelper.isInView(lastAlignSpec.target, false, me);\n // If the target that we are realigning to is not in view, we hide, and set the\n // flag in the lastAlignSpec to explain why\n if (!lastAlignSpec.allowTargetOut && (!hasLayout(lastAlignSpec.target) || !realignTarget)) {\n me.hide();\n // Hiding *might* destroy if autoClose is set.\n if (!me.isDestroyed) {\n me.lastAlignSpec.targetOutOfView = true;\n }\n return;\n }\n // We use a different align target when *re*aligning. It's the *visible* rectangle.\n // Unless we re inside the target, in which case the target itself is used.\n lastAlignSpec.realignTarget = insideTarget ? null : realignTarget;\n }\n DomHelper.addTemporaryClass(me.element, 'b-realigning', me.realignTimout, me);\n me.alignTo(lastAlignSpec);\n }\n }\n /**\n * Returns the specified bounding rectangle of this widget.\n * @param {'border'|'client'|'content'|'inner'|'outer'} [which='border'] By default, the rectangle returned is the\n * bounding rectangle that contains the `element` border. Pass any of these values to retrieve various rectangle:\n * - `'border'` to get the {@link Core.helper.util.Rectangle#function-from-static border rectangle} (the default).\n * - `'client'` to get the {@link Core.helper.util.Rectangle#function-client-static client rectangle}.\n * - `'content'` to get the {@link Core.helper.util.Rectangle#function-content-static content rectangle}.\n * - `'inner'` to get the {@link Core.helper.util.Rectangle#function-inner-static inner rectangle}.\n * - `'outer'` to get the {@link Core.helper.util.Rectangle#function-outer-static outer rectangle}.\n * @param {HTMLElement|Core.widget.Widget} [relativeTo] Optionally, a parent element or widget in whose space to\n * calculate the Rectangle.\n * @param {Boolean} [ignorePageScroll=false] Use browser viewport based coordinates.\n * @returns {Core.helper.util.Rectangle}\n * @internal\n */\n rectangle(which, relativeTo, ignorePageScroll) {\n return this.rectangleOf('element', which, relativeTo, ignorePageScroll);\n }\n /**\n * Returns the specified bounding rectangle of the specified child `element` of this widget.\n * @param {String} [element] The child element name.\n * @param {'border'|'client'|'content'|'inner'|'outer'} [which='border'] By default, the rectangle returned\n * is the bounding rectangle that contains the `element` border. Pass any of these values to retrieve various\n * rectangle:\n * - `'border'` to get the {@link Core.helper.util.Rectangle#function-from-static border rectangle} (the default).\n * - `'client'` to get the {@link Core.helper.util.Rectangle#function-client-static client rectangle}.\n * - `'content'` to get the {@link Core.helper.util.Rectangle#function-content-static content rectangle}.\n * - `'inner'` to get the {@link Core.helper.util.Rectangle#function-inner-static inner rectangle}.\n * - `'outer'` to get the {@link Core.helper.util.Rectangle#function-outer-static outer rectangle}.\n * @param {HTMLElement|Core.widget.Widget} [relativeTo] Optionally, a parent element or widget in whose space to\n * calculate the Rectangle. If `element` is not `'element'`, then this defaults to the widget's primary element.\n * @param {Boolean} [ignorePageScroll=false] Use browser viewport based coordinates.\n * @returns {Core.helper.util.Rectangle}\n * @internal\n */\n rectangleOf(element, which, relativeTo, ignorePageScroll) {\n var _relativeTo;\n if (typeof which !== 'string') {\n ignorePageScroll = relativeTo;\n relativeTo = which;\n which = '';\n } else if (which === 'border') {\n which = '';\n }\n // which is locked in\n if (typeof relativeTo === 'boolean') {\n ignorePageScroll = relativeTo;\n relativeTo = undefined;\n }\n if (element !== 'element' && relativeTo === undefined) {\n relativeTo = this.element;\n }\n relativeTo = (_relativeTo = relativeTo) !== null && _relativeTo !== void 0 && _relativeTo.isWidget ? relativeTo.element : relativeTo;\n return Rectangle[which || 'from'](this[element], relativeTo, ignorePageScroll);\n }\n releaseSizeConstraints() {\n const me = this,\n scroller = me.scrollable;\n // Release constraints so we can align from scratch each time.\n if (me.alignConstrained & 1) {\n me.height = me.configuredHeight;\n if (scroller) {\n scroller.overflowY = scroller.config.overflowY;\n }\n }\n if (me.alignConstrained & 2) {\n me.width = me.configuredWidth;\n if (scroller) {\n scroller.overflowX = scroller.config.overflowX;\n }\n }\n me.alignConstrained = 0;\n }\n /**\n * Only valid for {@link #config-floating} Widgets. Moves to the front of the visual stacking order.\n * @category Float & align\n */\n toFront() {\n const {\n element\n } = this,\n parent = this.floating ? this.floatRoot : this.positioned ? element === null || element === void 0 ? void 0 : element.parentNode : null;\n if (element !== null && element !== void 0 && element.nextSibling) {\n const r = this._toFrontRange || (this._toFrontRange = document.createRange());\n // Instead of moving this element (which may contain focus and therefore should not be moved),\n // Lasso all following nodes using a range and insert them before this.\n // If it contained focus, appending it triggers a focusOut event which will not be expected.\n r.setStartBefore(element.nextSibling);\n r.setEndAfter(parent.lastElementChild);\n parent.insertBefore(r.extractContents(), element);\n }\n }\n //endregion\n //region Getters/setters\n updateRef(ref) {\n this.element.dataset.ref = ref;\n }\n /**\n * The child element which scrolls if any. This means the element used by the {@link #config-scrollable}.\n * @property {HTMLElement}\n * @readonly\n * @category DOM\n */\n get overflowElement() {\n return this.contentElement;\n }\n get maxHeightElement() {\n return this.element;\n }\n changeAlign(align) {\n return typeof align === 'string' ? {\n align\n } : align;\n }\n changeScrollable(scrollable, oldScrollable) {\n if (typeof scrollable === 'boolean') {\n scrollable = {\n overflowX: scrollable,\n overflowY: scrollable\n };\n }\n if (scrollable) {\n scrollable.element = this.overflowElement;\n scrollable.widget = this;\n if (!scrollable.isScroller) {\n scrollable = oldScrollable ? oldScrollable.setConfig(scrollable) : new this.scrollerClass(scrollable);\n }\n // Keep overflow indicator classes in sync\n scrollable.syncOverflowState();\n }\n // Destroy the old scroller if the scroller is being nulled.\n else {\n oldScrollable === null || oldScrollable === void 0 ? void 0 : oldScrollable.destroy();\n }\n return scrollable;\n }\n /**\n * Get/set HTML to display. When specifying HTML, this widget's element will also have the\n * {@link #config-htmlCls} added to its classList, to allow targeted styling.\n * @property {String}\n * @category DOM\n */\n get html() {\n // Maintainer, we cannot use a ternary here, we need the this.initializingElement test to shortcut\n // to the true case to return the _html property to avoid infinite loops.\n if (this.initializingElement || !this.element) {\n return this.content || this._html;\n }\n return this.contentElement.innerHTML;\n }\n updateHtml(html) {\n const me = this,\n isClearing = html == null,\n {\n element,\n contentElement,\n htmlCls\n } = me;\n if (element) {\n // So that our contentElement MutationObserver doesn't react\n me.updatingHtml = true;\n const anchorEl = contentElement === element && me._anchorElement;\n // Flag class that we are an HTML carrying element\n if (htmlCls) {\n // Salesforce doesn't support passing array\n htmlCls.values.forEach(value => element.classList[isClearing ? 'remove' : 'add'](value));\n }\n // Setting innerHTML destroys the anchorElement in some browsers\n // so we must temporarily remove it to preserve it.\n // Only if the contentElement is the main element.\n if (anchorEl) {\n me.element.removeChild(anchorEl);\n }\n if (html && typeof html === 'object') {\n DomSync.sync({\n domConfig: html,\n targetElement: me.contentElement,\n onlyChildren: true\n });\n } else {\n me.contentElement.innerHTML = isClearing ? '' : html;\n }\n // Ensure our content mutation observer keeps us informed of changes by third parties\n // so that our config system can keep up to date.\n me.getConfig('htmlMutationObserver');\n if (anchorEl) {\n element.appendChild(anchorEl);\n }\n if (me.isComposable) {\n me.recompose();\n } else if (me.floating || me.positioned) {\n // Must realign because content change might change dimensions\n if (!me.isAligning) {\n me.realign();\n }\n }\n }\n }\n changeHtmlMutationObserver(htmlMutationObserver, was) {\n const me = this,\n {\n contentElement\n } = me;\n // Clean up old one\n was === null || was === void 0 ? void 0 : was.disconnect(contentElement);\n // Create MutationObserver\n if (htmlMutationObserver) {\n const result = new MutationObserver(() => {\n if (me.updatingHtml) {\n me.updatingHtml = false;\n } else {\n me._html = contentElement.innerHTML;\n }\n });\n result.observe(contentElement, htmlMutationObserver);\n return result;\n }\n }\n updateContent(html) {\n const me = this,\n isClearing = html == null,\n {\n element,\n htmlCls\n } = me;\n if (element) {\n const {\n contentRange\n } = me;\n // Flag class that we are an HTML carrying element\n if (htmlCls) {\n // Salesforce doesn't support passing array\n htmlCls.values.forEach(value => element.classList[isClearing ? 'remove' : 'add'](value));\n }\n // Only works if we are in the DOM\n if (isInDocument(element)) {\n // Replace the contents of our content range with the new content\n contentRange.deleteContents();\n if (!isClearing) {\n contentRange.insertNode(DomHelper.createElementFromTemplate(html, {\n fragment: true\n }));\n }\n } else {\n me.contentElement.innerHTML = html;\n }\n // Cache in case it gets collapsed\n me.contentRangeStartOffset = contentRange.startOffset;\n me.contentRangeEndOffset = contentRange.endOffset;\n // Must realign because content change might change dimensions\n if ((me.floating || me.positioned) && !me.isAligning) {\n me.realign();\n }\n }\n }\n onThemeChange() {\n var _this$anchorElement;\n // If we have a *visible* anchor element, then a theme change may\n // invalidate it's size or this.defaultAnchorBackgroundColor, so a\n // run through realign (and get anchorSize) will fix that.\n if ((_this$anchorElement = this.anchorElement) !== null && _this$anchorElement !== void 0 && _this$anchorElement.offsetParent) {\n this._anchorSize = null;\n this.realign();\n }\n }\n /**\n * Returns an `[x, y]` array containing the width and height of the anchor arrow used when\n * aligning this Widget to another Widget or element.\n *\n * The height is the height of the arrow when pointing upwards, the width is the width\n * of the baseline.\n * @property {Number[]}\n * @category Float & align\n */\n get anchorSize() {\n const me = this;\n let result = this._anchorSize;\n if (!result) {\n // TODO: Move the anchoring scheme to the Panel class when we have it.\n // These values will be in the SASS and styled into the SVG through the Panel's theme.\n const borderWidth = parseFloat(DomHelper.getStyleValue(me.element, 'border-top-width')),\n borderColour = DomHelper.getStyleValue(me.element, 'border-top-color'),\n anchorElement = me.anchorElement,\n {\n className\n } = anchorElement,\n svgEl = anchorElement.firstElementChild,\n pathElement = me.anchorPathElement = svgEl.lastElementChild,\n hidden = me._hidden;\n // In case we are measuring after the size has been invalidated (such as via theme change)\n // and the widget is shown and aligned left or right. We must measure it in top alignment\n // so as to get the dimensions the right way round.\n anchorElement.className = 'b-anchor b-anchor-top';\n let backgroundColour = DomHelper.getStyleValue(me.contentElement, 'background-color');\n // If the background colour comes through from the outer element, use that.\n if (backgroundColour.match(isTransparent)) {\n backgroundColour = DomHelper.getStyleValue(me.element, 'background-color');\n }\n me.defaultAnchorBackgroundColor = backgroundColour;\n result = anchorElement.getBoundingClientRect();\n const [width, height] = result = me._anchorSize = [result.width, result.height];\n // Restore orientation\n anchorElement.className = className;\n svgEl.setAttribute('height', height + borderWidth);\n svgEl.setAttribute('width', width);\n pathElement.setAttribute('d', `M0,${height}L${width / 2},0.5L${width},${height}`);\n if (borderWidth) {\n pathElement.setAttribute('stroke-width', borderWidth);\n pathElement.setAttribute('stroke', borderColour);\n }\n result[1] -= borderWidth;\n if (hidden) {\n me.element.classList.add('b-hidden');\n }\n if (!me.themeChangeListener) {\n me.themeChangeListener = GlobalEvents$1.on({\n theme: 'onThemeChange',\n thisObj: me\n });\n }\n // Reset to default in case it has been positioned by a coloured header\n me.anchorPathElement.setAttribute('fill', me.defaultAnchorBackgroundColor);\n }\n return result;\n }\n get anchorElement() {\n const me = this;\n if (!me._anchorElement) {\n const useFilter = me.floating,\n filterId = `${me.id}-shadow-filter`;\n me._anchorElement = DomHelper.createElement({\n parent: me.element,\n className: 'b-anchor b-anchor-top',\n children: [{\n tag: 'svg',\n ns: 'http://www.w3.org/2000/svg',\n version: '1.1',\n class: 'b-pointer-el',\n children: [useFilter ? {\n tag: 'defs',\n children: [{\n tag: 'filter',\n id: filterId,\n children: [{\n tag: 'feDropShadow',\n dx: 0,\n dy: -1,\n stdDeviation: 1,\n 'flood-opacity': 0.2\n }]\n }]\n } : null, {\n tag: 'path',\n [useFilter ? 'filter' : '']: `url(#${filterId})`\n }]\n }]\n });\n }\n return me._anchorElement;\n }\n updateAnchor(anchor) {\n if (this._anchorElement) {\n this._anchorElement.classList[anchor ? 'remove' : 'add']('b-hide-display');\n }\n }\n updateDraggable(draggable) {\n const me = this,\n {\n element\n } = me;\n if (draggable) {\n me.dragEventDetacher = EventHelper.addListener({\n element,\n dragstart: 'onWidgetDragStart',\n dragend: 'onWidgetDragEnd',\n thisObj: me\n });\n me.dragDetacher = EventHelper.on({\n element,\n mousedown(event) {\n const {\n target\n } = event,\n closestWidget = Widget.fromElement(target);\n // Fix for FF draggable bug https://bugzilla.mozilla.org/show_bug.cgi?id=1189486\n if (!event.target.closest('.b-field-inner') &&\n // Only allow drag to start when the action originates from the widget element itself,\n // or one of its toolbars. https://github.com/bryntum/support/issues/3214\n closestWidget === this || this.strips && Object.values(this.strips).includes(closestWidget)) {\n element.setAttribute('draggable', 'true');\n }\n },\n // Only needed for automatic listener removal on destruction of the thisObj\n thisObj: me\n });\n } else {\n var _me$dragEventDetacher2, _me$dragOverEventDeta2, _me$dragDetacher;\n (_me$dragEventDetacher2 = me.dragEventDetacher) === null || _me$dragEventDetacher2 === void 0 ? void 0 : _me$dragEventDetacher2.call(me);\n (_me$dragOverEventDeta2 = me.dragOverEventDetacher) === null || _me$dragOverEventDeta2 === void 0 ? void 0 : _me$dragOverEventDeta2.call(me);\n (_me$dragDetacher = me.dragDetacher) === null || _me$dragDetacher === void 0 ? void 0 : _me$dragDetacher.call(me);\n }\n }\n onWidgetDragStart(e) {\n var _ref2;\n const me = this;\n if (!me.validateDragStartEvent(e)) {\n return;\n }\n // Opt out of auto-alignment on scroll or DOM mutation.\n me.removeTransientListeners();\n const {\n element,\n align,\n constrainTo\n } = me,\n positioned = me.positioned && DomHelper.getStyleValue(element, 'position') !== 'fixed',\n parentElement = positioned ? element.parentElement : me.rootElement,\n myRect = Rectangle.from(element, positioned ? parentElement : null),\n dragStartX = e.clientX,\n dragStartY = e.clientY,\n scrollingPageElement = document.scrollingElement || document.body,\n [widgetX, widgetY] = DomHelper.getOffsetXY(element, parentElement),\n constrainRect = (_ref2 = positioned ? Rectangle.content(parentElement).moveTo(0, 0) : constrainTo && (constrainTo !== null && constrainTo !== void 0 && constrainTo.isRectangle ? constrainTo : Rectangle.from(constrainTo))) === null || _ref2 === void 0 ? void 0 : _ref2.deflate(align.constrainPadding || 0),\n dragListeners = {\n element: parentElement,\n dragover: event => {\n // Centered adds positioning rules, it can't be centered during drag.\n element.classList.remove('b-centered');\n // Shift our rectangle to the desired point.\n myRect.moveTo(widgetX + event.clientX - dragStartX - (positioned ? 0 : scrollingPageElement.scrollLeft), widgetY + event.clientY - dragStartY - (positioned ? 0 : scrollingPageElement.scrollTop));\n // Constrain it if we are configured to be constrained\n if (constrainRect) {\n myRect.constrainTo(constrainRect);\n }\n // Position using direct DOM access, do not go though the setXY method which clears\n // any centered config. User dragging only moves this show of the widget. Upon next\n // neutral show (with no extra positioning info), a centered widget will show centered again.\n DomHelper.setTranslateXY(element, myRect.x, myRect.y);\n }\n };\n // Stop viewport panning on drag on touch devices\n if (BrowserHelper.isTouchDevice) {\n dragListeners.touchmove = e => e.preventDefault();\n }\n me.floatRoot.appendChild(me.dragGhost);\n me.setDragImage(e);\n // Prevent special cursor from being shown\n e.dataTransfer.effectAllowed = 'none';\n me.dragOverEventDetacher = EventHelper.addListener(dragListeners);\n // Various app events (Such as resize or visible child count change) can\n // cause a request to realign, so opt out of anchoring and alignedness\n // until we are next hidden.\n me.alignTo();\n }\n /**\n * Validates a `dragstart` event with respect to the target element. Dragging is not normally\n * initiated when the target is interactive such as an input field or its label, or a button.\n * This may be overridden to provide custom drag start validation.\n * @param {DragEvent} e The `dragstart` event to validate.\n * @returns {Boolean} Return `true` if the drag is to be allowed.\n * @internal\n */\n validateDragStartEvent(e) {\n const me = this,\n {\n element\n } = me,\n actualTarget = DomHelper.elementFromPoint(e.clientX, e.clientY),\n // Can't be resolved from the event :/\n {\n handleSelector\n } = me.draggable;\n if (handleSelector) {\n var _negationPseudo$exec;\n const blacklist = (_negationPseudo$exec = negationPseudo.exec(handleSelector)) === null || _negationPseudo$exec === void 0 ? void 0 : _negationPseudo$exec[1]; // Extract the content of :not()\n // If the selector was :not(), then if we are a descendant of a matching element, it's a no-drag\n if (blacklist) {\n if (actualTarget.closest(`#${element.id} ${blacklist}`)) {\n e.preventDefault();\n return false;\n }\n }\n // If we are not the descendant of a matching element, it's a no-drag\n else if (!actualTarget.closest(`#${element.id} ${handleSelector}`)) {\n e.preventDefault();\n return false;\n }\n }\n return true;\n }\n setDragImage(e) {\n if (e.dataTransfer.setDragImage) {\n // Firefox requires this to be called before setDragImage\n e.dataTransfer.setData('application/node type', '');\n // Override the default HTML5 drag ghost and just drag an empty node.\n // The large offset will cause it to be displayed offscreen on platforms\n // which will not hide drag images (iOS)\n e.dataTransfer.setDragImage(this.dragGhost, -9999, -9999);\n }\n }\n onWidgetDragEnd() {\n this.dragGhost.remove();\n this.dragOverEventDetacher();\n this.element.removeAttribute('draggable');\n }\n changeFloating(value) {\n // Coerce all to boolean so that we have a true/false value\n return Boolean(value);\n }\n changePositioned(value) {\n // Coerce all to boolean so that we have a true/false value\n return Boolean(value);\n }\n updatePositioned(positioned) {\n this.element.classList[positioned ? 'add' : 'remove']('b-positioned');\n }\n getXY() {\n return [DomHelper.getPageX(this.element), DomHelper.getPageY(this.element)];\n }\n /**\n * Moves this Widget to the x,y position. Both arguments can be omitted to just set one value.\n *\n * *For {@link #config-floating} Widgets, this is a position in the browser viewport.*\n * *For {@link #config-positioned} Widgets, this is a position in the element it was rendered into.*\n *\n * @param {Number} [x]\n * @param {Number} [y]\n * @category Float & align\n */\n setXY(x, y) {\n const me = this,\n {\n element\n } = me;\n if (me.floating || me.positioned) {\n if (x != null) {\n me._x = x;\n me.centered = false;\n }\n if (y != null) {\n me._y = y;\n me.centered = false;\n }\n // If we're position:fixed then it is positioned relative to either the viewport\n // or an ancestor which has a transform, perspective of filter property.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/position.\n // So translate it *relative* to its actual position/\n if (DomHelper.getStyleValue(element, 'position') === 'fixed') {\n const r = element.getBoundingClientRect(),\n [cx, cy] = DomHelper.getTranslateXY(element),\n xDelta = x - r.x,\n yDelta = y - r.y;\n DomHelper.setTranslateXY(element, cx + xDelta, cy + yDelta);\n } else {\n DomHelper.setTranslateXY(element, me._x || 0, me._y || 0);\n }\n }\n }\n /**\n * Moves this Widget to the desired x position.\n *\n * Only valid if this Widget is {@link #config-floating} and not aligned or anchored to an element.\n * @property {Number}\n * @category Float & align\n */\n get x() {\n return this.getXY()[0];\n }\n changeX(x) {\n this.setXY(x);\n }\n /**\n * Moves this Widget to the desired y position.\n *\n * Only valid if this Widget is {@link #config-floating} and not aligned or anchored to an element.\n * @property {Number}\n * @category Float & align\n */\n get y() {\n return this.getXY()[1];\n }\n changeY(y) {\n this.setXY(null, y);\n }\n /**\n * Get elements offsetWidth or sets its style.width, or specified width if element not created yet.\n * @property {Number}\n * @accepts {Number|String}\n * @category Layout\n */\n get width() {\n const me = this,\n element = me.element;\n if (me.monitorResize) {\n // If the width is invalid, read it now.\n if (me._width == null) {\n me._width = element.offsetWidth;\n }\n // Usually this will be set in onInternalResize\n return me._width;\n }\n // No monitoring, we have to measure;\n return element.offsetWidth;\n }\n changeWidth(width) {\n const me = this;\n DomHelper.setLength(me.element, 'width', width);\n me._lastWidth = width;\n // Invalidate the width, so it will be read from the DOM if a read is requested before the resize event\n me._width = null;\n // Setting width explicitly should reset flex, since it's not flexed anymore\n me._flex = null;\n me.element.style.flex = '';\n }\n /**\n * Get/set elements maxWidth. Getter returns max-width from elements style, which is always a string. Setter accepts\n * either a String or a Number (which will have 'px' appended). Note that like {@link #config-width},\n * _reading_ the value will return the numeric value in pixels.\n * @property {String}\n * @accepts {String|Number}\n * @category Layout\n */\n get maxWidth() {\n return DomHelper.measureSize(this.element.style.maxWidth, this.element);\n }\n updateMaxWidth(maxWidth) {\n DomHelper.setLength(this.element, 'maxWidth', maxWidth);\n }\n /**\n * Get/set elements minWidth. Getter returns min-width from elements style, which is always a string. Setter accepts\n * either a String or a Number (which will have 'px' appended). Note that like {@link #config-width},\n * _reading_ the value will return the numeric value in pixels.\n * @property {String}\n * @accepts {String|Number}\n * @category Layout\n */\n get minWidth() {\n return DomHelper.measureSize(this.element.style.minWidth, this.element);\n }\n updateMinWidth(minWidth) {\n DomHelper.setLength(this.element, 'minWidth', minWidth);\n }\n updateFlex(flex) {\n // Width must be processed first, because its changer clears flex because flex wins over width;\n // The assumption that the containing element's flex-direction is 'row'\n // seems dodgy.\n this.getConfig('width');\n // Default grow to the same as flex and basis to 0.\n if (typeof flex === 'number' || !isNaN(flex)) {\n flex = `${flex} ${flex}`;\n }\n this.element.style.flex = flex;\n this.element.style.width = '';\n }\n updateAlignSelf(alignSelf) {\n this.element.style.alignSelf = alignSelf;\n }\n updateMargin(margin) {\n // Convert eg 1 to \"1px 1px 1px 1px\" or \"0 8px\" to \"0px 8px 0px 8px\"\n this.element.style.margin = this.parseTRBL(margin).join(' ');\n }\n updateTextAlign(align, oldAlign) {\n oldAlign && this.element.classList.remove(`b-text-align-${oldAlign}`);\n this.element.classList.add(`b-text-align-${align}`);\n }\n updatePlaceholder(placeholder) {\n if (this.input) {\n if (placeholder == null) {\n this.input.removeAttribute('placeholder');\n } else {\n this.input.placeholder = placeholder;\n }\n }\n }\n /**\n * Get element's offsetHeight or sets its style.height, or specified height if element no created yet.\n * @property {Number}\n * @accepts {Number|String}\n * @category Layout\n */\n get height() {\n const me = this,\n element = me.element;\n if (me.monitorResize) {\n // If the height is invalid, read it now.\n if (me._height == null) {\n me._height = element.offsetHeight;\n }\n // Usually this will be set in onInternalResize\n return me._height;\n }\n // No monitoring, we have to measure;\n return element.offsetHeight;\n }\n changeHeight(height) {\n DomHelper.setLength(this.element, 'height', height);\n this._lastHeight = height;\n // Invalidate the height, so it will be read from the DOM if a read is requested before the resize event\n this._height = null;\n }\n /**\n * Get/set element's maxHeight. Getter returns max-height from elements style, which is always a string. Setter\n * accepts either a String or a Number (which will have 'px' appended). Note that like {@link #config-height},\n * _reading_ the value will return the numeric value in pixels.\n * @property {String}\n * @accepts {String|Number}\n * @category Layout\n */\n get maxHeight() {\n return DomHelper.measureSize(this.maxHeightElement.style.maxHeight, this.element);\n }\n updateMaxHeight(maxHeight) {\n DomHelper.setLength(this.maxHeightElement, 'maxHeight', maxHeight);\n }\n /**\n * Get/set element's minHeight. Getter returns min-height from elements style, which is always a string. Setter\n * accepts either a String or a Number (which will have 'px' appended). Note that like {@link #config-height},\n * _reading_ the value will return the numeric value in pixels.\n * @property {String}\n * @accepts {String|Number}\n * @category Layout\n */\n get minHeight() {\n return DomHelper.measureSize(this.element.style.minHeight, this.element);\n }\n updateMinHeight(minHeight) {\n DomHelper.setLength(this.element, 'minHeight', minHeight);\n }\n updateDisabled(disabled = false) {\n const {\n element,\n focusElement,\n ariaElement\n } = this;\n this.trigger('beforeUpdateDisabled', {\n disabled\n });\n disabled && this.revertFocus();\n if (element) {\n element.classList[disabled ? 'add' : 'remove']('b-disabled');\n if (focusElement) {\n focusElement.disabled = disabled;\n }\n if (ariaElement) {\n ariaElement.setAttribute('aria-disabled', disabled);\n }\n }\n this.onDisabled(disabled);\n }\n /**\n * Called when disabled state is changed.\n * Override in subclass that needs special handling when being disabled.\n * @param {Boolean} disabled current state\n * @private\n */\n onDisabled(disabled) {}\n /**\n * Disable the widget\n */\n disable() {\n this.disabled = true;\n }\n /**\n * Enable the widget\n */\n enable() {\n this.disabled = false;\n }\n /**\n * Requests fullscreen display for this widget\n * @returns {Promise} A Promise which is resolved with a value of undefined when the transition to full screen is complete.\n */\n requestFullscreen() {\n const me = this,\n // If we are floating, target the float root as the fullscreen element\n result = Fullscreen.request(me.floating ? me.floatRoot : me.element);\n Fullscreen.onFullscreenChange(me.onFullscreenChange);\n if (!me.floating) {\n me.floatRoot._oldParent = me.floatRoot.parentElement;\n me.element.appendChild(me.floatRoot);\n }\n me.element.classList.add('b-fullscreen');\n return result;\n }\n /**\n * Exits fullscreen mode\n * @returns {Promise} A Promise which is resolved once the user agent has finished exiting full-screen mode\n */\n exitFullscreen() {\n return Fullscreen.exit();\n }\n onFullscreenChange() {\n if (!Fullscreen.isFullscreen) {\n this.onExitFullscreen();\n }\n }\n onExitFullscreen() {\n var _me$_rootElement;\n const me = this,\n floatRoot = (_me$_rootElement = me._rootElement) === null || _me$_rootElement === void 0 ? void 0 : _me$_rootElement.floatRoot;\n Fullscreen.unFullscreenChange(me.onFullscreenChange);\n me.element.classList.remove('b-fullscreen');\n // When exiting fullscreen mode or when this widget is destroyed, move floatRoot back to its old parent\n if (me.element.contains(floatRoot) && floatRoot !== null && floatRoot !== void 0 && floatRoot._oldParent) {\n floatRoot._oldParent.appendChild(floatRoot);\n floatRoot._oldParent = null;\n }\n }\n /**\n * Get/set a tooltip on the widget. Accepts a string or tooltip config (specify true (or 'true') to use placeholder\n * as tooltip). When using a string it will configure the tooltip with `textContent: true` which enforces a default\n * max width.\n *\n * By default, this uses a singleton Tooltip instance which may be accessed from the\n * `{@link Core.widget.Widget Widget}` class under the name `Widget.tooltip`.\n * This is configured according to the config object on pointer over.\n *\n * To request a separate instance be created just for this widget, add `newInstance : true`\n * to the configuration.\n *\n * @property {String|Object}\n * @category Misc\n */\n get tooltip() {\n if (this._tooltip) {\n return this._tooltip;\n } else {\n var _Widget$Tooltip2;\n const tooltip = (_Widget$Tooltip2 = Widget.Tooltip) === null || _Widget$Tooltip2 === void 0 ? void 0 : _Widget$Tooltip2.getSharedTooltip(this.rootElement);\n // If the shared tooltip is currently in use by us, return it.\n // If it's not in use by us, we don't have a tooltip.\n if (tooltip && tooltip.activeTarget === this._element && tooltip.isVisible) {\n return tooltip;\n }\n }\n }\n //noinspection JSAnnotator\n changeTooltip(tooltip, oldTooltip) {\n const me = this,\n {\n element\n } = me;\n if (tooltip) {\n if (!(me.preventTooltipOnTouch && BrowserHelper.isTouchDevice)) {\n if (!tooltip.isTooltip && tooltip.constructor.name !== 'Object') {\n tooltip = {\n html: typeof tooltip === 'string' ? tooltip : me.placeholder,\n textContent: true\n };\n }\n // Tooltip text becomes ariaDescription unless we already have ariaDescription configured.\n // If it is localized using Ⳑ{key}, it will need to be converted to Ⳑ{Tooltip.key}\n // so that when we come to resolve it, localization looks in the right place.\n if (!me.configureAriaDescription) {\n var _tooltip$html;\n me.ariaDescription = (_tooltip$html = tooltip.html) !== null && _tooltip$html !== void 0 && _tooltip$html.match(localizeRE) ? tooltip.html.replace(localizeRE, localizeTooltip) : tooltip.html;\n }\n // We have to explicitly request a new instance to avoid spam Tooltip instances.\n // If there is an incoming oldTooltip, then we own a newInstance.\n // TODO verify .isTooltip check is needed\n if (oldTooltip !== null && oldTooltip !== void 0 && oldTooltip.isTooltip || tooltip.newInstance) {\n tooltip.type = 'tooltip';\n if (!tooltip.forElement) tooltip.forElement = element;\n if (!('showOnHover' in tooltip) && !tooltip.forSelector) tooltip.showOnHover = true;\n if (!('autoClose' in tooltip)) tooltip.autoClose = true;\n tooltip = Widget.reconfigure(oldTooltip, tooltip, me);\n // We need to update our ariaDescription when the tooltip changes\n me.detachListeners('tooltipValueListener');\n if (!me.configureAriaDescription) {\n tooltip.on({\n name: 'tooltipValueListener',\n innerHtmlUpdate: 'onTooltipValueChange',\n thisObj: me\n });\n }\n }\n // The default is that tooltip content and configs from tipConfig\n else {\n element.dataset.btip = true;\n me.tipConfig = tooltip;\n // We do not set our property if we are sharing the singleton\n return;\n }\n }\n } else {\n // If there is an incoming oldTooltip, then we own a newInstance.\n // Only destroy it if it's being set to null. Empty string\n // just means clear its content.\n if (oldTooltip) {\n if (tooltip == null && oldTooltip.isTooltip) {\n oldTooltip.destroy();\n } else {\n // We do not update the property if we are just clearing its content\n oldTooltip.html = null;\n return;\n }\n }\n // We are sharing, so just clear the btip\n else {\n delete element.dataset.btip;\n }\n }\n return tooltip;\n }\n /**\n * The shared {@link Core.widget.Tooltip} instance which handles\n * {@link Core.widget.Widget#config-tooltip tooltips} which are __not__ configured\n * with `newInstance : true`.\n * @member {Core.widget.Tooltip} tooltip\n * @readonly\n * @static\n */\n // This property is defined in the Tooltip module but must be documented here.\n // If our tooltip is dynamic, then we must update our aria-describedBy whenever it changes.\n onTooltipValueChange({\n value\n }) {\n this.ariaDescription = value;\n }\n get tooltipText() {\n const tooltip = this._tooltip;\n if (tooltip) {\n return tooltip.isTooltip ? tooltip.contentElement.innerText : typeof tooltip === 'string' ? tooltip : tooltip.html;\n } else if (this.tipConfig) {\n return this.tipConfig.html;\n }\n }\n /**\n * Determines visibility by checking if the Widget is hidden, or any ancestor is hidden and that it has an\n * element which is visible in the DOM\n * @property {Boolean}\n * @category Visibility\n * @readonly\n */\n get isVisible() {\n const me = this,\n {\n element\n } = me;\n // Added so that we only acquire owner once. `get owner()` *may* have to search DOM\n let owner;\n // If we are hidden, or destroying, or any ancestors are hidden, we're not visible\n return Boolean(element && !me._hidden && !me.isDestroying && isInDocument(element) && (!me.requireSize || hasLayout(element)) && (!(owner = me.containingWidget) || owner.isVisible));\n }\n whenVisible(callback, thisObj = this, args, id = callback) {\n const me = this;\n if (me.isVisible) {\n me.callback(callback, thisObj, args);\n } else if (!(me.toCallWhenVisible || (me.toCallWhenVisible = new Map())).has(id)) {\n me.toCallWhenVisible.set(id, {\n callback,\n thisObj,\n args\n });\n }\n }\n /**\n * Focuses this widget if it has a focusable element.\n */\n focus() {\n if (this.isFocusable) {\n DomHelper.focusWithoutScrolling(this.focusElement);\n }\n }\n /**\n * Get this widget's primary focus holding element if this widget is itself focusable, or contains focusable widgets.\n * @property {HTMLElement}\n * @readonly\n * @category DOM\n */\n get focusElement() {\n // Override in widgets which are focusable.\n }\n get isFocusable() {\n // Not focusable if we are in a destroy sequence or are disabled or not visible.\n const focusElement = !this.isDestroying && this.isVisible && !this.disabled && this.focusElement;\n // We are only focusable if the focusEl is deeply visible, that means\n // it must have layout - an offsetParent. Body does not have offsetParent.\n return focusElement && (focusElement === document.body || focusElement.offsetParent);\n }\n /**\n * Shows this widget\n * @category Visibility\n * @returns {Promise} A promise which is resolved when the widget is shown\n */\n async show() {\n const me = this,\n {\n showAnimation,\n element,\n floating\n } = me,\n {\n style\n } = element;\n let styleProp,\n animProps,\n trigger = !me.isVisible;\n if (trigger) {\n /**\n * Triggered before a widget is shown. Return `false` to prevent the action.\n * @preventable\n * @async\n * @event beforeShow\n * @param {Core.widget.Widget} source The widget being shown.\n */\n trigger = me.trigger('beforeShow');\n if (ObjectHelper.isPromise(trigger)) {\n trigger = await trigger;\n }\n }\n if (trigger !== false && (!me.internalBeforeShow || me.internalBeforeShow() !== false)) {\n return new Promise(resolve => {\n // Cancel any current hide/show animation\n me.cancelHideShowAnimation();\n // Centered config value takes precedence over x and y configs.\n // This also ensures that widgets configured with centered: true\n // and draggable : true will show in the center on next show after\n // being dragged by the user which is the intuitive UX.\n me.updateCentered(me._centered);\n if (floating) {\n const floatRoot = me.floatRoot;\n if (!floatRoot.contains(element)) {\n // Replace this Widget's DOM into the container if it's already rendered\n if (me.rendered) {\n floatRoot.appendChild(me.element);\n } else {\n // Pass triggerPaint as false. The calls will not propagate\n // anyway since we are still hidden.\n me.render(floatRoot, false);\n }\n }\n // Because we are outside of any owner's element, we need to see if they're scaled so\n // that we match. See scaled examples with tooltips in API docs guides section.\n if (style.transform.includes('scale')) {\n me.scale = null;\n style.transform = style.transformOrigin = '';\n }\n const scaledAncestor = me.closest(isScaled);\n if (scaledAncestor) {\n const {\n scale\n } = scaledAncestor;\n // Our scale is the same while we are visible and owned by that scaled ancestor.\n // Now floating descendants will follow suit.\n me.scale = scale;\n style.transform = `scale(${scale})`;\n style.transformOrigin = `0 0`;\n }\n }\n me._hidden = false;\n element.classList.remove('b-hidden');\n // The changer vetoes the config change and routes here, so we must call this.\n me.onConfigChange({\n name: 'hidden',\n value: false,\n was: true,\n config: me.$meta.configs.hidden\n });\n if (showAnimation) {\n styleProp = Object.keys(showAnimation)[0];\n animProps = showAnimation[styleProp];\n const currentAnimation = me.currentAnimation = {\n showing: true,\n styleProp,\n resolve\n };\n me.isAnimating = true;\n // afterHideShowAnimate will always be called even if the transition aborts\n me.currentAnimation.detacher = EventHelper.onTransitionEnd({\n element,\n property: styleProp,\n duration: parseDuration(animProps.duration) + 20,\n handler: () => me.afterHideShowAnimate(currentAnimation),\n thisObj: me\n });\n // Setting transition style initial value before showing,\n // then reading the style to ensure transition will animate\n style[styleProp] = animProps.from;\n DomHelper.getStyleValue(element, styleProp);\n style.transition = `${styleProp} ${animProps.duration} ease ${animProps.delay}`;\n style[styleProp] = animProps.to;\n }\n me.afterShow(!showAnimation && resolve);\n // Note: popups can be dismissed in the process of focusin/out if an editor has invalidAction='block',\n // so we may be hidden at this point...\n // If we're not being called from showBy, do default aligning unless its centered\n if (!me.inShowBy && (floating || me.positioned) && me.forElement && !me.centered && !me.hidden) {\n me.alignTo(me.forElement);\n }\n });\n } else {\n return Promise.resolve();\n }\n }\n /**\n * Show aligned to another target element or {@link Core.widget.Widget} or {@link Core.helper.util.Rectangle}\n * @param {Object|HTMLElement|Number[]} spec Alignment specification, or the element to align to using the configured\n * {@link #config-align}.\n * @param {HTMLElement|Core.widget.Widget|Core.helper.util.Rectangle} spec.target The Widget or Element or Rectangle\n * to align to.\n * @param {Boolean} [spec.anchor] True to show a pointer arrow connecting to the target. Defaults to false.\n * @param {Boolean} [spec.overlap] True to allow this to overlap the target.\n * @param {String} spec.align The edge alignment specification string, `[trblc]n-[trblc]n`.\n *\n * Defaults to this instance's {@link #config-align} config.\n *\n * The edge alignment specification string describes two points to bring together. Each point is described\n * by an edge initial (`t` for top edge, `b` for bottom edge etc) followed by a percentage along that\n * edge.\n *\n * So the the form would be `[trblc][n]-[trblc][n].` The `n` is the percentage offset along that edge\n * which defines the alignment point. This is not valid for alignment point `c` which means the center point.\n *\n * For example `t0-b0` would align this Widget's top left corner with the bottom left corner of the `target`.\n *\n * Also supports direction independent edges horizontally, `s` for start and `e` for end (maps to `l` and `r` for\n * LTR, `r` and `l` for RTL).\n * @param {HTMLElement|Core.widget.Widget|Core.helper.util.Rectangle} [spec.constrainTo] The Widget or Element or\n * Rectangle to constrain to. If the requested alignment cannot be constrained (it will first shrink the resulting\n * Rectangle according to the `minWidth` and `minHeight` properties of this spec, or the Widget), then it will try\n * aligning at other edges (honouring the `axisLock` option), and pick the fallback alignment which results in the\n * shortest translation.\n * @param {Number|Number[]} [spec.constrainPadding] The amount of pixels to pad from the `constrainTo` target,\n * either a single value, or an array of values in CSS edge order.\n * @param {Number} [spec.minHeight] The minimum height this widget may be compressed to when constraining within the\n * `constrainTo` option.\n * @param {Number} [spec.minWidth] The minimum width this widget may be compressed to when constraining within the\n * `constrainTo` option.\n * @param {Boolean} [spec.axisLock] Specify as `true` to fall back to aligning against the opposite\n * edge if the requested alignment cannot be constrained into the `constrainTo` option. Specify as\n * `'flexible'` to allow continuation to try the other edges if a solution cannot be found on the originally\n * requested axis.\n * @param {Boolean} [spec.matchSize] When aligning edge-to-edge, match the length of the aligned-to\n * edge of the target. This is only honored when `axisLock` is enabled and alignment succeeds on the\n * requested axis.\n * If __not__ aligning edge-to-edge, `matchSize` matches both dimensions of the target.\n * Specify as `true` to have this widget's size along the aligned edge match the size of the target's edge.\n * For example, a combobox's dropdown should match the width of the combobox.\n * @param {Number|Number[]} [spec.offset] The offset to create an extra margin round the target\n * to offset the aligned widget further from the target. May be configured as -ve to move the aligned widget\n * towards the target - for example producing the effect of the anchor pointer piercing the target.\n * @param {Boolean} [spec.monitorResize] Configure as `true` to monitor the element being aligned to for\n * resizing while visible to correct alignment.\n * @category Float & align\n * @returns {Promise} A promise which is resolved when the widget is shown\n */\n async showBy() {\n const me = this;\n // Needs to have a layout to be aligned.\n me.requireSize = true;\n let result;\n if (me.isVisible) {\n DomHelper.addTemporaryClass(me.element, 'b-realigning', 300, me);\n } else {\n // Prevent show from rerouting here.\n me.inShowBy = true;\n result = me.show();\n me.inShowBy = false;\n }\n // If we turn out to be visible, we can align\n if (me.isVisible) {\n // Pass on possible [x, y, options] signature for showing at coordinates.\n me.alignTo(...arguments);\n }\n // Otherwise, we may have been hidden by application CSS outside our knowledge\n // so explicitly hide. If we are already in the hidden state, this is a no-op.\n else {\n me.hide(false);\n }\n return result || immediatePromise$4;\n }\n /**\n * Show this widget anchored to a coordinate\n * @param {Number|Number[]} x The x position (or an array with [x,y] values) to show by\n * @param {Number} [y] The y position to show by\n * @param {Object} [options] See {@link #function-showBy} for reference\n * @category Float & align\n * @deprecated Since 5.0.2. Use {@link #function-showBy} method with the same signature.\n * @returns {Promise} A promise which is resolved when the widget is shown\n */\n async showByPoint() {\n VersionHelper.deprecate('Core', '6.0.0', 'Widget.showByPoint() replaced by Widget.showBy() with the same signature');\n return this.showBy(...arguments);\n }\n afterShow(resolveFn) {\n var _me$owner, _me$owner$onChildShow;\n const me = this;\n /**\n * Triggered after a widget is shown.\n * @event show\n * @param {Core.widget.Widget} source The widget\n */\n me.trigger('show');\n // Cache our preferred anchoredness in case it's overridden by a drag.\n me._configuredAnchorState = me.anchor;\n // Keep any owning container informed about visibility state.\n // It may not be a Container. SubGrid class is still a Widget\n // which contains grid headers.\n (_me$owner = me.owner) === null || _me$owner === void 0 ? void 0 : (_me$owner$onChildShow = _me$owner.onChildShow) === null || _me$owner$onChildShow === void 0 ? void 0 : _me$owner$onChildShow.call(_me$owner, me);\n me.triggerPaint();\n resolveFn && resolveFn();\n }\n onChildHide(hidden) {\n if (hidden.floating) {\n this.ariaElement.removeAttribute('aria-owns');\n }\n }\n onChildShow(shown) {\n if (shown.floating) {\n this.ariaHasPopup = shown.role;\n this.ariaElement.setAttribute('aria-owns', shown.id);\n }\n }\n triggerPaint() {\n const me = this,\n {\n element\n } = me,\n firstPaint = !me.isPainted;\n if (me.isVisible) {\n var _me$toCallWhenVisible;\n if (firstPaint) {\n me.getConfig('scrollable');\n // Not for public use, only used in docs\n if (me.scaleToFitWidth && !me.monitorResize) {\n me.onParentElementResize = me.onParentElementResize.bind(me);\n ResizeMonitor.addResizeListener(element.parentElement, me.onParentElementResize);\n me.updateScale();\n }\n // Add a comment to state this is made by Bryntum\n if (!me.hideBryntumDomMessage && (me.isTaskBoardBase || me.isGridBase || me.isCalendar)) {\n element.insertBefore(new Comment('POWERED BY BRYNTUM (https://bryntum.com)'), element.firstChild);\n }\n }\n // Trigger paint only on immediate children.\n // Each one will call this recursively.\n // paint is triggered in a bottom up manner.\n me.eachWidget(widgetTriggerPaint, false);\n if (firstPaint) {\n me.rootElement = DomHelper.getRootElement(element);\n // Make sure the shared tooltip is initialized\n me.getConfig('tooltip');\n // Late setup of Ripple\n if (!Widget.Ripple && Widget.RippleClass) {\n Widget.Ripple = new Widget.RippleClass({\n rootElement: me.rootElement\n });\n }\n }\n /**\n * Triggered when a widget which had been in a non-visible state for any reason\n * achieves visibility.\n *\n * A non-visible state *might* mean the widget is hidden and has just been shown.\n *\n * But this event will also fire on widgets when a non-visible (unrendered, or hidden)\n * ancestor achieves visibility, for example a {@link Core.widget.Popup Popup} being shown.\n *\n * TLDR: __This event can fire multiple times__\n * @event paint\n * @param {Core.widget.Widget} source The widget being painted.\n * @param {Boolean} firstPaint `true` if this is the first paint.\n */\n me.isPainted = true;\n // Initialize any paint configs now. This comes after setting isPainted in case update logic finds itself\n // off in code that checks. This timing being equivalent to the paint event should result in no widget\n // state issues for moving logic out of a onetime paint listener into a paint config.\n firstPaint && me.triggerConfigs('paint');\n me.trigger('paint', {\n firstPaint\n });\n if ((_me$toCallWhenVisible = me.toCallWhenVisible) !== null && _me$toCallWhenVisible !== void 0 && _me$toCallWhenVisible.size) {\n for (const {\n callback,\n thisObj,\n args\n } of me.toCallWhenVisible.values()) {\n me.callback(callback, thisObj, args);\n }\n me.toCallWhenVisible.clear();\n }\n if (firstPaint) {\n // On first paint, we should announce our size immediately.\n // When the real event comes along, onElementResize will reject it because the size will be the same.\n if (me.monitorResize && !me.scaleToFitWidth) {\n ResizeMonitor.onElementResize([{\n target: element\n }]);\n }\n }\n }\n }\n cancelHideShowAnimation() {\n const me = this,\n {\n currentAnimation,\n element\n } = me;\n if (currentAnimation) {\n me.isAnimating = false;\n // If it is an animated hide that we are aborting, reverse the set of the hidden flag\n // If hide is animated, we only get genuinely hidden at animation end.\n if (element.classList.contains('b-hiding')) {\n element.classList.remove('b-hiding');\n me._hidden = false;\n }\n currentAnimation.detacher();\n currentAnimation.resolve();\n element.style.transition = element.style[currentAnimation.styleProp] = '';\n me.currentAnimation = null;\n me.trigger('hideAnimationEnd');\n }\n }\n afterHideShowAnimate(currentAnimation) {\n // We receive the currentAnimation as understood by the party starting the animation... if that is not the\n // current value of \"this.currentAnimation\" we can ignore this call.\n const me = this;\n // If menu is destroyed too soon in Edge, this method will be invoked for destroyed element. Since all of our\n // properties are cleared on destroy, this check will prevent undesired reactions:\n if (currentAnimation === me.currentAnimation) {\n // Ensure cancelHideShowAnimation doesn't think we're aborting before the end.\n me.element.classList.remove('b-hiding');\n me.cancelHideShowAnimation();\n // Element must be fully hidden after the animation effect finishes\n if (me._hidden) {\n me.afterHideAnimation();\n }\n }\n }\n /**\n * Temporarily changes the {@link #property-isVisible} to yield `false` regardless of this\n * Widget's true visibility state. This can be useful for suspending operations which rely on\n * the {@link #property-isVisible} property.\n *\n * This increments a counter which {@link #function-resumeVisibility} decrements.\n * @internal\n */\n suspendVisibility() {\n this._visibilitySuspended = (this._visibilitySuspended || 0) + 1;\n Object.defineProperty(this, 'isVisible', returnFalseProp);\n }\n /**\n * Resumes visibility. If the suspension counter is returned to zero by this, then the\n * {@link #event-paint} event is triggered, causing a cascade of `paint` events on all\n * descendants. This can be prevented by passing `false` as the only parameter.\n * @param {Boolean} [triggerPaint=true] Trigger the {@link #event-paint} event.\n * @internal\n */\n resumeVisibility(triggerPaint = true) {\n if (! --this._visibilitySuspended) {\n delete this.isVisible;\n if (triggerPaint) {\n this.triggerPaint();\n }\n }\n }\n /**\n * Hide widget\n * @param {Boolean} animate Pass `true` (default) to animate the hide action\n * @category Visibility\n * @returns {Promise} A promise which is resolved when the widget has been hidden\n */\n hide(animate = true) {\n return new Promise(resolve => {\n const me = this,\n {\n element,\n lastAlignSpec\n } = me,\n {\n style\n } = element,\n hideAnimation = animate && me.hideAnimation;\n // If we get hidden very quickly after a call to show,\n // we must kill the timers which add the realign listeners.\n me.clearTimeout(me.scrollListenerTimeout);\n me.clearTimeout(me.resizeListenerTimeout);\n /**\n * Triggered before a widget is hidden. Return `false` to prevent the action.\n * @preventable\n * @event beforeHide\n * @param {Core.widget.Widget} source The widget being hidden.\n */\n // replaced check for isVisible with _hidden, need to hide a component not yet in view in EventEditor\n if (!me._hidden && me.trigger('beforeHide') !== false) {\n me._hidden = true;\n // The flag must be cleared on a normal hide.\n // It's set if we hide due to the target being scrolled out of view.\n if (lastAlignSpec) {\n lastAlignSpec.targetOutOfView = null;\n if (lastAlignSpec.monitorIntersection) {\n me.intersectionObserver.takeRecords();\n me.intersectionObserver.unobserve(lastAlignSpec.target);\n }\n }\n // The changer vetoes the config change and routes here, so we must call this.\n me.onConfigChange({\n name: 'hidden',\n value: true,\n was: false,\n config: me.$meta.configs.hidden\n });\n if (!element) {\n resolve();\n return;\n }\n if (element.contains(DomHelper.getActiveElement(element))) {\n me.revertFocus(true);\n }\n // Focus exit causes close if autoClose: true, and if closeAction: 'hide'\n // that might destroy us, so exit now if that happens.\n if (me.isDestroyed) {\n resolve();\n return;\n }\n // Cancel any current hide/show animation\n me.cancelHideShowAnimation();\n if (hideAnimation) {\n const styleProp = Object.keys(hideAnimation)[0],\n animProps = hideAnimation[styleProp];\n // Make sure we are not already at the final value of the hide animation (i.e. calling hide() directly after show())\n if (Number(getComputedStyle(me.element)[styleProp]) !== animProps.to) {\n const currentAnimation = me.currentAnimation = {\n hiding: true,\n styleProp,\n resolve\n };\n // Element must behave as though it were not there during\n // the animated hide. This means pointer-events:none\n element.classList.add('b-hiding');\n me.isAnimating = true;\n // afterHideShowAnimate will always be called even if the transition aborts\n me.currentAnimation.detacher = EventHelper.onTransitionEnd({\n element,\n property: styleProp,\n duration: parseDuration(animProps.duration) + 20,\n handler: () => me.afterHideShowAnimate(currentAnimation),\n thisObj: me\n });\n // Setting transition style initial value before showing,\n // then reading the style to ensure transition will animate\n style[styleProp] = animProps.from;\n DomHelper.getStyleValue(element, styleProp);\n style.transition = `${styleProp} ${animProps.duration} ease ${animProps.delay}`;\n style[styleProp] = animProps.to;\n } else {\n element.classList.add('b-hidden');\n }\n } else {\n element.classList.add('b-hidden');\n }\n // only supply resolve function if not using animation\n me.afterHide(!hideAnimation && resolve, hideAnimation);\n }\n });\n }\n doHideOrRealign({\n target,\n isTrusted\n }) {\n const me = this,\n {\n lastAlignSpec,\n element\n } = me,\n anchoredTo = lastAlignSpec === null || lastAlignSpec === void 0 ? void 0 : lastAlignSpec.anchoredTo,\n lastTarget = lastAlignSpec === null || lastAlignSpec === void 0 ? void 0 : lastAlignSpec.target,\n position = lastAlignSpec === null || lastAlignSpec === void 0 ? void 0 : lastAlignSpec.position,\n activeEl = DomHelper.getActiveElement(me);\n if (\n // If it's a synthesized scroll event (such as from our ResizeMonitor polyfill), ignore it.\n !isTrusted ||\n // Realign happens on frame, might have been removed from DOM so check whether it has layout\n !hasLayout(element) ||\n // event.target might be missing with LockerService enabled. we still need to call the logic as it does not\n // depend much on the scroll target\n target && (\n // If the scroll is inside our element, ignore it.\n element.contains(target) ||\n // If we're scrolling because a focused textual input field which we contain is being shifted into view,\n // we must not reposition - we'll just move with the document content.\n\n target.nodeType === Element.DOCUMENT_NODE && element.contains(activeEl) && textInputTypes[activeEl] && globalThis.innerHeight < document.body.offsetHeight)) {\n return;\n }\n // If we were aligned to an element and the new visible rectangle is the same as the old one\n // then ignore the scroll. It had no effect on our aligment status.\n if (lastAlignSpec.aligningToElement) {\n const newTarget = DomHelper.isInView(lastTarget, false, me);\n // newTarget?.equals doesn't work if value is `false`\n if (newTarget && newTarget.equals(lastAlignSpec.targetRect)) {\n return;\n }\n }\n // Store current position if we are to hide on scroll below,\n // used to determine if realigning did actually move us and thus should hide\n const xy = me.scrollAction === 'hide' && me.getXY();\n // Perform the realignment\n me.realign();\n // Might destroy on hide in realign, so check for isDestroyed.\n if (!me.isDestroyed && me.scrollAction === 'hide') {\n const [newX, newY] = me.getXY(),\n moved = newX !== xy[0] || newY !== xy[1];\n // If the scroll caused our position to become invalid, and we either don't know what element\n // we're anchored to (or not anchored to one at all), or the element we're anchored to has been\n // affected by the scroll, we must hide.\n // target might be missing with LockerService enabled\n if ((moved || (lastTarget === null || lastTarget === void 0 ? void 0 : lastTarget.$$name) === 'Point' || position) && (!anchoredTo || target && DomHelper.isDescendant(target, anchoredTo))) {\n me.hide();\n }\n }\n }\n afterHide(resolveFn = null, hideAnimation = this.hideAnimation) {\n var _me$owner2, _me$owner2$onChildHid;\n const me = this;\n // If a drag caused us to lose our anchor, restore it upon hide.\n me._anchor = me._configuredAnchorState;\n // Remove listeners which are only added during the visible phase.\n // In its own method because it's called on hide and destroy.\n me.removeTransientListeners();\n // Postprocessing to be done after the hideAnimation finishes.\n // If there's no animation, we call it immediately.\n // We set the element to be hidden here, after any animation completes.\n // We also remove floating Widgets from the DOM when they are hidden.\n if (!hideAnimation) {\n me.afterHideAnimation();\n }\n /**\n * Triggered after a widget was hidden\n * @event hide\n * @param {Core.widget.Widget} source The widget\n */\n me.trigger('hide');\n // Keep any owning container informed about visibility state.\n // It may not be a Container. SubGrid class is still a Widget\n // which contains grid headers.\n (_me$owner2 = me.owner) === null || _me$owner2 === void 0 ? void 0 : (_me$owner2$onChildHid = _me$owner2.onChildHide) === null || _me$owner2$onChildHid === void 0 ? void 0 : _me$owner2$onChildHid.call(_me$owner2, me);\n resolveFn && resolveFn(); // cannot do resolveFn?.() since resolveFn can be false\n }\n\n removeTransientListeners() {\n const me = this;\n me.clearTimeout(me.resizeListenerTimeout);\n me.clearTimeout(me.scrollListenerTimeout);\n if (me.documentScrollListener) {\n me.documentScrollListener();\n me.documentScrollListener = false;\n }\n if (me.rootScrollListener) {\n me.rootScrollListener();\n me.rootScrollListener = false;\n }\n if (me.targetResizeListener) {\n ResizeMonitor.removeResizeListener(me.lastAlignSpec.target, me.onTargetResize);\n me.targetResizeListener = false;\n }\n if (me.constrainListeners) {\n ResizeMonitor.removeResizeListener(me.lastAlignSpec.constrainTo || globalThis, me.callRealign);\n me.constrainMutationMonitor && me.constrainMutationMonitor.disconnect();\n me.constrainListeners = false;\n }\n }\n afterHideAnimation() {\n const me = this,\n {\n element\n } = me;\n if (me.floating && me.floatRoot.contains(element)) {\n element.remove();\n } else {\n element.classList.add('b-hidden');\n }\n // Reset anchor to its default colour after hide\n if (me.defaultAnchorBackgroundColor) {\n // Reset to default in case it has been positioned by a coloured header\n me.anchorPathElement.setAttribute('fill', me.defaultAnchorBackgroundColor);\n }\n }\n changeHidden(value) {\n const me = this;\n let ret;\n if (me.isConfiguring) {\n ret = Boolean(value);\n me.element.classList[value ? 'add' : 'remove']('b-hidden');\n } else {\n // These methods are async but set _hidden when they get past the before event, so don't set ret and\n // the setter won't set _hidden automatically.\n me.trigger('beforeChangeHidden', {\n hidden: value\n });\n if (value) {\n me.hide();\n } else {\n me.show();\n }\n }\n return ret;\n }\n /**\n * Get id assigned by user (not generated id)\n * @returns {String}\n * @readonly\n * @private\n * @category Misc\n */\n get assignedId() {\n return this.hasGeneratedId ? null : this.id;\n }\n /**\n * Get the owning Widget of this Widget. If this Widget is directly contained, then the containing\n * Widget is returned. If this Widget is floating, the configured `owner` property is returned.\n * If there is a `forElement`, that element's encapsulating Widget is returned.\n * @property {Core.widget.Widget}\n * @readonly\n * @category Widget hierarchy\n */\n get owner() {\n return this.parent || this._owner || this.containingWidget;\n }\n get containingWidget() {\n let result = this.parent;\n if (!result) {\n var _this$forElement, _this$element;\n const owningEl = ((_this$forElement = this.forElement) === null || _this$forElement === void 0 ? void 0 : _this$forElement.nodeType) === Element.ELEMENT_NODE ? this.forElement : (_this$element = this.element) === null || _this$element === void 0 ? void 0 : _this$element.parentNode;\n result = (owningEl === null || owningEl === void 0 ? void 0 : owningEl.closest('.b-widget')) && Widget.fromElement(owningEl);\n }\n return result;\n }\n /**\n * Get this Widget's previous sibling in the parent {@link Core.widget.Container Container}, or, if not\n * in a Container, the previous sibling widget in the same _parentElement_.\n * @property {Core.widget.Widget}\n * @readonly\n * @category Widget hierarchy\n */\n get previousSibling() {\n return this.getSibling(-1);\n }\n /**\n * Get this Widget's next sibling in the parent {@link Core.widget.Container Container}, or, if not\n * in a Container, the next sibling widget in the same _parentElement_.\n * @property {Core.widget.Widget}\n * @readonly\n * @category Widget hierarchy\n */\n get nextSibling() {\n return this.getSibling(1);\n }\n getSibling(increment) {\n const me = this,\n {\n parent\n } = me,\n siblings = parent ? parent.childItems : Array.from(me.element.parentElement.querySelectorAll('.b-widget'));\n return parent ? siblings[siblings.indexOf(me) + increment] : Widget.fromElement(siblings[siblings.indexOf(me.element) + increment]);\n }\n /**\n * Looks up the {@link #property-owner} axis to find an ancestor which matches the passed selector.\n * The selector may be a widget type identifier, such as `'grid'`, or a function which will return\n * `true` when passed the desired ancestor.\n * @param {String|Function} [selector] A Type identifier or selection function. If not provided, this method returns\n * the {@link #property-owner} of this widget\n * @param {Boolean} [deep] When using a string identifier, pass `true` if all superclasses should be included, i.e.,\n * if a `Grid` should match `'widget'`.\n * @param {Number|String|Core.widget.Widget} [limit] how many steps to step up before aborting the search, or a\n * selector to stop at or the topmost ancestor to consider.\n * @category Widget hierarchy\n */\n up(selector, deep, limit) {\n const {\n owner\n } = this;\n return selector ? owner === null || owner === void 0 ? void 0 : owner.closest(selector, deep, limit) : owner;\n }\n /**\n * Starts with this Widget, then Looks up the {@link #property-owner} axis to find an ancestor which matches the\n * passed selector. The selector may be a widget type identifier, such as `'grid'`, or a function which will return\n * `true` when passed the desired ancestor.\n * @param {String|Function} selector A Type identifier or selection function.\n * @param {Boolean} [deep] When using a string identifier, pass `true` if all superclasses should be included, i.e.,\n * if a `Grid` should match `'widget'`.\n * @param {Number|String|Core.widget.Widget} [limit] how many steps to step up before aborting the search, or a\n * selector to stop at or the topmost ancestor to consider.\n * @category Widget hierarchy\n */\n closest(selector, deep, limit) {\n const limitType = typeof limit,\n numericLimit = limitType === 'number',\n selectorLimit = limitType === 'string';\n for (let result = this, steps = 1; result; result = result.owner, steps++) {\n if (Widget.widgetMatches(result, selector, deep)) {\n return result;\n }\n if (numericLimit && steps >= limit) {\n return;\n } else if (selectorLimit && Widget.widgetMatches(result, limit, deep)) {\n return;\n } else if (result === limit) {\n return;\n }\n }\n }\n /**\n * Returns `true` if this Widget owns the passed Element, Event or Widget. This is based on the widget hierarchy,\n * not DOM containment. So an element in a `Combo`'s dropdown list will be owned by the `Combo`.\n * @param {HTMLElement|Event|Core.widget.Widget} target The element event or Widget to test for being\n * within the ownership tree of this Widget.\n * @category Widget hierarchy\n */\n owns(target) {\n if (target) {\n // Passed an event, grab its target\n if ('eventPhase' in target) {\n target = target.target;\n }\n // We were passed an HTMLElement\n if (target.nodeType === Element.ELEMENT_NODE) {\n if (this.element.contains(target)) {\n return true;\n }\n target = Widget.fromElement(target);\n }\n while (target) {\n if (target === this) {\n return true;\n }\n target = target.owner;\n }\n }\n return false;\n }\n /**\n * Iterate over all ancestors of this widget.\n *\n * *Note*: Due to this method aborting when the function returns `false`, beware of using short form arrow\n * functions. If the expression executed evaluates to `false`, iteration will terminate.\n * @param {Function} fn Function to execute for all ancestors. Terminate iteration by returning `false`.\n * @returns {Boolean} Returns `true` if iteration was not aborted by a step returning `false`\n * @category Widget hierarchy\n */\n eachAncestor(fn) {\n let ancestor = this.owner;\n while (ancestor) {\n if (fn(ancestor) === false) {\n return false;\n }\n ancestor = ancestor.owner;\n }\n return true;\n }\n changeMonitorResize(monitorResize, oldMonitorResize) {\n // They are mutually exclusive. scaleToFitWidth disables monitorResize\n const result = this.scaleToFitWidth ? false : Boolean(monitorResize);\n // null and undefined both mean false. Avoid going through the updater if no change.\n if (result !== Boolean(oldMonitorResize)) {\n return result;\n }\n }\n updateMonitorResize(monitorResize) {\n const me = this;\n if (!hasOwnProperty$2.call(me, 'onElementResize')) {\n me.onElementResize = me.onElementResize.bind(me);\n }\n ResizeMonitor[monitorResize ? 'addResizeListener' : 'removeResizeListener'](me.element, me.onElementResize);\n }\n changeReadOnly(readOnly) {\n readOnly = Boolean(readOnly);\n // It starts as undefined, so if false is passed, that's a no-change.\n if (Boolean(this._readOnly) !== readOnly) {\n return readOnly;\n }\n }\n updateReadOnly(readOnly) {\n var _this$element2;\n // Can be called from the element initialization because of the way Panel is set up.\n // tbar and bbar are instantiated, and their elements added to the gathered element\n // config object, but that can have consequences which can lead here.\n (_this$element2 = this.element) === null || _this$element2 === void 0 ? void 0 : _this$element2.classList[readOnly ? 'add' : 'remove']('b-readonly');\n // Do not update children at configure time.\n // Container will sync its items.\n if (!this.isConfiguring) {\n // Implemented at this level because Widgets can own a descendant tree without being\n // a Container. For example Combos own a ChipView and a List. Buttons own a Menu etc.\n this.eachWidget(widget => {\n // Some fields may not want to automatically be readOnly (such as a nested filter field not affecting data)\n if (widget.ignoreParentReadOnly) {\n return;\n }\n if (!('_originalReadOnly' in widget)) {\n // Store initial readOnly/disabled value.\n // the config getter copies the properties in a loop\n // so execute once and cache the value.\n widget._originalReadOnly = widget.config.readOnly || false;\n }\n // Set if truthy, otherwise reset to initial value\n widget.readOnly = readOnly || widget._originalReadOnly;\n }, false);\n /**\n * Fired when a Widget's read only state is toggled\n * @event readOnly\n * @param {Boolean} readOnly Read only or not\n */\n this.trigger('readOnly', {\n readOnly\n });\n }\n }\n /**\n * Iterate over all widgets owned by this widget and any descendants.\n *\n * *Note*: Due to this method aborting when the function returns `false`, beware of using short form arrow\n * functions. If the expression executed evaluates to `false`, iteration will terminate.\n * @param {Function} fn A function to execute upon each descendant widget.\n * Iteration terminates if this function returns `false`.\n * @param {Core.widget.Widget} fn.widget The current descendant widget.\n * @param {Object} fn.control An object containing recursion control options.\n * @param {Boolean} fn.control.down A copy of the `deep` parameter. This can be adjusted by `fn` to decide which\n * widgets should be recursed. This value will always be the value of `deep` on entry and the value of `control.down`\n * upon return determines the recursion into the current widget.\n * @param {Boolean} [deep=true] Pass as `false` to only consider immediate child widgets.\n * @returns {Boolean} Returns `true` if iteration was not aborted by a step returning `false`\n * @category Widget hierarchy\n */\n eachWidget(fn, deep = true) {\n const widgets = this.childItems,\n length = (widgets === null || widgets === void 0 ? void 0 : widgets.length) || 0,\n control = {};\n for (let i = 0; i < length; i++) {\n const widget = widgets[i];\n control.down = deep;\n // Abort if a call returns false\n if (fn(widget, control) === false) {\n return false;\n }\n if (control.down && widget.eachWidget) {\n // Abort if a deep call returns false\n if (widget.eachWidget(fn, deep) === false) {\n return false;\n }\n }\n }\n return true;\n }\n /**\n * Returns an array of all descendant widgets which the passed\n * filter function returns `true` for.\n * @param {Function} filter A function which, when passed a widget,\n * returns `true` to include the widget in the results.\n * @returns {Core.widget.Widget[]} All matching descendant widgets.\n * @category Widget hierarchy\n */\n queryAll(filter) {\n const result = [];\n this.eachWidget(w => {\n if (filter(w)) {\n result.push(w);\n }\n });\n return result;\n }\n /**\n * Returns the first descendant widgets which the passed\n * filter function returns `true` for.\n * @param {Function} filter A function which, when passed a widget,\n * returns `true` to return the widget as the sole result.\n * @returns {Core.widget.Widget} The first matching descendant widget.\n * @category Widget hierarchy\n */\n query(filter) {\n let result = null;\n this.eachWidget(w => {\n if (filter(w)) {\n result = w;\n return false;\n }\n });\n return result;\n }\n /**\n * Get a widget by ref, starts on self and traverses up the owner hierarchy checking `widgetMap` at each level.\n * Not checking the top level widgetMap right away to have some acceptance for duplicate refs.\n * @param {String} ref ref to find\n * @returns {Core.widget.Widget}\n * @internal\n * @category Widget hierarchy\n */\n getWidgetByRef(ref) {\n var _this$widgetMap, _this$owner;\n if (ref instanceof Widget) {\n return ref;\n }\n return (this === null || this === void 0 ? void 0 : (_this$widgetMap = this.widgetMap) === null || _this$widgetMap === void 0 ? void 0 : _this$widgetMap[ref]) || (this === null || this === void 0 ? void 0 : (_this$owner = this.owner) === null || _this$owner === void 0 ? void 0 : _this$owner.getWidgetByRef(ref));\n }\n onFocusIn(e) {\n const me = this,\n {\n element\n } = me;\n me.containsFocus = true;\n me.focusInEvent = e;\n element.classList.add('b-contains-focus');\n me.updateAriaLabel(me.localizeProperty('ariaLabel'));\n me.updateAriaDescription(me.localizeProperty('ariaDescription'));\n if (element.contains(e._target) && me.onInternalKeyDown && !me.keyDownListenerRemover) {\n me.keyDownListenerRemover = EventHelper.on({\n element,\n keydown: 'onInternalKeyDown',\n thisObj: me\n });\n }\n /**\n * Fired when focus enters this Widget.\n * @event focusIn\n * @param {Core.widget.Widget} source - This Widget\n * @param {HTMLElement} fromElement The element which lost focus.\n * @param {HTMLElement} toElement The element which gained focus.\n * @param {Core.widget.Widget} fromWidget The widget which lost focus.\n * @param {Core.widget.Widget} toWidget The widget which gained focus.\n * @param {Boolean} backwards `true` if the `toElement` is before the `fromElement` in document order.\n */\n me.trigger('focusin', e);\n }\n onFocusOut(e) {\n const me = this;\n if (me.keyDownListenerRemover) {\n me.keyDownListenerRemover();\n me.keyDownListenerRemover = null;\n }\n if (!me.isDestroyed) {\n // Focus to nowhere, focus a close relation\n if (!e.relatedTarget) {\n me.revertFocus(!me.isVisible);\n }\n me.containsFocus = false;\n me.element.classList.remove('b-contains-focus');\n me.updateAriaLabel(me.localizeProperty('ariaLabel'));\n me.updateAriaDescription(me.localizeProperty('ariaDescription'));\n /**\n * Fired when focus exits this Widget's ownership tree. This is different from a `blur` event.\n * focus moving from within this Widget's ownership tree, even if there are floating widgets\n * will not trigger this event. This is when focus exits this widget completely.\n * @event focusOut\n * @param {Core.widget.Widget} source - This Widget\n * @param {HTMLElement} fromElement The element which lost focus.\n * @param {HTMLElement} toElement The element which gained focus.\n * @param {Core.widget.Widget} fromWidget The widget which lost focus.\n * @param {Core.widget.Widget} toWidget The widget which gained focus.\n * @param {Boolean} backwards `true` if the `toElement` is before the `fromElement` in document order.\n */\n me.trigger('focusout', e);\n }\n }\n /**\n * Returns a function that will set the focus (`document.activeElement`) to the most consistent element possible\n * based on the focus state at the time this method was called. Derived classes can implement `captureFocusItem()`\n * to refine this process to include logical items (e.g., a grid cell) that would be more stable than DOM element\n * references.\n *\n * If this widget does not contain the focus, the returned function will do nothing.\n * @returns {Function}\n * @internal\n */\n captureFocus() {\n const me = this,\n activeElementWas = DomHelper.getActiveElement(me),\n restore = me.contains(activeElementWas) && me.captureFocusItem(activeElementWas);\n return (scrollIntoView, force) => {\n if (restore && !me.isDestroying) {\n const activeElementNow = DomHelper.getActiveElement(me);\n if (activeElementNow !== activeElementWas || force) {\n restore(scrollIntoView);\n }\n }\n };\n }\n /**\n * This method is called by `captureFocus()` when this widget contains the focus and it returns a function that\n * restores the focus to the correct internal element. The returned function is only called if the current\n * `document.activeElement` is different from the passed `activeElement`.\n *\n * This method can be replaced by derived classes to capture stable identifiers for the currently focused, logical\n * item (for example, a cell of a grid).\n *\n * @param {HTMLElement} activeElement The current `document.activeElement`.\n * @returns {Function} Returns a function that accepts a boolean argument. Defaults to `true`, `false` attempts to\n * focus without scrolling.\n * @internal\n */\n captureFocusItem(activeElement) {\n return (scrollIntoView = true) => {\n if (this.contains(activeElement)) {\n scrollIntoView ? activeElement.focus() : DomHelper.focusWithoutScrolling(activeElement);\n }\n };\n }\n /**\n * Returns `true` if this widget is or contains the specified element or widget.\n * @param {HTMLElement|Core.widget.Widget} elementOrWidget The element or widget\n * @param {Boolean} [strict] Pass `true` to test for strict containment (if `elementOrWidget` is this widget, the\n * return value will be `false`).\n * @returns {Boolean}\n */\n contains(elementOrWidget, strict) {\n const {\n element\n } = this;\n if (elementOrWidget && element) {\n if (elementOrWidget.isWidget) {\n elementOrWidget = elementOrWidget.element;\n }\n // el.contains(el) === true\n return element.contains(elementOrWidget) && (!strict || element !== elementOrWidget);\n }\n }\n /**\n * If this Widget contains focus, focus is reverted to the source from which it entered if possible,\n * or to a close relative if not.\n * @param {Boolean} [force] Pass as `true` to move focus to the previously focused item, or the\n * closest possible relative even if this widget does not contain focus.\n */\n revertFocus(force) {\n var _me$focusInEvent, _target;\n const me = this,\n activeElement = DomHelper.getActiveElement(me);\n let target = (_me$focusInEvent = me.focusInEvent) === null || _me$focusInEvent === void 0 ? void 0 : _me$focusInEvent.relatedTarget;\n if (force || me.containsFocus && ((_target = target) === null || _target === void 0 ? void 0 : _target.nodeType) === Element.ELEMENT_NODE && me.element.contains(activeElement)) {\n if (!target || !DomHelper.isFocusable(target)) {\n target = me.getFocusRevertTarget();\n }\n me._isRevertingFocus = true;\n if (target && DomHelper.isFocusable(target)) {\n DomHelper.focusWithoutScrolling(target);\n } else {\n // If we could not find a suitable target to receive focus, we still need to not be focused. Oddly,\n // one cannot do \"document.body.focus()\" but explicitly calling blur() has that effect. If we do not\n // do this, and we retain the focus, we can have issue w/closeAction=destroy which can cause the blur\n // in afterHideAnimation which then causes that element.remove() to throw DOM exceptions.\n activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur();\n }\n me._isRevertingFocus = false;\n }\n }\n /**\n * This method finds a close sibling (or parent, or parent's sibling etc recursively) to which focus\n * can be directed in the case of revertFocus not having a focusable element from our focusInEvent.\n *\n * This can happen when the \"from\" component is destroyed or hidden. We should endeavour to prevent\n * focus escaping to `document.body` for accessibility and ease of use, and keep focus close.\n * @internal\n */\n getFocusRevertTarget() {\n const me = this,\n {\n owner,\n focusInEvent\n } = me,\n searchDirection = focusInEvent ? focusInEvent.backwards ? 1 : -1 : -1;\n let target = focusInEvent && focusInEvent.relatedTarget;\n const toComponent = target && Widget.fromElement(target);\n // If the from element is now not focusable, for example an Editor which hid\n // itself on focus leave, then we have to find a sibling/parent/parent's sibling\n // to take focus. Anything is better than flipping to document.body.\n if (owner && !owner.isDestroyed && (!target || !DomHelper.isFocusable(target) || toComponent && !toComponent.isFocusable)) {\n target = null;\n // If this widget can have siblings, then find the closest\n // (in the direction focus arrived from) focusable sibling.\n if (owner.eachWidget) {\n const siblings = [];\n // Collect focusable siblings.\n // With this included so we can find ourselves.\n owner.eachWidget(w => {\n if (w === me || w.isFocusable) {\n siblings.push(w);\n }\n }, false);\n if (siblings.length > 1) {\n const myIndex = siblings.indexOf(me);\n target = siblings[myIndex + searchDirection] || siblings[myIndex - searchDirection];\n }\n }\n // No focusable siblings found to take focus, try the owner\n if (!target && owner.isFocusable) {\n target = owner;\n }\n // If non of the above found any related focusable widget,\n // Go through these steps for the owner.\n target = target ? target.focusElement : owner.getFocusRevertTarget();\n }\n return target;\n }\n /**\n * Returns a `DomClassList` computed from the `topMostBase` (e.g., `Widget` or `Panel`) with the given `suffix`\n * appended to each `widgetClass`.\n * @param {Function} topMostBase The top-most base class constructor at which to start gathering classes.\n * @param {String} [suffix] An optional suffix to apply to all widget classes.\n * @returns {Core.helper.util.DomClassList}\n * @internal\n * @category DOM\n */\n getStaticWidgetClasses(topMostBase, suffix) {\n const classList = new DomClassList(),\n hierarchy = this.$meta.hierarchy;\n let cls, i, name, widgetClass, widgetClassProperty;\n for (i = hierarchy.indexOf(topMostBase); i < hierarchy.length; ++i) {\n var _widgetClassProperty;\n cls = hierarchy[i];\n widgetClassProperty = Reflect.getOwnPropertyDescriptor(cls.prototype, 'widgetClass');\n // If the Class has its own get widgetClass, call it upon this instance.\n if ((_widgetClassProperty = widgetClassProperty) !== null && _widgetClassProperty !== void 0 && _widgetClassProperty.get) {\n widgetClass = widgetClassProperty.get.call(this);\n } else {\n // All built in widgets should define $name to be safer from minification/obfuscation, but user\n // created might not so fall back to actual name. UMD files use a _$name property\n // which the Base $$name getter uses as a fallback.\n name = hasOwnProperty$2.call(cls, '$$name') || hasOwnProperty$2.call(cls, '$name') || hasOwnProperty$2.call(cls, '_$name') ? cls.$$name : cls.name;\n // Throw error in case of an obfuscated name or an autogenerated name.\n // These should never be released without a meaningful $name getter.\n if (name.length < 3 || name.includes('$')) {\n // class.$name comes from parent API class which has it\n console.warn(`Class \"${name}\" extending \"${cls.$name}\" should have \"$name\" static getter with no less than 3 chars.`);\n }\n widgetClass = `b-${name.toLowerCase()}`;\n }\n if (widgetClass) {\n classList.add(suffix ? widgetClass + suffix : widgetClass);\n }\n }\n return classList;\n }\n get rootUiClass() {\n return Widget;\n }\n /**\n * Returns the `DomClassList` for this widget's class. This object should not be mutated.\n * @returns {Core.helper.util.DomClassList}\n * @internal\n * @category DOM\n */\n get staticClassList() {\n const {\n $meta: meta\n } = this;\n let classList = meta.staticClassList;\n if (!classList) {\n // Compute the class part of the widgetList just once per class (cache it on the $meta object):\n meta.staticClassList = classList = this.getStaticWidgetClasses(Widget);\n // TODO this should probably be only for outer-most widgets\n BrowserHelper.isTouchDevice && classList.add('b-touch');\n }\n return classList;\n }\n /**\n * Returns the cross-product of the classes `staticClassList` with each `ui` as an array of strings.\n *\n * For example, a Combo with a `ui: 'foo bar'` would produce:\n *\n * [\n * 'b-widget-foo', 'b-field-foo', 'b-textfield-foo', 'b-pickerfield-foo', 'b-combo-foo',\n * 'b-widget-bar', 'b-field-bar', 'b-textfield-bar', 'b-pickerfield-bar', 'b-combo-bar'\n * ]\n *\n * @returns {String[]}\n * @internal\n * @category DOM\n */\n get uiClasses() {\n // our result is maintained by updateUi so ensure the ui config has been evaluated:\n this.getConfig('ui');\n return this._uiClasses;\n }\n /**\n * Returns the cross-product of the classes `staticClassList` with each `ui` as a `DomClassList` instance.\n *\n * For example, a Combo with a `ui: 'foo bar'` would produce:\n *\n * ```javascript\n * new DomClassList({\n * 'b-field-ui-foo' : 1,\n * 'b-textfield-ui-foo' : 1,\n * 'b-pickerfield-ui-foo' : 1,\n * 'b-combo-ui-foo' : 1,\n *\n * 'b-field-ui-bar' : 1,\n * 'b-textfield-ui-bar' : 1,\n * 'b-pickerfield-ui-bar' : 1,\n * 'b-combo-ui-bar' : 1\n * });\n * ```\n *\n * A Panel with a `ui: 'foo bar'` would produce:\n *\n * ```javascript\n * new DomClassList({\n * 'b-panel-ui-foo' : 1,\n * 'b-panel-ui-bar' : 1\n * });\n * ```\n * @returns {Core.helper.util.DomClassList}\n * @internal\n * @category DOM\n */\n get uiClassList() {\n // our result is maintained by updateUi so ensure the ui config has been evaluated:\n this.getConfig('ui');\n return this._uiClassList;\n }\n /**\n * Used by the Widget class internally to create CSS classes based on this Widget's\n * inheritance chain to allow styling from each level to apply.\n *\n * For example Combo would yield `\"[\"b-widget\", \"b-field\", \"b-textfield\", \"b-pickerfield\", \"b-combo\"]\"`\n *\n * May be implemented in subclasses to add or remove classes from the super.widgetClassList\n * @returns {String[]} The css class list named using the class name.\n * @internal\n * @category DOM\n */\n get widgetClassList() {\n const me = this,\n {\n cls,\n defaultCls,\n uiClasses\n } = me;\n let {\n staticClassList\n } = me;\n if (defaultCls || cls) {\n // clone the class-level classList before instance stuff goes on...\n staticClassList = staticClassList.clone();\n defaultCls && staticClassList.assign(defaultCls); // note: these can be falsy keys\n cls && staticClassList.assign(cls);\n }\n const classList = staticClassList.values; // a new array of truthy keys...\n uiClasses && classList.push(...uiClasses);\n me.floating && classList.push('b-floating');\n if (me.collapsify === 'hide') {\n classList.push('b-collapsify-hide');\n }\n return classList;\n }\n changeCls(cls) {\n return DomClassList.from(cls);\n }\n changeContentElementCls(cls) {\n return DomClassList.from(cls);\n }\n changeHtmlCls(cls) {\n return DomClassList.from(cls);\n }\n changeDefaultCls(cls) {\n return DomClassList.from(cls, /* returnEmpty */true);\n }\n changeUi(ui) {\n return DomClassList.from(ui);\n }\n updateUi(ui) {\n var _uiClassList;\n let uiClassList = null,\n cls,\n suffix;\n if (ui) {\n const staticClassList = this.getStaticWidgetClasses(this.rootUiClass);\n for (suffix in ui) {\n if (ui[suffix]) {\n for (cls in staticClassList) {\n if (staticClassList[cls]) {\n (uiClassList || (uiClassList = new DomClassList()))[`${cls}-ui-${suffix}`] = 1;\n }\n }\n }\n }\n }\n this._uiClasses = (_uiClassList = uiClassList) === null || _uiClassList === void 0 ? void 0 : _uiClassList.values; // an array of each value\n this._uiClassList = uiClassList;\n }\n //endregion\n //region Cache\n /**\n * Gets dom elements in the view. Caches the results for faster future calls.\n * @param {String} query CSS selector\n * @param {Boolean} children true to fetch multiple elements\n * @param {HTMLElement} element Element to use as root for the query, defaults to the views outermost element\n * @returns {HTMLElement|HTMLElement[]|null} A single element or an array of elements (if parameter children is set to true)\n * @internal\n * @category DOM\n */\n fromCache(query, children = false, element = this.element) {\n if (!element) return null;\n const me = this;\n if (!me.cache[query]) {\n me.cache[query] = children ? DomHelper.children(element, query) : DomHelper.down(element, query);\n }\n return me.cache[query];\n }\n /**\n * Clear caches, forces all calls to fromCache to requery dom. Called on render/rerender.\n * @internal\n * @category DOM\n */\n emptyCache() {\n this.cache = {};\n }\n //endregion\n //region Mask\n changeMasked(mask, maskInstance) {\n var _this$masked;\n if (((_this$masked = this.masked) === null || _this$masked === void 0 ? void 0 : _this$masked.type) === 'trial') {\n return;\n }\n if (mask === true || mask === '') {\n mask = '\\xA0'; // empty string don't render well, so promote to  \n }\n\n if (maskInstance) {\n if (typeof mask === 'string') {\n maskInstance.text = mask;\n mask = maskInstance;\n } else if (mask) {\n maskInstance.setConfig(mask);\n mask = maskInstance;\n } else {\n maskInstance.destroy();\n }\n } else if (mask) {\n const Mask = Widget.resolveType('mask');\n mask = Mask.mergeConfigs(this.maskDefaults, mask);\n mask.owner = this;\n mask = Mask.mask(mask);\n }\n return mask || null;\n }\n onMaskAutoClose(mask) {\n if (mask.isDestroyed && mask === this.masked) {\n this.masked = null;\n }\n }\n /**\n * Mask the widget, showing the specified message\n * @param {String|Object} msg Mask message (or a {@link Core.widget.Mask} config object\n * @returns {Core.widget.Mask}\n */\n mask(msg) {\n this.masked = msg;\n return this.masked;\n }\n /**\n * Unmask the widget\n */\n unmask() {\n this.masked = null;\n }\n //endregion\n //region Monitor resize\n onInternalResize(element, width, height, oldWidth, oldHeight) {\n this._width = element.offsetWidth;\n this._height = element.offsetHeight;\n }\n onElementResize(resizedElement) {\n const me = this,\n {\n element\n } = me,\n oldWidth = me._width,\n oldHeight = me._height,\n newWidth = element.offsetWidth,\n newHeight = element.offsetHeight;\n if (me.floating) {\n me.onFloatingWidgetResize(...arguments);\n }\n if (!me.suspendResizeMonitor && (oldWidth !== newWidth || oldHeight !== newHeight)) {\n me.onInternalResize(element, newWidth, newHeight, oldWidth, oldHeight);\n /**\n * Fired when the encapsulating element of a Widget resizes *only when {@link #config-monitorResize} is `true`*.\n * @event resize\n * @param {Core.widget.Widget} source - This Widget\n * @param {Number} width The new width\n * @param {Number} height The new height\n * @param {Number} oldWidth The old width\n * @param {Number} oldHeight The old height\n */\n me.trigger('resize', {\n width: newWidth,\n height: newHeight,\n oldWidth,\n oldHeight\n });\n }\n }\n onFloatingWidgetResize(resizedElement, lastRect, myRect) {\n const me = this,\n {\n lastAlignSpec,\n constrainTo\n } = me;\n // If this Popup changes size while we are aligned and we are aligned to\n // a target (not a position), then we might need to realign.\n if (me.isVisible && lastAlignSpec && lastAlignSpec.target) {\n const heightChange = !lastRect || myRect.height !== lastRect.height,\n widthChange = !lastRect || myRect.width !== lastRect.width,\n failsConstraint = constrainTo && !Rectangle.from(constrainTo).contains(Rectangle.from(me.element, null, true));\n // Only realign if:\n // the height has changed and we are not aligned below, or\n // the width has changed and we are not aligned to the right.\n if (heightChange && lastAlignSpec.zone !== 2 || widthChange && lastAlignSpec.zone !== 1 || failsConstraint) {\n // Must move to next AF because in Chrome, the resize monitor might fire\n // before the element is painted and the anchor color matching\n // scheme cannot work in that case.\n me.requestAnimationFrame(() => me.realign());\n }\n }\n }\n updateScale() {\n const me = this,\n element = me.element,\n parentElement = element.parentElement;\n // this could be placed elsewhere but want to keep it contained to not spam other code,\n // since this is a very specific use case in our docs\n if (!me.configuredWidth) {\n me.configuredWidth = me.width;\n }\n // TODO: handle autoHeight, but seems it assigns height to late with current setup\n // We are scaling to fit inside the width, so ensure that we are not the cause of a scrollbar\n // in our current, unscaled state by hiding while we measure the parent's offsetWidth which\n // we are going to scale to.\n element.style.display = 'none';\n const rect = Rectangle.client(parentElement),\n scale = rect.width / me.configuredWidth,\n adjustedScale = me.scale = me.allowGrowWidth ? Math.min(scale, 1) : scale;\n element.style.transform = `scale(${adjustedScale})`;\n element.style.transformOrigin = 'top left';\n element.style.display = '';\n if (me.allowGrowWidth && scale > 1) {\n // increase width\n me.width = me.configuredWidth * scale;\n }\n }\n onParentElementResize(event) {\n this.updateScale();\n }\n //endregion\n /**\n * Returns a `TRBL` array of values parse from the passed specification. This can be used to parse`\n * a value list for `margin` or `padding` or `border-width` etc - any CSS value which takes a `TRBL` value.\n * @param {Number|String|String[]} values The `TRBL` value\n * @param {String} [units=px] The units to add to values which are specified as numeric.\n * @internal\n */\n parseTRBL(values, units = 'px') {\n values = values || 0;\n if (typeof values === 'number') {\n return [`${values}${units}`, `${values}${units}`, `${values}${units}`, `${values}${units}`];\n }\n const parts = values.split(' '),\n len = parts.length;\n if (len === 1) {\n parts[1] = parts[2] = parts[3] = parts[0];\n } else if (len === 2) {\n parts[2] = parts[0];\n parts[3] = parts[1];\n } else if (len === 3) {\n parts[3] = parts[1];\n }\n return [isFinite(parts[0]) ? `${parts[0]}${units}` : parts[0], isFinite(parts[1]) ? `${parts[1]}${units}` : parts[2], isFinite(parts[2]) ? `${parts[2]}${units}` : parts[3], isFinite(parts[3]) ? `${parts[3]}${units}` : parts[4]];\n }\n // Returns root node for this widget, either a document or a shadowRoot\n get documentRoot() {\n var _this$owner2;\n return ((_this$owner2 = this.owner) === null || _this$owner2 === void 0 ? void 0 : _this$owner2.documentRoot) || this.element.getRootNode();\n }\n // Returns top most DOM element of the visible DOM tree for this widget element, either document.body or a shadowRoot\n get rootElement() {\n const me = this;\n if (!me._rootElement) {\n var _me$owner3;\n let root = ((_me$owner3 = me.owner) === null || _me$owner3 === void 0 ? void 0 : _me$owner3.rootElement) || me.forElement instanceof HTMLElement && DomHelper.getRootElement(me.forElement);\n // Check element, we may be in the DOM just not visible\n if (!root) {\n const elRoot = me.element instanceof HTMLElement && DomHelper.getRootElement(me.element);\n // Make sure we got a proper root\n if (elRoot === document.body || elRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n root = elRoot;\n }\n }\n if (!root) {\n root = document.body;\n }\n me._rootElement = root;\n }\n return me._rootElement;\n }\n get floatRoot() {\n var _me$owner4;\n const me = this,\n rootElement = me.rootElement || ((_me$owner4 = me.owner) === null || _me$owner4 === void 0 ? void 0 : _me$owner4.rootElement);\n let {\n floatRoot\n } = rootElement;\n if (!floatRoot) {\n var _DomHelper$themeInfo;\n const {\n outerCls\n } = Widget,\n themeName = (_DomHelper$themeInfo = DomHelper.themeInfo) === null || _DomHelper$themeInfo === void 0 ? void 0 : _DomHelper$themeInfo.name;\n if (!DomHelper.isValidFloatRootParent(rootElement)) {\n throw new Error('Attaching float root to wrong root');\n }\n // When outside of our examples, the body element doesn't get the theme class.\n // The floatRoot must carry it for floating items to be themed.\n if (themeName) {\n outerCls.push(`b-theme-${themeName.toLowerCase()}`);\n }\n floatRoot = rootElement.floatRoot = DomHelper.createElement({\n className: `b-float-root ${outerCls.join(' ')}`,\n parent: rootElement\n });\n floatRoots.push(floatRoot);\n // Make float root immune to keyboard-caused size changes\n if (BrowserHelper.isAndroid) {\n floatRoot.style.height = `${screen.height}px`;\n EventHelper.on({\n element: globalThis,\n orientationchange: () => floatRoot.style.height = `${screen.height}px`\n });\n }\n // Resize float root upon keyboard-caused visual viewport size change\n // https://developer.mozilla.org/en-US/docs/Web/API/Visual_Viewport_API\n if (!BrowserHelper.isHoverableDevice && globalThis.visualViewport) {\n EventHelper.on({\n element: globalThis.visualViewport,\n resize: ({\n target: viewport\n }) => floatRoot.style.height = `${viewport.height}px`\n });\n }\n // Keep floatRoot up to date with the theme\n GlobalEvents$1.on({\n theme: ({\n theme,\n prev\n }) => {\n // TODO handle for all roots\n floatRoot.classList.add(`b-theme-${theme.toLowerCase()}`);\n floatRoot.classList.remove(`b-theme-${prev.toLowerCase()}`);\n }\n });\n }\n // Angular might shuffle elements around so we have to ensure floatRoot is a child of the right parent\n else if (!rootElement.contains(floatRoot)) {\n // Reattach floatRoot if it was detached\n rootElement.appendChild(floatRoot);\n }\n return floatRoot;\n }\n get floatRootMaxZIndex() {\n let max = 1;\n Array.from(this.floatRoot.children).forEach(child => {\n const zIndex = parseInt(getComputedStyle(child).zIndex || 0, 10);\n if (zIndex > max) {\n max = zIndex;\n }\n });\n return max;\n }\n static resetFloatRootScroll() {\n floatRoots.forEach(floatRoot => floatRoot.scrollTop = floatRoot.scrollLeft = 0);\n }\n static get floatRoots() {\n return floatRoots;\n }\n static removeFloatRoot(floatRoot) {\n floatRoots.splice(floatRoots.indexOf(floatRoot), 1);\n }\n // CSS classes describing outer-most Widgets to provide styling / behavioral CSS style rules\n static get outerCls() {\n const result = ['b-outer'],\n {\n platform\n } = BrowserHelper;\n if (platform) {\n result.push(`b-${platform}`);\n }\n if (BrowserHelper.isTouchDevice) {\n result.push('b-touch-events');\n }\n if (DomHelper.scrollBarWidth) {\n result.push('b-visible-scrollbar');\n } else {\n result.push('b-overlay-scrollbar');\n }\n if (BrowserHelper.isChrome) {\n result.push('b-chrome');\n } else if (BrowserHelper.isSafari) {\n result.push('b-safari');\n } else if (BrowserHelper.isFirefox) {\n result.push('b-firefox');\n }\n // So that we don't get the polyfill styles applied if we have ResizeMonitor available.\n // The polyfill styles can break certain elements styling.\n if (!globalThis.ResizeObserver) {\n result.push('b-no-resizeobserver');\n }\n return result;\n }\n get isAnimating() {\n return this._isAnimatingCounter > 0;\n }\n set isAnimating(value) {\n const me = this,\n {\n _isAnimatingCounter\n } = me;\n // Ensure flag is correct when code called by listeners interrogates it\n me._isAnimatingCounter = Math.max(0, _isAnimatingCounter + (value ? 1 : -1));\n if (_isAnimatingCounter === 0 && value) {\n me.element.classList.add('b-animating');\n me.trigger('animationStart');\n } else if (_isAnimatingCounter === 1 && !value) {\n me.element.classList.remove('b-animating');\n me.trigger('animationEnd');\n }\n }\n // Waits until all transitions are completed\n async waitForAnimations() {\n if (this.isAnimating) {\n await this.await('animationend', {\n checkLog: false\n });\n }\n }\n /**\n * Analogous to document.querySelector, finds the first Bryntum widget matching the passed\n * selector. Right now, only class name (lowercased) selector strings, or\n * a filter function which returns `true` for required object are allowed:\n * ```\n * bryntum.query('grid').destroy();\n * ```\n * @param {String|Function} selector A lowercased class name, or a filter function.\n * @param {Boolean} [deep] Specify `true` to search the prototype chain (requires supplying a string `selector`). For\n * example 'widget' would then find a Grid\n * @returns {Core.widget.Widget} The first matched widget if any.\n * @category Widget hierarchy\n */\n static query(selector, deep = false) {\n const {\n idMap\n } = Widget.identifiable;\n for (const id in idMap) {\n if (Widget.widgetMatches(idMap[id], selector, deep)) {\n return idMap[id];\n }\n }\n return null;\n }\n /**\n * Analogous to document.querySelectorAll, finds all Bryntum widgets matching the passed\n * selector. Right now, only registered widget `type` strings, or a filter function which\n * returns `true` for required object are allowed:\n * ```\n * let allFields = bryntum.queryAll('field', true);\n * ```\n * @param {String|Function} selector A lowercased class name, or a filter function.\n * @param {Boolean} [deep] Specify `true` to search the prototype chain (requires supplying a string `selector`). For\n * example 'widget' would then find a Grid\n * @returns {Core.widget.Widget[]} The first matched widgets if any - an empty array will be returned\n * if no matches are found.\n * @category Widget hierarchy\n */\n static queryAll(selector, deep = false) {\n const {\n idMap\n } = Widget.identifiable,\n result = [];\n for (const id in idMap) {\n if (Widget.widgetMatches(idMap[id], selector, deep)) {\n result.push(idMap[id]);\n }\n }\n return result;\n }\n /**\n * Returns the Widget which owns the passed element (or event).\n * @param {HTMLElement|Event} element The element or event to start from\n * @param {String|Function} [type] The type of Widget to scan upwards for. The lowercase\n * class name. Or a filter function which returns `true` for the required Widget.\n * @param {HTMLElement|Number} [limit] The number of components to traverse upwards to find a\n * match of the type parameter, or the element to stop at.\n * @returns {Core.widget.Widget} The found Widget or null.\n * @category Misc\n */\n static fromElement(element, type, limit) {\n const typeOfType = typeof type;\n // Check if an event was passed\n if (element && !element.nodeType) {\n element = element.target;\n }\n if (typeOfType === 'number' || type && type.nodeType === Element.ELEMENT_NODE) {\n limit = type;\n type = null;\n }\n let target = element,\n depth = 0,\n topmost,\n cmpId,\n cmp;\n if (typeof limit !== 'number') {\n topmost = limit;\n limit = Number.MAX_VALUE;\n }\n if (typeOfType === 'string') {\n type = type.toLowerCase();\n }\n while (target && target.nodeType === Element.ELEMENT_NODE && depth < limit && target !== topmost) {\n cmpId = target.dataset && target.dataset.ownerCmp || target.id;\n if (cmpId) {\n cmp = Widget.getById(cmpId);\n if (cmp) {\n if (type) {\n if (typeOfType === 'function') {\n if (type(cmp)) {\n return cmp;\n }\n } else if (Widget.widgetMatches(cmp, type, true)) {\n return cmp;\n }\n } else {\n return cmp;\n }\n }\n // Increment depth on every *Widget* found\n depth++;\n }\n target = target.parentNode;\n }\n return null;\n }\n // NOTE: Not named `triggerChange` to not conflict with existing fn on Field\n /**\n * Triggers a 'change' event with the supplied params. After triggering it also calls `onFieldChange()` on each\n * ancestor the implements that function, supplying the same set of params.\n * @param {Object} params Event params, used both for triggering and notifying ancestors\n * @param {Boolean} [trigger] `false` to not trigger, only notifying ancestors\n * @internal\n */\n triggerFieldChange(params, trigger = true) {\n if (trigger) {\n this.trigger('change', params);\n }\n this.eachAncestor(ancestor => {\n if (ancestor.onFieldChange) {\n ancestor.onFieldChange(params);\n }\n // Stop going up when reaching an ancestor that isolates its fields\n if (ancestor.isolateFieldChange(this)) {\n return false;\n }\n });\n }\n /**\n * Returns `true` if the given `field`'s value change should be isolated (kept hidden by this widget). By default,\n * this method returns the value of {@link Core.widget.Container#config-isolateFields} for all fields.\n * @param {Core.widget.Field} field The field in question.\n * @internal\n */\n isolateFieldChange(field) {\n return this.isolateFields;\n }\n // Sets up the focus listeners, one set for every document root (shadow root or document)\n setupFocusListeners() {\n // Listen to focus events on shadow root to handle focus inside the shadow dom\n GlobalEvents$1.setupFocusListenersOnce(this._rootElement, EventHelper);\n }\n static widgetMatches(candidate, selector, deep) {\n if (selector === '*') {\n return true;\n }\n if (typeof selector === 'function') {\n return selector(candidate);\n }\n return Widget.isType(candidate, selector, deep);\n }\n /**\n * Attached a tooltip to the specified element.\n * @example\n * Widget.attachTooltip(element, {\n * text: 'Useful information goes here'\n * });\n * @param {HTMLElement} element Element to attach tooltip for\n * @param {Object|String} configOrText Tooltip config or tooltip string, see example and source\n * @returns {HTMLElement} The passed element\n * @category Misc\n */\n static attachTooltip(element, configOrText) {\n if (typeof configOrText === 'string') configOrText = {\n html: configOrText\n };\n // TODO: refactor this\n Widget.create(Object.assign({\n forElement: element\n }, configOrText), 'tooltip');\n return element;\n }\n //region RTL\n // Since we use flexbox docking flips correctly out of the box. start and end values can be mapped straight to\n // left and right, for both LTR and RTL\n changeDock(dock) {\n if (dock === 'start') {\n return 'left';\n }\n if (dock === 'end') {\n return 'right';\n }\n return dock;\n }\n updateRtl(rtl) {\n super.updateRtl(rtl);\n // Cascade the rtl setting to owned widgets which are not configured with an rtl value\n this.eachWidget(item => {\n if (!('rtl' in item.initialConfig)) {\n item.rtl = rtl;\n }\n });\n }\n //endregion\n}\n\nconst proto$1 = Widget.prototype;\n['compose', 'domSyncCallback'].forEach(fn => proto$1[fn].$nullFn = true);\n// Register this widget type with its Factory\nWidget.initClass();\nWidget.register('mask', Mask);\n// These low level classes must not import Widget because that would cause circularity.\n// Instead Widget injects a reference to itself into them.\nDomHelper.Widget = Widget;\nGlobalEvents$1.Widget = Widget;\n// We use the same map to track instances by ID\nMask.identifiable.idMap = Widget.identifiable.idMap;\n// Simplify querying widgets by exposing fns in bryntum ns\nObject.assign(globalThis.bryntum || (globalThis.bryntum = {}), {\n get: Widget.getById.bind(Widget),\n query: Widget.query,\n queryAll: Widget.queryAll,\n fromElement: Widget.fromElement\n});\nWidget._$name = 'Widget';\n\n/**\n * @module Core/widget/layout/Layout\n */\n/**\n * A helper class used by {@link Core.widget.Container Container}s which renders child widgets to their\n * {@link Core.widget.Widget#property-contentElement}. It also adds the Container's\n * {@link Core.widget.Container#config-itemCls} class to child items.\n *\n * Subclasses may modify the way child widgets are rendered, or may offer APIs for manipulating the child widgets.\n *\n * The {@link Core.widget.layout.Card Card} layout class offers slide-in, slide-out animation of multiple\n * child widgets. {@link Core.widget.TabPanel} uses Card layout.\n */\nclass Layout extends Base$1.mixin(Events, Factoryable) {\n static get type() {\n return 'default';\n }\n static get configurable() {\n return {\n /**\n * The owning Widget.\n * @member {Core.widget.Widget} owner\n * @readonly\n */\n /**\n * @config {Core.widget.Widget} owner\n * @private\n */\n owner: null,\n /**\n * The CSS class which should be added to the owning {@link Core.widget.Container}'s.\n * {@link Core.widget.Widget#property-contentElement}.\n * @config {String}\n */\n containerCls: 'b-auto-container',\n /**\n * The CSS class which should be added to the encapsulating element of child items.\n * @config {String}\n */\n itemCls: null\n };\n }\n static get factoryable() {\n // establish this class as the Factoryable base\n return {\n defaultType: 'default'\n };\n }\n get contentElement() {\n var _this$owner;\n return (_this$owner = this.owner) === null || _this$owner === void 0 ? void 0 : _this$owner.contentElement;\n }\n onChildAdd(item) {}\n onChildRemove(item) {}\n renderChildren() {\n const me = this,\n {\n owner,\n itemCls\n } = me,\n {\n contentElement,\n items\n } = owner,\n ownerItemCls = owner.itemCls,\n itemCount = items === null || items === void 0 ? void 0 : items.length;\n // Need to check that container has widgets, for example TabPanel can have no tabs\n if (itemCount) {\n owner.textContent = false;\n for (let i = 0; i < itemCount; i++) {\n const item = items[i],\n {\n element\n } = item,\n {\n classList\n } = element;\n element.dataset.itemIndex = i;\n // If instantiated by the app developer, external to Container#createWidget\n // a widget will have the b-outer class. Remove that if it's contained.\n if (classList.contains('b-outer')) {\n classList.remove(...Widget.outerCls);\n }\n if (itemCls) {\n classList.add(itemCls);\n }\n if (ownerItemCls) {\n classList.add(ownerItemCls);\n }\n // Only trigger paint if the owner is itself painted, otherwise\n // the outermost Container will cascade the paint signal down.\n item.render(contentElement, Boolean(owner.isPainted));\n }\n }\n me.syncPendingConfigs();\n me.syncChildCount();\n }\n removeChild(child) {\n const me = this,\n {\n element\n } = child,\n {\n owner,\n itemCls\n } = me,\n {\n contentElement\n } = owner,\n ownerItemCls = owner.itemCls;\n // Chrome has turned very fussy recently.\n // If the parent does not contain the child to be removed, it throws.\n if (contentElement.contains(element)) {\n element.remove();\n }\n delete element.dataset.itemIndex;\n if (itemCls) {\n element.classList.remove(itemCls);\n }\n if (ownerItemCls) {\n element.classList.remove(ownerItemCls);\n }\n me.fixChildIndices();\n me.syncChildCount();\n }\n appendChild(child) {\n const {\n element\n } = child,\n {\n owner,\n itemCls\n } = this,\n {\n contentElement\n } = owner,\n ownerItemCls = owner.itemCls;\n element.dataset.itemIndex = owner.indexOfChild(child);\n owner.textContent = false;\n if (itemCls) {\n element.classList.add(itemCls);\n }\n if (ownerItemCls) {\n element.classList.add(ownerItemCls);\n }\n child.render(contentElement, Boolean(owner.isPainted));\n this.syncChildCount();\n }\n insertChild(toAdd, childIndex) {\n const me = this,\n {\n element\n } = toAdd,\n {\n owner,\n itemCls\n } = me,\n {\n contentElement\n } = owner,\n nextSibling = DomHelper.getChild(contentElement, `[data-item-index=\"${childIndex}\"]`),\n ownerItemCls = owner.itemCls;\n owner.textContent = false;\n if (itemCls) {\n element.classList.add(itemCls);\n }\n if (ownerItemCls) {\n element.classList.add(ownerItemCls);\n }\n contentElement.insertBefore(element, nextSibling);\n toAdd.render(null, Boolean(owner.isPainted));\n me.fixChildIndices();\n me.syncChildCount();\n }\n fixChildIndices() {\n this.owner.items.forEach((child, index) => {\n child.element.dataset.itemIndex = index;\n });\n }\n syncChildCount() {\n var _owner$contentElement;\n const {\n owner\n } = this,\n {\n length\n } = owner.items;\n // Special CSS conditions may apply if there's only a single child.\n (_owner$contentElement = owner.contentElement) === null || _owner$contentElement === void 0 ? void 0 : _owner$contentElement.classList[length === 1 ? 'add' : 'remove']('b-single-child');\n }\n /**\n * Registers a layout `config` property that cannot be acted upon at this time but must wait for the `owner` to\n * fully render its elements (in particular the `contentElement`).\n * @param {String} config The name of the config to sync later.\n * @internal\n */\n syncConfigLater(config) {\n const pendingConfigs = this.pendingConfigs || (this.pendingConfigs = []);\n if (!pendingConfigs.includes(config)) {\n pendingConfigs.push(config);\n }\n }\n /**\n * Sets the specified `style` to the value of the config given its `name`.\n * @param {Object} options The name of the config with the value to apply to the given `style`.\n * @param {String} options.name The name of the config with the value to apply to the given `style`.\n * @param {String} options.style The style property to set on the `contentElement`.\n * @param {String[]} [options.classes] A list of config values that should be added as CSS classes.\n * @param {Object} [options.map] An mapping object to convert the config's value to the `style` value.\n * @internal\n */\n syncConfigStyle({\n name,\n style,\n classes,\n map\n }) {\n const me = this,\n baseCls = `b-box-${name}-`,\n // ex: 'b-box-justify-'\n {\n contentElement\n } = me,\n raw = me[name];\n let value = (map === null || map === void 0 ? void 0 : map[raw]) || raw;\n if (contentElement) {\n if (classes) {\n const {\n classList\n } = contentElement;\n classes.forEach(c => {\n if (c !== value) {\n classList.remove(baseCls + c);\n }\n });\n if (classes.includes(value)) {\n classList.add(baseCls + value);\n value = ''; // to remove the inline style\n }\n }\n\n contentElement.style[style] = value;\n } else {\n me.syncConfigLater(name);\n }\n }\n syncPendingConfigs() {\n const me = this,\n {\n pendingConfigs\n } = me;\n let name;\n if (pendingConfigs) {\n me.pendingConfigs = null;\n while (name /* assignment */ = pendingConfigs.pop()) {\n me[me.$meta.configs[name].updater](me[name]);\n }\n }\n }\n}\nLayout.initClass();\nLayout._$name = 'Layout';\n\nlet lastTouchTime = 0;\nconst hasRipple = w => w.ripple;\nclass Ripple extends Widget {\n static get defaultConfig() {\n return {\n old_element: {\n children: [{\n className: 'b-ripple-inner',\n reference: 'rippleElement'\n }]\n },\n element: {\n children: [{\n tag: 'svg',\n class: 'b-ripple-inner',\n reference: 'rippleElement',\n ns: 'http://www.w3.org/2000/svg',\n version: '1.1',\n viewBox: '0 0 100 100',\n children: [{\n reference: 'circleElement',\n tag: 'circle',\n cx: '0',\n cy: '0',\n r: 10\n }]\n }]\n },\n floating: true,\n hideAnimation: false,\n showAnimation: false,\n scrollAction: 'realign',\n color: 'rgba(0,0,0,.3)',\n startRadius: 10,\n radius: 100\n };\n }\n static get $name() {\n return 'Ripple';\n }\n afterConstruct() {\n super.afterConstruct();\n EventHelper.on({\n element: this.rootElement,\n mousedown: 'onRippleControllingEvent',\n thisObj: this,\n capture: true,\n once: true\n });\n }\n onRippleControllingEvent(event) {\n var _me$listenerDetacher;\n const me = this;\n me.show();\n const rippleAnimation = DomHelper.getStyleValue(me.circleElement, 'animationName');\n me.hide();\n (_me$listenerDetacher = me.listenerDetacher) === null || _me$listenerDetacher === void 0 ? void 0 : _me$listenerDetacher.call(me);\n // If our theme supports ripples, add our listeners\n if (rippleAnimation && rippleAnimation !== 'none') {\n me.listenerDetacher = EventHelper.on({\n // Trap all mousedowns and see if the encapsulating Component is configured to ripple\n mousedown: {\n element: me.rootElement,\n capture: true,\n handler: 'onMousedown'\n },\n touchstart: {\n element: me.rootElement,\n capture: true,\n handler: 'onTouchStart'\n },\n // Hide at the end of the ripple\n animationend: {\n element: me.circleElement,\n handler: 'onAnimationEnd'\n },\n thisObj: me\n });\n // If this is the first mousedown, start listening to theme changes and trigger ripple manually\n if (event.type === 'mousedown') {\n me.onMousedown(event);\n GlobalEvents$1.on({\n theme: 'onRippleControllingEvent',\n thisObj: this\n });\n }\n }\n }\n onTouchStart(event) {\n lastTouchTime = performance.now();\n this.handleTriggerEvent(event);\n }\n onMousedown(event) {\n // We need to prevent a touchend->mousedown simulated mousedown from triggering a ripple.\n // https://developer.mozilla.org/en-US/docs/Web/API/Touch_events/Supporting_both_TouchEvent_and_MouseEvent\n if (performance.now() - lastTouchTime > 200) {\n this.handleTriggerEvent(event);\n }\n }\n handleTriggerEvent(event) {\n const targetWidget = Widget.fromElement(event.target, hasRipple);\n if (targetWidget) {\n const rippleCfg = targetWidget.ripple,\n target = rippleCfg.delegate ? event.target.closest(rippleCfg.delegate) : targetWidget.focusElement || targetWidget.element;\n if (target) {\n const ripple = ObjectHelper.assign({\n event,\n target,\n radius: this.radius\n }, rippleCfg);\n // The clip option is specified as a string property name or delegate\n if (typeof ripple.clip === 'string') {\n ripple.clip = targetWidget[ripple.clip] || event.target.closest(ripple.clip);\n // Not inside an instance of the clip delegate, then no ripple\n if (!ripple.clip) {\n return;\n }\n }\n this.ripple(ripple);\n }\n }\n }\n ripple({\n event,\n point = EventHelper.getClientPoint(event),\n target = event.target,\n clip = target,\n radius = this.radius,\n color = this.color\n }) {\n this.clip = clip;\n clip = Rectangle.from(clip, null, true);\n const me = this,\n centreDelta = clip.getDelta(point),\n rippleStyle = me.rippleElement.style,\n circleElement = me.circleElement,\n borderRadius = DomHelper.getStyleValue(target, 'border-radius');\n me.hide();\n rippleStyle.transform = `translateX(${centreDelta[0]}px) translateY(${centreDelta[1]}px)`;\n rippleStyle.height = rippleStyle.width = `${radius}px`;\n me.element.style.borderRadius = borderRadius;\n circleElement.setAttribute('r', radius);\n circleElement.setAttribute('fill', color);\n // Show aligned center to center with our clipping region.\n me.showBy({\n target: clip,\n align: 'c-c',\n matchSize: true\n });\n }\n // When fully expanded, it's all over.\n onAnimationEnd(event) {\n if (event.animationName === 'b-ripple-expand') {\n this.hide();\n }\n }\n}\nWidget.RippleClass = Ripple;\nRipple._$name = 'Ripple';\n\n/**\n * @module Core/widget/Container\n */\nconst emptyObject$7 = Object.freeze({}),\n {\n isArray\n } = Array,\n returnWeight = i => i.weight,\n // Allowing string weights (used by subgrids for backwards compatibility)\n sortByWeight = ({\n weight: a\n }, {\n weight: b\n }) => {\n if (typeof a === 'string' || typeof b === 'string') {\n return String(a).localeCompare(String(b));\n }\n // Items without weight sort last\n return (a !== null && a !== void 0 ? a : Number.MAX_SAFE_INTEGER) - (b !== null && b !== void 0 ? b : Number.MAX_SAFE_INTEGER);\n },\n isNotHidden = w => w && !w.hidden,\n stylesToCheck = ['display', 'flex-direction'],\n boxLayouts = {\n default: 1,\n box: 1\n };\n/**\n * Widget that can contain other widgets. Layout is flexbox by default, see the {@link #config-layout} config.\n *\n * ```javascript\n * // create a container with two widgets\n * let container = new Container({\n * items : [\n * { type : 'text', label : 'Name' },\n * { type : 'number', label : 'Score' }\n * ]\n * });\n * ```\n *\n * Containers can have child widgets added, or removed during their lifecycle to accommodate business needs.\n *\n * For example:\n *\n * ```javascript\n * myTaskPopup.on({\n * beforeShow() {\n * if (task.type === task.MASTER) {\n * // Insert the childTask multiselect before the masterTask field\n * myPopup.insert(childTaskMultiselect, masterTaskField)\n *\n * // We don't need this for master tasks\n * myPopup.remove(masterTaskField);\n * }\n * else {\n * // Insert the masterTask combo before the childTask multiselect\n * myPopup.insert(masterTaskField, childTaskMultiselect)\n *\n * // We don't need this for child tasks\n * myPopup.remove(childTaskMultiselect);\n * }\n * }\n * });\n * ```\n *\n * @extends Core/widget/Widget\n * @classType container\n * @inlineexample Core/widget/Container.js\n */\nclass Container extends Widget {\n static get $name() {\n return 'Container';\n }\n // Factoryable type name\n static get type() {\n return 'container';\n }\n static get configurable() {\n return {\n /**\n * An object containing typed child widget config objects or Widgets. May also be specified\n * as an array.\n *\n * If configured as an Object, the property names are used as the child component's\n * {@link Core.widget.Widget#config-ref} name, and the value is the child component's config object.\n *\n * ```javascript\n *\n * class MyContainer extends Container {\n * static get configurable() {\n * return {\n * items : {\n * details : {\n * type : 'panel',\n * ....\n * },\n * button : {\n * type : 'button',\n * text : 'Save'\n * }\n * }\n * }\n * }\n * }\n *\n * new MyContainer({\n * title : 'Test Container',\n * floating : true,\n * centered : true,\n * width : 600,\n * height : 400,\n * layout : 'fit',\n * items : {\n * button : {\n * disabled : true\n * },\n * details : {\n * title : 'More coolness',\n * html : 'Details content'\n * }\n * }).show();\n * ```\n *\n * The order of the child widgets is determined by the order they are defined in `items`, but can also be\n * affected by configuring a {@link Core.widget.Widget#config-weight} on one or more widgets.\n *\n * If you want to customize child items of an existing class, you can do this using the child widget\n * 'ref' identifier (useful for reconfiguring Event Editor in Scheduler / Gantt):\n *\n * ```javascript\n * new MyCustomTabPanel({\n * items : {\n * // Reconfigure tabs\n * firstTab : {\n * title : 'My custom title'\n * },\n * secretTab : null // hide this tab\n * }\n * }).show();\n * ```\n *\n * @config {Object|Object[]|Core.widget.Widget[]}\n * @category Content\n */\n items: null,\n /**\n * An array of {@link #config-items child item} _config objects_ which is to be converted into\n * instances only when this Container is rendered, rather than eagerly at construct time.\n *\n * _This is mutually exclusive with the {@link #config-items} config._\n *\n * @config {Object|Object[]|Core.widget.Widget[]}\n * @category Content\n */\n lazyItems: {\n $config: ['lazy'],\n value: null\n },\n /**\n * A config object containing default settings to apply to all child widgets.\n * @config {Object}\n * @category Content\n */\n defaults: null,\n defaultType: 'widget',\n /**\n * The CSS style properties to apply to the {@link Core.widget.Widget#property-contentElement}.\n *\n * By default, a Container's {@link Core.widget.Widget#property-contentElement} uses flexbox layout, so this\n * config may contain the following properties:\n *\n * - flexDirection default '`row`'\n * - flexWrap\n * - flexFlow\n * - justifyContent\n * - alignItems\n * - alignContent\n * - placeContent\n * @prp {Object}\n * @category Layout\n */\n layoutStyle: null,\n /**\n * An optional CSS class to add to child items of this container.\n * @config {String}\n * @category CSS\n */\n itemCls: null,\n /**\n * The {@link #config-layout} as an instance of {@link Core.widget.layout.Layout}.\n * This is a helper class which adds and removes child widgets to this Container's\n * DOM and applies CSS classes based upon its requirements.\n *\n * The {@link Core.widget.layout.Card card} layout provides for showing one child\n * widget at a time, and provides a switching API to change which child widget is\n * currently active.\n * @member {Core.widget.layout.Layout} layout\n * @category Layout\n */\n /**\n * The short name of a helper class which manages rendering and styling of child items.\n *\n * Or a config object which includes a `type` property which specifies which type\n * of layout to use, and how to configure that layout.\n *\n * By default, the only special processing that is applied is that the Container class's\n * {@link #config-itemCls} is added to child items.\n *\n * Containers use CSS flexbox in its default configuration to arrange child items. You may either use the\n * {@link #config-layoutStyle} configuration to tune how child items are layed out, or use one of the built\n * in helper classes which include:\n *\n * - `fit` A single child item is displayed fitting exactly into the\n * {@link Core.widget.Widget#property-contentElement}.\n * - `card` Child items are displayed one at a time, size to fit the\n * {@link Core.widget.Widget#property-contentElement} and are slid in from the side when activated.\n * - `box` Child items are layed out using flexbox.\n *\n * For example:\n * ```javascript\n * {\n * id : 'myContainer',\n * // Our child items flow downwards and are stretched to fill our width\n * layout : {\n * type : 'box',\n * direction : 'column'\n * align : 'stretch'\n * }\n * }\n * @config {String|Object}\n * @category Layout\n */\n layout: {\n type: 'default'\n },\n // TODO: deprecate namedItems, use items instead\n /**\n * An object containing named config objects which may be referenced by name in any {@link #config-items}\n * object. For example, a specialized {@link Core.widget.Menu Menu} subclass may have a `namedItems` default\n * value defined like this:\n *\n * ```javascript\n * namedItems : {\n * removeRow : {\n * text : 'Remove row',\n * onItem() {\n * this.ownerGrid.remove(this.ownerGrid.selectedRecord);\n * }\n * }\n * }\n * ```\n *\n * Then whenever that subclass is instantiated and configured with an {@link #config-items} object, the\n * items may be configured like this:\n *\n * ```javascript\n * items : {\n * removeRow : true, // The referenced namedItem will be applied to this\n * otherItemRef : {\n * text : 'Option 2',\n * onItem() {\n * }\n * }\n * }\n * ```\n * @config {Object}\n * @category Content\n */\n namedItems: null,\n /**\n * When set to `true`, this widget is considered as a whole when processing {@link Core.widget.Toolbar}\n * overflow. When `false`, this widget's child items are considered instead.\n *\n * When set to the string `'none'`, this widget is ignored by overflow processing. This option should be\n * used with caution as it prevents the overflow algorithm from moving such widgets into the overflow\n * popup which may result in not clearing enough space to avoid overflowing the toolbar.\n * @config {Boolean|String}\n * @default false\n * @category Layout\n * @internal\n */\n overflowable: {\n value: null,\n default: false,\n $config: null\n },\n /**\n * Specify `true` for a container used to show text markup. It will apply the CSS class `b-text-content`\n * which specifies a default max-width that makes long text more readable.\n *\n * This CSS class is automatically removed if the container adds/defines child Widgets.\n * @config {Boolean}\n * @default\n * @category Content\n */\n textContent: true,\n /**\n * Record whose values will be used to populate fields in the container.\n * @config {Object}\n * @internal\n */\n record: null,\n /**\n * Update assigned {@link #config-record} automatically on field changes\n * @config {Boolean}\n */\n autoUpdateRecord: null,\n /**\n * Update fields if the {@link #config-record} changes\n * @config {Boolean}\n * @internal\n */\n autoUpdateFields: null,\n /**\n * Specify `true` to make this container hide when it has no visible children (Either empty\n * or all children hidden).\n *\n * Container will show itself when there are visible children, ie: hidden children are\n * shown, or new visible children are added.\n * @config {Boolean}\n * @default\n * @category Layout\n */\n hideWhenEmpty: null,\n contentElMutationObserver: {\n $config: ['lazy', 'nullify'],\n value: true\n },\n /**\n * Specify `true` to isolate record changes to this container and its ancestors. Prevents record\n * updates from propagating up from here and also prevents record updates from parent from\n * propagating down to us.\n *\n * @config {Boolean}\n * @default false\n * @internal\n */\n isolateFields: false,\n /**\n * Can be set to `true` to make a focus of a focusable encapsulating element rely\n * focus down into a focusable child. This is normally `false` to allow mousedown\n * to begin text selection in Popups.\n * @internal\n */\n focusDescendant: false,\n // Our own setValues/getValues system should not set/get HTML content\n defaultBindProperty: null,\n /**\n * A {@link #function-query} selector function which can identify the descendant widget to which\n * focus should be directed by default.\n *\n * By default, the first focusable descendant widget is chosen. This may direct focus to a different\n * widget:\n *\n * ```javascript\n * new Popup({\n * title : 'Details',\n * width : '25em',\n * centered : true,\n * modal : true,\n *\n * // Focus goes straight to OK button in the bottom toolbar on show\n * defaultFocus : w => w.ref ==='okButton',\n * items : {\n * nameField : {\n * type : 'textfield',\n * label : 'Name'\n * },\n * ageField : {\n * type : 'numberfield',\n * label : 'Name'\n * }\n * },\n * bbar : {\n * items : {\n * okButton : {\n * text : 'OK',\n * handler : okFunction\n * },\n * cncelButton : {\n * text : 'Cancel',\n * handler : cancelFunction\n * }\n * }\n * }\n * }).show();\n * ```\n * @config {Function}\n */\n defaultFocus: null\n };\n }\n static get prototypeProperties() {\n return {\n // These classes have opinions about how fields should fill the space, so allow them to be replaced by the\n // less opinionated b-hbox/b-vbox classes when that is not desired. Using \":not(.b-toolbar-content)\" in\n // the CSS does not scale now that FieldSet wants similar treatment... adding more \":not()\"s is not only a\n // messy approach, it increases the selector specificity and causes interference with other selectors (e.g.\n // TimePicker's number field rules).\n flexRowCls: 'b-flex-row',\n flexColCls: 'b-flex-column',\n /**\n * @member {Boolean} initialItems\n * This property is `true` until the container's initial `items` config has been processed. This property\n * is set to `false` by the `updateItems` method.\n * @readonly\n * @internal\n */\n initialItems: true\n };\n }\n /**\n * The {@link Core.data.Model record} to be applied to the fields contained in this Container. Any descendant\n * widgets of this Container with a `name` property will have its value set to the value of that named property of\n * the record. If no record is passed, the widget has its value set to `null`.\n * @member {Core.data.Model} record\n */\n startConfigure(config) {\n // Set a flag so that code can test for presence of items.\n // Widgets which render child widgets outside of the Container scheme\n // can set this flag (eg Panels with tools and tbar).\n const items = config.items || config.lazyItems;\n if (!(this.hasItems = Boolean(items && (isArray(items) ? items : Object.keys(items)).length))) {\n this.initialItems = false; // we won't be running updateItems, so clear this flag now\n }\n\n super.startConfigure(config);\n }\n /**\n * Returns the first widget in this Container.\n * @property {Core.widget.Widget}\n * @readonly\n */\n get firstItem() {\n return this.getAt(0);\n }\n /**\n * Returns the last widget in this Container.\n * @property {Core.widget.Widget}\n * @readonly\n */\n get lastItem() {\n return this.getAt(-1);\n }\n /**\n * Returns the widget at the specified `index` in this Container.\n * @param {Number} index The index of the widget to return. Negative numbers index for the last item. For example,\n * `index = -1` returns the last matching item, -2 the 2nd to last matching item etc..\n * @returns {Core.widget.Widget} The requested widget.\n */\n getAt(index) {\n return this.ensureItems().at(index);\n }\n /**\n * Removes the passed child/children from this Container.\n * @param {...Core.widget.Widget} toRemove The child or children to remove.\n * @returns {Core.widget.Widget|Core.widget.Widget[]} All the removed items. An array if multiple items\n * were removed, otherwise, just the item removed.\n */\n remove(...toRemove) {\n let returnArray = true;\n if (toRemove.length === 1) {\n if (isArray(toRemove[0])) {\n toRemove = toRemove[0];\n } else {\n returnArray = false;\n }\n }\n const me = this,\n {\n _items\n } = me,\n result = [];\n for (let i = 0; i < toRemove.length; i++) {\n const childToRemove = toRemove[i];\n if (_items.includes(childToRemove)) {\n _items.remove(childToRemove);\n me.layout.removeChild(childToRemove);\n result.push(childToRemove);\n me.onChildRemove(childToRemove);\n }\n }\n return returnArray ? result : result[0];\n }\n /**\n * Removes all children from this Container.\n * @returns {Core.widget.Widget[]} All the removed items.\n */\n removeAll() {\n return this.remove(this.items);\n }\n /**\n * Appends the passed widget / widgets or config(s) describing widgets to this Container.\n *\n * If the widgets specify a `weight`, they are inserted at the correct index compared to the existing items weights.\n *\n * @param {Object|Object[]|Core.widget.Widget|Core.widget.Widget[]} toAdd The child or children instances (or config objects) to add.\n * @returns {Core.widget.Widget|Core.widget.Widget[]} All the added widgets. An array if multiple items\n * were added, otherwise just the item added.\n */\n add(...toAdd) {\n const me = this,\n items = me.ensureItems(),\n result = [];\n let returnArray = true,\n childToAdd,\n i,\n index;\n if (toAdd.length === 1) {\n if (isArray(toAdd[0])) {\n toAdd = toAdd[0];\n } else {\n returnArray = false;\n }\n }\n for (i = 0; i < toAdd.length; i++) {\n var _childToAdd;\n childToAdd = toAdd[i];\n // Items with weight are inserted at correct index\n if (((_childToAdd = childToAdd) === null || _childToAdd === void 0 ? void 0 : _childToAdd.weight) != null) {\n // Cannot use cached items, weights might be unordered in set being added\n index = ArrayHelper.findInsertionIndex(childToAdd, items.values, sortByWeight);\n result.push(me.insert(childToAdd, index));\n }\n // Those without are appended\n else if (childToAdd) {\n if (childToAdd.isWidget) {\n childToAdd.parent = me;\n } else {\n childToAdd = me.createWidget(childToAdd);\n }\n if (!items.includes(childToAdd)) {\n items.add(childToAdd);\n me.onChildAdd(childToAdd);\n me.layout.appendChild(childToAdd);\n result.push(childToAdd);\n }\n }\n }\n return returnArray ? result : result[0];\n }\n ensureItems() {\n const me = this;\n me.getConfig('items');\n me.getConfig('lazyItems');\n // Force creation of our items Bag\n if (!me._items) {\n me.items = [];\n }\n return me._items;\n }\n /**\n * Inserts the passed widget into this Container at the specified position.\n * @param {Core.widget.Widget} toAdd The child to insert.\n * @param {Number|Core.widget.Widget} index The index to insert at or the existing child to insert before.\n * @returns {Core.widget.Widget} The added widget.\n */\n insert(toAdd, index) {\n const me = this,\n items = me.ensureItems();\n if (toAdd instanceof Widget) {\n toAdd.parent = me;\n } else {\n toAdd = me.createWidget(toAdd);\n }\n if (items.includes(index)) {\n index = me.indexOfChild(index);\n }\n index = Math.min(index, items.count);\n const newValues = items.values;\n newValues.splice(index, 0, toAdd);\n items.values = newValues;\n // Register inserted item\n me.onChildAdd(toAdd);\n me.layout.insertChild(toAdd, index);\n return toAdd;\n }\n indexOfChild(child) {\n return this.items.indexOf(child);\n }\n changeLazyItems(lazyItems) {\n this.items = lazyItems;\n this.layout.renderChildren();\n }\n changeItems(items, oldItems) {\n const me = this,\n newItems = [],\n result = new Bag();\n if (isArray(items)) {\n me.processItemsArray(items, newItems);\n } else if (items) {\n me.processItemsObject(items, me.namedItems, newItems);\n }\n // Allow child items to have a weight to establish their order\n if (newItems.some(returnWeight)) {\n newItems.sort(sortByWeight);\n }\n result.add(newItems);\n // Remove previous child payload if any\n if (oldItems) {\n oldItems.forEach(w => {\n me.remove(w);\n // Destroy outgoing-only widgets which we created.\n if (!result.includes(w) && w._createdBy === me) {\n w.destroy();\n }\n });\n }\n return result;\n }\n afterConstruct() {\n const {\n rtl\n } = this,\n {\n classList\n } = this.contentElement;\n // Content element must get class.\n // Panels and Toolbars use an inner element to arrange child items.\n classList.toggle('b-rtl', rtl === true);\n classList.toggle('b-ltr', rtl === false);\n }\n updateRtl(rtl) {\n super.updateRtl(rtl);\n const {\n contentElement\n } = this;\n // contentElement may not exist at config time. The afterConstruct handles it in those cases.\n if (contentElement) {\n // Content element must get class.\n // Panels and Toolbars use an inner element to arrange child items.\n contentElement.classList.toggle('b-rtl', rtl === true);\n contentElement.classList.toggle('b-ltr', rtl === false);\n }\n }\n updateItems(items, oldItems) {\n let index = 0;\n items.forEach(item => {\n // no \"index\" argument from Bag\n this.onChildAdd(item);\n // If this is *change* to items from actual old items, when the old items is not a placeholder inserted\n // from very early items access\n if (oldItems && !oldItems.temporary) {\n this.layout.insertChild(item, index);\n }\n ++index;\n });\n this.initialItems = false;\n }\n updateHideWhenEmpty() {\n this.syncChildCount(this.rendered);\n }\n /**\n * A property, which, when *read*, returns an array of the child items of this container in rendered order.\n *\n * This property may also be *set* to change the child items of the container. Just as in the\n * {@link #config-items initial items configuration}, the new value may either be an array of\n * Widgets/Widget configs or an object.\n *\n * If specified as an Object, the property names are used as the child Widget's\n * {@link Core.widget.Widget#config-ref ref} name, and the value is the child Widget/Widget config.\n *\n * When setting this, any items which are *only* in the outgoing child items which were created\n * by this container from raw config objects are destroyed.\n *\n * Usage patterns:\n *\n * ```javascript\n * myContainer.items = {\n * name : {\n * type : 'textfield',\n * label : 'User name'\n * },\n * age : {\n * type : 'numberfield',\n * label : 'User age'\n * }\n * };\n * ```\n *\n * or\n *\n * ```javascript\n * myContainer.items = [{\n * ref : 'name',\n * type : 'textfield',\n * label : 'User name'\n * },\n * ref : 'age',\n * type : 'numberfield',\n * label : 'User age'\n * }];\n * ```\n * @property {Core.widget.Widget[]}\n * @accepts {Core.widget.Widget[]|Object}\n */\n get items() {\n const me = this;\n // If we are being asked for items, ingest lazyItems.\n me.getConfig('lazyItems');\n // The documented API for items is an Array.\n // Internal code should access _items\n if (!me._items) {\n // Currently initializing items, flag set by the config system\n if (me.initializingItems) {\n // This is a created array. User may mutate it.\n return [];\n }\n // Accessing items very early, not set up yet. Need a placeholder\n me._items = new Bag();\n me._items.temporary = true;\n }\n // This is the Collection's array. User may not mutate it.\n return me._items.values;\n }\n processItemsArray(items, result) {\n const len = items.length;\n let i, item;\n for (i = 0; i < len; i++) {\n item = items[i];\n if (item instanceof Widget) {\n item.parent = this;\n item.element.classList.remove(...Widget.outerCls);\n } else {\n item = this.createWidget(item);\n }\n // If the widget creation function returns null, nothing to add\n if (item) {\n if (item.ref || item.id) {\n // Add early to widgetMap, to allow using 'up.widgetMap.ref' in later siblings configs\n this.addDescendant(item);\n }\n result.push(item);\n }\n }\n }\n processItemsObject(items, namedItems, result) {\n let item, ref;\n for (ref in items) {\n item = items[ref];\n // It might come in as itemRef : false\n if (item) {\n // If this class or instance has a \"namedItems\" object\n // named by this ref, then use it as the basis for the item\n if (namedItems && ref in namedItems) {\n item = typeof item === 'object' ? ObjectHelper.merge(ObjectHelper.clone(namedItems[ref]), item) : namedItems[ref];\n }\n // Allow namedItems to be overridden with itemKey : false to indicate unavailability of an item\n if (item) {\n if (item instanceof Widget) {\n item.parent = this;\n } else {\n if (item instanceof Object) {\n item.ref = ref;\n }\n item = this.createWidget(item);\n }\n // If the widget creation function returns null, nothing to add\n if (item) {\n item.ref = ref;\n // Add early to widgetMap, to allow later siblings to use 'up.'\n this.addDescendant(item);\n result.push(item);\n }\n }\n }\n }\n }\n onChildAdd(item) {\n // Don't just assign the property across since the default value is undefined\n // which means false. Only set to true if we are readOnly\n if (item.innerItem && this.readOnly && !item.ignoreParentReadOnly) {\n item.readOnly = true;\n }\n this.onChildAddLayout(item);\n if (item.ref || item.id) {\n for (let current = this; current; current = current.parent) {\n // Silently add the descendant to the ancestor's widgetMap without kicking off\n // the ancestor's items processing by directly accessing the widgetMap property.\n current.addDescendant(item);\n }\n }\n this.syncChildCount(true);\n }\n onChildAddLayout(item) {\n // Set innerItem=false on an item that should not be managed by the layout...\n if (item.innerItem) {\n // Keep layout informed of child item state\n this.layout.onChildAdd(item);\n }\n }\n onChildHide(hidden) {\n var _this$_items;\n super.onChildHide(hidden);\n // Only sync when it's a direct child, not just the \"owner\" link of a floater\n if ((_this$_items = this._items) !== null && _this$_items !== void 0 && _this$_items.includes(hidden)) {\n this.syncChildCount(true);\n }\n }\n onChildShow(shown) {\n var _this$_items2;\n super.onChildShow(shown);\n // Only sync when it's a direct child, not just the \"owner\" link of a floater\n if ((_this$_items2 = this._items) !== null && _this$_items2 !== void 0 && _this$_items2.includes(shown)) {\n this.syncChildCount(true);\n }\n }\n syncChildCount(enforceHideWhenEmpty) {\n // If called during configuration, the element may not be available because\n // some non-item widgets (eg, Tools) instantiate and declare themselves through\n // onChildAdd before the element is set.\n // But also there may be no items because of lazyItems.\n // So do the initial sync at render time.\n if (!this.isConfiguring) {\n const me = this,\n {\n // This must be our direct child item payload, not all items owned by this Container.\n // It's used to sync the b-first-visible-child/b-last-visible-child class presence.\n items,\n hasItems\n } = me,\n visibleItems = items.filter(isNotHidden),\n {\n length: visibleLength\n } = visibleItems;\n /**\n * @member {Number} visibleChildCount The number of *visible* child items shown in this Container.\n * @readonly\n * @category Widget hierarchy\n */\n me.visibleChildCount = visibleLength;\n // Do not toggle visibility on render - we're just here to sync class names.\n // hiding and showing must only depend upon children being dynamically\n // hidden or shown.\n if (me.hideWhenEmpty && enforceHideWhenEmpty) {\n const shouldHide = Boolean(!visibleLength);\n if (Boolean(me._hidden) !== shouldHide) {\n me.hidden = shouldHide;\n }\n }\n items.forEach(childItem => childItem.element.classList.remove('b-last-visible-child', 'b-first-visible-child'));\n if (visibleLength) {\n visibleItems[0].element.classList.add('b-first-visible-child');\n visibleItems[visibleLength - 1].element.classList.add('b-last-visible-child');\n }\n // Keep hasItems property up to date. It's used by the isFocusable getter.\n // Note that because this is to do with focusability, this includes all\n // possible items, not just contained items.\n me.hasItems = Boolean(me.childItems.length);\n me.contentElement.classList[visibleLength ? 'remove' : 'add']('b-no-visible-children');\n // Reevaluate whether we should have the b-text-content class\n if (!me.isComposable) {\n me.updateTextContent(me._textContent);\n } else if (hasItems !== me.hasItems) {\n me.recompose();\n }\n }\n }\n syncFlexDirection() {\n const me = this,\n {\n contentElement,\n flexColCls,\n flexRowCls\n } = me,\n classList = new DomClassList(contentElement.className),\n styles = DomHelper.getStyleValue(contentElement, stylesToCheck);\n // We might not be flexing at all anymore.\n classList[flexRowCls] = classList[flexColCls] = 0;\n // If we are, add a flag class to indicate direction\n if (styles.display === 'flex') {\n classList[styles['flex-direction'] === 'row' ? flexRowCls : flexColCls] = 1;\n }\n // Will only mutate the DOM if there are changes to apply.\n // We don't want to cause an infinite loop through our MutationObserver.\n DomHelper.syncClassList(contentElement, classList);\n }\n addDescendant(item) {\n const ref = item.ref || item.id,\n widgetMap = this._widgetMap || (this._widgetMap = {});\n if (!widgetMap[ref]) {\n widgetMap[ref] = item;\n }\n }\n onChildRemove(item) {\n const me = this,\n ref = item.ref || item.id;\n if (ref) {\n for (let current = me; current; current = current.parent) {\n if (current.widgetMap[ref] === item) {\n delete current.widgetMap[ref];\n }\n }\n }\n // Keep layout informed of child item state\n me.layout.onChildRemove(item);\n me.syncChildCount(true);\n }\n /**\n * An object which contains a map of descendant widgets keyed by their {@link Core.widget.Widget#config-ref}.\n * All descendant widgets will be available in the `widgetMap`.\n * @property {Object}\n * @readonly\n * @category Widget hierarchy\n */\n get widgetMap() {\n if (!this._widgetMap) {\n this._widgetMap = {};\n }\n // Force evaluation of the configured items by the getter\n // so that configs are promoted to widgets and the widgetMap\n // is created, and if there are widgets, populated.\n if (!this.initializingItems) {\n this.getConfig('items');\n }\n return this._widgetMap;\n }\n changeRecord(record) {\n // The config system's non-change vetoing must be bypassed.\n // The record might have changed, or the destination fields may be out of sync.\n this._record = record == null ? emptyObject$7 : null;\n return record;\n }\n updateRecord(record) {\n var _me$recordUpdateDetac;\n const me = this;\n (_me$recordUpdateDetac = me.recordUpdateDetacher) === null || _me$recordUpdateDetac === void 0 ? void 0 : _me$recordUpdateDetac.call(me);\n /**\n * Fired before this container will load record values into its child fields. This is useful if you\n * want to modify the UI before data is loaded (e.g. set some input field to be readonly)\n * @event beforeSetRecord\n * @param {Core.widget.Container} source The container\n * @param {Core.data.Model} record The record\n */\n me.trigger('beforeSetRecord', {\n record\n });\n me.setValues(record, {\n onlyName: true,\n highlight: Boolean(me.$highlight)\n });\n if (me.autoUpdateFields && record !== null && record !== void 0 && record.firstStore) {\n me.recordUpdateDetacher = record.firstStore.on({\n update: me.onRecordUpdated,\n thisObj: me\n });\n }\n }\n setRecord(record, highlightChanges) {\n this.$highlight = highlightChanges;\n this.record = record;\n this.$highlight = false;\n }\n onRecordUpdated({\n record\n }) {\n if (record === this.record) {\n this.setValues(this.record, true, true);\n }\n }\n /**\n * A function called by descendant widgets after they trigger their 'change' event, in reaction to field changes.\n * By default implements the functionality for the `autoUpdateRecord` config.\n *\n * @param {Object} params Normally the event params used when triggering the 'change' event\n * @internal\n */\n onFieldChange({\n source,\n userAction\n }) {\n // When configured with `autoUpdateRecord`, changes from descendant fields/widgets are applied to the loaded\n // record using the fields `name`. Only changes from valid fields will be applied\n if (this.autoUpdateRecord && userAction) {\n const {\n record\n } = this,\n {\n name,\n isValid,\n value\n } = source;\n if (record && name && isValid) {\n record[name] = value;\n }\n }\n }\n getValues(filterFn) {\n const values = {};\n this.eachWidget((widget, control) => {\n // Do not drill down when reaching a container that isolates its fields\n if (widget.isolateFields) {\n control.down = false;\n } else if ('name' in widget && (!filterFn || filterFn(widget))) {\n values[widget.name] = widget.value;\n }\n }, true);\n return values;\n }\n get hasNoChildren() {\n // If we have *uningested* lazyItems, use them to find our items length.\n // In that case we must not cause ingestion of the lazyItems by referencing this.items.\n // If we have items, then only those that are visible have any bearing.\n // Popup also has to consult this property to decide on its CSS classes.\n const me = this,\n {\n items,\n lazyItems\n } = me.initialConfig,\n itemsArray = items && (isArray(items) ? items : ObjectHelper.values(items)),\n lazyItemsArray = lazyItems && (isArray(lazyItems) ? lazyItems : ObjectHelper.values(lazyItems)),\n // avoid triggering items initialization\n whichItems = me.isConfiguring ? lazyItemsArray || itemsArray : me.items;\n return !(whichItems !== null && whichItems !== void 0 && whichItems.filter(isNotHidden).length);\n }\n afterRecompose() {\n super.afterRecompose();\n this.realign();\n }\n updateTextContent(textContent) {\n const me = this;\n // Add the text content class if we have no visible immediate item children.\n if (!me.isComposable) {\n me.contentElement.classList[textContent && me.hasNoChildren ? 'add' : 'remove']('b-text-content');\n // Depending on CSS settings around how this widget handles text content and widthing\n // we *may* have to realign. Realign only goes ahead if we're visible and floating.\n if (me.rendered) {\n me.realign();\n }\n }\n }\n updateLayoutStyle(layoutStyle) {\n DomHelper.applyStyle(this.contentElement, layoutStyle);\n }\n updateElement(element) {\n super.updateElement(...arguments);\n if (element) {\n const {\n classList\n } = this.contentElement,\n {\n containerCls\n } = this.layout;\n // Ensure contentElement gets its full complement of class names upon element creation\n classList.add('b-content-element');\n if (containerCls) {\n classList.add(containerCls);\n }\n }\n }\n onPaint() {\n var _super$onPaint;\n (_super$onPaint = super.onPaint) === null || _super$onPaint === void 0 ? void 0 : _super$onPaint.call(this, ...arguments);\n // Bring the lazy config into existence now that we have a layout.\n this.getConfig('contentElMutationObserver');\n }\n changeContentElMutationObserver(contentElMutationObserver, oldContentElMutationObserver) {\n if (oldContentElMutationObserver) {\n // Clear the queue. Any remaining notifications will be undeliverable.\n oldContentElMutationObserver.takeRecords();\n oldContentElMutationObserver.disconnect();\n }\n // We need to monitor our contentElement for attribute changes.\n // Changes to the inline style, or the classList/className will trigger this.\n // At that point we can sync our layout flag classes.\n if (contentElMutationObserver) {\n // NOTE: Do not hoist the vars, that will pull things in during destruction\n const me = this,\n {\n element,\n contentElement\n } = me;\n contentElMutationObserver = new MutationObserver(mutations => me.onContentElMutation(mutations));\n contentElMutationObserver.observe(contentElement, {\n attributes: true\n });\n // If our contentElement is an inner element (eg Panel, Toolbar)\n // then styling might apply from classes on the outer element\n // so monitor that too.\n if (contentElement !== element) {\n contentElMutationObserver.observe(element, {\n attributes: true\n });\n }\n me.syncFlexDirection();\n }\n return contentElMutationObserver;\n }\n onContentElMutation() {\n // We can only do it if we are visible, otherwise the computed style won't work\n // and the classes will be removed. Doesn't need doing for card and fit layouts.\n if (boxLayouts[this.layout.type] && this.isVisible) {\n this.syncFlexDirection();\n }\n }\n changeLayout(config, existingLayout) {\n return Layout.reconfigure(existingLayout, config, {\n owner: this,\n defaults: {\n owner: this\n }\n });\n }\n // Items to iterate over\n get childItems() {\n return this.items;\n }\n /**\n * Returns a directly contained widget by id\n * @param {String} id The widget id\n * @returns {Core.widget.Widget}\n */\n getWidgetById(id) {\n return this.widgetMap[id];\n }\n /**\n * This function is called prior to creating widgets, override it in subclasses to allow containers to modify the\n * configuration of each widget. When adding a widget to a container hierarchy each parent containers\n * `processWidgetConfig` will be called. Returning false from the function prevents the widget from being added at\n * all.\n */\n processWidgetConfig(widget) {}\n /**\n * This method combines container {@link #config-defaults}\n * @param {Object} widgetConfig\n * @param {String|Function} [type] The type of widget described by `widgetConfig`.\n * @returns {Object}\n * @internal\n */\n setupWidgetConfig(widgetConfig, type) {\n const me = this;\n // A string becomes the defaultType (see below) with the html set to the string.\n if (typeof widgetConfig === 'string') {\n widgetConfig = {\n html: widgetConfig\n };\n }\n // An element is encapsulated by a Widget\n else if (widgetConfig.nodeType === Element.ELEMENT_NODE) {\n widgetConfig = {\n element: widgetConfig,\n id: widgetConfig.id\n };\n }\n if (typeof type === 'string' || !type && (type /* assignment */ = widgetConfig.type)) {\n type = Widget.resolveType(type, true);\n }\n // widgetConfig = ObjectHelper.assign({}, me.defaults, widgetConfig, { parent : me });\n widgetConfig = (type || Widget).mergeConfigs(me.defaults, widgetConfig, {\n parent: me\n });\n for (let ancestor = widgetConfig.parent; ancestor; ancestor = ancestor.parent) {\n if (ancestor.processWidgetConfig(widgetConfig) === false) {\n return null;\n }\n }\n if (me.trigger('beforeWidgetCreate', {\n widgetConfig\n }) === false) {\n return null;\n }\n return widgetConfig;\n }\n /**\n * This function converts a Widget config object into a Widget.\n * @param {Object} widget A Widget config object.\n * @internal\n */\n createWidget(widget) {\n const result = Widget.create(this.setupWidgetConfig(widget), this.defaultType);\n // If we created a widget from a config object, then upon items replacement\n // we must destroy outgoing widgets.\n result && (result._createdBy = this);\n return result;\n }\n // Reapply defaults, not used during config\n updateDefaults(defaults, oldDefaults) {\n if (!this.isConfiguring && defaults) {\n const entries = Object.entries(defaults);\n this.eachWidget(widget => {\n entries.forEach(([prop, value]) => {\n // Apply defaults only if current value matches the old default\n if (!oldDefaults || widget[prop] === oldDefaults[prop]) {\n widget[prop] = value;\n }\n });\n }, false);\n }\n }\n render() {\n // Pull in lazyItems at last second\n this.getConfig('lazyItems');\n this.layout.renderChildren();\n // If called during configuration, the element may not have been available because\n // some non-item widgets (eg, Tools) instantiate and declare themselves through\n // onChildAdd before the element is set.\n // But also there may have been no items because of lazyItems.\n // So do the initial sync at render time.\n this.syncChildCount();\n super.render(...arguments);\n }\n get focusElement() {\n // Find first focusable descendant widget that is not our close tool.\n const firstFocusable = this.query(this.defaultFocus || (w => w.isFocusable && w.ref !== 'close'));\n if (firstFocusable) {\n return firstFocusable.focusElement;\n }\n return super.focusElement;\n }\n doDestroy() {\n var _this$_items3;\n (_this$_items3 = this._items) === null || _this$_items3 === void 0 ? void 0 : _this$_items3.forEach(widget => {\n var _widget$destroy;\n return (_widget$destroy = widget.destroy) === null || _widget$destroy === void 0 ? void 0 : _widget$destroy.call(widget);\n });\n this.layout.destroy();\n super.doDestroy();\n }\n /**\n * Returns `true` if all contained fields are valid, otherwise `false`\n * @property {Boolean}\n */\n get isValid() {\n let valid = true;\n this.eachWidget(widget => {\n // Touch each widget so that they all update their invalid state. This is important for required fields\n // since they don't initially complain if they start as empty.\n if (widget.isVisible && 'isValid' in widget && !widget.isValid) {\n valid = false;\n }\n }, true);\n return valid;\n }\n /**\n * Retrieves or sets all values from/to contained widgets.\n *\n * The property set or read from a contained widget is its {@link Core.widget.Widget#config-defaultBindProperty}.\n *\n * This defaults to the `value` for fields.\n *\n * You may add child widgets which may accept and yield a value to/from another property,\n * such as a `Button` having its {@link Core.widget.Button#config-href} set.\n *\n * Accepts and returns a map, using {@link Core.widget.Field#config-name name},\n * {@link Core.widget.Widget#config-ref ref} or {@link Core.widget.Widget#config-id id} (in that order) as keys.\n *\n * ```javascript\n * const container = new Container({\n * appendTo : document.body,\n * items : {\n * firstName : {\n * type : 'textfield\n * },\n * surName : {\n * type : 'textfield\n * }\n * saveButton : {\n * type : 'button',\n * text : 'Save',\n * defaultBindProperty : 'href'\n * href : '#'\n * }\n * }\n * });\n *\n * container.values = {\n * firstName : 'Clark',\n * surname : 'Kent',\n * saveButton : '#save-route'\n * };\n * ```\n *\n * @property {Object}\n */\n get values() {\n const values = {};\n this.gatherValue(values);\n return values;\n }\n set values(values) {\n // if the container itself has a value allow it to be grabbed as well\n this.assignValue(values);\n }\n /**\n * Returns `true` if currently setting values. Allows fields change highlighting to distinguishing between initially\n * setting values and later on changing values.\n * @property {Boolean}\n */\n get isSettingValues() {\n return Boolean(this.assigningValues);\n }\n get assigningValues() {\n var _this$parent;\n // Fields query their parent, pass the question up in case containers are nested\n return this._assigningValues || ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.assigningValues);\n }\n set assigningValues(v) {\n this._assigningValues = v;\n }\n assignValue(values, options) {\n // use default check for a value config from super...\n super.assignValue(values, options);\n if (!this.isolateFields) {\n this.setValues(values, options);\n }\n }\n gatherValue(values) {\n super.gatherValue(values);\n if (!this.isolateFields) {\n this.gatherValues(values);\n }\n }\n setValues(values, options) {\n options = options || this.assignValueDefaults;\n // Flag checked by Field to determine if it should highlight change or not\n this.assigningValues = options;\n this.eachWidget(widget => widget.assignValue(values, options), false);\n this.assigningValues = false;\n }\n}\n// Register this widget type with its Factory\nContainer.initClass();\nContainer._$name = 'Container';\n\n/**\n * @module Core/util/Animator\n */\nconst {\n assign\n } = ObjectHelper,\n now = () => performance.now(),\n nostart = {\n start: false\n },\n unitRe = /^[.\\d]+([^\\d].*)?$/,\n getTransitions = element => {\n const $bryntum = element.$bryntum || (element.$bryntum = {});\n return $bryntum.transitions || ($bryntum.transitions = Object.create(null));\n },\n milliseconds = (duration, unit) => {\n if (typeof duration === 'string') {\n var _unitRe$exec;\n unit = (_unitRe$exec = unitRe.exec(duration)) === null || _unitRe$exec === void 0 ? void 0 : _unitRe$exec[1];\n duration = parseFloat(duration);\n }\n // a number could be sec or ms so guess sec if duration is small\n return duration && duration * (unit === 's' || !unit && duration < 10 ? 1000 : 1);\n },\n syncTransitions = element => {\n const all = ObjectHelper.values(getTransitions(element)).filter(a => a.completed == null).map(a => a.toString());\n element.style.transition = all.join(', ');\n },\n Anim = Target => class Anim extends Target {\n static get prototypeProperties() {\n return {\n _delay: null,\n _duration: null,\n _retain: null,\n _timing: null,\n _unit: null,\n owner: null,\n reverting: null\n };\n }\n constructor(...args) {\n super(...args);\n this.id = ++idSeed$1;\n }\n start() {\n this.startTime = now();\n }\n get delay() {\n var _ref, _this$_delay, _this$owner;\n return milliseconds((_ref = (_this$_delay = this._delay) !== null && _this$_delay !== void 0 ? _this$_delay : (_this$owner = this.owner) === null || _this$owner === void 0 ? void 0 : _this$owner.delay) !== null && _ref !== void 0 ? _ref : 0, this.unit);\n }\n set delay(v) {\n this._delay = v;\n }\n get duration() {\n var _this$_duration;\n const {\n owner,\n unit\n } = this;\n return milliseconds((_this$_duration = this._duration) !== null && _this$_duration !== void 0 ? _this$_duration : owner ? owner.duration : Animator.defaultDuration, unit);\n }\n set duration(v) {\n this._duration = v;\n }\n get elapsed() {\n return now() - this.startTime;\n }\n get remaining() {\n return this.duration - this.elapsed;\n }\n get retain() {\n var _this$_retain, _this$owner2;\n return (_this$_retain = this._retain) !== null && _this$_retain !== void 0 ? _this$_retain : (_this$owner2 = this.owner) === null || _this$owner2 === void 0 ? void 0 : _this$owner2.retain;\n }\n set retain(v) {\n this._retain = v;\n }\n get timing() {\n var _this$_timing, _this$owner3;\n return (_this$_timing = this._timing) !== null && _this$_timing !== void 0 ? _this$_timing : (_this$owner3 = this.owner) === null || _this$owner3 === void 0 ? void 0 : _this$owner3.timing;\n }\n set timing(v) {\n this._timing = v;\n }\n get unit() {\n var _this$_unit, _this$owner4;\n return (_this$_unit = this._unit) !== null && _this$_unit !== void 0 ? _this$_unit : (_this$owner4 = this.owner) === null || _this$owner4 === void 0 ? void 0 : _this$owner4.unit;\n }\n set unit(v) {\n this._unit = v;\n }\n };\nlet idSeed$1 = 0;\n/**\n * These objects are passed as values in the config object of an `Animator`. The `property` name is the key in the\n * config object.\n *\n * For example:\n * ```javascript\n * const anim = Animator.run({\n * element,\n * opacity : {\n * // AnimatorTransition properties\n * }\n * });\n * ```\n * The {@link Core.util.Animator#config-items anim.items} array will contain a single `AnimatorTransition` instance.\n *\n * @typedef {Object} AnimatorTransition\n * @property {Number|String} property The name of the style property from the key in the `Animator` config object (in\n * the above example, this will be `'opacity'`).\n * @property {Boolean} completed This readonly property is set to `true` when the transition completes.\n * @property {Number|String} [delay=0] The delay before starting the transition. Numbers less than 10 are assumed to be\n * seconds (instead of milliseconds) unless the `unit` property is specified.\n * @property {Number|String} [duration=200] The duration of the transition. Numbers less than 10 are assumed to be\n * seconds (instead of milliseconds) unless the `unit` property is specified.\n * @property {Number|String} [from] The value from which to start the transition.\n * @property {Boolean} [retain] Set to `true` to retain the style property value after the transition. This defaults to\n * `true` if a {@link Core.util.Animator#config-finalize} function is not specified.\n * @property {String} [timing='ease-in-out'] The transition\n * [timing function](https://developer.mozilla.org/en-US/docs/Web/CSS/transition-timing-function).\n * @property {Number|String} to The final value to which the transition will animate.\n * @property {'s'|'ms'} [unit] The duration/delay unit (either `'s'` or `'ms'`).\n * @internal\n */\nclass AnimatorTransition extends Base$1.mixin(Anim) {\n static get $name() {\n return 'AnimatorTransition';\n }\n static get prototypeProperties() {\n return {\n element: null,\n property: null,\n from: null,\n to: null,\n completed: null,\n promissory: null,\n reverting: null\n };\n }\n afterConstruct() {\n super.afterConstruct();\n const me = this,\n {\n element,\n transitions\n } = me;\n let {\n property\n } = me;\n [property, me.to] = DomHelper.unitize(property, me.to);\n me.from = DomHelper.unitize(property, me.from)[1];\n me.promissory = new Promissory();\n me.property = property;\n const was = transitions[property];\n transitions[property] = me;\n let {\n from\n } = me;\n if (was) {\n // Remember where we come from. If there was an animation running, its \"to\" value is where we would have\n // been had it completed.\n me.from = was.to;\n from = null;\n was.destroy();\n }\n if (from === null) {\n from = me.getCurrentStyleValue();\n if (!was) {\n me.from = from;\n }\n }\n // Set transitioning style's initial value\n element.style[property] = from;\n // then read the style to ensure transition will animate\n me.getCurrentStyleValue();\n }\n doDestroy() {\n const me = this;\n me.finish(false);\n if (me.completed && !me.retain) {\n me.clearStyle();\n }\n super.doDestroy();\n }\n get promise() {\n var _this$promissory;\n return (_this$promissory = this.promissory) === null || _this$promissory === void 0 ? void 0 : _this$promissory.promise;\n }\n get transitions() {\n return getTransitions(this.element);\n }\n clearStyle() {\n this.setStyle('');\n }\n finish(complete) {\n const me = this,\n {\n transitions,\n promissory,\n property\n } = me;\n if (promissory) {\n me.completed = complete;\n me.promissory = null;\n promissory.resolve(complete);\n if (transitions[property] === me) {\n delete transitions[property];\n if (!complete) {\n // if we are the current transition, this destroy is a cancellation of the animation (not a\n // revert), so remove our transition and clear the style to reset the element.\n syncTransitions(me.element);\n me.clearStyle();\n }\n } else {\n me.completed = false; // this can most likely never happen, but better to be safe\n }\n }\n }\n\n getCurrentStyleValue() {\n return DomHelper.getStyleValue(this.element, this.property);\n }\n revert() {\n const {\n duration,\n elapsed,\n element,\n from,\n property,\n _retain: retain,\n _timing: timing\n } = this;\n return new AnimatorTransition({\n element,\n property,\n retain,\n timing,\n duration: Math.round(Math.min(duration, elapsed)),\n reverting: this,\n to: from,\n unit: 'ms'\n });\n }\n setStyle(value) {\n this.element.style[this.property] = value;\n }\n start() {\n const me = this,\n {\n delay,\n duration,\n element,\n property\n } = me;\n EventHelper.onTransitionEnd({\n element,\n property,\n duration: delay + duration + 20,\n thisObj: me.owner,\n handler: () => {\n var _me$finish;\n return (_me$finish = me.finish) === null || _me$finish === void 0 ? void 0 : _me$finish.call(me, true);\n } // finish() is gone if destroyed\n });\n\n super.start();\n me.setStyle(me.to);\n }\n toString() {\n const {\n delay,\n duration,\n property,\n timing\n } = this;\n return `${property} ${duration}ms ${timing || 'ease-in-out'}${delay ? ` ${delay}ms` : ''}`;\n }\n}\nAnimatorTransition.initClass();\n/**\n * Manages one or more {@link AnimatorTransition style transitions} or other `Animator` instances. Unlike typical\n * config objects, the config object for this class is a mixture of config properties and style names that define\n * {@link AnimatorTransition style transitions}.\n *\n * For example:\n * ```javascript\n * const anim = Animator.run({\n * element,\n * duration : 500,\n *\n * // style transitions:\n * opacity : 0\n * });\n *\n * await anim.done();\n * ```\n *\n * The static {@link #function-run-static} method is typically used (as above) instead of the `new Animator()` style for\n * brevity (since a manually created `Animator` must also be manually {@link #function-start started}).\n *\n * An `Animator` can be {@link #function-done awaited} and will resolve once all of its transitions and/or child\n * animations complete or are aborted (via `destroy()`).\n *\n * ## Compound Transitions\n * The following custom transitions can present in the `Animator` config object as if they were normal style transitions:\n *\n * - {@link #function-puff-static}\n *\n * For example:\n * ```javascript\n * const anim = Animator.run({\n * element,\n * marginLeft : -200,\n * puff : true // true for default scale, a number, or config object\n * });\n * ```\n * @extends Core/Base\n * @internal\n */\nclass Animator extends Base$1.mixin(Anim) {\n static get $name() {\n return 'Animator';\n }\n static get prototypeProperties() {\n return {\n /**\n * The optional delay before starting the animation. Numbers less than 10 are assumed to be seconds\n * (instead of milliseconds) unless the `unit` property is specified.\n * @config {Number|String} delay\n */\n /**\n * The duration of the animation. Numbers less than 10 are assumed to be seconds (instead of milliseconds)\n * unless the `unit` property is specified.\n * @config {Number|String} duration\n * @default\n */\n /**\n * The element to animate.\n * @config {HTMLElement} element\n */\n element: null,\n /**\n * A callback function called when the animation completes. This is called after restoring styles to the\n * original values (based on {@link #config-retain}). When this function is provided, `retain` defaults to\n * `false`. By implementing this function, a CSS class can be applied to the {@link #config-element} to\n * give the proper style, while the inline styles are removed (e.g., a hide animation based on opacity).\n *\n * For example:\n * ```javascript\n * const anim = Animator.run({\n * element,\n * duration : 500,\n * opacity : 0,\n *\n * finalize() {\n * element.classList.add('hidden');\n * }\n * });\n *\n * await anim.done();\n * ```\n * @config {Function} finalize\n */\n finalize: null,\n /**\n * A callback function called when the animation completes. This is called prior to restoring styles to the\n * original values (based on {@link #config-retain}).\n * @config {Function} prefinalize\n * @internal\n */\n prefinalize: null,\n /**\n * Set to `true` to retain the style property values after the animation. This defaults to `true` if a\n * {@link #config-finalize} function is not specified, and `false` otherwise. When a `finalize` function\n * is provided, it is typically to apply a CSS class to achieve the desired styling so that inline styles\n * can be removed.\n * @config {Boolean} retain\n */\n /**\n * The [timing function](https://developer.mozilla.org/en-US/docs/Web/CSS/transition-timing-function) for\n * the animation.\n * @config {String} timing\n * @default 'ease-in-out'\n */\n /**\n * The duration/delay unit (either `'s'` or `'ms'`).\n * @config {'s'|'ms'} unit\n */\n /**\n * This readonly property is set to `true` when the animation completes or `false` if the animation is\n * aborted (by calling the `destroy()` method).\n * @member {Boolean} completed\n * @readonly\n */\n completed: null,\n /**\n * An array containing a mixture of `Animator` and/or `AnimatorTransition` objects, depending on what was\n * specified at construction time.\n * @member {Core.util.Animator[]|AnimatorTransition[]} items\n * @readonly\n */\n /**\n * When passed at construction time, `items` can be an array of other `Animator` config objects. This can be\n * used to animate multiple elements and wait for this instance to be {@link #function-done done}.\n * @config {Core.util.Animator[]} items\n */\n items: null\n };\n }\n static register(name, fn) {\n if (ObjectHelper.isObject(name)) {\n ObjectHelper.entries(name).forEach(entry => Animator.register(...entry));\n return;\n }\n Animator.fx[name] = fn;\n Animator[name] = options => {\n if (DomHelper.isElement(options)) {\n options = {\n element: options,\n [name]: {}\n };\n } else {\n options = {\n element: options.element,\n [name]: options\n };\n delete options[name].element;\n }\n return Animator.run(options);\n };\n }\n /**\n * A short-hand way to create an `Animator` instance and call its {@link #function-start} method.\n *\n * ```javascript\n * const anim = Animator.run({\n * element,\n * duration : 500,\n *\n * // style transitions:\n * opacity : 0\n * });\n *\n * await anim.done();\n * ```\n * @param {Core.util.Animator|Object} options A config object for an `Animator` instance.\n * @returns {Core.util.Animator}\n */\n static run(options) {\n return new Animator(options).start();\n }\n constructor(options) {\n var _me$items;\n super(null); // our options is not like a normal config object since is has styles mixed in w/configs\n const me = this,\n items = [],\n properties = {};\n let anim, fx, key, t;\n if (Array.isArray(options)) {\n me.items = options;\n } else {\n for (key in options) {\n (Animator.specialPropsRe.test(key) ? me : properties)[key] = options[key];\n }\n }\n ObjectHelper.keys(properties).forEach(property => {\n t = properties[property];\n // ignore values of null, undefined, false and NaN (NaN !== NaN)\n if (t != null && t !== false && t === t) {\n // eslint-disable-line no-self-compare\n if (!(fx = Animator.fx[property])) {\n t = assign(me.defaults, typeof t === 'object' ? t : {\n to: t\n });\n t.owner = me;\n t.property = property;\n anim = new AnimatorTransition(t);\n } else {\n t = assign(me.defaults, fx(t, me, property));\n t.owner = me;\n anim = new Animator(t);\n }\n items.push(anim);\n }\n });\n // me.items can be set if options was an array or if options.items was passed.\n (_me$items = me.items) === null || _me$items === void 0 ? void 0 : _me$items.forEach(item => {\n if (ObjectHelper.isInstantiated(item)) {\n item.owner = me;\n } else {\n item = assign(me.defaults, item);\n item.owner = me;\n item = new Animator(item);\n }\n items.push(item);\n });\n me.items = items;\n me.promise = (items.length === 1 ? items[0].promise : Promise.all(items.map(it => it.promise))).then(res => {\n var _me$finish2;\n (_me$finish2 = me.finish) === null || _me$finish2 === void 0 ? void 0 : _me$finish2.call(me, res);\n return me.completed || false;\n });\n }\n doDestroy() {\n this.items.forEach(a => a.destroy());\n super.doDestroy();\n }\n get defaults() {\n return {\n element: this.element\n };\n }\n get retain() {\n const {\n _retain,\n finalize,\n owner\n } = this;\n return _retain !== null && _retain !== void 0 ? _retain : finalize ? false : owner ? owner.retain : true;\n }\n set retain(v) {\n super.retain = v;\n }\n /**\n * Returns a `Promise` that resolves to a `Boolean` when this animation completes. The resolved value is that of\n * this instance's {@link #property-completed} property.\n * @async\n */\n done() {\n return this.promise;\n }\n finish(complete) {\n var _me$prefinalize, _me$finalize;\n const me = this,\n {\n items\n } = me;\n syncTransitions(me.element);\n me.completed = typeof complete === 'boolean' ? complete : !complete.some(a => !a);\n (_me$prefinalize = me.prefinalize) === null || _me$prefinalize === void 0 ? void 0 : _me$prefinalize.call(me, me.completed, me);\n while (items.length) {\n items.pop().destroy();\n }\n (_me$finalize = me.finalize) === null || _me$finalize === void 0 ? void 0 : _me$finalize.call(me, me.completed, me);\n }\n revert(options) {\n var _options$start;\n const me = this,\n {\n reverting\n } = me,\n start = !options || ((_options$start = options.start) !== null && _options$start !== void 0 ? _options$start : true);\n let anim = me.defaults;\n if (reverting) {\n // If this anim is a revert of some previous anim and that anim had a finalizer, then reverting us should\n // (by default) carry forward the original finalizer:\n if (reverting.finalize) {\n anim.finalize = reverting.finalize;\n }\n if (reverting.prefinalize) {\n anim.prefinalize = reverting.prefinalize;\n }\n anim.retain = reverting._retain;\n }\n anim = assign(anim, options, {\n items: me.items.map(it => it.revert(nostart)),\n reverting: me\n });\n anim = new Animator(anim);\n start && anim.start();\n return anim;\n }\n /**\n * Starts this animation and returns a reference to itself. This method is called automatically by the\n * {@link #function-run-static} method.\n * @returns {Core.util.Animator}\n */\n start() {\n const {\n element,\n items\n } = this;\n super.start();\n if (items.length) {\n syncTransitions(element);\n items.forEach(a => a.start());\n }\n return this;\n }\n}\nAnimator.initClass().Transition = AnimatorTransition;\nAnimator.specialPropsRe = new RegExp(`^(?:${Object.keys(Animator.prototypeProperties).concat(Object.keys(Animator.superclass.prototypeProperties)).map(s => s[0] === '_' ? s.substr(1) : s).join('|')})$`);\nAnimator.defaultDuration = 200;\nAnimator.fx = {};\nAnimator.register({\n /**\n * A compound animation to achieve `transform: scale()` and `opacity: 0`. The `scale` defaults to 8 but can be set\n * in the `anim` config object.\n *\n * For example\n * ```javascript\n * const puff = Animator.puff(element);\n *\n * const puff = Animator.puff({\n * element,\n * scale : 12\n * });\n * ```\n *\n * This compound animation can also be specified in an `Animator` config object along with other style transitions:\n * ```javascript\n * const anim = Animator.run({\n * element,\n * marginLeft : -200,\n * puff : true // true for default scale, a number, or config object\n * });\n * ```\n * @param {Element|Object|Core.util.Animator} anim The element to animate or the config object containing at least\n * the `element` property. This config object can contain an optional `scale` property to adjust the animation's\n * `transform: scale()` value.\n * @param {Number} [anim.scale=8] The scale value for the `transform:scale()` transition.\n * @returns {Core.util.Animator}\n * @static\n */\n puff(anim) {\n if (anim === true) {\n anim = {};\n } else if (typeof anim !== 'object') {\n // string || number\n anim = {\n transform: `scale(${anim})`\n };\n } else if (anim.scale) {\n anim = ObjectHelper.clone(anim);\n anim.transform = `scale(${anim.scale})`;\n delete anim.scale;\n }\n return assign({\n opacity: 0,\n transform: 'scale(8)'\n }, anim);\n }\n});\nAnimator._$name = 'Animator';\n\n/**\n * @module Core/util/ClickRepeater\n */\n/**\n * A helper class, which, when applied to an {@link #config-element} means that a mousedown and hold on that element\n * will, after a configured {@link #config-delay}, begin autorepeating `click` events on that element, starting at a\n * rate of {@link #config-startRate} clicks per second, and over {@link #config-accelerateDuration} milliseconds,\n * accelerate to firing clicks at {@link #config-endRate} times per second.\n *\n * An example of this is used by the {@link Core.widget.NumberField}'s spinner triggers.\n */\nclass ClickRepeater extends Base$1.mixin(Delayable) {\n static get configurable() {\n return {\n /**\n * The element on which to fire autorepeating `click` events when the mouse is held down.\n * @config {HTMLElement}\n */\n element: null,\n /**\n * A query selector which specifies subtargets of this ClickRepeater's {@link #config-element}\n * which act as the click auto repeat event targets.\n * @config {String}\n * @default\n */\n delegate: null,\n /**\n * How long in milliSeconds to pause before starting the click repeats.\n * @config {Number}\n * @default\n */\n delay: 500,\n /**\n * Clicks per second to start firing after the initial {@link #config-delay}\n * @config {Number}\n * @default\n */\n startRate: 2,\n /**\n * Clicks per second to fire at top speed, after accelerating over the {@link #config-accelerateDuration}\n * @config {Number}\n * @default\n */\n endRate: 20,\n /**\n * How long in milliseconds to accelerate from the\n * {@link #config-startRate} to the {@link #config-startRate}.\n * @config {Number}\n * @default\n */\n accelerateDuration: 4000,\n pressedCls: 'b-pressed'\n };\n }\n doDestroy() {\n var _this$mousedownRemove;\n (_this$mousedownRemove = this.mousedownRemover) === null || _this$mousedownRemove === void 0 ? void 0 : _this$mousedownRemove.call(this);\n this.cancel();\n super.doDestroy();\n }\n cancel() {\n var _me$activeElement, _me$acceleration, _me$activeListenerRem;\n const me = this;\n (_me$activeElement = me.activeElement) === null || _me$activeElement === void 0 ? void 0 : _me$activeElement.classList.remove(me.pressedCls);\n me.activeElement = null;\n (_me$acceleration = me.acceleration) === null || _me$acceleration === void 0 ? void 0 : _me$acceleration.cancel();\n me.activeListenerRemover = (_me$activeListenerRem = me.activeListenerRemover) === null || _me$activeListenerRem === void 0 ? void 0 : _me$activeListenerRem.call(me);\n me.clearTimeout(me.autoRepeatTimer);\n me.clearTimeout(me.repeatTimer);\n }\n updateElement(element) {\n var _this$mousedownRemove2;\n (_this$mousedownRemove2 = this.mousedownRemover) === null || _this$mousedownRemove2 === void 0 ? void 0 : _this$mousedownRemove2.call(this);\n this.mousedownRemover = EventHelper.on({\n element,\n mousedown: 'onMouseDown',\n thisObj: this\n });\n }\n onMouseDown(e) {\n const me = this,\n target = me.delegate ? e.target.closest(me.delegate) : me.element;\n me.cancel();\n if (target) {\n me.activeElement = target;\n me.triggerEvent = e;\n target.classList.add(me.pressedCls);\n me.activeListenerRemover = EventHelper.on({\n mouseup: {\n element: document,\n capture: true,\n handler: 'onMouseUp'\n },\n mousemove: {\n element: target,\n handler: 'onTargetMouseMove'\n },\n mouseleave: {\n element: target,\n handler: 'onTargetMouseLeave'\n },\n mouseenter: {\n element: target,\n handler: 'onTargetMouseEnter'\n },\n thisObj: me\n });\n me.autoRepeatTimer = me.setTimeout('startAutoRepeat', me.delay);\n }\n }\n onMouseUp() {\n this.cancel();\n }\n onTargetMouseLeave() {\n this.activeElement.classList.remove(this.pressedCls);\n this.clearTimeout(this.repeatTimer);\n }\n onTargetMouseEnter(e) {\n const me = this;\n if (!e.buttons) {\n // mostly seen due to breakpoints in click handling, but easy to detect if mouse was released...\n me.cancel();\n } else {\n me.activeElement.classList.add(me.pressedCls);\n me.triggerEvent = e;\n me.fireClick();\n }\n }\n onTargetMouseMove(e) {\n this.triggerEvent = e;\n }\n startAutoRepeat() {\n const me = this;\n me.interval = me.startInterval = 1000 / me.startRate;\n me.accelerationDelta = me.startInterval - 1000 / me.endRate;\n // Begin animating the interval from 1000/me.startRate to 1000/me.endRate\n me.fireClick();\n me.acceleration = FunctionHelper.animate(me.accelerateDuration, me.nextTick, me, 'easeOutQuad');\n }\n nextTick(progress) {\n this.interval = this.startInterval - this.accelerationDelta * progress;\n }\n fireClick() {\n const me = this,\n clickEvent = new MouseEvent('click', me.triggerEvent);\n me.triggerEvent.target.dispatchEvent(clickEvent);\n me.repeatTimer = me.setTimeout(me.fireClick, me.interval);\n }\n}\nClickRepeater._$name = 'ClickRepeater';\n\n/**\n * @module Core/widget/mixin/Rotatable\n */\n// we set rotate to 'LEFT' or 'RIGHT' when we auto rotate so we can tell it was (most likely) us:\nconst autoRotateRe = /^(?:undefined|null|LEFT|RIGHT)$/,\n inverted = {\n TOP: 'BOTTOM',\n RIGHT: 'LEFT',\n BOTTOM: 'TOP',\n LEFT: 'RIGHT'\n };\nconst canonicalDock = dock => {\n const DOCK = dock === null || dock === void 0 ? void 0 : dock.toUpperCase();\n return [DOCK, DOCK === 'LEFT' || DOCK === 'RIGHT'];\n};\n/**\n * A mixin that provides support for rotating a widget's primary element.\n * @mixin\n * @internal\n */\nvar Rotatable = (Target => class Rotatable extends (Target || Base$1) {\n static get $name() {\n return 'Rotatable';\n }\n static get configurable() {\n return {\n /**\n * Set to `'left'` to rotate the button content 90 degrees counter-clockwise or `'right'` for clockwise.\n * @member {'left'|'right'} rotate\n */\n /**\n * Specify `'left'` to rotate the button content 90 degrees counter-clockwise or `'right'` for clockwise.\n * @config {'left'|'right'}\n */\n rotate: null,\n invertRotate: null\n };\n }\n compose() {\n const {\n rotate\n } = this;\n return {\n class: {\n [`b-rotate-${(rotate || '').toLowerCase()}`]: rotate,\n 'b-rotate-vertical': rotate\n }\n };\n }\n syncRotationToDock(dock) {\n if (autoRotateRe.test(String(this.rotate))) {\n const [DOCK, vertical] = canonicalDock(dock);\n this.rotate = vertical ? this.invertRotate ? inverted[DOCK] : DOCK : null;\n }\n }\n get widgetClass() {\n return null;\n }\n});\n\n/**\n * @module Core/widget/Tool\n */\n/**\n * Base class for tools.\n *\n * May be configured with a `cls` and a `handler` which is a function (or name of a function)\n * in the owning Panel.\n * @extends Core/widget/Widget\n *\n * @classType tool\n */\nclass Tool extends Widget.mixin(Rotatable) {\n static get $name() {\n return 'Tool';\n }\n // Factoryable type name\n static get type() {\n return 'tool';\n }\n static get configurable() {\n return {\n /**\n * Specify `'start'` to place the tool before the owner's central element (e.g., the `title` of the panel).\n * @config {'start'|'end'}\n * @default 'end'\n * @category Float & align\n */\n align: {\n value: null,\n $config: {\n merge: 'replace'\n }\n },\n /**\n * If provided, turns the tool into a link\n * @config {String}\n */\n href: null,\n /**\n * The function to call when this tool is clicked. May be a function or function name\n * prepended by `\"up.\"` that is resolvable in an ancestor component (such as an owning\n * Grid, Scheduler, Calendar, Gantt or TaskBoard)\n * @param {Event} handler.event The DOM event which activated the tool.\n * @param {Core.widget.Panel} handler.panel The owning Panel of the tool.\n * @param {Core.widget.Tool} handler.tool The clicked Tool.\n * @config {Function|String} handler\n */\n /**\n * A {@link Core.util.ClickRepeater } config object to specify how click-and-hold gestures repeat the click\n * action.\n * @config {ClickRepeaterConfig}\n */\n repeat: null,\n defaultBindProperty: null\n };\n }\n compose() {\n const {\n align,\n href\n } = this;\n return {\n tag: href != null ? 'a' : 'button',\n class: {\n [`b-align-${align || 'end'}`]: 1,\n 'b-icon': 1\n },\n listeners: {\n click: 'onInternalClick'\n }\n };\n }\n get focusElement() {\n return this.element;\n }\n get panel() {\n var _this$parent, _this$element;\n // Only fire toolclick if we are in a Panel's header.\n // If a Tool is used in any other context than a Panel tool config, it\n // sohuld be used via its click and action events.\n if ((_this$parent = this.parent) !== null && _this$parent !== void 0 && _this$parent.isPanel && ((_this$element = this.element) === null || _this$element === void 0 ? void 0 : _this$element.parentNode) === this.parent.headerElement) {\n return this.parent;\n }\n }\n changeAlign(align) {\n return align; // replace Widget.changeAlign\n }\n\n onInternalClick(domEvent) {\n const me = this,\n {\n handler,\n panel\n } = me,\n bryntumEvent = {\n domEvent,\n tool: me\n };\n // Safari && FF trigger click on disabled button, Chrome does not. Handling it here\n if (me.disabled) {\n return;\n }\n /**\n * Fires when the tool is clicked\n * @event click\n * @param {Core.widget.Tool} source The Tool\n * @param {Event} domEvent DOM event\n */\n me.trigger('click', bryntumEvent);\n // A handler may have resulted in destruction.\n if (!me.isDestroyed) {\n /**\n * Fires when the default action is performed (the button is clicked)\n * @event action\n * @param {Core.widget.Tool} source The Tool\n * @param {Event} domEvent DOM event\n */\n me.trigger('action', bryntumEvent);\n if (!me.isDestroyed && (panel === null || panel === void 0 ? void 0 : panel.trigger('toolclick', bryntumEvent)) !== false) {\n handler && me.callback(handler, panel, [domEvent, panel, me]);\n }\n }\n }\n onInternalKeyDown(keyEvent) {\n const keyName = keyEvent.key.trim() || keyEvent.code;\n // Don't allow key invocations to bubble and trigger owning\n // widget's key handlers.\n if (keyName === 'Enter') {\n keyEvent.cancelBubble = true;\n keyEvent.stopPropagation();\n }\n }\n updateDisabled(disabled, was) {\n var _this$repeat;\n super.updateDisabled(disabled, was);\n disabled && ((_this$repeat = this.repeat) === null || _this$repeat === void 0 ? void 0 : _this$repeat.cancel());\n }\n changeRepeat(repeat, oldRepeat) {\n oldRepeat === null || oldRepeat === void 0 ? void 0 : oldRepeat.destroy();\n return repeat && ClickRepeater.new({\n element: this.element\n }, repeat);\n }\n}\n// Register this widget type with its Factory\nTool.initClass();\nTool._$name = 'Tool';\n\n/**\n * @module Core/widget/panel/CollapseTool\n */\nconst rightRe = /right/i,\n autoAlign = tool => (tool.collapsed || tool.collapsing) && tool.owner.collapsible.direction.match(rightRe) ? 'start' : 'end';\n/**\n * This ensures the correct icon is used to represent the {@link Core.widget.Panel panel's}\n * {@link Core.widget.Panel#config-collapsed} state.\n * @extends Core/widget/Tool\n *\n * @classType collapsetool\n * @internal\n */\nclass CollapseTool extends Tool {\n static get $name() {\n return 'CollapseTool';\n }\n // Factoryable type name\n static get type() {\n return 'collapsetool';\n }\n static get configurable() {\n return {\n /**\n * Set to `false` to disable automatic adjustment of the {@link #config-align} config based on the state\n * of the panel's {@link Core.widget.Panel#config-collapsed} config and the\n * {@link Core.widget.panel.PanelCollapser#config-direction}.\n *\n * If this is set to a function, that function is called passing the owning `Panel` instance and its\n * return value is assigned to the {@link #config-align} config.\n * @config {Boolean|Function}\n * @default\n */\n autoAlign: true,\n collapsed: null,\n collapsing: null,\n collapsify: false,\n // ...unaffected when the panel is collapsed\n direction: 'up',\n // Our own setValues/getValues system should not set/get HTML content\n defaultBindProperty: null\n };\n }\n compose() {\n const {\n collapsed,\n direction\n } = this;\n return {\n class: {\n [`b-icon-collapse-${direction}`]: 1,\n 'b-collapsed': collapsed\n }\n };\n }\n changeAutoAlign(v) {\n return v === true ? autoAlign : v;\n }\n syncAutoAlign() {\n const {\n autoAlign\n } = this;\n if (autoAlign) {\n this.align = autoAlign(this);\n }\n }\n updateAutoAlign() {\n this.syncAutoAlign();\n }\n updateCollapsed() {\n this.syncAutoAlign();\n }\n updateCollapsing() {\n this.syncAutoAlign();\n }\n updateDirection() {\n this.syncAutoAlign();\n }\n}\n// Register this widget type with its Factory\nCollapseTool.initClass();\nCollapseTool._$name = 'CollapseTool';\n\n/**\n * @module Core/widget/panel/PanelCollapser\n */\nconst defaultedDirectionRe = /^(?:UP|DOWN|LEFT|RIGHT)$/,\n emptyArray$6 = [],\n emptySplit$1 = [emptyArray$6, emptyArray$6],\n revealerCls = 'b-panel-collapse-revealer',\n sideDockRe = /^(?:left|right)$/i,\n {\n round\n } = Math,\n canonicalDirection = ['up', 'down', 'left', 'right'].reduce((o, v) => {\n o[v.toUpperCase()] = o[v] = v;\n return o;\n }, {}),\n clipByDock = {\n top: ['top', 'bottom'],\n right: ['right', 'left'],\n bottom: ['bottom', 'top'],\n left: ['left', 'right']\n },\n collapseDirectionByPlacement = {\n hl: 'LEFT',\n hr: 'RIGHT',\n vb: 'DOWN',\n vt: 'UP'\n },\n crossAxis = {\n h: 'w',\n w: 'h'\n },\n dockByDirection = {\n up: 'top',\n right: 'right',\n down: 'bottom',\n left: 'left'\n },\n dockIsHorz$1 = {\n top: false,\n right: true,\n bottom: false,\n left: true\n },\n directionByDock = {\n top: 'UP',\n right: 'RIGHT',\n bottom: 'DOWN',\n left: 'LEFT'\n };\nlet idSeed = 0;\n/**\n * Instances of this class are used to implement the {@link Core.widget.Panel#config-collapsible} config.\n *\n * For example, the following creates an instance of this class:\n *\n * ```javascript\n * {\n * type : 'panel',\n * collapsible : true\n * }\n * ```\n * In this mode, a panel will collapse inline, within its container.\n * @classtype inline\n */\nclass PanelCollapser extends Base$1.mixin(Factoryable) {\n static get $name() {\n return 'PanelCollapser';\n }\n // Factoryable type name\n static get type() {\n return 'inline';\n }\n static get configurable() {\n return {\n /**\n * An animation config object.\n * @config {Object} animation\n * @property {Number} [animation.duration=200] The duration of the animation (in milliseconds).\n */\n animation: {\n duration: 200\n },\n /**\n * Tracks whether or not the panel is collapsed.\n * @config {Boolean}\n * @private\n */\n collapsed: {\n value: null,\n $config: null,\n default: false\n },\n /**\n * Specifies the direction of panel collapse. The default value for this config is determined dynamically\n * based on the {@link Core.widget.Panel#config-header header's} `dock` property and the containing layout's\n * flex direction and, therefore, often does not need to be explicitly specified.\n *\n * This config can be any of the following:\n * - `'up'`\n * - `'down'`\n * - `'left'`\n * - `'right'`\n *\n * @config {'up'|'down'|'left'|'right'}\n */\n direction: null,\n /**\n * The tooltip to use for the collapse tool when the panel is expanded.\n * @config {String}\n */\n collapseTooltip: 'L{Collapse}',\n /**\n * The tooltip to use for the expand tool when the panel is collapsed.\n * @config {String}\n */\n expandTooltip: 'L{Expand}',\n panel: {\n value: null,\n $config: 'nullify'\n },\n /**\n * To support the panel's collapsed size, a minimum width and height may be assigned to the panel's header,\n * based on this config and the panel's positioning style.\n *\n * When a panel is collapsed it may need to retain the pre-collapse dimension perpendicular to the collapse\n * {@link #config-direction}. For example, the height of a panel that collapses to the left. The dimension\n * parallel to the collapse (the width in this example) may also need to be supported using the pre-collapse\n * size of the panel's header.\n *\n * When this config is set to `true`, or by default when the owning panel is `position: absolute`, both\n * axes are given a minimum size based on the panel's pre-collapse size. When this config is `false`, no\n * minimum sizes will be assigned.\n *\n * This config can also be a string containing the single letters 'w' and/or 'h' indicating which axis/axes\n * of the panel header should be assigned a minimum size. That is, 'w' to assign only a minimum width, 'h'\n * for only a minimum height, or 'wh' to assign both.\n *\n * @config {String|Boolean}\n * @internal\n */\n supportAxis: null,\n /**\n * The collapse/expand tool. The `type` of this instance should not be changed but the tool instance can be\n * configured in other ways via this config property.\n * @config {Object|Core.widget.Tool}\n */\n tool: {\n type: 'collapsetool',\n handler(ev) {\n var _this$collapsible;\n // NOTE: As a tool, our this pointer is the Panel so we use it to access the current collapser\n (_this$collapsible = this.collapsible) === null || _this$collapsible === void 0 ? void 0 : _this$collapsible.onCollapseClick(ev);\n }\n }\n };\n }\n static get factoryable() {\n return {\n defaultType: 'inline'\n };\n }\n get collapsing() {\n return this.collapsingExpanding === 'collapsing';\n }\n get collapsingExpanding() {\n var _this$currentOperatio;\n const state = (_this$currentOperatio = this.currentOperation) === null || _this$currentOperatio === void 0 ? void 0 : _this$currentOperatio.collapsing;\n return state == null ? null : state ? 'collapsing' : 'expanding';\n }\n get currentDock() {\n var _this$panel$header$do, _this$panel, _this$panel$header, _this$panel$header$do2;\n return (_this$panel$header$do = (_this$panel = this.panel) === null || _this$panel === void 0 ? void 0 : (_this$panel$header = _this$panel.header) === null || _this$panel$header === void 0 ? void 0 : (_this$panel$header$do2 = _this$panel$header.dock) === null || _this$panel$header$do2 === void 0 ? void 0 : _this$panel$header$do2.toLowerCase()) !== null && _this$panel$header$do !== void 0 ? _this$panel$header$do : 'top';\n }\n get expanding() {\n return this.collapsingExpanding === 'expanding';\n }\n get collapseTool() {\n var _this$panel2, _this$panel2$tools;\n return (_this$panel2 = this.panel) === null || _this$panel2 === void 0 ? void 0 : (_this$panel2$tools = _this$panel2.tools) === null || _this$panel2$tools === void 0 ? void 0 : _this$panel2$tools.collapse;\n }\n get collapseDim() {\n return sideDockRe.test(this.collapseDir) ? 'width' : 'height';\n }\n getCollapseDir(canonical) {\n let {\n direction,\n panel\n } = this;\n if (!direction || defaultedDirectionRe.test(direction)) {\n const placement = panel === null || panel === void 0 ? void 0 : panel.placement;\n if (placement) {\n direction = collapseDirectionByPlacement[placement];\n } else {\n var _panel$header;\n direction = directionByDock[(panel === null || panel === void 0 ? void 0 : (_panel$header = panel.header) === null || _panel$header === void 0 ? void 0 : _panel$header.dock) || 'top'];\n }\n // direction in this case will be uppercase so that we can tell later that it was a default value vs a\n // user-defined one\n }\n\n return canonical ? canonicalDirection[direction] : direction;\n }\n get collapseDir() {\n return this.getCollapseDir(true);\n }\n get collapseDock() {\n const {\n panel\n } = this,\n headerDock = panel.hasHeader && panel.expandedHeaderDock,\n dock = dockByDirection[this.collapseDir];\n return headerDock && dockIsHorz$1[dock] === dockIsHorz$1[headerDock] ? headerDock : dock;\n }\n get toolsConfig() {\n const {\n direction,\n tool\n } = this;\n return tool && {\n collapse: ObjectHelper.assign({\n direction: direction.toLowerCase()\n }, tool)\n };\n }\n beforeCollapse(operation) {\n // TODO\n }\n changeTool(tool) {\n const me = this,\n {\n panel\n } = me;\n if (me.isConfiguring || me.isDestroying || !panel || panel.isDestroying) {\n return tool;\n }\n panel.tools = {\n collapse: tool\n };\n }\n collapse(collapsed) {\n var _collapsed, _currentOperation, _currentOperation$ani, _currentOperation2, _currentOperation2$an;\n const me = this,\n {\n panel\n } = me,\n operation = {\n id: ++idSeed,\n completed: false,\n panel\n };\n let {\n currentOperation\n } = me;\n collapsed = (_collapsed = collapsed) !== null && _collapsed !== void 0 ? _collapsed : true;\n if (ObjectHelper.isObject(collapsed)) {\n operation.collapsed = true;\n ObjectHelper.assign(operation, collapsed);\n collapsed = operation.collapsed;\n delete operation.collapsed;\n }\n operation.collapsing = collapsed;\n operation.previous = (_currentOperation = currentOperation) !== null && _currentOperation !== void 0 ? _currentOperation : null;\n if (collapsed !== me.collapsed) {\n // We aren't in the desired state (yet)\n if (currentOperation) {\n if (currentOperation.collapsing !== collapsed) {\n // we are not heading to the desired state, so revert it:\n operation.animation = currentOperation.animation.revert({\n finalize() {\n var _me$collapseFinalize;\n (_me$collapseFinalize = me.collapseFinalize) === null || _me$collapseFinalize === void 0 ? void 0 : _me$collapseFinalize.call(me, operation, true); // ?. in case we are destroyed\n }\n });\n\n operation.collapsing = collapsed;\n currentOperation = operation;\n }\n } else {\n // No currentOperation, so this is the first request to change state.\n // don't mutate our parameter or config object\n operation.animation = ObjectHelper.clone(('animation' in operation ? operation : me).animation);\n if (me.beforeCollapse(operation) !== false) {\n if (operation.animation) {\n operation.animation.finalize = complete => {\n var _me$collapseFinalize2;\n return (_me$collapseFinalize2 = me.collapseFinalize) === null || _me$collapseFinalize2 === void 0 ? void 0 : _me$collapseFinalize2.call(me, operation, complete);\n };\n }\n panel.changingCollapse = true;\n me[collapsed ? 'collapseBegin' : 'expandBegin'](operation);\n if (operation.animation) {\n currentOperation = operation;\n } else {\n operation.completed = true;\n me[collapsed ? 'collapseEnd' : 'expandEnd'](operation);\n }\n panel.changingCollapse = false;\n if (!operation.animation) {\n me.onComplete(collapsed ? 'collapse' : 'expand');\n }\n }\n }\n } else if (currentOperation && currentOperation.collapsing !== collapsed) {\n // We are still in the desired state but we are animating to the now undesired state...\n me[collapsed ? 'expandRevert' : 'collapseRevert'](operation);\n // revert the animation and clear it when done\n operation.animation = currentOperation.animation.revert({\n finalize() {\n var _me$collapseFinalize3;\n (_me$collapseFinalize3 = me.collapseFinalize) === null || _me$collapseFinalize3 === void 0 ? void 0 : _me$collapseFinalize3.call(me, operation, false); // ?. in case we are destroyed\n }\n });\n\n currentOperation = operation;\n }\n // else if (currentOperation) we are already reverting\n me.currentOperation = currentOperation;\n return (_currentOperation$ani = (_currentOperation2 = currentOperation) === null || _currentOperation2 === void 0 ? void 0 : (_currentOperation2$an = _currentOperation2.animation) === null || _currentOperation2$an === void 0 ? void 0 : _currentOperation2$an.done()) !== null && _currentOperation$ani !== void 0 ? _currentOperation$ani : Promise.resolve(collapsed === me.collapsed);\n }\n collapseFinalize(operation, complete) {\n const me = this,\n {\n currentOperation,\n panel\n } = me,\n action = panel.collapsed ? 'expand' : 'collapse';\n if (currentOperation === operation) {\n me.currentOperation = null;\n operation.completed = complete;\n panel.changingCollapse = true;\n me[action + 'End'](operation);\n panel.changingCollapse = false;\n complete && me.onComplete(action);\n }\n }\n applyHeaderDock(collapsed, flush = true) {\n const me = this,\n {\n currentDock,\n panel\n } = me,\n dock = collapsed ? me.collapseDock : panel.expandedHeaderDock;\n if (dock !== currentDock && panel.hasHeader) {\n panel.header = {\n dock\n };\n flush && panel.recompose.flush();\n }\n }\n composeHeader(header) {\n header.class[revealerCls] = 1;\n return header;\n }\n composeTitle(title) {\n title.class[revealerCls] = 1;\n return title;\n }\n collapseBegin(operation) {\n var _panel$headerElement;\n const me = this,\n {\n animation\n } = operation,\n {\n collapseDim,\n collapseTool,\n panel\n } = me,\n {\n element\n } = panel,\n collapseToolClasses = collapseTool === null || collapseTool === void 0 ? void 0 : collapseTool.element.classList;\n me.configuredWidth = panel._lastWidth;\n me.configuredHeight = panel._lastHeight;\n me.applyHeaderDock(true);\n // Lock the bodyWrap to its current size while we animate the height of the outer element and clip it. We\n // also leave the bodyWrap locked to its expanded size to avoid crushing the content while collapsed since\n // that could cause virtual rendering widgets to have 0 height to work with and explode or at least waste\n // time adjusting back and forth.\n const panelRect = panel.rectangle(),\n bodyWrapRect = me.lockInnerSize().moveTo(0, 0),\n // we must lockInnerSize even if !animation\n bodyWrapClipRect = bodyWrapRect.clone(),\n clipDir = clipByDock[me.collapseDock],\n headerRect = (_panel$headerElement = panel.headerElement) === null || _panel$headerElement === void 0 ? void 0 : _panel$headerElement.getBoundingClientRect(),\n collapsedSize = round((headerRect === null || headerRect === void 0 ? void 0 : headerRect[collapseDim]) || 0);\n if (animation) {\n bodyWrapClipRect[clipDir[0]] = bodyWrapClipRect[clipDir[1]];\n element.classList.add('b-collapsing');\n // Flip to collapsed while skipping the animation (via b-collapsing)\n collapseToolClasses === null || collapseToolClasses === void 0 ? void 0 : collapseToolClasses.add('b-collapsed', 'b-collapsing');\n if (collapseTool) {\n collapseTool.collapsing = true;\n }\n if (collapseToolClasses) {\n collapseToolClasses.remove('b-collapsed'); // put the tool back to pre-collapse state\n panel.rectangle(); // force a layout to allow us to enable transitions\n collapseToolClasses.remove('b-collapsing'); // enable transitions\n collapseToolClasses.add('b-collapsed'); // start the tool's transition\n }\n\n animation.element = element;\n animation.retain = true;\n animation[collapseDim] = {\n from: round(panelRect[collapseDim]),\n to: collapsedSize\n };\n // While we animate the panel, we also need to clip the bodyWrap or it would be exposed on cases where\n // overflow=visible (like a tooltip w/anchor element)... doubtful we'd collapse such a panel but perhaps\n // there are (or will be) other reasons to set overflow=visible on the panel.\n animation.items = [{\n element: panel.bodyWrapElement,\n retain: false,\n clip: {\n from: `rect(${bodyWrapRect})`,\n to: `rect(${bodyWrapClipRect})`\n }\n }];\n operation.animation = Animator.run(animation);\n } else {\n // When animating we retain this style, so we need to just jam it on the element now since we aren't doing\n // the animation:\n element.style[collapseDim] = `${collapsedSize}px`;\n if (collapseTool) {\n collapseToolClasses.add('b-collapsing', 'b-collapsed'); // disable transition & snap to correct state\n collapseTool.rectangle(); // force a layout\n collapseToolClasses.remove('b-collapsing'); // now we can remove this cls w/o triggering a transition\n }\n }\n }\n\n collapseEnd(operation) {\n const me = this,\n {\n collapseTool\n } = me;\n me.panel.element.classList.remove('b-collapsing');\n if (collapseTool) {\n collapseTool.collapsing = false;\n }\n if (operation.completed) {\n me.collapsed = true;\n } else {\n me.applyHeaderDock(false);\n me.restoreConfiguredSize();\n me.lockInnerSize(false);\n }\n }\n collapseRevert(operation) {\n var _this$collapseTool;\n (_this$collapseTool = this.collapseTool) === null || _this$collapseTool === void 0 ? void 0 : _this$collapseTool.element.classList.remove('b-collapsed');\n }\n expandBegin(operation) {\n const me = this,\n {\n animation\n } = operation,\n {\n collapseDim,\n collapseTool,\n panel\n } = me,\n {\n element\n } = panel,\n fromRect = panel.rectangle();\n element.classList.remove('b-collapsed', 'b-collapsing');\n // This style is retained by the collapse animation and must be cleared to get a right measurement of the\n // expanded panel\n panel.element.style[collapseDim] = '';\n me.restoreConfiguredSize();\n me.lockInnerSize(false); // unlock the bodyWrap size\n const toRect = panel.rectangle(),\n // Lock the bodyWrap to its current size while we animate the height of the outer element and unclip it:\n bodyWrapRect = me.lockInnerSize().moveTo(0, 0),\n bodyWrapClipRect = bodyWrapRect.clone(),\n clipDir = clipByDock[me.collapseDock];\n collapseTool === null || collapseTool === void 0 ? void 0 : collapseTool.element.classList.remove('b-collapsed');\n if (animation) {\n bodyWrapClipRect[clipDir[0]] = bodyWrapClipRect[clipDir[1]];\n element.classList.add('b-collapsed', 'b-expanding');\n animation.element = element;\n animation[collapseDim] = {\n from: round(fromRect[collapseDim]),\n to: round(toRect[collapseDim])\n };\n animation.items = [{\n element: panel.bodyWrapElement,\n retain: false,\n clip: {\n from: `rect(${bodyWrapClipRect})`,\n to: `rect(${bodyWrapRect})`\n }\n }];\n operation.animation = Animator.run(animation);\n }\n }\n expandEnd(operation) {\n const me = this;\n me.panel.element.classList.remove('b-expanding');\n if (operation.completed) {\n me.collapsed = false;\n me.applyHeaderDock(false);\n me.restoreConfiguredSize();\n me.lockInnerSize(false);\n }\n }\n expandRevert(operation) {\n var _this$collapseTool2;\n (_this$collapseTool2 = this.collapseTool) === null || _this$collapseTool2 === void 0 ? void 0 : _this$collapseTool2.element.classList.add('b-collapsed');\n }\n get innerElement() {\n return this.panel.bodyWrapElement;\n }\n get innerSizeElement() {\n return this.innerElement;\n }\n get supportAxis() {\n let {\n _supportAxis\n } = this;\n const fullSupport = _supportAxis === true;\n if (fullSupport || _supportAxis == null) {\n _supportAxis = this.collapseDim[0]; // 'w' or 'h'\n if (fullSupport || DomHelper.getStyleValue(this.panel.element, 'position') === 'absolute') {\n _supportAxis += crossAxis[_supportAxis];\n }\n }\n return _supportAxis || '';\n }\n lockInnerSize(lock = true) {\n const me = this,\n {\n innerElement,\n panel\n } = me,\n supportAxis = lock ? me.supportAxis : '',\n panelEl = panel.element,\n headerEl = panel.headerElement,\n headerRect = lock && headerEl && Rectangle.from(headerEl, panelEl),\n innerRect = lock && Rectangle.from(me.innerSizeElement, panelEl),\n innerStyle = innerElement.style;\n // We have to prop up the cross-axis of the panel header in cases where the panel is not receiving a size from\n // its container (an auto layout). Otherwise, the header may shrink in width (when docked top) once the bodyWrap\n // flips to position:absolute... it will no longer be providing a natural size to prop up the panel, so we\n // shift that responsibility to the header element while we are collapsed.\n if (headerEl) {\n headerEl.style.minWidth = supportAxis.includes('w') ? `${headerRect.width}px` : '';\n headerEl.style.minHeight = supportAxis.includes('h') ? `${headerRect.height}px` : '';\n }\n // We must set w/h on the inner element before we flip it to position:absolute to avoid layout changes on items\n // in the panel (like grids)\n innerStyle.width = lock ? `${innerRect.width}px` : '';\n innerStyle.height = lock ? `${innerRect.height}px` : '';\n innerElement.classList[lock ? 'add' : 'remove']('b-panel-collapse-size-locker');\n return innerRect;\n }\n onCollapseClick(e) {\n let collapsed = this.collapsing ? false : this.expanding ? true : !this.collapsed;\n if (e.altKey) {\n collapsed = {\n animation: null,\n collapsed\n };\n }\n this.collapse(collapsed);\n }\n onComplete(action) {\n var _this$panel3;\n (_this$panel3 = this.panel) === null || _this$panel3 === void 0 ? void 0 : _this$panel3.trigger(action);\n }\n onHeaderClick({\n event\n }) {\n if (event.button === 0 && this.panel.collapsed && event.target.classList.contains(revealerCls)) {\n this.onRevealerClick();\n }\n }\n onPanelConfigChange({\n name,\n value\n }) {\n const me = this,\n {\n panel\n } = me;\n if (name === 'collapsed') {\n if (panel.isPainted) {\n me.collapsed = value;\n }\n } else if (name === 'header' && !panel.changingCollapse) {\n me.syncDirection();\n }\n }\n onPanelPaint() {\n this.syncDirection();\n if (this.panel.collapsed && !this.collapsed) {\n this.collapse({\n animation: null,\n collapsed: true\n });\n }\n }\n onRevealerClick() {\n this.panel.expand();\n }\n restoreConfiguredSize(which) {\n var _which;\n const {\n configuredHeight,\n configuredWidth,\n panel\n } = this;\n which = (_which = which) !== null && _which !== void 0 ? _which : 'wh';\n if (configuredWidth != null && which.includes('w')) {\n panel.width = configuredWidth;\n }\n if (configuredHeight != null && which.includes('h')) {\n panel.height = configuredHeight;\n }\n }\n splitHeaderItems() {\n return emptySplit$1;\n }\n syncDirection() {\n const me = this,\n {\n direction\n } = me;\n if (!direction || defaultedDirectionRe.test(direction)) {\n // getCollapseDir() returns uppercase values when they are being defaulted, so we can tell if the value\n // is from the user (which must be lowercase)\n me.direction = me.getCollapseDir();\n }\n }\n updateCollapsed(collapsed) {\n const {\n collapseTool,\n panel\n } = this;\n if (panel) {\n panel.collapsed = collapsed;\n panel.element.classList[collapsed ? 'add' : 'remove']('b-collapsed');\n }\n if (collapseTool) {\n collapseTool.collapsed = collapsed;\n }\n }\n updateDirection(direction) {\n const {\n collapseTool,\n panel\n } = this;\n if (collapseTool) {\n collapseTool.direction = canonicalDirection[direction];\n }\n if (panel !== null && panel !== void 0 && panel.rendered) {\n panel.recompose();\n }\n }\n updatePanel(panel) {\n var _me$panelChangeDetach;\n const me = this;\n me.syncDirection();\n (_me$panelChangeDetach = me.panelChangeDetacher) === null || _me$panelChangeDetach === void 0 ? void 0 : _me$panelChangeDetach.call(me);\n me.panelChangeDetacher = panel && FunctionHelper.after(panel, 'onConfigChange', 'onPanelConfigChange', me, {\n return: false\n });\n }\n wrapCollapser(key, body) {\n return [key, body];\n }\n}\nPanelCollapser.maps = {\n clipByDock,\n dockByDirection,\n dockIsHorz: dockIsHorz$1\n};\n// Register this widget type with its Factory\nPanelCollapser.initClass();\nPanelCollapser._$name = 'PanelCollapser';\n\n/**\n * @module Core/util/DynamicObject\n */\nconst PENDING = Symbol('pendingCreate');\n/**\n * This class is used to manage dynamic creation and configuration of individual properties of an object. This pattern\n * is used to allow the names of an object to each represent a dynamically instantiated object. For example, the\n * `features` config of Calendar is defined like so:\n *\n * ```javascript\n * class Calendar extends ... {\n * static get configurable() {\n * return {\n * features : {\n * drag : {\n * // configs for Drag feature\n * }\n * }\n * }\n * }\n * }\n * ```\n * This class is used to manage the `features` objects in the above case. The `drag` property value is promoted from\n * the config object defined by the class and user instance on first request. Like config properties themselves, these\n * features may access other features during their initialization. These accesses are trapped by this class to ensure\n * the config object is promoted to an instantiated instance.\n *\n * A {@link #config-factory} is provided to this object to allow it to create instances from names like `'drag'`.\n * @internal\n */\nclass DynamicObject extends Base$1 {\n static get prototypeProperties() {\n return {\n /**\n * Optional function that will be passed an instance prior to destroying it.\n * @param {String} name The property name in the Dynamic object by which the new instance may be referenced.\n * @param {Object} instance The value of the property.\n * @config {Function}\n */\n cleanup: null,\n /**\n * Optional name of the config property managed by this instance. If changes are made directly, this\n * property is used to run the `onConfigChange` method of the `owner`.\n * @config {String}\n */\n configName: null,\n /**\n * Optional function to call as instances are created. Each new instance is passed to this function.\n * @param {Object} instance The newly created instance.\n * @param {String} key The property name in the dynamic object by which the new instance may be referenced.\n * @config {Function}\n */\n created: null,\n /**\n * The {@link Core.mixin.Factoryable factory} to use to create instances.\n * @config {Object}\n */\n factory: null,\n /**\n * By default, the name of the member is used for the type. Set this config to `true` to also allow the\n * config object for a property to contain a `type` property. Set this to `false` to ignore the name of the\n * member and rely on the {@link #config-factory} to process the config object.\n * @config {Boolean|String}\n * @default\n */\n inferType: 'name',\n /**\n * The owning object to pass along to the instances as the `ownerName` property.\n * @config {Object}\n */\n owner: null,\n /**\n * The property name by which to store the `owner` on each instance.\n * @config {String}\n */\n ownerName: null,\n /**\n * Set to `false` to prevent using a `Proxy` even if that JavaScript platform feature is available. Using\n * a `Proxy` is ideal because it allows for all forms of access to the dynamic properties to be handled\n * instead of only those that have predefined configuration values.\n * @config {Boolean}\n * @private\n */\n proxyable: typeof Proxy !== 'undefined',\n /**\n * Optional function that will be passed a config object prior to instantiating an object. This function\n * can either modify the passed object or return a new object.\n * @param {Object} config The config object used to create the object\n * @param {String} name The property name in the Dynamic object by which the new instance may be referenced.\n * @config {Function}\n */\n setup: null,\n /**\n * Optional function that will be passed a raw config object prior to processing and the value it returns\n * replaces the raw value. This function is used to transform strings or arrays (for example) into proper\n * config objects.\n * @param {*} config The original value of the config object parameter\n * @config {Function}\n */\n transform: null\n };\n }\n static get properties() {\n return {\n /**\n * Holds config objects for each defined object. These are used to hold class and instance config values\n * and use them to create instances on first request, or when `flush()` is called. Further, if the instance\n * is initially assigned instead of retrieved, these values act as the defaults for the instance and are\n * combined with those provided in the assignment.\n * @member {Object} defaults\n * @private\n */\n defaults: {},\n /**\n * This object holds the actual instances that are retrieved by the dynamic accessor or `Proxy`.\n * @member {Object} instances\n * @private\n */\n instances: {},\n /**\n * The object that contains the dynamic accessors for each instance. This object is not used when using a\n * `Proxy`.\n * @member {Object} object\n * @private\n */\n object: Object.create({})\n };\n }\n /**\n * Returns the `Proxy` instance used to manage dynamic assignments. If the JavaScript platform does not support the\n * `Proxy` class, this will be `null`.\n * @property {Proxy}\n * @private\n */\n get proxy() {\n const me = this;\n let proxy = null;\n if (me.proxyable) {\n proxy = new Proxy(me.instances, {\n get(o, name) {\n return me.get(name);\n },\n set(o, name, value) {\n me.set(name, value);\n return true;\n },\n deleteProperty(o, name) {\n me.set(name, null);\n return true;\n }\n });\n }\n // Replace our getter with the result for quicker future use.\n Reflect.defineProperty(me, 'proxy', {\n configurable: true,\n // allow destroy() to delete it\n value: proxy\n });\n return proxy;\n }\n /**\n * Returns the object that contains the dynamic properties. This may be a `Proxy` instance or an object with getter\n * and setter accessors.\n * @property {Object}\n * @internal\n */\n get target() {\n return this.proxy || this.object;\n }\n /**\n * This method establishes the initial definition of a dynamic property. When using a `Proxy`, this method simply\n * needs to cache away the initial config for use by the getter. When `Proxy` is unavailable, this method will\n * also defined a getter/setter to intercept access to the dynamic property.\n * @param {String} name The name of the dynamic property.\n * @param {Object} config The initial config object for the dynamic property.\n * @private\n */\n define(name, config) {\n const me = this,\n {\n transform\n } = me,\n transformed = transform ? transform(config, name) : config,\n instantiated = ObjectHelper.isInstantiated(transformed);\n me.instances[name] = PENDING;\n if (!instantiated) {\n me.setDefaults(name, transformed);\n }\n // We provide get/set accessors on our `object` so that we can create the instance on first use and provide\n // the correct defaults. The setter also handles reassignment and reconfiguration. These accessors are\n // placed on the prototype of `object` so that we can add/remove the same accessors from `object` itself.\n // This allows users of the object to see the correct number of \"own\" keys for enumeration.\n me.defineProp(name, true);\n if (instantiated) {\n me.set(name, transformed);\n }\n }\n /**\n * Define the get/set accessors for `name` on our `object` or its prototype.\n * @param {String} name\n * @param {Boolean} [base] Pass `true` to indicate the property should be defined on the prototype.\n * @private\n */\n defineProp(name, base) {\n const me = this,\n {\n object\n } = me;\n if (!me.proxy) {\n Reflect.defineProperty(base ? Object.getPrototypeOf(object) : object, name, {\n configurable: !base,\n enumerable: true,\n get() {\n return me.get(name);\n },\n set(value) {\n return me.set(name, value);\n }\n });\n }\n }\n /**\n * Ensures that all defined members are touched to trigger their creation.\n * @internal\n */\n flush() {\n const me = this;\n // Iterate the defaults object to loop over all the defined items:\n try {\n var _me$afterConfigureOwn;\n me.updating = true;\n for (const name in me.defaults) {\n me.get(name);\n }\n me.afterConfigureOwner = (_me$afterConfigureOwn = me.afterConfigureOwner) === null || _me$afterConfigureOwn === void 0 ? void 0 : _me$afterConfigureOwn.call(me);\n } finally {\n me.updating = false;\n }\n }\n /**\n * Returns (lazily creating as necessary) the value of a dynamic property given its name.\n * @param {String} name\n * @returns {Object}\n * @private\n */\n get(name) {\n const {\n defaults,\n instances\n } = this;\n if (instances[name] === PENDING) {\n this.set(name, PENDING);\n }\n // Return null for defined instances that have been nulled out and undefined otherwise:\n return instances[name] || defaults[name] && null;\n }\n /**\n * Sets the value of a dynamic property given its name and value.\n * @param {String} name\n * @param {Object} value\n * @private\n */\n set(name, value) {\n const me = this,\n {\n cleanup,\n configName,\n defaults,\n factory,\n instances,\n owner,\n setup,\n transform,\n updating\n } = me,\n inform = owner && configName && !updating,\n was = instances[name] === PENDING ? null : instances[name],\n instance = factory.reconfigure(was, value === PENDING ? {} : value || null, {\n cleanup: cleanup && (instance => cleanup(instance, name)),\n defaults: defaults[name] || me.setDefaults(name, {}),\n owner: me.owner,\n setup: setup && ((config, type, defaults) => setup(config, name, type, defaults)),\n transform: transform && (config => transform(config, name))\n });\n if (instance !== was) {\n const before = inform && _objectSpread2({}, instances);\n instances[name] = instance;\n if (instance) {\n var _me$created;\n me.defineProp(name);\n (_me$created = me.created) === null || _me$created === void 0 ? void 0 : _me$created.call(me, instance, name);\n } else {\n delete me.object[name];\n delete instances[name];\n }\n if (inform) {\n owner.onConfigChange({\n name: configName,\n config: owner.$meta.configs[configName],\n value: me.target,\n was: before\n });\n }\n }\n }\n /**\n * Stores the default config values for use in the factory reconfiguration process.\n * @param {String} name The name and default type of the dynamic property. Depending on {@link #config-inferType},\n * this may not be overridden by a type property in the config object.\n * @param {Object} config The config object.\n * @returns {Object}\n * @private\n */\n setDefaults(name, config) {\n const {\n defaults,\n factory,\n inferType,\n instances,\n owner,\n ownerName\n } = this,\n {\n typeKey\n } = factory.factoryable;\n config = config === true ? {} : ObjectHelper.assign({}, config); // copy props even from prototype\n if (inferType === 'name' || inferType === true && !config[typeKey]) {\n config[typeKey] = name;\n }\n // Store this object as the \"owner\" on the config object so instances can access their creating object:\n if (ownerName) {\n config[ownerName] = owner;\n }\n config.beforeConfigure = instance => {\n // Ensure the feature is injected into the features object before initialization so that it is\n // available to call chains from its initialization.\n instances[name] = instance;\n };\n return defaults[name] = config;\n }\n /**\n * Updates the members of `object` based on the provided configuration.\n * @param {Object} members The configuration for the instances of `object`.\n * @internal\n */\n update(members) {\n const me = this,\n {\n owner\n } = me;\n let name, config;\n try {\n me.updating = true;\n if (members) {\n // We prime the features so that if any configuration code accesses a feature, it will self initialize,\n // but if not, they will remain in a primed state until afterConfigure.\n for (name in members) {\n config = members[name];\n if (me.defaults[name]) {\n // if (already defined)\n me.set(name, config);\n } else if (config) {\n me.define(name, config);\n }\n }\n // NOTE: we leave alone any existing features that were not present in the given object. To remove a\n // feature, you must set it to null or set all features to null.\n } else {\n for (name in me.instances) {\n me.set(name, null);\n }\n }\n } finally {\n me.updating = false;\n }\n if (owner) {\n // Normally we wait for afterConfigure to create all the objects, but if we are being called after that\n // point in the life cycle, we need to flush them out now. We still use the same delay technique in case\n // the user adds multiple properties dynamically.\n if (!owner.isConfiguring) {\n me.flush();\n } else if (!me.afterConfigureOwner) {\n // Since we are being called while the owner isConfiguring, set a hook on owner.afterConfigure() so\n // that we can make good on creating the child objects.\n me.afterConfigureOwner = FunctionHelper.before(owner, 'afterConfigure', 'flush', me);\n }\n }\n }\n}\nDynamicObject.initClass();\nDynamicObject._$name = 'DynamicObject';\n\n/**\n * @module Core/widget/mixin/Toolable\n */\nconst emptyArray$5 = [],\n emptyObject$6 = {},\n toolConfigs = {\n align: 1,\n // hidden : 1,\n weight: 1\n };\n/**\n * A mixin that manages {@link #config-tools}.\n *\n * @mixin\n * @mixinbase Widget\n */\nvar Toolable = (Target => class Toolable extends (Target || Widget) {\n static get $name() {\n return 'Toolable';\n }\n static get configurable() {\n return {\n /**\n * The {@link Core.widget.Tool tools} as specified by the {@link #config-tools} configuration. Each is a\n * {@link Core.widget.Tool} instance which may be hidden, shown and observed and styled just like any other\n * widget.\n * @member {Object} tools\n * @category Content\n */\n /**\n * The {@link Core.widget.Tool tools} to add either before or after the `title` in the Panel header. Each\n * property name is the reference by which an instantiated tool may be retrieved from the live\n * `{@link #property-tools}` property.\n * @config {Object}\n * @category Content\n */\n tools: {\n value: null,\n $config: {\n nullify: true\n }\n },\n /**\n * An object containing config defaults for corresponding {@link #config-tools} objects with a matching name.\n *\n * This object contains a key named `'*'` with default config properties to apply to all tools. This\n * object provides the default `type` (`'tool').\n * @config {Object} toolDefaults\n * @private\n */\n toolDefaults: {\n '*': {\n type: 'tool',\n align: 'end'\n }\n }\n };\n }\n byWeightSortFn(a, b) {\n return (a.weight || 0) - (b.weight || 0);\n }\n byWeightReverseSortFn(a, b) {\n return (b.weight || 0) - (a.weight || 0);\n }\n gatherTools({\n align,\n overlay,\n refs\n } = emptyObject$6) {\n const {\n collapsed,\n tools\n } = this;\n let ret = [],\n alignment,\n key,\n i,\n item,\n tool;\n for (key in tools) {\n var _ref, _tool$align$align, _tool, _tool$align, _tool2;\n tool = tools[key];\n // Tools redefine \"align\" config to be a simple string, but other widgets promote align config to an align\n // spec object\n alignment = (_ref = (_tool$align$align = (_tool = tool) === null || _tool === void 0 ? void 0 : (_tool$align = _tool.align) === null || _tool$align === void 0 ? void 0 : _tool$align.align) !== null && _tool$align$align !== void 0 ? _tool$align$align : (_tool2 = tool) === null || _tool2 === void 0 ? void 0 : _tool2.align) !== null && _ref !== void 0 ? _ref : 'end';\n if (alignment === align && tool.isCollapsified(collapsed, overlay)) {\n ret.push(tool);\n }\n }\n ret.sort(this[align === 'end' ? 'byWeightReverseSortFn' : 'byWeightSortFn']);\n if (refs) {\n const asWidget = refs === 'widget',\n asRefs = {};\n for (i = 0; i < ret.length; ++i) {\n item = ret[i];\n asRefs[item.ref] = asWidget ? item : item.element;\n }\n ret = asRefs;\n }\n return ret;\n }\n getEndTools({\n overlay,\n refs\n } = emptyObject$6) {\n return this.gatherTools({\n align: 'end',\n overlay,\n refs\n });\n }\n getStartTools({\n overlay,\n refs\n } = emptyObject$6) {\n return this.gatherTools({\n align: 'start',\n overlay,\n refs\n });\n }\n get childItems() {\n return [...this.getStartTools(), ...(this._items || emptyArray$5), ...this.getEndTools()];\n }\n changeTools(tools, oldTools) {\n const me = this,\n manager = me.$tools || (me.$tools = new DynamicObject({\n configName: 'tools',\n factory: Widget,\n inferType: false,\n // the name of a tool in the tools object is not its type\n owner: me,\n created(instance) {\n var _instance$syncRotatio, _me$header;\n instance.innerItem = false;\n (_instance$syncRotatio = instance.syncRotationToDock) === null || _instance$syncRotatio === void 0 ? void 0 : _instance$syncRotatio.call(instance, (_me$header = me.header) === null || _me$header === void 0 ? void 0 : _me$header.dock);\n FunctionHelper.after(instance, 'onConfigChange', (ret, {\n name\n }) => {\n if (toolConfigs[name]) {\n me.onConfigChange({\n name: 'tools',\n value: manager.target\n });\n }\n });\n me.onChildAdd(instance);\n },\n setup(config, name) {\n config = ObjectHelper.merge({}, me.toolDefaults['*'], me.toolDefaults[name], config);\n config.parent = me; // so parent can be accessed during construction\n config.ref = name;\n return config;\n }\n }));\n manager.update(tools);\n if (!oldTools) {\n // Only return the target once. Further calls are processed above so we need to return undefined to ensure\n // onConfigChange is called. By returning the same target on 2nd+ call, it passes the === test and won't\n // trigger onConfigChange.\n return manager.target;\n }\n }\n get widgetClass() {}\n});\n\n/**\n * @module Core/widget/layout/Box\n */\nconst directionCls = ['b-hbox', 'b-vbox'],\n syncAlign = {\n name: 'align',\n style: 'alignItems'\n },\n syncContentAlign = {\n name: 'contentAlign',\n style: 'alignContent'\n },\n syncDirection = {\n name: 'direction',\n style: 'flexDirection'\n },\n syncJustify = {\n name: 'justify',\n style: 'justifyContent',\n classes: ['stretch']\n },\n syncWrap = {\n name: 'wrap',\n style: 'flexWrap',\n map: {\n false: 'nowrap',\n true: 'wrap',\n reverse: 'wrap-reverse'\n }\n };\n/**\n * A layout that applies `display: flex` to the {@link Core.widget.Widget#property-contentElement contentElement} of\n * its container to layout child items. This defaults to a horizontal layout of items, also known as an `'hbox'`.\n * ```javascript\n * layout : {\n * type : 'box' // or equivalently, 'hbox'\n * }\n * ```\n * @extends Core/widget/layout/Layout\n */\nclass Box extends Layout {\n static get $name() {\n return 'Box';\n }\n static get type() {\n return 'box';\n }\n static get alias() {\n return 'hbox';\n }\n static get configurable() {\n return {\n itemCls: 'b-box-item',\n /**\n * Sets the [align-items](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items) style of the\n * {@link #property-owner owner's} {@link Core.widget.Widget#property-contentElement contentElement}.\n * @config {String} align\n * @default 'stretch'\n */\n align: null,\n /**\n * Sets the [align-content](https://developer.mozilla.org/en-US/docs/Web/CSS/align-content) style of the\n * {@link #property-owner owner's} {@link Core.widget.Widget#property-contentElement contentElement}.\n * @config {String} contentAlign\n * @default 'normal'\n */\n contentAlign: null,\n /**\n * Sets the [direction](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction) style of the\n * {@link #property-owner owner's} {@link Core.widget.Widget#property-contentElement contentElement}.\n * This config is not set directly. Set {@link #config-horizontal}, {@link #config-vertical}, and/or\n * {@link #config-reverse} instead.\n * @config {String} direction\n * @private\n */\n direction: null,\n /**\n * Set this value to `false` to set the [flex-direction](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction)\n * style of the {@link #property-owner owner's} {@link Core.widget.Widget#property-contentElement contentElement}\n * to `column`. Or alternatively, set {@link #config-vertical} to `true`.\n * @config {Boolean} horizontal\n * @default\n */\n horizontal: true,\n /**\n * Sets the [justify-content](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content) style of the\n * {@link #property-owner owner's} {@link Core.widget.Widget#property-contentElement contentElement}.\n * @config {String} justify\n * @default 'flex-start'\n */\n justify: null,\n /**\n * Set this value to `true` to add `'-reverse'` to the [flex-direction](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction)\n * style of the {@link #property-owner owner's} {@link Core.widget.Widget#property-contentElement contentElement}.\n * This config combines with {@link #config-horizontal} or {@link #config-vertical} to set the `flex-direction`\n * style.\n * @config {Boolean} reverse\n * @default false\n */\n reverse: null,\n /**\n * Sets the [flex-wrap](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap) style of the\n * {@link #property-owner owner's} {@link Core.widget.Widget#property-contentElement contentElement}.\n *\n * The value of `true` is equivalent to `'wrap'`, `false` is equivalent to `'nowrap'`, and `'reverse'` is\n * equivalent to `'wrap-reverse'`.\n *\n * ```javascript\n * layout : {\n * type : 'box',\n * wrap : false // equivalent to 'nowrap'\n * wrap : true // equivalent to 'wrap'\n * wrap : 'reverse' // equivalent to 'wrap-reverse'\n * }\n * ```\n * @config {String|Boolean} wrap\n * @default false\n */\n wrap: null\n };\n }\n /**\n * Set this value to `true` to set the [flex-direction](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction)\n * style of the {@link #property-owner owner's} {@link Core.widget.Widget#property-contentElement contentElement}\n * to `column`. Or alternatively, set {@link #config-horizontal} to `false`.\n * @config {Boolean} vertical\n * @default false\n */\n get vertical() {\n return this.horizontal === false;\n }\n set vertical(v) {\n return this.horizontal = !v;\n }\n updateAlign() {\n this.syncConfigStyle(syncAlign);\n }\n updateContentAlign() {\n this.syncConfigStyle(syncContentAlign);\n }\n updateDirection() {\n this.syncConfigStyle(syncDirection);\n }\n updateHorizontal() {\n var _me$contentElement;\n const me = this,\n classList = (_me$contentElement = me.contentElement) === null || _me$contentElement === void 0 ? void 0 : _me$contentElement.classList,\n vertical = Number(me.vertical);\n if (classList) {\n classList.remove(directionCls[1 - vertical]);\n classList.add(directionCls[vertical]);\n } else {\n me.syncConfigLater('horizontal');\n }\n me.syncDirection();\n }\n updateJustify() {\n this.syncConfigStyle(syncJustify);\n }\n updateReverse() {\n this.syncDirection();\n }\n updateWrap() {\n this.syncConfigStyle(syncWrap);\n }\n syncDirection() {\n const me = this,\n {\n reverse\n } = me;\n me.direction = reverse ? `${me.vertical ? 'column' : 'row'}${reverse ? '-reverse' : ''}` : null;\n }\n}\n// Layouts must register themselves so that the static layout instantiation\n// in Layout knows what to do with layout type names\nBox.initClass();\nBox._$name = 'Box';\n\n/**\n * @module Core/widget/layout/VBox\n */\n/**\n * A {@link Core.widget.layout.Box} layout that defaults to `horizontal : false`.\n *\n * The following:\n * ```javascript\n * layout : {\n * type : 'vbox'\n * }\n * ```\n * Is equivalent to:\n * ```javascript\n * layout : {\n * type : 'box',\n * horizontal : false\n * }\n * ```\n * @extends Core/widget/layout/Box\n */\nclass VBox extends Box {\n static get $name() {\n return 'VBox';\n }\n static get type() {\n return 'vbox';\n }\n static get configurable() {\n return {\n horizontal: false\n };\n }\n}\n// Layouts must register themselves so that the static layout instantiation\n// in Layout knows what to do with layout type names\nVBox.initClass();\nVBox._$name = 'VBox';\n\n/**\n * @module Core/widget/mixin/Badge\n */\n/**\n * Mixin that allows a widget to display a badge (mostly done as css)\n *\n * ```javascript\n * // show badge\n * button.badge = 5;\n *\n * // hide badge\n * button.badge = null;\n * ```\n *\n * @inlineexample Core/widget/Badge.js\n *\n * @mixin\n */\nvar Badge = (Target => class Badge extends (Target || Base$1) {\n static get $name() {\n return 'Badge';\n }\n static get configurable() {\n return {\n /**\n * Get/sets and display badge, set to null or empty string to hide.\n * @member {String} badge\n * @category Misc\n */\n /**\n * Initial text to show in badge.\n * @config {String} badge\n * @category Misc\n */\n badge: null\n };\n }\n compose() {\n const {\n badge\n } = this;\n return {\n dataset: {\n badge\n },\n class: {\n 'b-badge': badge != null && badge !== ''\n }\n };\n }\n});\n\n//TODO: should togglebutton be own class implemented as input type=checkbox?\n//TODO: A toggling widget's focusElement should be an opacity:0 input type=checkbox which covers the clickable area.\n/**\n * @module Core/widget/Button\n */\nconst bIcon$1 = /(?:^|\\s)b-icon-/,\n bFa$1 = /(?:^|\\s)b-fa-/,\n defaultToggleable = Symbol('defaultToggleable'),\n fullConfigKeys = ['items', 'type', 'widgets', 'html', 'listeners'];\n/**\n * Button widget, wraps and styles a regular <button> element. Can display text and icon and also\n * allows specifying button {@link #config-color}. Supports different appearances, by setting {@link #config-cls} to one\n * of:\n *\n * * 'b-raised' - Raised buttons\n * * 'b-rounded' - Round buttons\n * * 'b-transparent' - Buttons without border or background\n *\n * ## Default appearance\n *\n * By default buttons uses a flat look in all themes:\n *\n * {@inlineexample Core/widget/ButtonDefault.js}\n *\n * ```javascript\n * // Green button with text and icon\n * const button = new Button({\n * appendTo : document.body,\n * icon : 'b-fa-plus-circle',\n * text : 'Add',\n * color : 'green',\n * onClick : () => {}\n * });\n * ```\n *\n * ## Raised appearance\n *\n * By configuring a button with `cls : 'b-raised'` its appearance change. In Material the button appears raised, in the\n * other themes it is instead filled:\n *\n * {@inlineexample Core/widget/ButtonRaised.js}\n *\n * ```javascript\n * // Raised green button with text and icon\n * const button = new Button({\n * appendTo : document.body,\n * cls : 'b-raised',\n * icon : 'b-fa-plus-circle',\n * text : 'Add',\n * color : 'green',\n * onClick : () => {}\n * });\n * ```\n *\n * ## Rounded appearance\n *\n * Configure a button with `cls : 'b-rounded'` to make it round. Works best for icon only buttons or buttons with very\n * short texts:\n *\n * {@inlineexample Core/widget/ButtonRounded.js}\n *\n * ```javascript\n * // Rounded button with icon\n * const button = new Button({\n * appendTo : document.body,\n * cls : 'b-raised b-rounded',\n * icon : 'b-fa-plus-circle',\n * color : 'green',\n * onClick : () => {}\n * });\n * ```\n *\n * ## Transparent appearance\n *\n * Configure a button with `cls : 'b-transparent'` to display it without border or background:\n *\n * {@inlineexample Core/widget/ButtonTransparent.js}\n * ```javascript\n * // Transparent green button with text and icon\n * const button = new Button({\n * appendTo : document.body,\n * cls : 'b-transparent',\n * icon : 'b-fa-plus-circle',\n * text : 'Add',\n * color : 'green',\n * onClick : () => {}\n * });\n * ```\n *\n * ## Button with menu\n *\n * Buttons can also have a menu that is shown on click:\n *\n * {@inlineexample Core/widget/ButtonWithMenu.js}\n *\n * ```javascript\n * // Transparent green button with text and icon\n * const button = new Button({\n * appendTo : document.body,\n * icon : 'b-fa-chart',\n * menu : {\n * items : [\n * {\n * text : 'Click me',\n * onItem : () => console.log('I was clicked')\n * }\n * ]\n * }\n * });\n * ```\n *\n * This class may be operated by the keyboard. `Space` pressses the button and invokes any\n * click handler, and `ArrowDown` activates any configured {@link #config-menu}.\n * @classType button\n * @extends Core/widget/Widget\n * @mixes Core/widget/mixin/Badge\n */\nclass Button extends Widget.mixin(Badge, Rotatable) {\n //region Config\n static get $name() {\n return 'Button';\n }\n // Factoryable type name\n static get type() {\n return 'button';\n }\n static get configurable() {\n return {\n /**\n * Get/set the Button icon\n * @member {String} icon\n */\n /**\n * Button icon class.\n *\n * All [Font Awesome](https://fontawesome.com/cheatsheet) icons may also be specified as `'b-fa-' + iconName`.\n *\n * Otherwise this is a developer-defined CSS class string which results in the desired icon.\n * @config {String}\n */\n icon: null,\n /**\n * The menu icon class to show when the button has a menu. Set to `null` to not show a menu icon.\n *\n * All [Font Awesome](https://fontawesome.com/cheatsheet) icons may also be specified as `'b-fa-' + iconName`.\n *\n * @config {String}\n * @default\n */\n menuIcon: 'b-icon-picker',\n /**\n * Get/set the Button pressed icon\n * @member {String} pressedIcon\n */\n /**\n * Icon class for the buttons pressed state. Only applies to toggle buttons\n *\n * All [Font Awesome](https://fontawesome.com/cheatsheet) icons may also be specified as `'b-fa-' + iconName`.\n *\n * Otherwise this is a developer-defined CSS class string which results in the desired icon.\n *\n * ```\n * new Button({\n * // Icon for unpressed button\n * icon : 'b-fa-wine-glass',\n *\n * // Icon for pressed button\n * pressedIcon : 'b-fa-wine-glass-alt',\n *\n * // Only applies to toggle buttons\n * toggleable : true\n * });\n * ```\n *\n * @config {String}\n */\n pressedIcon: null,\n /**\n * Get/Set the Button icon alignment.\n * May be `'start'` or `'end'`. Defaults to `'start'`\n * @member {'start'|'end'} iconAlign\n */\n /**\n * Button icon alignment. May be `'start'` or `'end'`. Defaults to `'start'`\n * @config {'start'|'end'}\n * @default\n */\n iconAlign: 'start',\n /**\n * Get/set text displayed on the button.\n * @member {String} text\n */\n /**\n * The button's text.\n * @config {String}\n */\n text: {\n value: null,\n $config: null,\n default: ''\n },\n /**\n * Button color (should have match in button.scss or your custom styling). Valid values in Bryntum themes\n * are:\n * * b-amber\n * * b-blue\n * * b-dark-gray\n * * b-deep-orange\n * * b-gray\n * * b-green\n * * b-indigo\n * * b-lime\n * * b-light-gray\n * * b-light-green\n * * b-orange\n * * b-purple\n * * b-red\n * * b-teal\n * * b-white\n * * b-yellow\n * Combine with specifying `b-raised` for raised/filled style (theme dependent).\n *\n * ```\n * new Button({\n * color : 'b-teal b-raised'\n * });\n * ```\n *\n * @config {String}\n */\n color: null,\n /**\n * Enabled toggling of the button (stays pressed when pressed).\n * @config {Boolean}\n * @default false\n */\n toggleable: defaultToggleable,\n /**\n * Get/set button pressed state\n * @member {Boolean} pressed\n */\n /**\n * Initially pressed or not. Only applies with `toggleable = true`.\n * ```\n * const toggleButton = new Button({\n * toggleable : true,\n * text : 'Enable cool action'\n * });\n * ```\n * @config {Boolean}\n * @default\n */\n pressed: false,\n /**\n * Indicates that this button is part of a group where only one button can be pressed. Assigning a value\n * also sets `toggleable` to `true`.\n *\n * When part of a {@link Core.widget.ButtonGroup}, you can set {@link Core.widget.ButtonGroup#config-toggleGroup}\n * on it as an alternative to on each button. This config can then be used to override that value if needed.\n *\n * ```javascript\n * const yesButton = new Button({\n * toggleGroup : 'yesno',\n * text : 'Yes'\n * });\n *\n * const noButton = new Button({\n * toggleGroup : 'yesno',\n * text : 'No'\n * });\n * ```\n * @config {String}\n */\n toggleGroup: null,\n ripple: {\n radius: 75\n },\n forwardTwinEvents: ['action', 'toggle'],\n localizableProperties: ['text'],\n /**\n * Returns the instantiated menu widget as configured by {@link #config-menu}.\n * @member {Core.widget.Widget} menu\n */\n /**\n * A submenu configuration object, or an array of MenuItem configuration\n * objects from which to create a submenu which is shown when this button is pressed.\n *\n * Note that this does not have to be a Menu. The `type` config can be used\n * to specify any widget as the submenu.\n *\n * May also be specified as a fully instantiated {@link Core.widget.Widget#config-floating floating Widget}\n * such as a {@link Core/widget/Popup}.\n * @config {Object|Object[]|Core.widget.Widget}\n */\n menu: {\n $config: ['lazy', 'nullify'],\n value: null\n },\n menuDefaults: {\n type: 'menu',\n autoShow: false,\n autoClose: true,\n floating: true,\n scrollAction: 'realign',\n align: 't0-b0'\n },\n /**\n * If provided, turns the button into a link\n * @config {String}\n */\n href: null,\n /**\n * The `target` attribute for the {@link #config-href} config\n * @config {String}\n */\n target: null,\n // Our own setValues/getValues system should not set/get HTML content\n defaultBindProperty: null\n };\n }\n updateReadOnly(readOnly) {\n super.updateReadOnly(readOnly);\n // Native buttons have no readOnly state\n this.disabled = readOnly;\n }\n changeDisabled(disabled) {\n if (this.readOnly) {\n return true;\n }\n return disabled;\n }\n updateElement(element, oldElement) {\n var _constructor$resolveT, _constructor$resolveT2, _constructor$configur;\n const me = this,\n {\n constructor\n } = me,\n result = super.updateElement(element, oldElement),\n menu = me.peekConfig('menu'),\n role = menu ? menu.isWidget ? menu.role : ((_constructor$resolveT = constructor.resolveType(menu.type)) === null || _constructor$resolveT === void 0 ? void 0 : (_constructor$resolveT2 = _constructor$resolveT.configurable) === null || _constructor$resolveT2 === void 0 ? void 0 : _constructor$resolveT2.role) || ((_constructor$configur = constructor.configurable.menuDefaults) === null || _constructor$configur === void 0 ? void 0 : _constructor$configur.type) || 'menu' : false;\n me.ariaHasPopup = role;\n return result;\n }\n compose() {\n const {\n color,\n href,\n icon,\n iconAlign,\n pressed,\n pressedIcon,\n target,\n text,\n toggleable,\n toggleGroup,\n menuIcon\n } = this,\n hasMenu = this.hasConfig('menu'),\n iconCls = pressed && pressedIcon ? pressedIcon : icon;\n return {\n tag: href ? 'a' : 'button',\n href,\n target,\n class: {\n [`b-icon-align-${iconAlign}`]: icon,\n [color]: Boolean(color),\n 'b-pressed': pressed && toggleable,\n 'b-text': Boolean(text),\n 'b-has-menu': hasMenu\n },\n 'aria-pressed': pressed,\n dataset: {\n group: toggleGroup\n },\n listeners: {\n click: 'onInternalClick',\n mousedown: 'onInternalMousedown'\n },\n children: {\n iconElement: (icon || pressedIcon) && {\n // This element is a purely visual cue with no meaning to the A11Y tree\n 'aria-hidden': true,\n tag: 'i',\n class: _objectSpread2(_objectSpread2({}, DomClassList.normalize(iconCls, 'object')), {}, {\n 'b-icon': bIcon$1.test(iconCls),\n 'b-fa': bFa$1.test(iconCls)\n })\n },\n label: text && {\n tag: 'label',\n text\n },\n menuIconElement: hasMenu && menuIcon && {\n tag: 'i',\n class: {\n 'b-icon': bIcon$1.test(menuIcon),\n 'b-fa': bFa$1.test(menuIcon),\n 'b-button-menu-icon': 1,\n [menuIcon]: 1\n }\n }\n }\n };\n }\n //endregion\n configureOverflowTwin(overrides) {\n const me = this,\n config = super.configureOverflowTwin(overrides);\n // TODO - will look better but need be clever - https://github.com/bryntum/support/issues/2298\n // config.type = type = type.resolveType('menuitem');\n // Icon-only buttons are not useful in a menu.\n // Use any tooltip text as the button text.\n if (!config.text) {\n config.text = me.tooltipText;\n }\n return config;\n }\n onHide() {\n var _this$_menu;\n // Stop a menu from being visually orphaned if this button is hidden while its menu is visible\n (_this$_menu = this._menu) === null || _this$_menu === void 0 ? void 0 : _this$_menu.hide();\n }\n /**\n * Iterate over all widgets owned by this widget and any descendants.\n *\n * *Note*: Due to this method aborting when the function returns `false`, beware of using short form arrow\n * functions. If the expression executed evaluates to `false`, iteration will terminate.\n *\n * _Due to the {@link #config-menu} config being a lazy config and only being converted to be a\n * `Menu` instance just before it's shown, the menu will not be part of the iteration before\n * it has been shown once_.\n * @function eachWidget\n * @param {Function} fn A function to execute upon all descendant widgets.\n * Iteration terminates if this function returns `false`.\n * @param {Boolean} [deep=true] Pass as `false` to only consider immediate child widgets.\n * @returns {Boolean} Returns `true` if iteration was not aborted by a step returning `false`\n */\n get childItems() {\n return this._menu && [this.menu];\n }\n onFocusOut(e) {\n var _this$menu;\n super.onFocusOut(e);\n (_this$menu = this.menu) === null || _this$menu === void 0 ? void 0 : _this$menu.hide();\n }\n //region Getters/Setters\n get focusElement() {\n return this.element;\n }\n changeText(text) {\n return text == null ? '' : text;\n }\n changeToggleable(toggleable) {\n if (toggleable === defaultToggleable) {\n return this.toggleGroup || this.config.menu;\n }\n return toggleable;\n }\n changeMenu(menu, oldMenu) {\n const me = this,\n {\n element: forElement\n } = me;\n if (menu) {\n if (menu.isWidget) {\n menu.forElement = forElement;\n menu.owner = me;\n menu.constrainTo = me.rootElement;\n } else {\n // This covers both Array and Object which are valid items config formats.\n // menu could be { itemRef : { text : 'sub item 1 } }. But if it has\n // child items or html property in it, it's the main config\n if (typeof menu === 'object' && !fullConfigKeys.some(key => key in menu)) {\n menu = {\n lazyItems: menu\n };\n }\n menu = Widget.reconfigure(oldMenu, menu ? ObjectHelper.merge({\n owner: me,\n constrainTo: me.rootElement,\n forElement\n }, me.menuDefaults, menu) : null, me);\n }\n // Menu will shrink and fit inside a 10px inset of viewport.\n // Rectangle.alignTo prioritizes alignment if the target edge is closer to\n // the constrainTo edge than this in order to produce visually correct results.\n menu.align.constrainPadding = 10;\n menu.on({\n beforeShow: 'onMenuBeforeShow',\n hide: 'onMenuHide',\n show: 'onMenuShow',\n thisObj: this\n });\n } else {\n oldMenu === null || oldMenu === void 0 ? void 0 : oldMenu.destroy();\n }\n return menu;\n }\n onMenuBeforeShow({\n source\n }) {\n /**\n * This event is triggered when the button's menu is about to be shown.\n * @event beforeShowMenu\n * @param {Core.widget.Button} source This Button instance.\n * @param {Core.widget.Menu} menu This button's menu instance.\n */\n return this.trigger('beforeShowMenu', {\n menu: source\n });\n }\n onMenuShow() {\n this.ariaElement.setAttribute('aria-expanded', true);\n }\n onMenuHide() {\n this.ariaElement.setAttribute('aria-expanded', false);\n // We must react to its state change to hidden by becoming unpressed.\n // If we just hid it in the toggle method, this will be a no-op.\n this.toggle(false);\n }\n updateMenu(menu) {\n // We are toggleable if there's a menu.\n // Pressed means menu visible, not pressed means menu hidden.\n this.toggleable = Boolean(menu);\n }\n updatePressed(pressed) {\n const me = this;\n if (!me.toggleable || me.isConfiguring) {\n return;\n }\n const {\n menu\n } = me;\n if (pressed) {\n DomHelper.forEachSelector(me.rootElement, `button[data-group=${me.toggleGroup}]`, btnEl => {\n if (btnEl !== me.element) {\n Widget.getById(btnEl.id).pressed = false;\n }\n });\n }\n if (menu) {\n var _menu$_minHeight, _menu$_minWidth;\n if (!menu.initialConfig.minWidth) {\n menu.minWidth = me.width;\n }\n // The presence of a number indicates to the align constraining algorithm\n // that it is *willing* to shrink in that dimension. It will never end up this small.\n // Use the properties because the getter will return 0 if not set.\n menu.align.minHeight = (_menu$_minHeight = menu._minHeight) !== null && _menu$_minHeight !== void 0 ? _menu$_minHeight : 100;\n menu.align.minWidth = (_menu$_minWidth = menu._minWidth) !== null && _menu$_minWidth !== void 0 ? _menu$_minWidth : 100;\n menu[pressed ? 'show' : 'hide']();\n }\n /**\n * Fires when the button is toggled via a UI interaction (the {@link #property-pressed} state is changed). If the button is part of a\n * {@link #config-toggleGroup} and you need to process the pressed button only, consider using\n * {@link #event-click} event or {@link #event-action} event.\n * @event toggle\n * @param {Core.widget.Button} source Toggled button\n * @param {Boolean} pressed New pressed state\n * @param {Event} event DOM event\n */\n me.trigger('toggle', {\n pressed\n });\n }\n //endregion\n //region Events\n onInternalMousedown(event) {\n var _this$_menu2;\n // Do not allow focus to hide the menu if it's focused - the impending click must do that.\n // Use the _property name because menu is lazy and we do not want to call it into existence.\n if ((_this$_menu2 = this._menu) !== null && _this$_menu2 !== void 0 && _this$_menu2.containsFocus && this.pressed) {\n event.preventDefault();\n }\n }\n /**\n * Triggers events when user clicks button\n * @fires click\n * @fires action\n * @internal\n */\n onInternalClick(event) {\n const me = this,\n bryntumEvent = {\n event\n };\n // Safari && FF trigger click on disabled button, Chrome does not. Handling it here\n if (me.disabled) {\n return;\n }\n if (me.toggleable) {\n // Clicking the pressed button in a toggle group should do nothing\n if (me.toggleGroup && me.pressed) {\n return;\n }\n me.toggle(!me.pressed);\n // Edge case in dragfromgrid demo, where toggling mode destroys the Scheduler and thus destroys the toolbar\n // and the button in it\n if (me.isDestroyed) {\n return;\n }\n }\n /**\n * Fires when the button is clicked\n * @event click\n * @param {Core.widget.Button} source The button\n * @param {Event} event DOM event\n */\n me.trigger('click', bryntumEvent);\n /**\n * Fires when the default action is performed (the button is clicked)\n * @event action\n * @param {Core.widget.Button} source The button\n * @param {Event} event DOM event\n */\n // A handler may have resulted in destruction.\n if (!me.isDestroyed) {\n me.trigger('action', bryntumEvent);\n }\n // since Widget has Events mixed in configured with 'callOnFunctions' this will also call onClick and onAction\n if (!me.href) {\n // stop the event since it has been handled\n event.preventDefault();\n event.stopPropagation();\n }\n }\n //endregion\n //region Misc\n /**\n * Toggle button state (only use with toggleable = true)\n * @param {Boolean} pressed Specify to force a certain toggle state\n * @fires toggle\n */\n toggle(pressed = !this.pressed) {\n this.pressed = pressed;\n }\n //endregion\n}\n// Register this widget type with its Factory\nButton.initClass();\nButton._$name = 'Button';\n\n/**\n * @module Core/widget/Toolbar\n */\nconst asElementRefs = {\n refs: 'element'\n },\n onCreateTwin = overflowTwin => overflowTwin.element.style.margin = '',\n isToolbar = w => w.isToolbar,\n itemScoreFn = ent => ent[0] + (ent[1].minifiable ? 0 : 9e9),\n twinOverrides = {\n // If the initialConfig was hidden, we must override that\n hidden: false,\n // Item must obey menu's align-items : stretch style.\n width: ''\n },\n twinOverridesHorz = _objectSpread2(_objectSpread2({}, twinOverrides), {}, {\n // Don't allow horizontal flex styles to apply in the vertical layout of the Menu.\n flex: ''\n }),\n _axisProps = [{\n box: 'hbox',\n clientSizeProp: 'clientWidth',\n edgeProp: 'right',\n flexDir: 'row',\n horizontal: true,\n max: 'maxX',\n overflow: 'overflowX',\n pos: 'x',\n scrollSize: 'scrollWidth',\n sizeProp: 'width'\n }, {\n box: 'vbox',\n clientSizeProp: 'clientHeight',\n edgeProp: 'bottom',\n flexDir: 'column',\n horizontal: false,\n max: 'maxY',\n overflow: 'overflowY',\n pos: 'y',\n scrollSize: 'scrollHeight',\n sizeProp: 'height'\n }],\n defaultRepeat = {\n delay: 0,\n startRate: 40,\n endRate: 200,\n accelerateDuration: 500\n },\n nonSyncedConfigs = {\n menu: 1,\n pressed: 1\n };\n/**\n * A container widget that can contain Buttons or other widgets, and is docked to the bottom or top of\n * a {@link Core.widget.Panel Panel}.\n *\n * @extends Core/widget/Container\n * @classType toolbar\n * @inlineexample Core/widget/Toolbar.js\n */\nclass Toolbar extends Container.mixin(Toolable) {\n static get $name() {\n return 'Toolbar';\n }\n // Factoryable type name\n static get type() {\n return 'toolbar';\n }\n static get delayable() {\n return {\n syncOverflowVisibility: {\n type: 'raf',\n cancelOutstanding: true\n } // && 50 // restore the \"&& 50\" here to help when debugging syncOverflowVisibility\n };\n }\n\n static get configurable() {\n return {\n defaultType: 'button',\n dock: 'top',\n layout: {\n type: 'box'\n },\n /**\n * The {@link Core.widget.Tool tools} to add either before or after the content element (the element in\n * which {@link #config-overflow} occurs). Each property name is the reference by which an instantiated\n * tool may be retrieved from the live `{@link Core.widget.mixin.Toolable#property-tools}` property.\n * @config {Object} tools\n */\n /**\n * How this Toolbar should deal with items that overflow its main axis.\n *\n * Values may be:\n * - `'menu'` A button with a menu is shown and the menu contains the overflowing items.\n * - `'scroll'` The items overflow and mey be scrolled into view using the mouse or scroll buttons.\n * - `null` Disable overflow handling\n *\n * When mode is `'menu'`, clones of overflowing toolbar item are created and added to a Menu. Any config\n * changes to the original toolbar item are propagated to the menu's clone, so disabling a toolbar\n * item will make the clone in the menu disabled.\n *\n * The clone of an input field will propagate its `value` changes back to the original. The\n * overflow button, its menu, and the clones should not be accessed or manipulated by application code.\n *\n * Note that cloned items will be allocated a unique, generated ID because all IDs must be unique,\n * so CSS targeting an element ID will not apply to a clone in the overflow menu.\n *\n * Values may also be specified in object form containing the following properties:\n * @config {String|Object|null} overflow\n * @property {'scroll'|'menu'} overflow.type `'scroll'` or `'menu'`\n * @property {ClickRepeaterConfig} overflow.repeat A config object to reconfigure the\n * {@link Core.util.ClickRepeater} which controls auto repeat speed when holding down the scroll buttons\n * when `type` is `'scroll'`\n * @property {Function} overflow.filter A filter function which may return a falsy value to prevent toolbar\n * items from being cloned into the overflow menu.\n * @default 'menu'\n */\n overflow: {\n // Wait until first paint to evaluate so that we can read our CSS style.\n // Set to null on destroy which destroys the overflow Tools and Scroller.\n $config: ['lazy', 'nullify'],\n value: {\n type: 'menu'\n }\n },\n toolDefaults: {\n overflowMenuButton: {\n type: 'button',\n hidden: true,\n icon: 'b-icon-menu',\n menuIcon: null,\n defaultCls: {\n 'b-overflow-button': 1\n }\n },\n overflowScrollEnd: {\n handler: 'up.onEndScrollClick',\n hidden: true,\n defaultCls: {\n 'b-icon-angle-right': 1,\n 'b-overflow-button': 1,\n 'b-icon': 1\n }\n },\n overflowScrollStart: {\n align: 'start',\n handler: 'up.onStartScrollClick',\n hidden: true,\n defaultCls: {\n 'b-icon-angle-left': 1,\n 'b-overflow-button': 1,\n 'b-icon': 1\n }\n }\n },\n /**\n * Custom CSS class to add to toolbar widgets\n * @config {String}\n * @category CSS\n */\n widgetCls: null,\n /**\n * Determines if the toolbars read-only state should be controlled by its parent.\n *\n * When set to `false`, setting a parent container to read-only will not affect the widget. When set to\n * `true`, it will.\n *\n * @category Misc\n * @config {Boolean}\n * @default\n */\n ignoreParentReadOnly: true\n };\n }\n static get prototypeProperties() {\n return {\n flexRowCls: 'b-hbox',\n flexColCls: 'b-vbox'\n };\n }\n /**\n * Returns the Core.widget.Widget[] of items to hide to clear an overflow. The `visibleItems` array should be in\n * order of the `items` in the container.\n * @param {Core.widget.Widget[]} visibleItems\n * @returns {Array}\n * @private\n */\n static getEvictionList(visibleItems) {\n // this is a static method to allow unit testing\n const ret = visibleItems.filter(it => it.overflowable !== 'none');\n ret.forEach((it, n) => ret[n] = [n, it]);\n ret.sort((a, b) => itemScoreFn(b) - itemScoreFn(a)); // b - a => reverse order\n return ret;\n }\n compose() {\n const me = this,\n {\n axisProps,\n dock\n } = me,\n endToolElementRefs = me.getEndTools(asElementRefs),\n startToolElementRefs = me.getStartTools(asElementRefs);\n return {\n class: {\n [`b-dock-${dock}`]: 1,\n [`b-${dock}-toolbar`]: 1,\n [`b-${axisProps.box}`]: 1\n },\n children: _objectSpread2(_objectSpread2({}, startToolElementRefs), {}, {\n toolbarContent: {\n class: {\n 'b-box-center': 1,\n 'b-toolbar-content': 1\n }\n }\n }, endToolElementRefs)\n };\n }\n get axisProps() {\n return _axisProps[this.layout.horizontal ? 0 : 1];\n }\n get contentElement() {\n return this.toolbarContent;\n }\n get overflowMenuButton() {\n var _this$tools;\n return (_this$tools = this.tools) === null || _this$tools === void 0 ? void 0 : _this$tools.overflowMenuButton;\n }\n get overflowType() {\n const {\n overflow\n } = this;\n return typeof overflow === 'string' ? overflow : overflow === null || overflow === void 0 ? void 0 : overflow.type;\n }\n onChildAdd(item) {\n var _item$syncRotationToD;\n super.onChildAdd(item);\n this.processAddedLeafItem(item);\n (_item$syncRotationToD = item.syncRotationToDock) === null || _item$syncRotationToD === void 0 ? void 0 : _item$syncRotationToD.call(item, this.dock);\n }\n onChildRemove(item) {\n super.onChildRemove(item);\n this.syncOverflowVisibility();\n }\n processAddedLeafItem(item) {\n // Any configurable config changes in the original are propagated to a possible clone.\n // Also a reevaluation of scroll state may be necessary. Any part of the UI may have changed,\n FunctionHelper.after(item, 'onConfigChange', this.onLeafItemConfigChange, item);\n // And all the way down. Eg, hiding a ButtonGroup must schedule a syncOverflowVisibility\n // but also hiding any of its children must also schedule a syncOverflowVisibility\n if (item.isContainer) {\n item.eachWidget(w => this.processAddedLeafItem(w));\n }\n }\n onPaint({\n firstPaint\n }) {\n var _super$onPaint;\n (_super$onPaint = super.onPaint) === null || _super$onPaint === void 0 ? void 0 : _super$onPaint.call(this, ...arguments);\n // Evaluate the overflow late so that we have access to styles and measurements.\n if (firstPaint) {\n this.getConfig('overflow');\n }\n }\n updateDock(dock) {\n const me = this,\n {\n layout\n } = me,\n {\n vertical\n } = layout;\n layout.vertical = canonicalDock(dock)[1];\n if (!me.initialItems) {\n if (vertical !== layout.vertical) {\n me.updateOverflow(me.overflow);\n }\n for (const item of me.childItems) {\n var _item$syncRotationToD2;\n (_item$syncRotationToD2 = item.syncRotationToDock) === null || _item$syncRotationToD2 === void 0 ? void 0 : _item$syncRotationToD2.call(item, dock);\n }\n }\n }\n updateOverflow(overflow, oldOverflow) {\n var _me$overflowMenuButto;\n const me = this,\n {\n axisProps,\n contentElement,\n overflowType\n } = me,\n {\n flexDir\n } = axisProps,\n overflowMenu = (_me$overflowMenuButto = me.overflowMenuButton) === null || _me$overflowMenuButto === void 0 ? void 0 : _me$overflowMenuButto._menu,\n overflowTools = {};\n if (overflowMenu) {\n if (overflow) {\n // Save the overflowTwins from destruction\n overflowMenu === null || overflowMenu === void 0 ? void 0 : overflowMenu.removeAll();\n } else {\n // Break link between original and clone\n overflowMenu.eachWidget(overflowTwin => {\n overflowTwin._overflowTwinOrigin.overflowTwin = null;\n });\n }\n }\n if (oldOverflow === 'menu') {\n overflowTools.overflowMenuButton = null;\n } else if (oldOverflow === 'scroll') {\n overflowTools.overflowScrollStart = overflowTools.overflowScrollEnd = null;\n }\n if (overflowType === 'menu') {\n var _me$scrollable;\n // Not needed for menu type overflowing\n (_me$scrollable = me.scrollable) === null || _me$scrollable === void 0 ? void 0 : _me$scrollable.destroy();\n // Must allow things like Badges to escape the bounds.\n contentElement.style.overflow = contentElement.style.overflowX = contentElement.style.overflowY = '';\n overflowTools.overflowMenuButton = {\n cls: {\n [`b-${flexDir}-menu`]: 1\n }\n };\n } else if (overflowType === 'scroll') {\n const repeat = typeof overflow === 'object' && (overflow === null || overflow === void 0 ? void 0 : overflow.repeat) || defaultRepeat;\n // We need a scroller.\n me.scrollable = {\n [axisProps.overflow]: 'hidden-scroll',\n element: contentElement,\n listeners: {\n scroll: 'onContentScroll',\n thisObj: me\n }\n };\n overflowTools.overflowScrollStart = {\n repeat,\n invertRotate: true,\n cls: {\n [`b-${flexDir}-start-scroller`]: 1\n }\n };\n overflowTools.overflowScrollEnd = {\n repeat,\n invertRotate: true,\n cls: {\n [`b-${flexDir}-end-scroller`]: 1\n }\n };\n }\n me.tools = overflowTools;\n if (overflowType) {\n // Stops items from flex-shrinking down now that we have a way of showing them in full.\n contentElement.classList.add('b-overflow');\n // Need to hide/show overflow buttons when necessary\n me.monitorResize = true;\n me.syncOverflowVisibility();\n } else {\n contentElement.classList.remove('b-overflow');\n me.monitorResize = false;\n }\n }\n onContentScroll() {\n this.syncScrollerState();\n }\n onStartScrollClick() {\n this.scrollable[this.axisProps.pos] -= 2;\n }\n onEndScrollClick() {\n this.scrollable[this.axisProps.pos] += 2;\n }\n // Only called when monitorResize is true, which is only set when we have an overflow mode\n onInternalResize() {\n super.onInternalResize(...arguments);\n // If it's not the initial undefined->first size from the initial paint, reevaluate overflow\n if (this.isPainted) {\n this.syncOverflowVisibility();\n }\n }\n syncOverflowVisibility() {\n const me = this,\n {\n overflowType,\n contentElement,\n isVisible\n } = me,\n {\n clientSizeProp,\n edgeProp,\n sizeProp\n } = me.axisProps,\n {\n overflowMenuButton,\n overflowScrollStart,\n overflowScrollEnd\n } = me.tools,\n rtl = me.rtl && me.layout.horizontal,\n menuOverflow = overflowType === 'menu',\n getAvailSpace = () => Math.ceil(contentElement[clientSizeProp] + (\n // Since we cannot simply hide these to remove their influence, we need to add their width/height:\n !overflowScrollStart || overflowScrollStart.hidden ? 0 : overflowScrollStart.rectangle('outer')[sizeProp]) + (!overflowScrollEnd || overflowScrollEnd.hidden ? 0 : overflowScrollEnd.rectangle('outer')[sizeProp])),\n getContentSize = () => {\n if (visibleItems.length === 0) {\n return 0;\n }\n // Firefox doesn't calculate scrollWidth correctly if overflow is hidden which it has to be. To get\n // around this, we use the edge of the most \"extreme\" widget (the one laid out last in the flow)\n const rect = visibleItems[visibleItems.length - 1].rectangle(contentElement);\n // Elements in an RTL ct are basically at right:0 and then have increasing right coordinates. To see\n // how much space is occupied we subtract the left edge of the last widget (which may be negative) from\n // the rightmost side of the contentElement container (i.e., the width).\n return Math.floor(rtl ? contentElement[clientSizeProp] - rect.left : rect[edgeProp]); // right or bottom\n // we use Math.floor() to discard fractional px sizes of content (it is ok to just clip that)\n };\n\n let availableSpace, contentSize, eviction, evictionList, it, itemSize, minifiable, minifiables, minified, overflowable, overflowItems, visibleItems;\n // Method can be called for hidden toolbar (e.g. after event editor is hidden), bail out early in such case\n if (!isVisible || !overflowType || me.items.length === 0) {\n return;\n }\n // Prevent recursion\n me.inSyncOverflowVisibility = true;\n // Give the contents a chance to lay out with no scroll tools taking space.\n overflowMenuButton === null || overflowMenuButton === void 0 ? void 0 : overflowMenuButton.hide();\n // NOTE: if we hide the scroller buttons that will affect the scroll range and can trigger a scroll. The scroll\n // does not fire synchronously (at least in Chrome) so it cannot be swallowed here.\n // Iterate all leaf widgets.\n // Restore only the ones that we hid to visibility so that we can accurately ascertain overflow.\n // Collect all visible leaf widgets. These are what we are interested in hiding and showing.\n // Anything may have changed. Text inside buttons, label of fields, visibility or\n // disabled status. The only way to ascertain overflow is to show them all, and\n // force a synchronous layout by measuring the resulting scrollWidth/Height\n me.eachWidget((item, control) => {\n minifiable = item.minifiable;\n // We want to descend into containers (esp ButtonGroup) but don't want to descend into normal widgets (like\n // button's which may have menus).\n overflowable = item.overflowable;\n // falsy overflowable normally means to descend into its items, but if item is minifiable, we do not\n // descend into the widget. It becomes all or nothing just like overflowable:true. Since overflowable can\n // also be set to 'none', we need to keep whatever it has for a value if truthy.\n overflowable = minifiable ? overflowable || minifiable : overflowable;\n if (item.floating) {\n // not in the flow of the container (i.e., no space occupied in the way we handle it), so skip\n control.down = false;\n } else {\n control.down = !overflowable;\n if (item.innerItem) {\n // Undo whatever we may have done to the items on a previous cycle:\n if (item._toolbarOverflow) {\n // Order is important here. _toolbarOverflow must be set first\n // so that onLeafItemConfigChange doesn't recurse infinitely.\n item.hidden = item._toolbarOverflow = false;\n }\n if (item._toolbarMinified) {\n // Order is important here. _toolbarMinified must be set first\n // so that onLeafItemConfigChange doesn't recurse infinitely.\n item.minified = item._toolbarMinified = false;\n }\n if (item.isVisible) {\n minifiable && (minifiables || (minifiables = [])).push(item);\n overflowable && (visibleItems || (visibleItems = [])).push(item);\n }\n }\n }\n });\n if (visibleItems) {\n availableSpace = getAvailSpace(); // get the size of the content area\n contentSize = getContentSize();\n }\n if (visibleItems && contentSize > availableSpace) {\n if (menuOverflow) {\n /*\n |◄──────────────────────────────── contentSize ──────────────────────────────────►|\n ┌──────────────────────────────────────────────────────────────────────────────┐\n │┌────────────┐┌────────────┐┌────────────┐┌────────────┐┌────────────┐┌────────────┐\n ││ visItem[0] ││ visItem[1] ││ visItem[2] ││ visItem[3] ││ visItem[4] ││ visItem[5] │\n │└────────────┘└────────────┘└────────────┘└────────────┘└────────────┘└────────────┘\n └──────────────────────────────────────────────────────────────────────────────┘\n │\n ▼\n ┌──────────────────────────────────────────────────────────────────────────────┐\n │ ┌───┐│\n │ │ = ││\n │ └─▲─┘│\n └───────────────────────────────────────────────────────────────────────────│──┘\n |◄──────────────────────────── availableSpace ──────────────────────────►| │\n │\n overflowMenuButton\n If any of the visibleItems is marked as \"overflow = 'none'\" then we skip it, and its size must\n be accommodated by hiding other items. This means we cannot use item edges to determine when we\n have cleared enough space, so we just use sizes (and mind the gap).\n For example, visibleItem[5] has overflowable='none', so [4] gets hidden:\n ┌──────────────────────────────────────────────────────────────────────────────┐\n │┌────────────┐┌────────────┐┌────────────┐┌────────────┐┌────────────┐ ┌───┐│\n ││ visItem[0] ││ visItem[1] ││ visItem[2] ││ visItem[3] ││ visItem[5] │ │ = ││\n │└────────────┘└────────────┘└────────────┘└────────────┘└────────────┘ └───┘│\n └──────────────────────────────────────────────────────────────────────────────┘\n */\n // Minify the minifiables (starting at the end) and see if that frees up enough space\n while (contentSize > availableSpace && (it = (_minifiables = minifiables) === null || _minifiables === void 0 ? void 0 : _minifiables.pop())) {\n var _minifiables;\n itemSize = contentSize;\n // Order is important here. _toolbarMinified must be set first\n // so that onLeafItemConfigChange doesn't recurse infinitely.\n it._toolbarMinified = true;\n it.minified = true;\n contentSize = getContentSize();\n itemSize -= contentSize; // number of px saved by minification\n // Remember these fellows since we may be able to revert their minification\n (minified || (minified = [])).push([it, itemSize]);\n }\n if (contentSize > availableSpace) {\n // Not enough space, so we'll need that overflow button (most likely)\n overflowMenuButton.show();\n availableSpace = getAvailSpace(); // get the new size of the content area\n // Process the visibleItems (starting from the end) and see if any are willing to be moved to the\n // overflow menu. We prefer to keep the minifiables\n evictionList = Toolbar.getEvictionList(visibleItems);\n for (eviction of evictionList) {\n if (contentSize > availableSpace) {\n it = eviction[1];\n it._toolbarOverflowWidth = it.width;\n // Order is important here. _toolbarOverflow must be set first\n // so that onLeafItemConfigChange doesn't recurse infinitely.\n it._toolbarOverflow = true;\n it.hidden = true; // hide things as we go to make getContentSize() work\n visibleItems.splice(visibleItems.indexOf(it), 1); // also important for getContentSize()\n // Remember these pairs of [itemIndex, item] as we hide them so that we can add them to the\n // menu in the correct order (the itemIndex is used make the menu item order match the\n // toolbar order since this won't match the eviction order)\n (overflowItems || (overflowItems = [])).push(eviction);\n contentSize = getContentSize();\n }\n }\n if (overflowItems) {\n // Restore the items to the order in the toolbar and unwrap the entries to be just widgets\n overflowItems.sort((a, b) => a[0] - b[0]).forEach((ent, n) => overflowItems[n] = ent[1]);\n // Space was created by moving items out... see if we can unminify any minified items. This\n // is a FIFO so we revert from the start, but we'll revert any items we can. We just give\n // priority to items as we go from start to end.\n while ((_minified = minified) !== null && _minified !== void 0 && _minified.length) {\n var _minified;\n [it, itemSize] = minified.pop();\n // In dire cases we'll hide minified items, so check to see if the item is in the\n // overflowItems bucket and ignore it if so:\n if (contentSize + itemSize <= availableSpace && !it._toolbarOverflow) {\n contentSize += itemSize;\n it.minified = it._toolbarMinified = false;\n }\n }\n me.syncOverflowMenuButton(overflowItems);\n } else {\n overflowMenuButton.hide(); // no items were willing to move into the overflow menu...\n }\n }\n } else {\n overflowScrollEnd.show();\n overflowScrollStart.show();\n me.syncScrollerState();\n }\n } else if (!menuOverflow) {\n overflowScrollEnd === null || overflowScrollEnd === void 0 ? void 0 : overflowScrollEnd.hide();\n overflowScrollStart === null || overflowScrollStart === void 0 ? void 0 : overflowScrollStart.hide();\n }\n me.inSyncOverflowVisibility = false;\n }\n syncOverflowMenuButton(overflowItems) {\n var _overflowMenuButton$_;\n const me = this,\n {\n axisProps,\n overflowMenuButton\n } = me,\n menu = {\n cls: 'b-toolbar-overflow-menu',\n minWidth: 280,\n items: [],\n align: {\n align: axisProps.horizontal ? 't100-b100' : 'r100-l100',\n axisLock: 'flexible'\n }\n };\n // Add clones, or surrogates of the overflowing things to the menu.\n // Input fields will be cloned, buttons will result in a MenuItem.\n // Any Containers\n me.addToMenu(menu, overflowItems.filter(item => me.overflowItemFilter(item)));\n if ((_overflowMenuButton$_ = overflowMenuButton._menu) !== null && _overflowMenuButton$_ !== void 0 && _overflowMenuButton$_.isMenu) {\n const existingMenu = overflowMenuButton.menu,\n {\n toAdd,\n toRemove\n } = ArrayHelper.delta(menu.items, existingMenu.items, 1);\n existingMenu.remove(toRemove);\n if (existingMenu.items.length) {\n // Insert the ones which we just got too narrow to show at the top of the menu\n for (let i = toAdd.length - 1; i >= 0; i--) {\n existingMenu.insert(toAdd[i], 0);\n }\n } else {\n existingMenu.add(toAdd);\n }\n } else {\n overflowMenuButton.menu = menu;\n }\n }\n syncScrollerState() {\n const me = this,\n {\n axisProps,\n scrollable\n } = me,\n {\n overflowScrollStart,\n overflowScrollEnd\n } = me.tools,\n scrollPos = scrollable[axisProps.pos],\n maxScrollPos = scrollable[axisProps.max];\n overflowScrollStart.disabled = !scrollPos;\n // abs for rtl, which uses negative values\n overflowScrollEnd.disabled = Math.abs(Math.ceil(scrollPos)) >= Math.abs(maxScrollPos);\n }\n overflowItemFilter(item) {\n const {\n filter\n } = this.overflow;\n return Boolean(filter\n // Allow user-defined filter\n ? filter.call(this, item)\n // If no Elements, for example displaying text which will have a Node type 3\n // or a toolbar spacer or separator, then omit it from the menu\n : DomHelper.getChildElementCount(item.element));\n }\n addToMenu(menu, overflowingItems) {\n const overrides = this.horizontal ? twinOverridesHorz : twinOverrides;\n for (const item of overflowingItems) {\n const overflowTwin = item.ensureOverflowTwin(overrides, onCreateTwin);\n menu.items.push(overflowTwin);\n }\n }\n // Note that this is called with the thisObj of the tbar item being reconfigured.\n // It propagates the new setting into its toolbar overflow clone.\n onLeafItemConfigChange(origResult, {\n name,\n value\n }) {\n const item = this,\n toolbar = item.up(isToolbar),\n overflow = toolbar.hasConfig('overflow'),\n {\n overflowTwin\n } = item;\n // If it's a hide/show, and its in sync with its _toolbarOverflow state, do nothing\n if (!overflow || toolbar !== null && toolbar !== void 0 && toolbar.inSyncOverflowVisibility || name === 'hidden' && value === item._toolbarOverflow) {\n return;\n }\n // If the changed item has a clone in the overflow menu and the config is not one\n // of the unshared ones, sync the clone\n if (overflowTwin && !nonSyncedConfigs[name]) {\n overflowTwin[name] = value;\n }\n // Any part of the UI might have changed shape, so we must reevaluate scroll state.\n if (toolbar !== null && toolbar !== void 0 && toolbar.isPainted && item.ref !== 'overflowMenuButton') {\n if (!(item.isTextField && name === 'value' && (item.containsFocus || overflowTwin !== null && overflowTwin !== void 0 && overflowTwin.containsFocus))) {\n toolbar.syncOverflowVisibility();\n }\n }\n }\n createWidget(widget) {\n if (widget === '->') {\n widget = {\n type: 'widget',\n cls: 'b-toolbar-fill'\n };\n } else if (widget === '|') {\n widget = {\n type: 'widget',\n cls: 'b-toolbar-separator'\n };\n } else if (typeof widget === 'string') {\n widget = {\n type: 'widget',\n cls: 'b-toolbar-text',\n html: widget\n };\n }\n const result = super.createWidget(widget);\n if (this.widgetCls) {\n result.element.classList.add(this.widgetCls);\n }\n return result;\n }\n}\n// Register this widget type with its Factory\nToolbar.initClass();\nToolbar._$name = 'Toolbar';\n\n/**\n * @module Core/widget/Panel\n */\n/**\n * An object that describes a Panel's header.\n *\n * @typedef {Object} PanelHeader\n * @property {String|Object} [cls] Additional CSS class or classes to add to the header element.\n * @property {'top'|'right'|'bottom'|'left'} [dock=\"top\"] Specify \"left\", \"bottom\", or \"right\" to control panel edge to which the header docks.\n * @property {String} title\n * @property {'start'|'center'|'end'} [titleAlign=\"start\"] Specify \"center\" or \"end\" to align the panel's title differently.\n */\nconst acceptNode = e => !e.classList.contains('b-focus-trap') && DomHelper.isFocusable(e) ? DomHelper.NodeFilter.FILTER_ACCEPT : DomHelper.NodeFilter.FILTER_SKIP,\n emptyArray$4 = [],\n emptyObject$5 = {},\n emptySplit = [emptyArray$4, emptyArray$4],\n finishBodyWrap = (config, classes, final) => {\n const {\n vertical\n } = config;\n delete config.vertical;\n return _objectSpread2(_objectSpread2({}, config), {}, {\n class: _objectSpread2(_objectSpread2({}, classes), {}, {\n [`b-${vertical ? 'v' : 'h'}box`]: 1,\n 'b-box-center': 1,\n 'b-panel-bar-wrap': !final\n })\n });\n },\n wrapBody = (inner, bodyWrapTag, vertical = false) => {\n const wrap = {\n vertical,\n children: inner ? [inner] : []\n };\n if (bodyWrapTag) {\n wrap.tag = bodyWrapTag;\n }\n return wrap;\n },\n barConfigs = {\n dock: 1,\n hidden: 1,\n weight: 1\n },\n dockDirection = {\n // [vertical, before]\n top: [true, true],\n bottom: [true, false],\n left: [false, true],\n right: [false, false]\n },\n headerDock = {\n header: 1,\n 'pre-header': 1\n };\n/**\n * Panel widget. A general purpose container which may be used to contain child {@link Core.widget.Container#config-items}\n * or {@link Core.widget.Widget#config-html}.\n *\n * Also may dock a {@link #config-header} and {@link #config-footer} either at top/bottom or left/right\n *\n * @example\n * let panel = new Panel({\n * title : 'A Test Panel',\n * items : [\n * { type : 'text', placeholder: 'Text' },\n * ],\n * bbar : [{\n * text : 'Proceed',\n * onClick : () => {\n * alert('Proceeding!');\n * }\n * }]\n * });\n *\n * @classType panel\n *\n * @mixes Core/mixin/State\n * @mixes Core/widget/mixin/Toolable\n * @extends Core/widget/Container\n * @inlineexample Core/widget/Panel.js\n */\nclass Panel extends Container.mixin(State, Toolable) {\n //region Config\n static get $name() {\n return 'Panel';\n }\n // Factoryable type name\n static get type() {\n return 'panel';\n }\n static get configurable() {\n return {\n localizableProperties: ['title'],\n /**\n * Controls whether the panel is collapsed (the body of the panel is hidden while only the header is\n * visible). Only valid if the panel is {@link #config-collapsible}.\n * @config {Boolean}\n * @category Layout\n */\n collapsed: {\n value: null,\n $config: null,\n default: false\n },\n /**\n * This config enables collapsibility for the panel. See {@link #config-collapsed}.\n *\n * For example:\n * ```javascript\n * {\n * type : 'panel',\n * collapsible : true\n * }\n * ```\n * This is managed by an instance of {@link Core.widget.panel.PanelCollapser} which can be configured if an\n * object is passed for this config property:\n * ```javascript\n * {\n * type : 'panel',\n * collapsible : {\n * direction : 'left'\n * }\n * }\n * ```\n * @config {Boolean|Core.widget.panel.PanelCollapser}\n * @category Layout\n */\n collapsible: {\n value: null,\n $config: 'nullify'\n },\n /**\n * Custom CSS classes to add to the panel's body element.\n *\n * May be specified as a space separated string, or as an object in which property names\n * with truthy values are used as the class names:\n *\n * ```javascript\n * bodyCls : {\n * 'b-my-class' : 1,\n * [this.extraCls] : 1,\n * [this.activeCls] : this.isActive\n * }\n * ```\n *\n * @config {String|Object}\n * @category CSS\n */\n bodyCls: {\n $config: {\n merge: 'classList'\n },\n value: null\n },\n bodyTag: null,\n bodyWrapTag: null,\n /**\n * By default, tabbing within a Panel is not contained, ie you can TAB out of the Panel\n * forwards or backwards.\n * Configure this as `true` to disallow tabbing out of the Panel, and make tabbing circular within this Panel.\n * @config {Boolean}\n * @default false\n * @category Content\n */\n trapFocus: null,\n /**\n * Get/set this Panel's title. This may only be set when a header exists. If a header\n * has been disabled by configuring the {@link #config-header} as `false`, setting it\n * will have no effect.\n * @member {String} title\n */\n /**\n * A title to display in the header. Causes creation and docking of a header\n * to the top if no header is configured.\n *\n * If specified, overrides any title configured within the {@link #config-header} configuration.\n * @default\n * @config {String}\n * @category Content\n */\n title: null,\n /**\n * A config {@link PanelHeader object} for the panel's header or a string in place of a `title`.\n *\n * Configuring this as `false` explicitly removes the header bar, overriding any\n * {@link #config-tools} or {@link #config-title} configs.\n * @default\n * @config {String|Boolean|PanelHeader}\n * @category Content\n */\n header: null,\n stateful: ['collapsed'],\n /**\n * An object containing config defaults for corresponding {@link #config-strips} objects with a matching name.\n *\n * By default, this object contains the keys `'bbar'` and `'tbar'` to provide default config values for the\n * {@link #config-bbar} and {@link #config-tbar} configs.\n *\n * This object also contains a key named `'*'` with default config properties to apply to all strips. This\n * object provides the default `type` (`'toolbar') and {@link Core.widget.Widget#config-dock} (`'top'`)\n * property for strips.\n * @config {Object} stripDefaults\n * @internal\n * @category Content\n */\n stripDefaults: {\n '*': {\n type: 'toolbar',\n dock: 'top'\n },\n bbar: {\n dock: 'bottom',\n weight: -1000\n },\n tbar: {\n weight: -1000\n }\n },\n /**\n * An object containing widgets keyed by name. By default (when no `type` is given), strips are\n * {@link Core.widget.Toolbar toolbars}. If the value assigned to a strip is an array, it is converted to\n * the toolbar's {@link Core.widget.Container#config-items}.\n *\n * The {@link #config-bbar} and {@link #config-tbar} configs are shortcuts for adding toolbars to the\n * panel's `strips`.\n *\n * Strips are arranged based on their {@link Core.widget.Widget#config-dock} and\n * {@link Core.widget.Widget#config-weight} configs.\n *\n * For widgets using a `dock` of `'top'`, `'bottom'`, `'left'`, `'right'`, `'start'` or `'end'`(an \"edge\n * strip\"), the higher the `weight` assigned to a widget, the closer that widget will be to the panel body.\n *\n * For widgets with `'header'` or `'pre-header'` for `dock` (a \"header strip\"), higher `weight` values\n * cause the widget to be placed closer to the panel's title.\n *\n * ```javascript\n * new Panel({\n * title : 'Test',\n * html : 'Panel strip test',\n * strips : {\n * left : [{\n * text : 'Go'\n * }]\n * }\n * });\n * ```\n * @config {Object} strips\n * @category Content\n */\n strips: {\n value: null,\n $config: 'nullify'\n },\n toolDefaults: {\n close: {\n weight: -1000\n },\n collapse: {\n weight: -990\n }\n },\n /**\n * Config object of a footer. May contain a `dock`, `html` and a `cls` property. A footer is not a widget,\n * but rather plain HTML that follows the last element of the panel's body and {@link #config-strips}.\n *\n * The `dock` property may be `top`, `right`, `bottom`, `left`, `start` or `end`\n *\n * @config {Object|String}\n * @default\n * @category Content\n */\n footer: null,\n /**\n * This config is used with {@link Core.widget.panel.PanelCollapserOverlay} to programmatically control the\n * visibility of the panel's body. In this mode of collapse, the body of a collapsed panel is a floating\n * overlay. Setting this config to `true` will show this element, while `false` will hide it.\n * @config {Boolean}\n * @private\n */\n revealed: null,\n /**\n * The tool Widgets as specified by the {@link #config-tools} configuration\n * (and the {@link Core.widget.Popup#config-closable} configuration in the Popup subclass).\n * Each is a {@link Core.widget.Widget Widget} instance which may be hidden, shown and observed and styled\n * just like any other widget.\n *\n * ```javascript\n * panel.tools.add = {\n * cls : 'b-fa b-fa-plus',\n * handler() {\n * // Clicked the tool\n * }\n * }\n * ```\n * @member {Object} tools\n */\n /**\n * The {@link Core.widget.Tool tools} to add either before or after the `title` in the Panel header. Each\n * property name is the reference by which an instantiated tool may be retrieved from the live\n * `{@link Core.widget.mixin.Toolable#property-tools}` property.\n * ```javascript\n * new Panel({\n * ...\n * tools : {\n * add : {\n * cls : 'b-fa b-fa-plus',\n * handler() {\n * // Clicked the tool\n * }\n * }\n * }\n * });\n * ```\n * @config {Object} tools\n * @category Content\n */\n /**\n * Get toolbar {@link Core.widget.Toolbar} docked to the top of the panel\n * @member {Core.widget.Toolbar} tbar\n * @readonly\n * @category Content\n */\n /**\n * A Config object representing the configuration of a {@link Core.widget.Toolbar},\n * or array of config objects representing the child items of a Toolbar.\n *\n * This creates a toolbar docked to the top of the panel immediately below the header.\n * @config {Object[]|Object}\n * @category Content\n */\n tbar: null,\n /**\n * Get toolbar {@link Core.widget.Toolbar} docked to the bottom of the panel\n * @member {Core.widget.Toolbar} bbar\n * @readonly\n * @category Content\n */\n /**\n * A Config object representing the configuration of a {@link Core.widget.Toolbar},\n * or array of config objects representing the child items of a Toolbar.\n *\n * This creates a toolbar docked to the bottom of the panel immediately above the footer.\n * @config {Object[]|Object}\n * @category Content\n */\n bbar: null,\n role: 'region'\n };\n }\n //endregion\n /**\n * A header {@link #config-tools tool} has been clicked.\n * @event toolClick\n * @param {Core.widget.Tool} source - This Panel.\n * @param {Core.widget.Tool} tool - The tool which is being clicked.\n */\n //region Composition\n updateElement(element, oldElement) {\n const result = super.updateElement(element, oldElement);\n if (this.titleElement) {\n DomHelper.setAttributes(this.ariaElement, {\n 'aria-describedby': this.titleElement.id\n });\n }\n return result;\n }\n compose() {\n const me = this,\n {\n collapsible,\n focusable,\n hasItems,\n revealed\n } = me,\n header = me.composeHeader(),\n horz = (header === null || header === void 0 ? void 0 : header.class['b-dock-left']) || (header === null || header === void 0 ? void 0 : header.class['b-dock-right']);\n let body = me.composeBody(),\n key = 'bodyWrapElement';\n if (collapsible) {\n [key, body] = collapsible.wrapCollapser(key, body);\n }\n return {\n tabIndex: hasItems && focusable !== false || focusable ? 0 : null,\n class: {\n [`b-panel-collapsible-${collapsible === null || collapsible === void 0 ? void 0 : collapsible.type}`]: collapsible,\n [`b-panel-collapse-${collapsible === null || collapsible === void 0 ? void 0 : collapsible.collapseDir}`]: collapsible,\n [`b-${horz ? 'h' : 'v'}box`]: 1,\n 'b-panel-collapsible': collapsible,\n 'b-panel-has-header': header,\n 'b-panel-overlay-revealed': revealed\n },\n children: {\n topFocusTrap: {\n 'aria-hidden': true,\n tabIndex: 0,\n class: {\n 'b-focus-trap': 1\n }\n },\n // Note: we always put header before bodyWrap since it is likely (though untested) to be better for\n // a11y. We use flexbox order to make the right/bottom docking appear correct but it is likely that\n // the DOM order of the
element vs (optional)